Skip to content

ModuleInterface: Enable interface verification in more tests #42351

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions docs/Testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,17 @@ code for the target that is not the build machine:
* ``%target-swift-autolink-extract``: run ``swift-autolink-extract`` for the
target to extract its autolink flags on platforms that support them (when the
autolink-extract feature flag is set)

* ``%target-swift-emit-module-interface(`` *swift interface path* ``)``
*other arguments*: run ``swift-frontend`` for the target, emitting a
swiftinterface to the given path and passing additional default flags
appropriate for resilient frameworks.

* ``%target-swift-typecheck-module-from-interface(`` *swift interface path*
``)`` *other arguments*: run ``swift-frontend`` for the target, verifying
the swiftinterface at the given path and passing additional default flags
appropriate for resilient frameworks. Designed to be used in combination with
``%target-swift-emit-module-interface()``.

* ``%target-clang``: run the system's ``clang++`` for the target.

Expand Down
3 changes: 2 additions & 1 deletion test/AutoDiff/ModuleInterface/differentiation.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: %target-swift-frontend -typecheck -emit-module-interface-path %t.swiftinterface -enable-library-evolution %s
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface)
// RUN: %FileCheck %s < %t.swiftinterface

import _Differentiation
Expand Down
4 changes: 3 additions & 1 deletion test/ClangImporter/clang-function-types.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
// RUN: %target-swift-frontend -typecheck -swift-version 5 -emit-module-interface-path - -sdk %clang-importer-sdk -enable-library-evolution %s -experimental-print-full-convention -use-clang-function-types | %FileCheck %s
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -sdk %clang-importer-sdk -experimental-print-full-convention -use-clang-function-types
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -sdk %clang-importer-sdk
// RUN: %FileCheck %s < %t.swiftinterface

import ctypes

Expand Down
7 changes: 4 additions & 3 deletions test/CrossImport/module-interface.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,22 @@
// Should pass with -enable-cross-import-overlays
//

// RUN: %target-swift-frontend -enable-cross-import-overlays -I %t/lib/swift -typecheck -emit-module-interface-path %t.swiftinterface %s -module-name ClientLibrary -swift-version 5 -enable-library-evolution
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -enable-cross-import-overlays -I %t/lib/swift -module-name ClientLibrary
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -enable-cross-import-overlays -I %t/lib/swift -module-name ClientLibrary
// RUN: %FileCheck %s < %t.swiftinterface
// RUN: %FileCheck -check-prefix NEGATIVE %s < %t.swiftinterface

//
// Should fail with -disable-cross-import-overlays
//

// RUN: not %target-swift-frontend -disable-cross-import-overlays -I %t/lib/swift -typecheck -emit-module-interface-path %t.swiftinterface %s -module-name ClientLibrary -swift-version 5 -enable-library-evolution 2>/dev/null
// RUN: not %target-swift-emit-module-interface(%t.swiftinterface) %s -disable-cross-import-overlays -I %t/lib/swift -module-name ClientLibrary 2>/dev/null

//
// Should fail by default
//

// RUN: not %target-swift-frontend -I %t/lib/swift -typecheck -emit-module-interface-path %t.swiftinterface %s -module-name ClientLibrary -swift-version 5 -enable-library-evolution 2>/dev/null
// RUN: not %target-swift-emit-module-interface(%t.swiftinterface) %s -I %t/lib/swift -module-name ClientLibrary -swift-version 5 2>/dev/null


import DeclaringLibrary
Expand Down
3 changes: 2 additions & 1 deletion test/ModuleInterface/ConstKeyword.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// RUN: %empty-directory(%t)

// Ensure the attribute is printed in swiftinterface files
// RUN: %target-swift-frontend-typecheck -emit-module-interface-path %t/Foo.swiftinterface %s -module-name Foo
// RUN: %target-swift-emit-module-interface(%t/Foo.swiftinterface) %s -module-name Foo
// RUN: %target-swift-typecheck-module-from-interface(%t/Foo.swiftinterface) -module-name Foo
// RUN: %FileCheck %s < %t/Foo.swiftinterface

// Ensure the attribute is in .swiftmodule files
Expand Down
14 changes: 7 additions & 7 deletions test/ModuleInterface/access-filter.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: %target-swift-frontend -typecheck -emit-module-interface-path %t.swiftinterface %s -module-name AccessFilter -requirement-machine-inferred-signatures=on
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -module-name AccessFilter -requirement-machine-inferred-signatures=on
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -module-name AccessFilter
// RUN: %FileCheck %s < %t.swiftinterface
// RUN: %FileCheck -check-prefix NEGATIVE %s < %t.swiftinterface

Expand Down Expand Up @@ -109,7 +110,7 @@ extension UFIProto {

// CHECK: extension AccessFilter.PublicStruct {{[{]$}}
extension PublicStruct {
// CHECK: @_hasInitialValue public static var secretlySettable: Swift.Int {
// CHECK: public static var secretlySettable: Swift.Int {
// CHECK-NEXT: get
// CHECK-NEXT: }
public private(set) static var secretlySettable: Int = 0
Expand All @@ -123,12 +124,11 @@ extension InternalStruct_BAD: PublicProto {
// CHECK: extension AccessFilter.UFIStruct : AccessFilter.PublicProto {{[{]$}}
extension UFIStruct: PublicProto {
// CHECK-NEXT: @usableFromInline
// CHECK-NEXT: internal typealias Assoc = Swift.Int

// FIXME: Is it okay for this non-@usableFromInline implementation to satisfy
// the protocol?
func requirement() {}
// CHECK-NEXT: internal func requirement()
@usableFromInline func requirement() {}
internal static var dummy: Int { return 0 }
// CHECK-NEXT: @usableFromInline
// CHECK-NEXT: internal typealias Assoc = Swift.Int
} // CHECK-NEXT: {{^[}]$}}

// CHECK: public enum PublicEnum {{[{]$}}
Expand Down
4 changes: 2 additions & 2 deletions test/ModuleInterface/actor_isolation.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
// RUN: %target-swift-frontend -emit-module -o %t/Test.swiftmodule -emit-module-interface-path %t/Test.swiftinterface -module-name Test -enable-experimental-concurrency -I %t %s
// RUN: %FileCheck %s < %t/Test.swiftinterface
// RUN: %FileCheck %s -check-prefix SYNTHESIZED < %t/Test.swiftinterface
// RUN: %target-swift-frontend -typecheck-module-from-interface -module-name Test %t/Test.swiftinterface -I %t
// RUN: %target-swift-typecheck-module-from-interface(%t/Test.swiftinterface) -module-name Test -I %t

// RUN: %target-swift-frontend -emit-module -o /dev/null -merge-modules %t/Test.swiftmodule -disable-objc-attr-requires-foundation-module -emit-module-interface-path %t/TestFromModule.swiftinterface -module-name Test -enable-experimental-concurrency -I %t
// RUN: %FileCheck %s < %t/TestFromModule.swiftinterface
// RUN: %target-swift-frontend -typecheck-module-from-interface -module-name Test %t/TestFromModule.swiftinterface -I %t
// RUN: %target-swift-typecheck-module-from-interface(%t/TestFromModule.swiftinterface) -module-name Test -I %t

// REQUIRES: concurrency
import Preconcurrency
Expand Down
4 changes: 2 additions & 2 deletions test/ModuleInterface/actor_objc.swift
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -emit-module -o %t/Test.swiftmodule -emit-module-interface-path %t/Test.swiftinterface -module-name Test %s
// RUN: %FileCheck %s < %t/Test.swiftinterface
// RUN: %target-swift-frontend -typecheck-module-from-interface -module-name Test %t/Test.swiftinterface
// RUN: %target-swift-typecheck-module-from-interface(%t/Test.swiftinterface) -module-name Test

// RUN: %target-swift-frontend -emit-module -o /dev/null -merge-modules %t/Test.swiftmodule -disable-objc-attr-requires-foundation-module -emit-module-interface-path %t/TestFromModule.swiftinterface -module-name Test
// RUN: %FileCheck %s < %t/TestFromModule.swiftinterface
// RUN: %target-swift-frontend -typecheck-module-from-interface -module-name Test %t/TestFromModule.swiftinterface
// RUN: %target-swift-typecheck-module-from-interface(%t/TestFromModule.swiftinterface) -module-name Test

// REQUIRES: concurrency
// REQUIRES: objc_interop
Expand Down
3 changes: 2 additions & 1 deletion test/ModuleInterface/actor_protocol.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -typecheck -enable-library-evolution -disable-availability-checking -emit-module-interface-path %t/Library.swiftinterface -module-name Library %s
// RUN: %target-swift-emit-module-interface(%t/Library.swiftinterface) %s -disable-availability-checking -module-name Library
// RUN: %target-swift-typecheck-module-from-interface(%t/Library.swiftinterface) -disable-availability-checking -module-name Library
// RUN: %FileCheck --check-prefix CHECK-EXTENSION %s <%t/Library.swiftinterface
// RUN: %FileCheck --check-prefix CHECK %s <%t/Library.swiftinterface
// REQUIRES: concurrency
Expand Down
3 changes: 2 additions & 1 deletion test/ModuleInterface/attrs.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: %target-swift-frontend -typecheck -emit-module-interface-path %t.swiftinterface -enable-library-evolution %s
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -module-name attrs
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -module-name attrs
// RUN: %FileCheck %s < %t.swiftinterface

// CHECK: @_transparent public func glass() -> Swift.Int { return 0 }{{$}}
Expand Down
9 changes: 8 additions & 1 deletion test/ModuleInterface/availability-expansion.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
// RUN: %empty-directory(%t)

// RUN: %target-swift-frontend -swift-version 5 -enable-library-evolution -typecheck -module-name Test -emit-module-interface-path %t/Test.swiftinterface %s -define-availability "_iOS8Aligned:macOS 10.10, iOS 8.0" -define-availability "_iOS9Aligned:macOS 10.11, iOS 9.0" -define-availability "_iOS9:iOS 9.0" -define-availability "_macOS10_11:macOS 10.11" -define-availability "_myProject 1.0:macOS 10.11" -define-availability "_myProject 2.5:macOS 10.12"
// RUN: %target-swift-emit-module-interface(%t/Test.swiftinterface) %s \
// RUN: -define-availability "_iOS8Aligned:macOS 10.10, iOS 8.0" \
// RUN: -define-availability "_iOS9Aligned:macOS 10.11, iOS 9.0" \
// RUN: -define-availability "_iOS9:iOS 9.0" \
// RUN: -define-availability "_macOS10_11:macOS 10.11" \
// RUN: -define-availability "_myProject 1.0:macOS 10.11" \
// RUN: -define-availability "_myProject 2.5:macOS 10.12"
// RUN: %target-swift-typecheck-module-from-interface(%t/Test.swiftinterface)
// RUN: %FileCheck %s < %t/Test.swiftinterface

@available(_iOS8Aligned, *)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -typecheck %s -enable-library-evolution -emit-module-interface-path %t/Module.swiftinterface -experimental-skip-non-inlinable-function-bodies
// RUN: %FileCheck %s --check-prefixes CHECK < %t/Module.swiftinterface
// RUN: %target-swift-emit-module-interface(%t/Module.swiftinterface) %s
// RUN: %target-swift-typecheck-module-from-interface(%t/Module.swiftinterface)
// RUN: %FileCheck %s < %t/Module.swiftinterface

// REQUIRES: OS=macosx

Expand Down
8 changes: 4 additions & 4 deletions test/ModuleInterface/available-attr-no-collapse.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
// RUN: %empty-directory(%t)
// RUN: echo '@available(macOS 12.0, iOS 15.0, macCatalyst 15.0, *)' > %t/Foo.swift
// RUN: echo 'public struct Foo {}' >> %t/Foo.swift

// RUN: %target-swift-frontend -emit-module -emit-module-interface-path %t/Foo.swiftinterface -enable-library-evolution %t/Foo.swift
// RUN: %target-swift-emit-module-interface(%t/Foo.swiftinterface) %s
// RUN: %target-swift-typecheck-module-from-interface(%t/Foo.swiftinterface)
// RUN: %FileCheck %s < %t/Foo.swiftinterface

// CHECK: macCatalyst
@available(macOS 12.0, iOS 15.0, macCatalyst 15.0, *)
public struct Foo {}
54 changes: 17 additions & 37 deletions test/ModuleInterface/back-deploy-attr.swift
Original file line number Diff line number Diff line change
@@ -1,63 +1,46 @@
// RUN: %empty-directory(%t)

// Ensure @_backDeploy attributes and function bodies are printed in
// swiftinterface files.
// RUN: %target-swiftc_driver -emit-module -o %t/Test.swiftmodule -emit-module-interface-path %t/Test.swiftinterface %s -enable-library-evolution -verify-emitted-module-interface -module-name Test \
// RUN: -Xfrontend -define-availability -Xfrontend "_macOS12_1:macOS 12.1" \
// RUN: -Xfrontend -define-availability -Xfrontend "_myProject 1.0:macOS 12.1, iOS 15.1"
// RUN: %FileCheck %s --check-prefix FROMSOURCE --check-prefix CHECK < %t/Test.swiftinterface

// FIXME(backDeploy): Remove this step in favor of a test that exercises using
// a back deployed API from a test library so that we can avoid -merge-modules

// Ensure @_backDeploy attributes and function bodies are present after
// deserializing .swiftmodule files.
// RUN: %target-swift-frontend -emit-module -o /dev/null -merge-modules %t/Test.swiftmodule -disable-objc-attr-requires-foundation-module -emit-module-interface-path %t/TestFromModule.swiftinterface -module-name Test \
// RUN: %target-swift-emit-module-interface(%t/Test.swiftinterface) %s \
// RUN: -define-availability "_macOS12_1:macOS 12.1" \
// RUN: -define-availability "_myProject 1.0:macOS 12.1, iOS 15.1"
// RUN: %FileCheck %s --check-prefix FROMMODULE --check-prefix CHECK < %t/TestFromModule.swiftinterface
// RUN: %target-swift-typecheck-module-from-interface(%t/Test.swiftinterface)
// RUN: %FileCheck %s < %t/Test.swiftinterface

public struct TopLevelStruct {
// CHECK: @_backDeploy(before: macOS 12.0)
// FROMSOURCE: public func backDeployedFunc_SinglePlatform() -> Swift.Int { return 42 }
// FROMMODULE: public func backDeployedFunc_SinglePlatform() -> Swift.Int
// CHECK: public func backDeployedFunc_SinglePlatform() -> Swift.Int { return 42 }
@available(macOS 11.0, *)
@_backDeploy(before: macOS 12.0)
public func backDeployedFunc_SinglePlatform() -> Int { return 42 }

// CHECK: @_backDeploy(before: macOS 12.0)
// CHECK: @_backDeploy(before: iOS 15.0)
// FROMSOURCE: public func backDeployedFunc_MultiPlatform() -> Swift.Int { return 43 }
// FROMMODULE: public func backDeployedFunc_MultiPlatform() -> Swift.Int
// CHECK: public func backDeployedFunc_MultiPlatform() -> Swift.Int { return 43 }
@available(macOS 11.0, iOS 14.0, *)
@_backDeploy(before: macOS 12.0, iOS 15.0)
public func backDeployedFunc_MultiPlatform() -> Int { return 43 }

// CHECK: @_backDeploy(before: macOS 12.0)
// FROMSOURCE: public var backDeployedComputedProperty: Swift.Int {
// FROMSOURCE: get { 44 }
// FROMSOURCE: }
// FROMMODULE: public var backDeployedComputedProperty: Swift.Int
// CHECK: public var backDeployedComputedProperty: Swift.Int {
// CHECK: get { 44 }
// CHECK: }
@available(macOS 11.0, *)
@_backDeploy(before: macOS 12.0)
public var backDeployedComputedProperty: Int { 44 }

// CHECK: @_backDeploy(before: macOS 12.0)
// FROMSOURCE: public var backDeployedPropertyWithAccessors: Swift.Int {
// FROMSOURCE: get { 45 }
// FROMSOURCE: }
// FROMMODULE: public var backDeployedPropertyWithAccessors: Swift.Int
// CHECK: public var backDeployedPropertyWithAccessors: Swift.Int {
// CHECK: get { 45 }
// CHECK: }
@available(macOS 11.0, *)
@_backDeploy(before: macOS 12.0)
public var backDeployedPropertyWithAccessors: Int {
get { 45 }
}

// CHECK: @_backDeploy(before: macOS 12.0)
// FROMSOURCE: public subscript(index: Swift.Int) -> Swift.Int {
// FROMSOURCE: get { 46 }
// FROMSOURCE: }
// FROMMODULE: public subscript(index: Swift.Int) -> Swift.Int
// CHECK: public subscript(index: Swift.Int) -> Swift.Int {
// CHECK: get { 46 }
// CHECK: }
@available(macOS 11.0, *)
@_backDeploy(before: macOS 12.0)
public subscript(index: Int) -> Int {
Expand All @@ -66,25 +49,22 @@ public struct TopLevelStruct {
}

// CHECK: @_backDeploy(before: macOS 12.0)
// FROMSOURCE: public func backDeployTopLevelFunc1() -> Swift.Int { return 47 }
// FROMMODULE: public func backDeployTopLevelFunc1() -> Swift.Int
// CHECK: public func backDeployTopLevelFunc1() -> Swift.Int { return 47 }
@available(macOS 11.0, *)
@_backDeploy(before: macOS 12.0)
public func backDeployTopLevelFunc1() -> Int { return 47 }

// MARK: - Availability macros

// CHECK: @_backDeploy(before: macOS 12.1)
// FROMSOURCE: public func backDeployTopLevelFunc2() -> Swift.Int { return 48 }
// FROMMODULE: public func backDeployTopLevelFunc2() -> Swift.Int
// CHECK: public func backDeployTopLevelFunc2() -> Swift.Int { return 48 }
@available(macOS 11.0, *)
@_backDeploy(before: _macOS12_1)
public func backDeployTopLevelFunc2() -> Int { return 48 }

// CHECK: @_backDeploy(before: macOS 12.1)
// CHECK: @_backDeploy(before: iOS 15.1)
// FROMSOURCE: public func backDeployTopLevelFunc3() -> Swift.Int { return 49 }
// FROMMODULE: public func backDeployTopLevelFunc3() -> Swift.Int
// CHECK: public func backDeployTopLevelFunc3() -> Swift.Int { return 49 }
@available(macOS 11.0, iOS 14.0, *)
@_backDeploy(before: _myProject 1.0)
public func backDeployTopLevelFunc3() -> Int { return 49 }
3 changes: 2 additions & 1 deletion test/ModuleInterface/closure.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// RUN: %empty-directory(%t)

// RUN: %target-swift-frontend -typecheck %s -emit-module-interface-path %t/main.swiftinterface -enable-library-evolution
// RUN: %target-swift-emit-module-interface(%t/main.swiftinterface) %s
// RUN: %target-swift-typecheck-module-from-interface(%t/main.swiftinterface)
// RUN: %FileCheck %s < %t/main.swiftinterface

// CHECK: import Swift
Expand Down
6 changes: 4 additions & 2 deletions test/ModuleInterface/concurrency.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -typecheck -enable-library-evolution -enable-experimental-concurrency -emit-module-interface-path %t/Library.swiftinterface -DLIBRARY -module-name Library %s
// RUN: %target-swift-emit-module-interface(%t/Library.swiftinterface) %s -enable-experimental-concurrency -DLIBRARY -module-name Library
// RUN: %target-swift-typecheck-module-from-interface(%t/Library.swiftinterface) -enable-experimental-concurrency

// REQUIRES: concurrency

Expand Down Expand Up @@ -36,5 +37,6 @@ func callFn() async {
// CHECK: public func reasyncFn(_: () async -> ()) reasync
// CHECK: public func takesSendable(_ block: @escaping @Sendable () async throws ->

// RUN: %target-swift-frontend -typecheck -enable-library-evolution -enable-experimental-concurrency -emit-module-interface-path %t/Library.swiftinterface -DLIBRARY -module-name Library %s -module-interface-preserve-types-as-written
// RUN: %target-swift-emit-module-interface(%t/Library.swiftinterface) %s -enable-experimental-concurrency -DLIBRARY -module-name Library -module-interface-preserve-types-as-written
// RUN: %target-swift-typecheck-module-from-interface(%t/Library.swiftinterface) -enable-experimental-concurrency
// RUN: %FileCheck %s <%t/Library.swiftinterface
3 changes: 2 additions & 1 deletion test/ModuleInterface/conformances.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: %target-swift-frontend-typecheck -emit-module-interface-path %t.swiftinterface %s
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -module-name conformances
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -module-name conformances
// RUN: %FileCheck %s < %t.swiftinterface
// RUN: %FileCheck -check-prefix CHECK-END %s < %t.swiftinterface
// RUN: %FileCheck -check-prefix NEGATIVE %s < %t.swiftinterface
Expand Down
5 changes: 3 additions & 2 deletions test/ModuleInterface/consuming.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// RUN: %empty-directory(%t)
// RUN: %empty-directory(%t/missing)
// RUN: %empty-directory(%t/inputs)
// RUN: %target-swift-frontend -emit-module-path %t/missing/Foo.swiftmodule -enable-library-evolution -emit-module-interface-path %t/inputs/Foo.swiftinterface -enable-objc-interop -disable-objc-attr-requires-foundation-module -module-name Foo %s
// RUN: %FileCheck --input-file %t/inputs/Foo.swiftinterface %s
// RUN: %target-swift-frontend -emit-module-path %t/missing/Foo.swiftmodule -swift-version 5 -enable-library-evolution -emit-module-interface-path %t/inputs/Foo.swiftinterface -enable-objc-interop -disable-objc-attr-requires-foundation-module -module-name Foo %s
// RUN: %target-swift-typecheck-module-from-interface(%t/inputs/Foo.swiftinterface)
// RUN: %FileCheck %s < %t/inputs/Foo.swiftinterface

// RUN: touch %t/Bar.swift
// RUN: echo "import Foo" > %t/Bar.swift
Expand Down
3 changes: 2 additions & 1 deletion test/ModuleInterface/effectful_properties.swift
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// RUN: %target-swift-frontend -typecheck -swift-version 5 -enable-library-evolution -emit-module-interface-path %t.swiftinterface %s -module-name EffProps -disable-availability-checking
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -module-name EffProps -disable-availability-checking
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -module-name EffProps -disable-availability-checking
// RUN: %FileCheck %s < %t.swiftinterface

public struct MyStruct {}
Expand Down
Loading