Files
swift-mirror/test/Serialization/Recovery/rename-across-versions.swift
Jordan Rose ec90545ff2 [Serialization] Follow compatibility typealiases for non-generic types (#16618)
Now that we use the C names of imported types in mangled names, it's
safe to resolve a compatibility alias when a type gets an
NS_SWIFT_NAME for the first time, rather than requiring the developer
to recompile the imported library.

This doesn't include generic types, which only applies for Objective-C
generics. There shouldn't be additional complications here but I want
to be extra careful.

rdar://problem/39661212
2018-05-15 10:04:40 -07:00

39 lines
1.3 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -emit-module -o %t -module-name Lib -I %S/Inputs/custom-modules %s
// RUN: %target-swift-ide-test -source-filename=x -print-module -module-to-print Lib -I %t -I %S/Inputs/custom-modules | %FileCheck %s
// RUN: %target-swift-ide-test -source-filename=x -print-module -module-to-print Lib -I %t -I %S/Inputs/custom-modules -Xcc -DNEW > %t/recovery.txt
// RUN: %FileCheck -check-prefix CHECK-RECOVERY %s < %t/recovery.txt
// RUN: %FileCheck -check-prefix NEGATIVE-RECOVERY %s < %t/recovery.txt
import RenameAcrossVersions
public func test(
a: BeforeStruct,
b: BeforeTypedef,
c: BeforeWrappedTypedef
) {}
// CHECK-LABEL: func test(
// CHECK-SAME: a: BeforeStruct
// CHECK-SAME: b: BeforeTypedef
// CHECK-SAME: c: BeforeWrappedTypedef
// CHECK-SAME: )
// CHECK-RECOVERY-LABEL: func test(
// CHECK-RECOVERY-SAME: a: AfterStruct
// CHECK-RECOVERY-SAME: b: AfterTypedef
// CHECK-RECOVERY-SAME: c: AfterWrappedTypedef
// CHECK-RECOVERY-SAME: )
// Test replacements that look like renames.
// Please only include one parameter per function, so that we test that that one
// parameter is enough to get the function dropped from the recovery interface.
public func testReplacementA(_: BeforeReplacedType) {}
// CHECK-LABEL: func testReplacementA(_: BeforeReplacedType)
// NEGATIVE-RECOVERY-NOT: testReplacement