Skip to content

Commit 2ae0644

Browse files
committed
Add the reflect_Optional_Bool validation test
Bools are special in that they only need 1 bit of storage, and have many extra inhabitants available. This adds a test to check that an optional whose payload is a bool is reflected correctly.
1 parent c0abe0b commit 2ae0644

File tree

1 file changed

+208
-0
lines changed

1 file changed

+208
-0
lines changed
Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,208 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: %target-build-swift -g -lswiftSwiftReflectionTest %s -o %t/reflect_Optional_Bool
3+
// RUN: %target-codesign %t/reflect_Optional_Bool
4+
5+
// RUN: %target-run %target-swift-reflection-test %t/reflect_Optional_Bool | %FileCheck %s
6+
7+
8+
// REQUIRES: reflection_test_support
9+
// REQUIRES: executable_test
10+
// UNSUPPORTED: use_os_stdlib
11+
12+
import SwiftReflectionTest
13+
14+
let optFalse: Bool? = false
15+
reflect(enum: optFalse)
16+
17+
// CHECK: Reflecting an enum.
18+
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
19+
// CHECK: Type reference:
20+
// CHECK: (bound_generic_enum Swift.Optional
21+
// CHECK: (struct Swift.Bool))
22+
23+
// CHECK: Type info:
24+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=253 bitwise_takable=1
25+
// CHECK: (case name=some index=0 offset=0
26+
// CHECK: (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1
27+
// CHECK: (field name=_value offset=0
28+
// CHECK: (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1))))
29+
// CHECK: (case name=none index=1))
30+
31+
// CHECK: Mangled name: $sSbSg
32+
// CHECK: Demangled name: Swift.Optional<Swift.Bool>
33+
34+
// CHECK: Enum value:
35+
// CHECK: (enum_value name=some index=0
36+
// CHECK: (struct Swift.Bool)
37+
// CHECK: )
38+
39+
40+
let optTrue: Bool? = true
41+
reflect(enum: optTrue)
42+
43+
// CHECK: Reflecting an enum.
44+
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
45+
// CHECK: Type reference:
46+
// CHECK: (bound_generic_enum Swift.Optional
47+
// CHECK: (struct Swift.Bool))
48+
49+
// CHECK: Type info:
50+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=253 bitwise_takable=1
51+
// CHECK: (case name=some index=0 offset=0
52+
// CHECK: (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1
53+
// CHECK: (field name=_value offset=0
54+
// CHECK: (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1))))
55+
// CHECK: (case name=none index=1))
56+
57+
// CHECK: Mangled name: $sSbSg
58+
// CHECK: Demangled name: Swift.Optional<Swift.Bool>
59+
60+
// CHECK: Enum value:
61+
// CHECK: (enum_value name=some index=0
62+
// CHECK: (struct Swift.Bool)
63+
// CHECK: )
64+
65+
let optNil: Bool? = .none
66+
reflect(enum: optNil)
67+
68+
// CHECK: Reflecting an enum.
69+
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
70+
// CHECK: Type reference:
71+
// CHECK: (bound_generic_enum Swift.Optional
72+
// CHECK: (struct Swift.Bool))
73+
74+
// CHECK: Type info:
75+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=253 bitwise_takable=1
76+
// CHECK: (case name=some index=0 offset=0
77+
// CHECK: (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1
78+
// CHECK: (field name=_value offset=0
79+
// CHECK: (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1))))
80+
// CHECK: (case name=none index=1))
81+
82+
// CHECK: Mangled name: $sSbSg
83+
// CHECK: Demangled name: Swift.Optional<Swift.Bool>
84+
85+
// CHECK: Enum value:
86+
// CHECK: (enum_value name=none index=1)
87+
88+
let optOptFalse: Bool?? = false
89+
reflect(enum: optOptFalse)
90+
91+
// CHECK: Reflecting an enum.
92+
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
93+
// CHECK: Type reference:
94+
// CHECK: (bound_generic_enum Swift.Optional
95+
// CHECK: (bound_generic_enum Swift.Optional
96+
// CHECK: (struct Swift.Bool)))
97+
98+
// CHECK: Type info:
99+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=252 bitwise_takable=1
100+
// CHECK: (case name=some index=0 offset=0
101+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=253 bitwise_takable=1
102+
// CHECK: (case name=some index=0 offset=0
103+
// CHECK: (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1
104+
// CHECK: (field name=_value offset=0
105+
// CHECK: (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1))))
106+
// CHECK: (case name=none index=1)))
107+
// CHECK: (case name=none index=1))
108+
109+
// CHECK: Mangled name: $sSbSgSg
110+
// CHECK: Demangled name: Swift.Optional<Swift.Optional<Swift.Bool>>
111+
112+
// CHECK: Enum value:
113+
// CHECK: (enum_value name=some index=0
114+
// CHECK: (bound_generic_enum Swift.Optional
115+
// CHECK: (struct Swift.Bool))
116+
// CHECK: )
117+
118+
let optOptTrue: Bool?? = true
119+
reflect(enum: optOptTrue)
120+
121+
// CHECK: Reflecting an enum.
122+
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
123+
// CHECK: Type reference:
124+
// CHECK: (bound_generic_enum Swift.Optional
125+
// CHECK: (bound_generic_enum Swift.Optional
126+
// CHECK: (struct Swift.Bool)))
127+
128+
// CHECK: Type info:
129+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=252 bitwise_takable=1
130+
// CHECK: (case name=some index=0 offset=0
131+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=253 bitwise_takable=1
132+
// CHECK: (case name=some index=0 offset=0
133+
// CHECK: (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1
134+
// CHECK: (field name=_value offset=0
135+
// CHECK: (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1))))
136+
// CHECK: (case name=none index=1)))
137+
// CHECK: (case name=none index=1))
138+
139+
// CHECK: Mangled name: $sSbSgSg
140+
// CHECK: Demangled name: Swift.Optional<Swift.Optional<Swift.Bool>>
141+
142+
// CHECK: Enum value:
143+
// CHECK: (enum_value name=some index=0
144+
// CHECK: (bound_generic_enum Swift.Optional
145+
// CHECK: (struct Swift.Bool))
146+
// CHECK: )
147+
148+
let optOptSomeNil: Bool?? = .some(.none)
149+
reflect(enum: optOptSomeNil)
150+
151+
// CHECK: Reflecting an enum.
152+
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
153+
// CHECK: Type reference:
154+
// CHECK: (bound_generic_enum Swift.Optional
155+
// CHECK: (bound_generic_enum Swift.Optional
156+
// CHECK: (struct Swift.Bool)))
157+
158+
// CHECK: Type info:
159+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=252 bitwise_takable=1
160+
// CHECK: (case name=some index=0 offset=0
161+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=253 bitwise_takable=1
162+
// CHECK: (case name=some index=0 offset=0
163+
// CHECK: (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1
164+
// CHECK: (field name=_value offset=0
165+
// CHECK: (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1))))
166+
// CHECK: (case name=none index=1)))
167+
// CHECK: (case name=none index=1))
168+
169+
// CHECK: Mangled name: $sSbSgSg
170+
// CHECK: Demangled name: Swift.Optional<Swift.Optional<Swift.Bool>>
171+
172+
// CHECK: Enum value:
173+
// CHECK: (enum_value name=some index=0
174+
// CHECK: (bound_generic_enum Swift.Optional
175+
// CHECK: (struct Swift.Bool))
176+
// CHECK: )
177+
178+
let optOptNil: Bool?? = .none
179+
reflect(enum: optOptNil)
180+
181+
// CHECK: Reflecting an enum.
182+
// CHECK: Instance pointer in child address space: 0x{{[0-9a-fA-F]+}}
183+
// CHECK: Type reference:
184+
// CHECK: (bound_generic_enum Swift.Optional
185+
// CHECK: (bound_generic_enum Swift.Optional
186+
// CHECK: (struct Swift.Bool)))
187+
188+
// CHECK: Type info:
189+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=252 bitwise_takable=1
190+
// CHECK: (case name=some index=0 offset=0
191+
// CHECK: (single_payload_enum size=1 alignment=1 stride=1 num_extra_inhabitants=253 bitwise_takable=1
192+
// CHECK: (case name=some index=0 offset=0
193+
// CHECK: (struct size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1
194+
// CHECK: (field name=_value offset=0
195+
// CHECK: (builtin size=1 alignment=1 stride=1 num_extra_inhabitants=254 bitwise_takable=1))))
196+
// CHECK: (case name=none index=1)))
197+
// CHECK: (case name=none index=1))
198+
199+
// CHECK: Mangled name: $sSbSgSg
200+
// CHECK: Demangled name: Swift.Optional<Swift.Optional<Swift.Bool>>
201+
202+
// CHECK: Enum value:
203+
// CHECK: (enum_value name=none index=1)
204+
205+
doneReflecting()
206+
207+
// CHECK-64: Done.
208+

0 commit comments

Comments
 (0)