Skip to content

Commit 7d1f7f6

Browse files
authored
Merge pull request swiftlang#63704 from slavapestov/pack-element-type-repr-fixes
A couple of PackElementTypeRepr fixes
2 parents e7c24bd + f107cd0 commit 7d1f7f6

File tree

14 files changed

+44
-42
lines changed

14 files changed

+44
-42
lines changed

include/swift/AST/TypeRepr.h

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -724,20 +724,12 @@ class VarargTypeRepr final : public TypeRepr {
724724
friend class TypeRepr;
725725
};
726726

727-
/// A pack expansion 'T...' with a pattern 'T'.
727+
/// A pack expansion 'repeat T' with a pattern 'T'.
728728
///
729729
/// Can appear in the following positions:
730730
/// - The type of a parameter declaration in a function declaration
731731
/// - The type of a parameter in a function type
732732
/// - The element of a tuple
733-
///
734-
/// In the first two cases, it also spells an old-style variadic parameter
735-
/// desugaring to an array type. The two meanings are distinguished by the
736-
/// presence of at least one pack type parameter in the pack expansion
737-
/// pattern.
738-
///
739-
/// In the third case, tuples cannot contain an old-style variadic element,
740-
/// so the pack expansion must be a real variadic pack expansion.
741733
class PackExpansionTypeRepr final : public TypeRepr {
742734
SourceLoc RepeatLoc;
743735
TypeRepr *Pattern;
@@ -821,22 +813,22 @@ class PackTypeRepr final
821813
/// func f(value: (each T)...) where each T: P {}
822814
/// }
823815
/// \endcode
824-
class PackReferenceTypeRepr: public TypeRepr {
816+
class PackElementTypeRepr: public TypeRepr {
825817
TypeRepr *PackType;
826818
SourceLoc EachLoc;
827819

828820
public:
829-
PackReferenceTypeRepr(SourceLoc eachLoc, TypeRepr *packType)
830-
: TypeRepr(TypeReprKind::PackReference), PackType(packType),
821+
PackElementTypeRepr(SourceLoc eachLoc, TypeRepr *packType)
822+
: TypeRepr(TypeReprKind::PackElement), PackType(packType),
831823
EachLoc(eachLoc) {}
832824

833825
TypeRepr *getPackType() const { return PackType; }
834826
SourceLoc getEachLoc() const { return EachLoc; }
835827

836828
static bool classof(const TypeRepr *T) {
837-
return T->getKind() == TypeReprKind::PackReference;
829+
return T->getKind() == TypeReprKind::PackElement;
838830
}
839-
static bool classof(const PackReferenceTypeRepr *T) { return true; }
831+
static bool classof(const PackElementTypeRepr *T) { return true; }
840832

841833
private:
842834
SourceLoc getStartLocImpl() const { return EachLoc; }
@@ -1439,7 +1431,7 @@ inline bool TypeRepr::isSimple() const {
14391431
case TypeReprKind::OpaqueReturn:
14401432
case TypeReprKind::NamedOpaqueReturn:
14411433
case TypeReprKind::Existential:
1442-
case TypeReprKind::PackReference:
1434+
case TypeReprKind::PackElement:
14431435
return false;
14441436
case TypeReprKind::SimpleIdent:
14451437
case TypeReprKind::GenericIdent:

include/swift/AST/TypeReprNodes.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ TYPEREPR(OpaqueReturn, TypeRepr)
6666
TYPEREPR(NamedOpaqueReturn, TypeRepr)
6767
TYPEREPR(Existential, TypeRepr)
6868
TYPEREPR(Pack, TypeRepr)
69-
TYPEREPR(PackReference, TypeRepr)
69+
TYPEREPR(PackElement, TypeRepr)
7070
TYPEREPR(Placeholder, TypeRepr)
7171
ABSTRACT_TYPEREPR(Specifier, TypeRepr)
7272
SPECIFIER_TYPEREPR(InOut, SpecifierTypeRepr)

include/swift/AST/Types.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ class InOutType;
7272
class OpaqueTypeDecl;
7373
class OpenedArchetypeType;
7474
class PackType;
75-
class PackReferenceTypeRepr;
7675
class PlaceholderTypeRepr;
7776
enum class ReferenceCounting : uint8_t;
7877
enum class ResilienceExpansion : unsigned;

include/swift/Sema/ConstraintSystem.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6216,7 +6216,7 @@ class OpenPackElementType {
62166216
this->locator = cs.getConstraintLocator(locator);
62176217
}
62186218

6219-
Type operator()(Type packType, PackReferenceTypeRepr *packRepr) const {
6219+
Type operator()(Type packType, PackElementTypeRepr *packRepr) const {
62206220
// Only assert we have an element environment when invoking the function
62216221
// object. In cases where pack elements are referenced outside of a
62226222
// pack expansion, type resolution will error before opening the pack

lib/AST/ASTDumper.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3211,8 +3211,8 @@ class PrintTypeRepr : public TypeReprVisitor<PrintTypeRepr> {
32113211
PrintWithColorRAII(OS, ParenthesisColor) << ')';
32123212
}
32133213

3214-
void visitPackReferenceTypeRepr(PackReferenceTypeRepr *T) {
3215-
printCommon("pack_reference");
3214+
void visitPackElementTypeRepr(PackElementTypeRepr *T) {
3215+
printCommon("pack_element");
32163216
printRec(T->getPackType());
32173217
PrintWithColorRAII(OS, ParenthesisColor) << ')';
32183218
}

lib/AST/ASTWalker.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2034,7 +2034,7 @@ bool Traversal::visitPackExpansionTypeRepr(PackExpansionTypeRepr *T) {
20342034
return doIt(T->getPatternType());
20352035
}
20362036

2037-
bool Traversal::visitPackReferenceTypeRepr(PackReferenceTypeRepr *T) {
2037+
bool Traversal::visitPackElementTypeRepr(PackElementTypeRepr *T) {
20382038
return doIt(T->getPackType());
20392039
}
20402040

lib/AST/Expr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1284,7 +1284,7 @@ void PackExpansionExpr::getExpandedPacks(SmallVectorImpl<ASTNode> &packs) {
12841284
return Action::SkipChildren();
12851285
}
12861286

1287-
if (isa<PackReferenceTypeRepr>(T)) {
1287+
if (isa<PackElementTypeRepr>(T)) {
12881288
packs.push_back(T);
12891289
}
12901290

lib/AST/NameLookup.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2618,8 +2618,8 @@ directReferencesForTypeRepr(Evaluator &evaluator,
26182618
allowUsableFromInline);
26192619
}
26202620

2621-
case TypeReprKind::PackReference: {
2622-
auto packReferenceRepr = cast<PackReferenceTypeRepr>(typeRepr);
2621+
case TypeReprKind::PackElement: {
2622+
auto packReferenceRepr = cast<PackElementTypeRepr>(typeRepr);
26232623
return directReferencesForTypeRepr(evaluator, ctx,
26242624
packReferenceRepr->getPackType(), dc,
26252625
allowUsableFromInline);

lib/AST/TypeRepr.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,8 +482,8 @@ void PackExpansionTypeRepr::printImpl(ASTPrinter &Printer,
482482
printTypeRepr(Pattern, Printer, Opts);
483483
}
484484

485-
void PackReferenceTypeRepr::printImpl(ASTPrinter &Printer,
486-
const PrintOptions &Opts) const {
485+
void PackElementTypeRepr::printImpl(ASTPrinter &Printer,
486+
const PrintOptions &Opts) const {
487487
Printer.printKeyword("each", Opts, /*Suffix=*/" ");
488488
printTypeRepr(PackType, Printer, Opts);
489489
}

lib/Parse/ParseType.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -903,12 +903,12 @@ Parser::parseTypeSimpleOrComposition(Diag<> MessageID, ParseTypeReason reason) {
903903
// Treat 'each' as a keyword.
904904
TokReceiver->registerTokenKindChange(Tok.getLoc(), tok::contextual_keyword);
905905
SourceLoc eachLoc = consumeToken();
906-
ParserResult<TypeRepr> packRef = parseTypeSimple(MessageID, reason);
907-
if (packRef.isNull())
908-
return packRef;
906+
ParserResult<TypeRepr> packElt = parseTypeSimple(MessageID, reason);
907+
if (packElt.isNull())
908+
return packElt;
909909

910-
auto *typeRepr = new (Context) PackReferenceTypeRepr(eachLoc, packRef.get());
911-
return makeParserResult(ParserStatus(packRef), typeRepr);
910+
auto *typeRepr = new (Context) PackElementTypeRepr(eachLoc, packElt.get());
911+
return makeParserResult(ParserStatus(packElt), typeRepr);
912912
}
913913

914914
auto applyOpaque = [&](TypeRepr *type) -> TypeRepr * {

0 commit comments

Comments
 (0)