Skip to content

Commit d06d5bb

Browse files
committed
[FixedArray] Fix TypeLowering verification.
A new aggregate type has been added and must be walked into. rdar://139448358
1 parent 792f8d1 commit d06d5bb

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

lib/SIL/IR/TypeLowering.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3000,6 +3000,7 @@ bool TypeConverter::visitAggregateLeaves(
30003000
return isa<SILPackType>(ty) ||
30013001
isa<TupleType>(ty) ||
30023002
isa<PackExpansionType>(ty) ||
3003+
isa<BuiltinFixedArrayType>(ty) ||
30033004
ty.getEnumOrBoundGenericEnum() ||
30043005
ty.getStructOrBoundGenericStruct();
30053006
};
@@ -3036,6 +3037,13 @@ bool TypeConverter::visitAggregateLeaves(
30363037
insertIntoWorklist(expansion.getPatternType(),
30373038
origTy.getPackExpansionPatternType(),
30383039
field, index);
3040+
} else if (auto array = dyn_cast<BuiltinFixedArrayType>(ty)) {
3041+
auto origBFA = origTy.getAs<BuiltinFixedArrayType>();
3042+
insertIntoWorklist(
3043+
array->getElementType(),
3044+
AbstractionPattern(origTy.getGenericSignatureOrNull(),
3045+
origBFA->getElementType()),
3046+
field, index);
30393047
} else if (auto *decl = ty.getStructOrBoundGenericStruct()) {
30403048
for (auto *structField : decl->getStoredProperties()) {
30413049
auto subMap = ty->getContextSubstitutionMap();

test/SILGen/bitwise_copyable.swift

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1-
// RUN: %target-swift-frontend \
2-
// RUN: %s \
3-
// RUN: -emit-silgen \
4-
// RUN: -target %target-swift-5.1-abi-triple \
5-
// RUN: -enable-experimental-feature Sensitive \
1+
// RUN: %target-swift-frontend \
2+
// RUN: %s \
3+
// RUN: -emit-silgen \
4+
// RUN: -disable-experimental-parser-round-trip \
5+
// RUN: -target %target-swift-5.1-abi-triple \
6+
// RUN: -enable-experimental-feature Sensitive \
7+
// RUN: -enable-experimental-feature ValueGenerics \
68
// RUN: -enable-builtin-module
79

10+
// FIXME: Remove -disable-experimental-parser-round-trip when it's not required for using ValueGenerics.
11+
812
// REQUIRES: swift_feature_Sensitive
13+
// REQUIRES: swift_feature_ValueGenerics
14+
15+
// REQUIRES: asserts
916

1017
// Force verification of TypeLowering's isTrivial.
1118

@@ -68,3 +75,10 @@ struct S_Explicit_Sensitive {
6875

6976
func takeS_Explicit_Sensitive(_ s: S_Explicit_Sensitive) {
7077
}
78+
79+
import Builtin
80+
81+
func foo() {
82+
let bricks: Builtin.FixedArray<1, Conditional<Int>>
83+
let bricks2: Builtin.FixedArray<1, Conditional<String>>
84+
}

0 commit comments

Comments
 (0)