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)
2
3
//
3
4
// REQUIRES: executable_test
4
5
@@ -24,12 +25,12 @@ FieldsTestSuite.test("Zero sized field") {
24
25
expectEqual ( s. b. getNum ( ) , 42 )
25
26
}
26
27
27
- FieldsTestSuite . test ( " Field padding reused" ) {
28
- var s = ReuseFieldPadding ( )
28
+ FieldsTestSuite . test ( " Optional field padding reused" ) {
29
+ var s = ReuseOptionalFieldPadding ( )
29
30
let opt = s. getOptional ( )
30
31
expectEqual ( Int ( opt. pointee) , 2 )
31
32
s. c = 5
32
- expectEqual ( Int ( s. offset ( ) ) , MemoryLayout < ReuseFieldPadding > . offset ( of: \. c) !)
33
+ expectEqual ( Int ( s. offset ( ) ) , MemoryLayout < ReuseOptionalFieldPadding > . offset ( of: \. c) !)
33
34
expectEqual ( s. c, 5 )
34
35
expectEqual ( s. get_c ( ) , 5 )
35
36
s. set_c ( 6 )
@@ -40,10 +41,38 @@ FieldsTestSuite.test("Field padding reused") {
40
41
expectEqual ( s2. get_c ( ) , 6 )
41
42
}
42
43
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 ( )
45
46
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) !)
47
76
expectEqual ( s. c, 5 )
48
77
expectEqual ( s. get_c ( ) , 5 )
49
78
s. set_c ( 6 )
0 commit comments