AST: Store parsed version in OriginallyDefinedInAttr instead of canonical.

Canonicalize the version on-demand instead.

NFC, part of rdar://155558161.
This commit is contained in:
Allan Shortlidge
2025-07-10 15:56:00 -07:00
parent e03cf967c3
commit 910989c2c2
14 changed files with 164 additions and 43 deletions

View File

@@ -8,4 +8,20 @@ public struct Vehicle {
public func move() {}
@available(macOS 10.15, iOS 13, *)
public func originallyDefinedInCurrentModule() {}
}
}
@available(macOS 10.8, iOS 10.2, *)
@_originallyDefinedIn(module: "ToasterKit", macOS 15, iOS 18)
public func movedPriorTo26() {}
@available(macOS 10.8, iOS 10.2, *)
@_originallyDefinedIn(module: "ToasterKit", macOS 16, iOS 19)
public func movedInVersionsMappingTo26() {}
@available(macOS 10.8, iOS 10.2, *)
@_originallyDefinedIn(module: "ToasterKit", macOS 17, iOS 20)
public func movedInVersionsMappingTo27() {}
@available(macOS 10.8, iOS 10.2, *)
@_originallyDefinedIn(module: "ToasterKit", macOS 26, iOS 26)
public func movedInVersion26() {}

View File

@@ -12,9 +12,17 @@
// CHECK-objc-simulator-false: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$2$10.2$13.0$_$s10ToasterKit7VehicleVMa$
// CHECK-objc-simulator-false: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$2$10.2$13.0$_$s10ToasterKit7VehicleVMn$
// CHECK-objc-simulator-false: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$2$10.2$13.0$_$s10ToasterKit7VehicleVN$
// CHECK-objc-simulator-false: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$2$10.2$18.0$_$s10ToasterKit14movedPriorTo26yyF
// CHECK-objc-simulator-false: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$2$10.2$26.0$_$s10ToasterKit16movedInVersion26yyF$
// CHECK-objc-simulator-false: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$2$10.2$26.0$_$s10ToasterKit26movedInVersionsMappingTo26yyF$
// CHECK-objc-simulator-false: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$2$10.2$27.0$_$s10ToasterKit26movedInVersionsMappingTo27yyF$
// CHECK-objc-simulator-true: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$7$10.2$13.0$_$s10ToasterKit5toastyyF$
// CHECK-objc-simulator-true: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$7$10.2$13.0$_$s10ToasterKit7VehicleV4moveyyF$
// CHECK-objc-simulator-true: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$7$10.2$13.0$_$s10ToasterKit7VehicleVMa$
// CHECK-objc-simulator-true: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$7$10.2$13.0$_$s10ToasterKit7VehicleVMn$
// CHECK-objc-simulator-true: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$7$10.2$13.0$_$s10ToasterKit7VehicleVN$
// CHECK-objc-simulator-true: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$7$10.2$18.0$_$s10ToasterKit14movedPriorTo26yyF
// CHECK-objc-simulator-true: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$7$10.2$26.0$_$s10ToasterKit16movedInVersion26yyF$
// CHECK-objc-simulator-true: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$7$10.2$26.0$_$s10ToasterKit26movedInVersionsMappingTo26yyF$
// CHECK-objc-simulator-true: D $ld$previous$/System/Previous/iOS/ToasterKit.dylib$$7$10.2$27.0$_$s10ToasterKit26movedInVersionsMappingTo27yyF$

View File

@@ -18,11 +18,19 @@
// CHECK-MACCATALYST: D $ld$previous$/System/Previous/macCatalyst/ToasterKit.dylib$$6$10.2$13.0$_$s10ToasterKit7VehicleVMa$
// CHECK-MACCATALYST: D $ld$previous$/System/Previous/macCatalyst/ToasterKit.dylib$$6$10.2$13.0$_$s10ToasterKit7VehicleVMn$
// CHECK-MACCATALYST: D $ld$previous$/System/Previous/macCatalyst/ToasterKit.dylib$$6$10.2$13.0$_$s10ToasterKit7VehicleVN$
// CHECK-MACCATALYST: D $ld$previous$/System/Previous/macCatalyst/ToasterKit.dylib$$6$10.2$18.0$_$s10ToasterKit14movedPriorTo26yyF
// CHECK-MACCATALYST: D $ld$previous$/System/Previous/macCatalyst/ToasterKit.dylib$$6$10.2$26.0$_$s10ToasterKit16movedInVersion26yyF$
// CHECK-MACCATALYST: D $ld$previous$/System/Previous/macCatalyst/ToasterKit.dylib$$6$10.2$26.0$_$s10ToasterKit26movedInVersionsMappingTo26yyF$
// CHECK-MACCATALYST: D $ld$previous$/System/Previous/macCatalyst/ToasterKit.dylib$$6$10.2$27.0$_$s10ToasterKit26movedInVersionsMappingTo27yyF$
// CHECK-MAC: D $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit5toastyyF$
// CHECK-MAC: D $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit7VehicleV4moveyyF$
// CHECK-MAC: D $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit7VehicleVMa$
// CHECK-MAC: D $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit7VehicleVMn$
// CHECK-MAC: D $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$10.15$_$s10ToasterKit7VehicleVN$
// CHECK-MAC: D $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$15.0$_$s10ToasterKit14movedPriorTo26yyF$
// CHECK-MAC: D $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$26.0$_$s10ToasterKit16movedInVersion26yyF$
// CHECK-MAC: D $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$26.0$_$s10ToasterKit26movedInVersionsMappingTo26yyF$
// CHECK-MAC: D $ld$previous$/System/Previous/macOS/ToasterKit.dylib$$1$10.8$27.0$_$s10ToasterKit26movedInVersionsMappingTo27yyF$
// CHECK-NOT: $_$s10ToasterKit7VehicleV32originallyDefinedInCurrentModuleyyF

View File

@@ -4,10 +4,12 @@
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -typecheck %s -tbd-install_name directive_use -tbd-is-installapi -emit-tbd -emit-tbd-path %t/linker_directives.tbd
// RUN: %llvm-nm %t/linker_directives.tbd | %FileCheck %s --check-prefix CHECK-HAS
// RUN: %llvm-nm %t/linker_directives.tbd | %FileCheck %s --check-prefix CHECK-HAS-NOT
// RUN: %llvm-nm %t/linker_directives.tbd | %FileCheck %s --check-prefix CHECK-HAS --check-prefix CHECK-HAS-NOT
// RUN: %target-swift-frontend -typecheck %s -tbd-install_name directive_use -emit-tbd -emit-tbd-path %t/linker_directives.tbd
// RUN: %llvm-nm %t/linker_directives.tbd | %FileCheck %s --check-prefix CHECK-HAS --check-prefix CHECK-HAS-NOT
// RUN: %llvm-nm %t/linker_directives.tbd | %FileCheck %s --check-prefix CHECK-HAS
// RUN: %llvm-nm %t/linker_directives.tbd | %FileCheck %s --check-prefix CHECK-HAS-NOT
@available(OSX 10.8, *)
@_originallyDefinedIn(module: "ToasterKit", macOS 10.15)
@@ -18,3 +20,25 @@ public func toast() {}
// CHECK-HAS-NOT-NOT: $ld$hide$os10.15$_$s10ToasterKit5toastyyF
// CHECK-HAS-NOT-NOT: $ld$hide$os10.7$_$s10ToasterKit5toastyyF
@available(macOS 15, *)
@_originallyDefinedIn(module: "ToasterKit", macOS 16)
public func toastMovedInVersionMappingTo26() {}
// CHECK-HAS: D $ld$hide$os15.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os15.1$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os15.10$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// FIXME: Symbols shouldn't be generated for non-existent intermediate OS versions.
// CHECK-HAS: D $ld$hide$os16.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os17.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os18.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os19.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os20.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os21.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os22.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os23.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os24.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS: D $ld$hide$os25.0$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS-NOT-NOT: $ld$hide$os14.{{.*}}$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF
// CHECK-HAS-NOT-NOT: $ld$hide$os26.{{.*}}$_$s10ToasterKit30toastMovedInVersionMappingTo26yyF