Skip to content

Commit 9aea080

Browse files
committed
Add canonical types silgen test
1 parent ed4cef9 commit 9aea080

File tree

4 files changed

+39
-25
lines changed

4 files changed

+39
-25
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
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+

test/Interop/Cxx/templates/canonical-types.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ TemplatesTestSuite.test("canonical-types") {
1414
var wrappedMagicNumberA = WrappedMagicNumberA(t: magicNumber)
1515
expectEqual(wrappedMagicNumberA.callGetInt(), 29)
1616

17-
var wrappedMagicNumberB: WrappedMagicNumberB =
17+
var wrappedMagicNumberB: WrappedMagicNumberA =
1818
WrappedMagicNumberB(t: magicNumber)
1919
expectEqual(wrappedMagicNumberB.callGetInt(), 29)
2020
}

test/Interop/Cxx/templates/decl-with-definition-silgen.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public func getWrappedMagicNumber() -> CInt {
1111
return wrappedMagicNumber.callGetInt()
1212
}
1313

14-
// getWrappedMagicNumber()
14+
// CHECK: // getWrappedMagicNumber()
1515
// CHECK: sil @$s4main21getWrappedMagicNumbers5Int32VyF : $@convention(thin) () -> Int32 {
1616
// CHECK: [[MAGIC_NUMBER:%.*]] = struct $MagicNumber ()
1717
// CHECK: [[_:%.*]] = struct $__CxxTemplateInst12MagicWrapperI11MagicNumberE ([[MAGIC_NUMBER]] : $MagicNumber)

test/Interop/Cxx/templates/typedefs-silgen.swift

Lines changed: 0 additions & 23 deletions
This file was deleted.

0 commit comments

Comments
 (0)