Skip to content

Commit e716300

Browse files
committed
[Reflection] Accept BuiltinTypeDescriptors with zero size.
rdar://problem/56784375
1 parent c81141a commit e716300

File tree

2 files changed

+5
-11
lines changed

2 files changed

+5
-11
lines changed

stdlib/public/Reflection/TypeRefBuilder.cpp

-2
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,6 @@ TypeRefBuilder::getBuiltinTypeInfo(const TypeRef *TR) {
253253

254254
for (auto Info : ReflectionInfos) {
255255
for (auto BuiltinTypeDescriptor : Info.Builtin) {
256-
if (BuiltinTypeDescriptor->Size <= 0)
257-
continue;
258256
if (BuiltinTypeDescriptor->getAlignment() <= 0)
259257
continue;
260258
if (BuiltinTypeDescriptor->Stride <= 0)

validation-test/Reflection/reflect_empty_struct.swift

+5-9
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// RUN: %target-build-swift -lswiftSwiftReflectionTest -I %S/Inputs/EmptyStruct/ %s -o %t/reflect_empty_struct
33
// RUN: %target-codesign %t/reflect_empty_struct
44

5-
// RUN: %target-run %target-swift-reflection-test %t/reflect_empty_struct | %FileCheck %s --check-prefix=CHECK-%target-ptrsize
5+
// RUN: %target-run %target-swift-reflection-test %t/reflect_empty_struct | %FileCheck %s --check-prefix=CHECK-%target-ptrsize --dump-input fail
66

77
// REQUIRES: objc_interop
88
// REQUIRES: executable_test
@@ -31,15 +31,13 @@ reflect(object: obj)
3131
// CHECK-64: Type info:
3232
// CHECK-64: (class_instance size=80 alignment=8 stride=80 num_extra_inhabitants=0 bitwise_takable=1
3333
// CHECK-64: (field name=a offset=16
34-
// CHECK-64: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1))
34+
// CHECK-64: (builtin size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1))
3535
// CHECK-64: (field name=b offset=16
3636
// CHECK-64: (opaque_existential size=32 alignment=8 stride=32 num_extra_inhabitants=2147483647 bitwise_takable=1
3737
// CHECK-64: (field name=metadata offset=24
3838
// CHECK-64: (builtin size=8 alignment=8 stride=8 num_extra_inhabitants=2147483647 bitwise_takable=1))))
3939
// CHECK-64: (field name=c offset=48
40-
// CHECK-64: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1
41-
// CHECK-64: (field name=trailing offset=0
42-
// CHECK-64: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1))))
40+
// CHECK-64: (builtin size=0 alignment=4 stride=1 num_extra_inhabitants=0 bitwise_takable=1))
4341
// CHECK-64: (field name=d offset=48
4442
// CHECK-64: (opaque_existential size=32 alignment=8 stride=32 num_extra_inhabitants=2147483647 bitwise_takable=1
4543
// CHECK-64: (field name=metadata offset=24
@@ -53,15 +51,13 @@ reflect(object: obj)
5351
// CHECK-32: Type info:
5452
// CHECK-32: (class_instance size=40 alignment=4 stride=40 num_extra_inhabitants=0 bitwise_takable=1
5553
// CHECK-32: (field name=a offset=8
56-
// CHECK-32: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1))
54+
// CHECK-32: (builtin size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1))
5755
// CHECK-32: (field name=b offset=8
5856
// CHECK-32: (opaque_existential size=16 alignment=4 stride=16 num_extra_inhabitants=4096 bitwise_takable=1
5957
// CHECK-32: (field name=metadata offset=12
6058
// CHECK-32: (builtin size=4 alignment=4 stride=4 num_extra_inhabitants=4096 bitwise_takable=1))))
6159
// CHECK-32: (field name=c offset=24
62-
// CHECK-32: (struct size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1
63-
// CHECK-32: (field name=trailing offset=0
64-
// CHECK-32: (tuple size=0 alignment=1 stride=1 num_extra_inhabitants=0 bitwise_takable=1))))
60+
// CHECK-32: (builtin size=0 alignment=4 stride=1 num_extra_inhabitants=0 bitwise_takable=1))
6561
// CHECK-32: (field name=d offset=24
6662
// CHECK-32: (opaque_existential size=16 alignment=4 stride=16 num_extra_inhabitants=4096 bitwise_takable=1
6763
// CHECK-32: (field name=metadata offset=12

0 commit comments

Comments
 (0)