|
| 1 | +// RUN: %target-swift-emit-sil %s -I %S/Inputs -enable-cxx-interop | %FileCheck %s |
| 2 | +// RUN: %target-swift-frontend -Xcc -target -Xcc x86_64-unknown-windows-msvc -Xcc -fno-PIC -emit-sil %s -I %S/Inputs -enable-cxx-interop | %FileCheck %s |
| 3 | +// RUN: %target-swift-frontend -Xcc -target -Xcc x86_64-apple-macosx10.9 -Xcc -fno-PIC -emit-sil %s -I %S/Inputs -enable-cxx-interop | %FileCheck %s |
| 4 | +// RUN: %target-swift-frontend -Xcc -target -Xcc arm64-apple-ios11.2.0 -Xcc -fno-PIC -emit-sil %s -I %S/Inputs -enable-cxx-interop | %FileCheck %s |
| 5 | + |
| 6 | +import CanonicalTypes |
| 7 | + |
| 8 | +public func testCanonicalTypes() -> Bool { |
| 9 | + // multiple typedeffed types with the same canonical type are the same type |
| 10 | + // from the typechecking perspective. |
| 11 | + let magicNumber = MagicNumber() |
| 12 | + var wrappedMagicNumberA = WrappedMagicNumberA(t: magicNumber) |
| 13 | + |
| 14 | + var wrappedMagicNumberB: WrappedMagicNumberA = |
| 15 | + WrappedMagicNumberB(t: magicNumber) |
| 16 | + return wrappedMagicNumberA.callGetInt() == wrappedMagicNumberB.callGetInt() |
| 17 | +} |
| 18 | + |
| 19 | +// CHECK: // testCanonicalTypes() |
| 20 | +// CHECK: sil @$s4main18testCanonicalTypesSbyF : $@convention(thin) () -> Bool |
| 21 | +// CHECK: [[A:%.*]] = alloc_stack $__CxxTemplateInst12MagicWrapperI11MagicNumberE, var, name "wrappedMagicNumberA" |
| 22 | +// CHECK: [[B:%.*]] = alloc_stack $__CxxTemplateInst12MagicWrapperI11MagicNumberE, var, name "wrappedMagicNumberB" |
| 23 | +// CHECK: [[A_ACCESS:%.*]] = begin_access [modify] [static] [[A]] : $*__CxxTemplateInst12MagicWrapperI11MagicNumberE |
| 24 | +// CHECK: // function_ref {{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ}} |
| 25 | +// CHECK: [[A_CALL_GET_INT:%.*]] = function_ref @{{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ}} : $@convention(c) (@inout __CxxTemplateInst12MagicWrapperI11MagicNumberE) -> Int32 |
| 26 | +// CHECK: apply [[A_CALL_GET_INT]]([[A_ACCESS]]) : $@convention(c) (@inout __CxxTemplateInst12MagicWrapperI11MagicNumberE) -> Int32 |
| 27 | +// CHECK: [[B_ACCESS:%.*]] = begin_access [modify] [static] [[B]] : $*__CxxTemplateInst12MagicWrapperI11MagicNumberE |
| 28 | +// CHECK: // function_ref {{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ}} |
| 29 | +// CHECK: [[B_CALL_GET_INT:%.*]] = function_ref @{{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ}} : $@convention(c) (@inout __CxxTemplateInst12MagicWrapperI11MagicNumberE) -> Int32 |
| 30 | +// CHECK: apply [[B_CALL_GET_INT]]([[B_ACCESS]]) : $@convention(c) (@inout __CxxTemplateInst12MagicWrapperI11MagicNumberE) -> Int32 |
| 31 | +// CHECK: } // end sil function '$s4main18testCanonicalTypesSbyF' |
| 32 | + |
| 33 | +// CHECK: // {{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ}} |
| 34 | +// CHECK: // clang name: MagicWrapper<MagicNumber>::callGetInt |
| 35 | +// CHECK: sil [clang __CxxTemplateInst12MagicWrapperI11MagicNumberE.callGetInt] @{{_ZNK12MagicWrapperI11MagicNumberE10callGetIntEv|\?callGetInt@\?\$MagicWrapper@UMagicNumber@@@@QEBAHXZ}} : $@convention(c) (@inout __CxxTemplateInst12MagicWrapperI11MagicNumberE) -> Int32 |
| 36 | + |
| 37 | + |
0 commit comments