Files
swift-mirror/test/APIJSON/originally-defined-in.swift
Zixu Wang abdfecea08 [APIGen] Pass previous-module-installname-map file to APIGen (#88288)
For `@_originallyDefinedIn` declarations, we should be consistent with
TBDGen to emit `$ld$previous` symbols instead of a huge number of
`$ld$hide` symbols, when a previous-module-installname-map file is given
from TBDGen options.
`APIGenRequest` was constructing a new and empty set of `TBDGenOptions`
so the map file was missing when generating API descriptor. Pass the
actual options from the invocation.
2026-04-07 10:38:10 -07:00

144 lines
6.2 KiB
Swift

// REQUIRES: objc_interop, OS=macosx
// RUN: %empty-directory(%t)
// RUN: %empty-directory(%t/ModuleCache)
// RUN: split-file %s %t
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk-nosource -I %t) %t/MyModuleCore.swift -parse-as-library -emit-module -emit-module-path %t/MyModuleCore.swiftmodule -enable-library-evolution -module-name MyModuleCore -swift-version 5 -emit-api-descriptor-path %t/api.json -target arm64-apple-macos26 -library-level api -previous-module-installname-map-file %t/previous-module-installname-map.json
// RUN: %validate-json %t/api.json | %FileCheck %s
//--- MyModuleCore.swift
@_originallyDefinedIn(module: "MyModule", macOS 15)
@available(macOS 13, *)
public class MyClass {}
//--- previous-module-installname-map.json
[
{
"module": "MyModule",
"install_name": "/System/Library/Frameworks/MyModule.framework/MyModule",
"platforms": ["macOS"]
}
]
//--- Checks
// CHECK: {
// CHECK-NEXT: "target": "arm64-apple-macos26",
// CHECK-NEXT: "globals": [
// CHECK-NEXT: {
// CHECK-NEXT: "name": "$ld$previous$/System/Library/Frameworks/MyModule.framework/MyModule$$1$1.0$15.0$_$s8MyModule0A5ClassCMa$",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "$ld$previous$/System/Library/Frameworks/MyModule.framework/MyModule$$1$1.0$15.0$_$s8MyModule0A5ClassCMm$",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "$ld$previous$/System/Library/Frameworks/MyModule.framework/MyModule$$1$1.0$15.0$_$s8MyModule0A5ClassCMn$",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "$ld$previous$/System/Library/Frameworks/MyModule.framework/MyModule$$1$1.0$15.0$_$s8MyModule0A5ClassCMo$",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "$ld$previous$/System/Library/Frameworks/MyModule.framework/MyModule$$1$1.0$15.0$_$s8MyModule0A5ClassCMu$",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "$ld$previous$/System/Library/Frameworks/MyModule.framework/MyModule$$1$1.0$15.0$_$s8MyModule0A5ClassCN$",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "$ld$previous$/System/Library/Frameworks/MyModule.framework/MyModule$$1$1.0$15.0$_$s8MyModule0A5ClassCfD$",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "$ld$previous$/System/Library/Frameworks/MyModule.framework/MyModule$$1$1.0$15.0$_$s8MyModule0A5ClassCfd$",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "_$s8MyModule0A5ClassCMa",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "_$s8MyModule0A5ClassCMm",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "_$s8MyModule0A5ClassCMn",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "_$s8MyModule0A5ClassCMo",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "_$s8MyModule0A5ClassCMu",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "_$s8MyModule0A5ClassCN",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "_$s8MyModule0A5ClassCfD",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: },
// CHECK-NEXT: {
// CHECK-NEXT: "name": "_$s8MyModule0A5ClassCfd",
// CHECK-NEXT: "access": "public",
// CHECK-NEXT: "file": "TMP_DIR/MyModuleCore.swift",
// CHECK-NEXT: "linkage": "exported",
// CHECK-NEXT: "introduced": "13"
// CHECK-NEXT: }
// CHECK-NEXT: ],
// CHECK-NEXT: "interfaces": [],
// CHECK-NEXT: "categories": [],
// CHECK-NEXT: "version": "1.0"
// CHECK-NEXT: }