Skip to content

Commit 092edd6

Browse files
committed
[ast] Rename VarPattern -> BindingPattern.
VarPattern is today used to implement both 'let' and 'var' pattern bindings, so today is already misleading. The reason why the name Var was chosen was done b/c it is meant to represent a pattern that performs 'variable binding'. Given that I am going to add a new 'inout' pattern binding to this, it makes sense to give it now a better fitting name before I make things more confusing.
1 parent a907a15 commit 092edd6

29 files changed

+93
-93
lines changed

include/swift/AST/Pattern.h

+12-12
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class alignas(8) Pattern {
7373
Value : 1
7474
);
7575

76-
SWIFT_INLINE_BITFIELD(VarPattern, Pattern, 1,
76+
SWIFT_INLINE_BITFIELD(BindingPattern, Pattern, 1,
7777
/// True if this is a let pattern, false if a var pattern.
7878
IsLet : 1
7979
);
@@ -113,7 +113,7 @@ class alignas(8) Pattern {
113113
/// Find the smallest subpattern which obeys the property that matching it is
114114
/// equivalent to matching this pattern.
115115
///
116-
/// Looks through ParenPattern, VarPattern, and TypedPattern.
116+
/// Looks through ParenPattern, BindingPattern, and TypedPattern.
117117
Pattern *getSemanticsProvidingPattern();
118118
const Pattern *getSemanticsProvidingPattern() const {
119119
return const_cast<Pattern*>(this)->getSemanticsProvidingPattern();
@@ -692,22 +692,23 @@ class ExprPattern : public Pattern {
692692
/// semantics of its own, but has a syntactic effect on the subpattern. Bare
693693
/// identifiers in the subpattern create new variable bindings instead of being
694694
/// parsed as expressions referencing existing entities.
695-
class VarPattern : public Pattern {
695+
class BindingPattern : public Pattern {
696696
SourceLoc VarLoc;
697697
Pattern *SubPattern;
698698
public:
699-
VarPattern(SourceLoc loc, bool isLet, Pattern *sub)
700-
: Pattern(PatternKind::Var), VarLoc(loc), SubPattern(sub) {
701-
Bits.VarPattern.IsLet = isLet;
699+
BindingPattern(SourceLoc loc, bool isLet, Pattern *sub)
700+
: Pattern(PatternKind::Binding), VarLoc(loc), SubPattern(sub) {
701+
Bits.BindingPattern.IsLet = isLet;
702702
}
703703

704-
static VarPattern *createImplicit(ASTContext &Ctx, bool isLet, Pattern *sub) {
705-
auto *VP = new (Ctx) VarPattern(SourceLoc(), isLet, sub);
704+
static BindingPattern *createImplicit(ASTContext &Ctx, bool isLet,
705+
Pattern *sub) {
706+
auto *VP = new (Ctx) BindingPattern(SourceLoc(), isLet, sub);
706707
VP->setImplicit();
707708
return VP;
708709
}
709710

710-
bool isLet() const { return Bits.VarPattern.IsLet; }
711+
bool isLet() const { return Bits.BindingPattern.IsLet; }
711712

712713
SourceLoc getLoc() const { return VarLoc; }
713714
SourceRange getSourceRange() const {
@@ -722,17 +723,16 @@ class VarPattern : public Pattern {
722723
void setSubPattern(Pattern *p) { SubPattern = p; }
723724

724725
static bool classof(const Pattern *P) {
725-
return P->getKind() == PatternKind::Var;
726+
return P->getKind() == PatternKind::Binding;
726727
}
727728
};
728729

729-
730730
inline Pattern *Pattern::getSemanticsProvidingPattern() {
731731
if (auto *pp = dyn_cast<ParenPattern>(this))
732732
return pp->getSubPattern()->getSemanticsProvidingPattern();
733733
if (auto *tp = dyn_cast<TypedPattern>(this))
734734
return tp->getSubPattern()->getSemanticsProvidingPattern();
735-
if (auto *vp = dyn_cast<VarPattern>(this))
735+
if (auto *vp = dyn_cast<BindingPattern>(this))
736736
return vp->getSubPattern()->getSemanticsProvidingPattern();
737737
return this;
738738
}

include/swift/AST/PatternNodes.def

+7-7
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232
#define LAST_PATTERN(Id)
3333
#endif
3434

35-
// Metavars: x (variable), pat (pattern), e (expression)
36-
PATTERN(Paren, Pattern) // (pat)
37-
PATTERN(Tuple, Pattern) // (pat1, ..., patN), N >= 1
38-
PATTERN(Named, Pattern) // let pat, var pat
39-
PATTERN(Any, Pattern) // _
40-
PATTERN(Typed, Pattern) // pat : type
41-
PATTERN(Var, Pattern) // x
35+
// Metavars: x (variable binding), pat (pattern), e (expression)
36+
PATTERN(Paren, Pattern) // (pat)
37+
PATTERN(Tuple, Pattern) // (pat1, ..., patN), N >= 1
38+
PATTERN(Named, Pattern) // let pat, var pat
39+
PATTERN(Any, Pattern) // _
40+
PATTERN(Typed, Pattern) // pat : type
41+
PATTERN(Binding, Pattern) // x
4242
REFUTABLE_PATTERN(Is, Pattern) // x is myclass
4343
REFUTABLE_PATTERN(EnumElement, Pattern) // .mycase(pat1, ..., patN)
4444
// MyType.mycase(pat1, ..., patN)

lib/AST/ASTDumper.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ namespace {
507507
printRec(P->getSubExpr());
508508
PrintWithColorRAII(OS, ParenthesisColor) << ')';
509509
}
510-
void visitVarPattern(VarPattern *P) {
510+
void visitBindingPattern(BindingPattern *P) {
511511
printCommon(P, P->isLet() ? "pattern_let" : "pattern_var");
512512
OS << '\n';
513513
printRec(P->getSubPattern());

lib/AST/ASTMangler.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1834,7 +1834,7 @@ namespace {
18341834
VarDecl *visitParenPattern(ParenPattern *P) {
18351835
return visit(P->getSubPattern());
18361836
}
1837-
VarDecl *visitVarPattern(VarPattern *P) {
1837+
VarDecl *visitBindingPattern(BindingPattern *P) {
18381838
return visit(P->getSubPattern());
18391839
}
18401840
VarDecl *visitTypedPattern(TypedPattern *P) {

lib/AST/ASTPrinter.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1192,12 +1192,12 @@ void PrintAST::printPattern(const Pattern *pattern) {
11921192
// FIXME: Print expr.
11931193
break;
11941194

1195-
case PatternKind::Var:
1195+
case PatternKind::Binding:
11961196
if (!Options.SkipIntroducerKeywords)
1197-
Printer << (cast<VarPattern>(pattern)->isLet() ? tok::kw_let
1198-
: tok::kw_var)
1197+
Printer << (cast<BindingPattern>(pattern)->isLet() ? tok::kw_let
1198+
: tok::kw_var)
11991199
<< " ";
1200-
printPattern(cast<VarPattern>(pattern)->getSubPattern());
1200+
printPattern(cast<BindingPattern>(pattern)->getSubPattern());
12011201
}
12021202
}
12031203

lib/AST/ASTWalker.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1738,7 +1738,7 @@ Pattern *Traversal::visitExprPattern(ExprPattern *P) {
17381738
return nullptr;
17391739
}
17401740

1741-
Pattern *Traversal::visitVarPattern(VarPattern *P) {
1741+
Pattern *Traversal::visitBindingPattern(BindingPattern *P) {
17421742
if (Pattern *newSub = doIt(P->getSubPattern())) {
17431743
P->setSubPattern(newSub);
17441744
return P;

lib/AST/Decl.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -5601,7 +5601,7 @@ SourceRange VarDecl::getTypeSourceRangeForDiagnostics() const {
56015601
if (!Pat || Pat->isImplicit())
56025602
return SourceRange();
56035603

5604-
if (auto *VP = dyn_cast<VarPattern>(Pat))
5604+
if (auto *VP = dyn_cast<BindingPattern>(Pat))
56055605
Pat = VP->getSubPattern();
56065606
if (auto *TP = dyn_cast<TypedPattern>(Pat))
56075607
if (auto typeRepr = TP->getTypeRepr())

lib/AST/NameLookup.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2451,7 +2451,7 @@ void FindLocalVal::checkPattern(const Pattern *Pat, DeclVisibilityKind Reason) {
24512451
return;
24522452
case PatternKind::Paren:
24532453
case PatternKind::Typed:
2454-
case PatternKind::Var:
2454+
case PatternKind::Binding:
24552455
return checkPattern(Pat->getSemanticsProvidingPattern(), Reason);
24562456
case PatternKind::Named:
24572457
return checkValueDecl(cast<NamedPattern>(Pat)->getDecl(), Reason);

lib/AST/Pattern.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ llvm::raw_ostream &swift::operator<<(llvm::raw_ostream &OS, PatternKind kind) {
4848
return OS << "prefix 'is' pattern";
4949
case PatternKind::Expr:
5050
return OS << "expression pattern";
51-
case PatternKind::Var:
51+
case PatternKind::Binding:
5252
return OS << "'var' binding pattern";
5353
case PatternKind::EnumElement:
5454
return OS << "enum case matching pattern";
@@ -214,7 +214,7 @@ void Pattern::forEachVariable(llvm::function_ref<void(VarDecl *)> fn) const {
214214

215215
case PatternKind::Paren:
216216
case PatternKind::Typed:
217-
case PatternKind::Var:
217+
case PatternKind::Binding:
218218
return getSemanticsProvidingPattern()->forEachVariable(fn);
219219

220220
case PatternKind::Tuple:
@@ -262,8 +262,8 @@ void Pattern::forEachNode(llvm::function_ref<void(Pattern*)> f) {
262262
return cast<ParenPattern>(this)->getSubPattern()->forEachNode(f);
263263
case PatternKind::Typed:
264264
return cast<TypedPattern>(this)->getSubPattern()->forEachNode(f);
265-
case PatternKind::Var:
266-
return cast<VarPattern>(this)->getSubPattern()->forEachNode(f);
265+
case PatternKind::Binding:
266+
return cast<BindingPattern>(this)->getSubPattern()->forEachNode(f);
267267

268268
case PatternKind::Tuple:
269269
for (auto elt : cast<TuplePattern>(this)->getElements())

lib/ClangImporter/ImportDecl.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1634,10 +1634,10 @@ static void makeStructRawValuedWithBridge(
16341634
makeComputed(computedVar, computedVarGetter, nullptr);
16351635

16361636
// Create a pattern binding to describe the variable.
1637-
Pattern *computedVarPattern = createTypedNamedPattern(computedVar);
1637+
Pattern *computedBindingPattern = createTypedNamedPattern(computedVar);
16381638
auto *computedPatternBinding = PatternBindingDecl::createImplicit(
1639-
ctx, StaticSpellingKind::None, computedVarPattern, /*InitExpr*/ nullptr,
1640-
structDecl);
1639+
ctx, StaticSpellingKind::None, computedBindingPattern,
1640+
/*InitExpr*/ nullptr, structDecl);
16411641

16421642
auto init = createRawValueBridgingConstructor(Impl, structDecl, computedVar,
16431643
storedVar,

lib/Parse/ParseDecl.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -5720,7 +5720,7 @@ Parser::parseDeclVarGetSet(Pattern *pattern, ParseDeclOptions Flags,
57205720
} else if (auto paren = dyn_cast<ParenPattern>(cur)) {
57215721
primaryVarIsWellFormed = false;
57225722
cur = paren->getSubPattern();
5723-
} else if (auto var = dyn_cast<VarPattern>(cur)) {
5723+
} else if (auto var = dyn_cast<BindingPattern>(cur)) {
57245724
primaryVarIsWellFormed = false;
57255725
cur = var->getSubPattern();
57265726
} else {

lib/Parse/ParsePattern.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1022,8 +1022,8 @@ ParserResult<Pattern> Parser::parsePattern() {
10221022
return makeParserCodeCompletionResult<Pattern>();
10231023
if (subPattern.isNull())
10241024
return nullptr;
1025-
return makeParserResult(new (Context) VarPattern(varLoc, isLet,
1026-
subPattern.get()));
1025+
return makeParserResult(
1026+
new (Context) BindingPattern(varLoc, isLet, subPattern.get()));
10271027
}
10281028

10291029
default:
@@ -1233,7 +1233,7 @@ ParserResult<Pattern> Parser::parseMatchingPatternAsLetOrVar(bool isLet,
12331233
ParserResult<Pattern> subPattern = parseMatchingPattern(isExprBasic);
12341234
if (subPattern.isNull())
12351235
return nullptr;
1236-
auto *varP = new (Context) VarPattern(varLoc, isLet, subPattern.get());
1236+
auto *varP = new (Context) BindingPattern(varLoc, isLet, subPattern.get());
12371237
return makeParserResult(ParserStatus(subPattern), varP);
12381238
}
12391239

lib/Parse/ParseStmt.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1092,8 +1092,8 @@ static void parseGuardedPattern(Parser &P, GuardedPattern &result,
10921092
P.CurDeclContext);
10931093
var->setImplicit();
10941094
auto namePattern = new (P.Context) NamedPattern(var);
1095-
auto varPattern = new (P.Context) VarPattern(loc, /*isLet*/true,
1096-
namePattern);
1095+
auto varPattern =
1096+
new (P.Context) BindingPattern(loc, /*isLet*/ true, namePattern);
10971097
varPattern->setImplicit();
10981098
patternResult = makeParserResult(varPattern);
10991099
}
@@ -1485,8 +1485,8 @@ Parser::parseStmtConditionElement(SmallVectorImpl<StmtConditionElement> &result,
14851485
ThePattern = parseMatchingPattern(/*isExprBasic*/ true);
14861486

14871487
if (ThePattern.isNonNull()) {
1488-
auto *P = new (Context) VarPattern(IntroducerLoc, wasLet,
1489-
ThePattern.get());
1488+
auto *P =
1489+
new (Context) BindingPattern(IntroducerLoc, wasLet, ThePattern.get());
14901490
ThePattern = makeParserResult(Status, P);
14911491
}
14921492

lib/SILGen/SILGenConstructor.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -937,9 +937,9 @@ static void emitMemberInit(SILGenFunction &SGF, VarDecl *selfDecl,
937937
cast<TypedPattern>(pattern)->getSubPattern(),
938938
std::move(src));
939939

940-
case PatternKind::Var:
940+
case PatternKind::Binding:
941941
return emitMemberInit(SGF, selfDecl,
942-
cast<VarPattern>(pattern)->getSubPattern(),
942+
cast<BindingPattern>(pattern)->getSubPattern(),
943943
std::move(src));
944944

945945
#define PATTERN(Name, Parent)

lib/SILGen/SILGenDecl.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1041,7 +1041,7 @@ struct InitializationForPattern
10411041
InitializationPtr visitTypedPattern(TypedPattern *P) {
10421042
return visit(P->getSubPattern());
10431043
}
1044-
InitializationPtr visitVarPattern(VarPattern *P) {
1044+
InitializationPtr visitBindingPattern(BindingPattern *P) {
10451045
return visit(P->getSubPattern());
10461046
}
10471047

lib/SILGen/SILGenGlobalVariable.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ struct GenGlobalAccessors : public PatternVisitor<GenGlobalAccessors>
141141
void visitTypedPattern(TypedPattern *P) {
142142
return visit(P->getSubPattern());
143143
}
144-
void visitVarPattern(VarPattern *P) {
144+
void visitBindingPattern(BindingPattern *P) {
145145
return visit(P->getSubPattern());
146146
}
147147
void visitTuplePattern(TuplePattern *P) {

lib/SILGen/SILGenPattern.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ static void dumpPattern(const Pattern *p, llvm::raw_ostream &os) {
9999

100100
case PatternKind::Paren:
101101
case PatternKind::Typed:
102-
case PatternKind::Var:
102+
case PatternKind::Binding:
103103
llvm_unreachable("not semantic");
104104
}
105105
}
@@ -129,7 +129,7 @@ static bool isDirectlyRefutablePattern(const Pattern *p) {
129129
// Recur into simple wrapping patterns.
130130
case PatternKind::Paren:
131131
case PatternKind::Typed:
132-
case PatternKind::Var:
132+
case PatternKind::Binding:
133133
return isDirectlyRefutablePattern(p->getSemanticsProvidingPattern());
134134
}
135135
llvm_unreachable("bad pattern");
@@ -190,7 +190,7 @@ static unsigned getNumSpecializationsRecursive(const Pattern *p, unsigned n) {
190190
// Recur into simple wrapping patterns.
191191
case PatternKind::Paren:
192192
case PatternKind::Typed:
193-
case PatternKind::Var:
193+
case PatternKind::Binding:
194194
return getNumSpecializationsRecursive(p->getSemanticsProvidingPattern(), n);
195195
}
196196
llvm_unreachable("bad pattern");
@@ -231,7 +231,7 @@ static bool isWildcardPattern(const Pattern *p) {
231231
// Recur into simple wrapping patterns.
232232
case PatternKind::Paren:
233233
case PatternKind::Typed:
234-
case PatternKind::Var:
234+
case PatternKind::Binding:
235235
return isWildcardPattern(p->getSemanticsProvidingPattern());
236236
}
237237

@@ -293,7 +293,7 @@ static Pattern *getSimilarSpecializingPattern(Pattern *p, Pattern *first) {
293293
}
294294

295295
case PatternKind::Paren:
296-
case PatternKind::Var:
296+
case PatternKind::Binding:
297297
case PatternKind::Typed:
298298
llvm_unreachable("not semantic");
299299
}
@@ -1348,7 +1348,7 @@ void PatternMatchEmission::emitSpecializedDispatch(ClauseMatrix &clauses,
13481348

13491349
case PatternKind::Paren:
13501350
case PatternKind::Typed:
1351-
case PatternKind::Var:
1351+
case PatternKind::Binding:
13521352
llvm_unreachable("non-semantic pattern kind!");
13531353

13541354
case PatternKind::Tuple:

lib/Sema/CSDiagnostics.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -5458,7 +5458,7 @@ void InOutConversionFailure::fixItChangeArgumentType() const {
54585458
SourceLoc startLoc; // Left invalid if we're inserting
54595459

54605460
auto isSimpleTypelessPattern = [](Pattern *P) -> bool {
5461-
if (auto VP = dyn_cast_or_null<VarPattern>(P))
5461+
if (auto VP = dyn_cast_or_null<BindingPattern>(P))
54625462
P = VP->getSubPattern();
54635463
return P && isa<NamedPattern>(P);
54645464
};

lib/Sema/CSGen.cpp

+2-3
Original file line numberDiff line numberDiff line change
@@ -2293,8 +2293,8 @@ namespace {
22932293

22942294
return setType(ParenType::get(CS.getASTContext(), underlyingType));
22952295
}
2296-
case PatternKind::Var: {
2297-
auto *subPattern = cast<VarPattern>(pattern)->getSubPattern();
2296+
case PatternKind::Binding: {
2297+
auto *subPattern = cast<BindingPattern>(pattern)->getSubPattern();
22982298
auto type = getTypeForPattern(subPattern, locator, externalPatternType,
22992299
bindPatternVarsOneWay);
23002300

@@ -2304,7 +2304,6 @@ namespace {
23042304
// Var doesn't affect the type.
23052305
return setType(type);
23062306
}
2307-
23082307
case PatternKind::Any: {
23092308
return setType(
23102309
externalPatternType

lib/Sema/DerivedConformances.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -737,8 +737,8 @@ DerivedConformance::enumElementPayloadSubpattern(EnumElementDecl *enumElementDec
737737

738738
auto namedPattern = new (C) NamedPattern(payloadVar);
739739
namedPattern->setImplicit();
740-
auto letPattern = VarPattern::createImplicit(C, /*isLet*/ true,
741-
namedPattern);
740+
auto letPattern =
741+
BindingPattern::createImplicit(C, /*isLet*/ true, namedPattern);
742742
elementPatterns.push_back(TuplePatternElt(tupleElement.getName(),
743743
SourceLoc(), letPattern));
744744
}
@@ -757,8 +757,8 @@ DerivedConformance::enumElementPayloadSubpattern(EnumElementDecl *enumElementDec
757757

758758
auto namedPattern = new (C) NamedPattern(payloadVar);
759759
namedPattern->setImplicit();
760-
auto letPattern = new (C) VarPattern(SourceLoc(), /*isLet*/ true,
761-
namedPattern);
760+
auto letPattern =
761+
new (C) BindingPattern(SourceLoc(), /*isLet*/ true, namedPattern);
762762
return ParenPattern::createImplicit(C, letPattern);
763763
}
764764

0 commit comments

Comments
 (0)