11// REQUIRES: objc_interop, OS=macosx
22// RUN: %empty-directory(%t)
3- // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) %s -typecheck -emit-module-interface-path %t/MyModule.swiftinterface -enable-library-evolution -module-name MyModule -swift-version 5
4- // RUN: %target-swift-api-extract -o - -pretty-print %t/MyModule.swiftinterface -module-name MyModule -module-cache-path %t | %FileCheck %s
3+ // RUN: %empty-directory(%t/ModuleCache)
4+ // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) %s -typecheck -parse-as-library -emit-module-interface-path %t/MyModule.swiftinterface -enable-library-evolution -module-name MyModule -swift-version 5
5+ // RUN: %target-swift-api-extract -o - -pretty-print %t/MyModule.swiftinterface -module-name MyModule -module-cache-path %t/ModuleCache | %FileCheck %s
56
67import Foundation
78
89@available ( macOS 10 . 13 , * )
910public class Test : NSObject {
1011 @objc public func method1( ) { }
12+ @available ( macOS 10 . 14 , * )
1113 @objc public class func method2( ) { }
1214 public func nonObjc( ) { }
1315}
@@ -42,6 +44,9 @@ public func myFunction1() {}
4244@available ( * , unavailable)
4345public func myFunction2( ) { }
4446
47+ @available ( macOS 10 . 13 , * )
48+ public var myGlobalVar : Int = 42
49+
4550// CHECK: "target"
4651// CHECK-NEXT: "globals": [
4752// CHECK-NEXT: {
@@ -66,6 +71,27 @@ public func myFunction2() {}
6671// CHECK-NEXT: "unavailable": true
6772// CHECK-NEXT: },
6873// CHECK-NEXT: {
74+ // CHECK-NEXT: "name": "_$s8MyModule11myGlobalVarSivM",
75+ // CHECK-NEXT: "access": "public",
76+ // CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
77+ // CHECK-NEXT: "linkage": "exported",
78+ // CHECK-NEXT: "introduced": "10.13"
79+ // CHECK-NEXT: },
80+ // CHECK-NEXT: {
81+ // CHECK-NEXT: "name": "_$s8MyModule11myGlobalVarSivg",
82+ // CHECK-NEXT: "access": "public",
83+ // CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
84+ // CHECK-NEXT: "linkage": "exported",
85+ // CHECK-NEXT: "introduced": "10.13"
86+ // CHECK-NEXT: },
87+ // CHECK-NEXT: {
88+ // CHECK-NEXT: "name": "_$s8MyModule11myGlobalVarSivs",
89+ // CHECK-NEXT: "access": "public",
90+ // CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
91+ // CHECK-NEXT: "linkage": "exported",
92+ // CHECK-NEXT: "introduced": "10.13"
93+ // CHECK-NEXT: },
94+ // CHECK-NEXT: {
6995// CHECK-NEXT: "name": "_$s8MyModule4TestC7method1yyFTj",
7096// CHECK-NEXT: "access": "public",
7197// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
@@ -81,13 +107,15 @@ public func myFunction2() {}
81107// CHECK-NEXT: "name": "_$s8MyModule4TestC7method2yyFZTj",
82108// CHECK-NEXT: "access": "public",
83109// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
84- // CHECK-NEXT: "linkage": "exported"
110+ // CHECK-NEXT: "linkage": "exported",
111+ // CHECK-NEXT: "introduced": "10.14"
85112// CHECK-NEXT: },
86113// CHECK-NEXT: {
87114// CHECK-NEXT: "name": "_$s8MyModule4TestC7method2yyFZTq",
88115// CHECK-NEXT: "access": "public",
89116// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
90- // CHECK-NEXT: "linkage": "exported"
117+ // CHECK-NEXT: "linkage": "exported",
118+ // CHECK-NEXT: "introduced": "10.14"
91119// CHECK-NEXT: },
92120// CHECK-NEXT: {
93121// CHECK-NEXT: "name": "_$s8MyModule4TestC7nonObjcyyFTj",
@@ -117,31 +145,36 @@ public func myFunction2() {}
117145// CHECK-NEXT: "name": "_$s8MyModule4TestCMa",
118146// CHECK-NEXT: "access": "public",
119147// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
120- // CHECK-NEXT: "linkage": "exported"
148+ // CHECK-NEXT: "linkage": "exported",
149+ // CHECK-NEXT: "introduced": "10.13"
121150// CHECK-NEXT: },
122151// CHECK-NEXT: {
123152// CHECK-NEXT: "name": "_$s8MyModule4TestCMn",
124153// CHECK-NEXT: "access": "public",
125154// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
126- // CHECK-NEXT: "linkage": "exported"
155+ // CHECK-NEXT: "linkage": "exported",
156+ // CHECK-NEXT: "introduced": "10.13"
127157// CHECK-NEXT: },
128158// CHECK-NEXT: {
129159// CHECK-NEXT: "name": "_$s8MyModule4TestCMo",
130160// CHECK-NEXT: "access": "public",
131161// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
132- // CHECK-NEXT: "linkage": "exported"
162+ // CHECK-NEXT: "linkage": "exported",
163+ // CHECK-NEXT: "introduced": "10.13"
133164// CHECK-NEXT: },
134165// CHECK-NEXT: {
135166// CHECK-NEXT: "name": "_$s8MyModule4TestCMu",
136167// CHECK-NEXT: "access": "public",
137168// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
138- // CHECK-NEXT: "linkage": "exported"
169+ // CHECK-NEXT: "linkage": "exported",
170+ // CHECK-NEXT: "introduced": "10.13"
139171// CHECK-NEXT: },
140172// CHECK-NEXT: {
141173// CHECK-NEXT: "name": "_$s8MyModule4TestCN",
142174// CHECK-NEXT: "access": "public",
143175// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
144- // CHECK-NEXT: "linkage": "exported"
176+ // CHECK-NEXT: "linkage": "exported",
177+ // CHECK-NEXT: "introduced": "10.13"
145178// CHECK-NEXT: },
146179// CHECK-NEXT: {
147180// CHECK-NEXT: "name": "_$s8MyModule4TestCfD",
@@ -291,25 +324,29 @@ public func myFunction2() {}
291324// CHECK-NEXT: "name": "_$s8MyModule7DerivedCMa",
292325// CHECK-NEXT: "access": "public",
293326// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
294- // CHECK-NEXT: "linkage": "exported"
327+ // CHECK-NEXT: "linkage": "exported",
328+ // CHECK-NEXT: "introduced": "10.13"
295329// CHECK-NEXT: },
296330// CHECK-NEXT: {
297331// CHECK-NEXT: "name": "_$s8MyModule7DerivedCMn",
298332// CHECK-NEXT: "access": "public",
299333// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
300- // CHECK-NEXT: "linkage": "exported"
334+ // CHECK-NEXT: "linkage": "exported",
335+ // CHECK-NEXT: "introduced": "10.13"
301336// CHECK-NEXT: },
302337// CHECK-NEXT: {
303338// CHECK-NEXT: "name": "_$s8MyModule7DerivedCMo",
304339// CHECK-NEXT: "access": "public",
305340// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
306- // CHECK-NEXT: "linkage": "exported"
341+ // CHECK-NEXT: "linkage": "exported",
342+ // CHECK-NEXT: "introduced": "10.13"
307343// CHECK-NEXT: },
308344// CHECK-NEXT: {
309345// CHECK-NEXT: "name": "_$s8MyModule7DerivedCN",
310346// CHECK-NEXT: "access": "public",
311347// CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
312- // CHECK-NEXT: "linkage": "exported"
348+ // CHECK-NEXT: "linkage": "exported",
349+ // CHECK-NEXT: "introduced": "10.13"
313350// CHECK-NEXT: },
314351// CHECK-NEXT: {
315352// CHECK-NEXT: "name": "_$s8MyModule7DerivedCfD",
@@ -342,7 +379,8 @@ public func myFunction2() {}
342379// CHECK-NEXT: {
343380// CHECK-NEXT: "name": "method2",
344381// CHECK-NEXT: "access": "public",
345- // CHECK-NEXT: "file": "/@input/MyModule.swiftinterface"
382+ // CHECK-NEXT: "file": "/@input/MyModule.swiftinterface",
383+ // CHECK-NEXT: "introduced": "10.14"
346384// CHECK-NEXT: }
347385// CHECK-NEXT: ]
348386// CHECK-NEXT: },
0 commit comments