1- // RUN: %target-run-simple-swift(-I %S/Inputs/ -Xfrontend -enable-experimental-cxx-interop -Xcc -std=c++20)
1+ // RUN: %empty-directory(%t/index)
2+ // RUN: %target-run-simple-swift(-I %S/Inputs/ -Xfrontend -enable-experimental-cxx-interop -Xcc -std=c++20 -Xfrontend -index-store-path -Xfrontend %t/index)
23//
34// REQUIRES: executable_test
45
@@ -24,12 +25,12 @@ FieldsTestSuite.test("Zero sized field") {
2425 expectEqual ( s. b. getNum ( ) , 42 )
2526}
2627
27- FieldsTestSuite . test ( " Field padding reused" ) {
28- var s = ReuseFieldPadding ( )
28+ FieldsTestSuite . test ( " Optional field padding reused" ) {
29+ var s = ReuseOptionalFieldPadding ( )
2930 let opt = s. getOptional ( )
3031 expectEqual ( Int ( opt. pointee) , 2 )
3132 s. c = 5
32- expectEqual ( Int ( s. offset ( ) ) , MemoryLayout < ReuseFieldPadding > . offset ( of: \. c) !)
33+ expectEqual ( Int ( s. offset ( ) ) , MemoryLayout < ReuseOptionalFieldPadding > . offset ( of: \. c) !)
3334 expectEqual ( s. c, 5 )
3435 expectEqual ( s. get_c ( ) , 5 )
3536 s. set_c ( 6 )
@@ -40,10 +41,38 @@ FieldsTestSuite.test("Field padding reused") {
4041 expectEqual ( s2. get_c ( ) , 6 )
4142}
4243
43- FieldsTestSuite . test ( " Typedef'd field padding reused " ) {
44- var s = ReuseFieldPaddingWithTypedef ( )
44+ FieldsTestSuite . test ( " Typedef'd optional field padding reused " ) {
45+ var s = ReuseOptionalFieldPaddingWithTypedef ( )
4546 s. c = 5
46- expectEqual ( Int ( s. offset ( ) ) , MemoryLayout < ReuseFieldPadding > . offset ( of: \. c) !)
47+ expectEqual ( Int ( s. offset ( ) ) , MemoryLayout < ReuseOptionalFieldPadding > . offset ( of: \. c) !)
48+ expectEqual ( s. c, 5 )
49+ expectEqual ( s. get_c ( ) , 5 )
50+ s. set_c ( 6 )
51+ expectEqual ( s. c, 6 )
52+ expectEqual ( s. get_c ( ) , 6 )
53+ let s2 = s
54+ expectEqual ( s2. c, 6 )
55+ expectEqual ( s2. get_c ( ) , 6 )
56+ }
57+
58+ FieldsTestSuite . test ( " Non-standard-layout field padding reused " ) {
59+ var s = ReuseNonStandardLayoutFieldPadding ( )
60+ s. c = 5
61+ expectEqual ( Int ( s. offset ( ) ) , MemoryLayout < ReuseNonStandardLayoutFieldPadding > . offset ( of: \. c) !)
62+ expectEqual ( s. c, 5 )
63+ expectEqual ( s. get_c ( ) , 5 )
64+ s. set_c ( 6 )
65+ expectEqual ( s. c, 6 )
66+ expectEqual ( s. get_c ( ) , 6 )
67+ let s2 = s
68+ expectEqual ( s2. c, 6 )
69+ expectEqual ( s2. get_c ( ) , 6 )
70+ }
71+
72+ FieldsTestSuite . test ( " Non-standard-layout field padding in templated class reused " ) {
73+ var s = ReuseDependentFieldPaddingInt ( )
74+ s. c = 5
75+ expectEqual ( Int ( s. offset ( ) ) , MemoryLayout < ReuseDependentFieldPaddingInt > . offset ( of: \. c) !)
4776 expectEqual ( s. c, 5 )
4877 expectEqual ( s. get_c ( ) , 5 )
4978 s. set_c ( 6 )
0 commit comments