Skip to content

Commit 3e35197

Browse files
committed
ASTPrinter: Tweak PackExpansionType printing
1 parent 0d55af8 commit 3e35197

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

lib/AST/ASTPrinter.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6045,12 +6045,24 @@ class TypePrinter : public TypeVisitor<TypePrinter> {
60456045
}
60466046

60476047
void visitPackExpansionType(PackExpansionType *T) {
6048+
SmallVector<Type, 2> rootParameterPacks;
6049+
T->getPatternType()->getTypeParameterPacks(rootParameterPacks);
6050+
6051+
if (rootParameterPacks.empty() &&
6052+
(T->getCountType()->isParameterPack() ||
6053+
T->getCountType()->is<PackArchetypeType>())) {
6054+
Printer << "/* shape: ";
6055+
visit(T->getCountType());
6056+
Printer << " */ ";
6057+
}
6058+
60486059
Printer << "repeat ";
6060+
60496061
visit(T->getPatternType());
60506062
}
60516063

60526064
void visitPackElementType(PackElementType *T) {
6053-
Printer << "@level(" << T->getLevel() << ") ";
6065+
Printer << "/* level: " << T->getLevel() << " */ ";
60546066
visit(T->getPackType());
60556067
}
60566068

test/Constraints/pack-expansion-expressions.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,8 +526,8 @@ do {
526526
func test_pack_expansion_to_void_conv_for_closure_result<each T>(x: repeat each T) {
527527
let _: () -> Void = { repeat print(each x) } // Ok
528528
let _: () -> Void = { (repeat print(each x)) } // Ok
529-
let _: (Int) -> Void = { repeat ($0, print(each x)) } // expected-warning {{'repeat (Int, ())' is unused}}
530-
let _: (Int, String) -> Void = { ($0, repeat ($1, print(each x))) } // expected-warning {{'(Int, repeat (String, ()))' is unused}}
529+
let _: (Int) -> Void = { repeat ($0, print(each x)) } // expected-warning {{expression of type '/* shape: each T */ repeat (Int, ())' is unused}}
530+
let _: (Int, String) -> Void = { ($0, repeat ($1, print(each x))) } // expected-warning {{expression of type '(Int, /* shape: each T */ repeat (String, ()))' is unused}}
531531
}
532532

533533
// rdar://109539394 - crash on passing multiple variadic lists to singly variadic callee

test/SILGen/variadic-generic-tuples.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ func takeAny(_ arg: Any) {}
1313
// CHECK-NEXT: [[IDX_EQ_LEN:%.*]] = builtin "cmp_eq_Word"([[IDX]] : $Builtin.Word, [[LEN]] : $Builtin.Word) : $Builtin.Int1
1414
// CHECK-NEXT: cond_br [[IDX_EQ_LEN]], bb3, bb2
1515
// CHECK: bb2:
16-
// CHECK-NEXT: [[INDEX:%.*]] = dynamic_pack_index [[IDX]] of $Pack{repeat ()}
16+
// CHECK-NEXT: [[INDEX:%.*]] = dynamic_pack_index [[IDX]] of $Pack{/* shape: each T */ repeat ()}
1717
// CHECK-NEXT: open_pack_element [[INDEX]] of <each T> at <Pack{repeat each T}>, shape $each T, uuid [[UUID:".*"]]
1818
// CHECK-NEXT: [[TEMP:%.*]] = alloc_stack $Any
1919
// CHECK-NEXT: [[ELT_ADDR:%.*]] = pack_element_get [[INDEX]] of %0 : $*Pack{repeat each T} as $*@pack_element([[UUID]]) each T

0 commit comments

Comments
 (0)