Skip to content

Commit 961a1cf

Browse files
committed
Clean up invalidation in Parse
Clean up uses of setInvalid() and remove uses of isInvalid() in preparation for that being a semantic accessor.
1 parent bb83722 commit 961a1cf

File tree

3 files changed

+5
-21
lines changed

3 files changed

+5
-21
lines changed

lib/Parse/ParseDecl.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4933,12 +4933,6 @@ void Parser::ParsedAccessors::record(Parser &P, AbstractStorageDecl *storage,
49334933
storage->setAccessors(LBLoc, Accessors, RBLoc);
49344934
}
49354935

4936-
static void flagInvalidAccessor(AccessorDecl *func) {
4937-
if (func) {
4938-
func->setInvalid();
4939-
}
4940-
}
4941-
49424936
static void diagnoseConflictingAccessors(Parser &P, AccessorDecl *first,
49434937
AccessorDecl *&second) {
49444938
if (!second) return;
@@ -4949,7 +4943,7 @@ static void diagnoseConflictingAccessors(Parser &P, AccessorDecl *first,
49494943
P.diagnose(first->getLoc(), diag::previous_accessor,
49504944
getAccessorNameForDiagnostic(first, /*article*/ false),
49514945
/*already*/ false);
4952-
flagInvalidAccessor(second);
4946+
second->setInvalid();
49534947
}
49544948

49554949
template <class... DiagArgs>
@@ -4959,11 +4953,11 @@ static void diagnoseAndIgnoreObservers(Parser &P,
49594953
typename std::enable_if<true, DiagArgs>::type... args) {
49604954
if (auto &accessor = accessors.WillSet) {
49614955
P.diagnose(accessor->getLoc(), diagnostic, /*willSet*/ 0, args...);
4962-
flagInvalidAccessor(accessor);
4956+
accessor->setInvalid();
49634957
}
49644958
if (auto &accessor = accessors.DidSet) {
49654959
P.diagnose(accessor->getLoc(), diagnostic, /*didSet*/ 1, args...);
4966-
flagInvalidAccessor(accessor);
4960+
accessor->setInvalid();
49674961
}
49684962
}
49694963

@@ -4975,7 +4969,7 @@ void Parser::ParsedAccessors::classify(Parser &P, AbstractStorageDecl *storage,
49754969
// was invalid.
49764970
if (invalid) {
49774971
for (auto accessor : Accessors) {
4978-
flagInvalidAccessor(accessor);
4972+
accessor->setInvalid();
49794973
}
49804974
}
49814975

lib/Parse/ParseExpr.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2655,8 +2655,6 @@ parseClosureSignatureIfPresent(SmallVectorImpl<CaptureListEntry> &captureList,
26552655
// to detect any tuple splat or destructuring as early as
26562656
// possible and give a proper fix-it. See SE-0110 for more details.
26572657
auto isTupleDestructuring = [](ParamDecl *param) -> bool {
2658-
if (!param->isInvalid())
2659-
return false;
26602658
if (auto *typeRepr = param->getTypeRepr())
26612659
return !param->hasName() && isa<TupleTypeRepr>(typeRepr);
26622660
return false;

lib/Parse/ParsePattern.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -358,8 +358,6 @@ Parser::parseParameterClause(SourceLoc &leftParenLoc,
358358
// on is most likely argument destructuring, we are going
359359
// to diagnose that after all of the parameters are parsed.
360360
if (param.Type) {
361-
// Mark current parameter as invalid so it is possible
362-
// to diagnose it as destructuring of the closure parameter list.
363361
param.isInvalid = true;
364362
if (!isClosure) {
365363
// Unnamed parameters must be written as "_: Type".
@@ -478,12 +476,6 @@ mapParsedParameters(Parser &parser,
478476
parser.CurDeclContext);
479477
param->getAttrs() = paramInfo.Attrs;
480478

481-
auto setInvalid = [&]{
482-
if (param->isInvalid())
483-
return;
484-
param->setInvalid();
485-
};
486-
487479
bool parsingEnumElt
488480
= (paramContext == Parser::ParameterContextKind::EnumElement);
489481
// If we're not parsing an enum case, lack of a SourceLoc for both
@@ -493,7 +485,7 @@ mapParsedParameters(Parser &parser,
493485

494486
// If we diagnosed this parameter as a parse error, propagate to the decl.
495487
if (paramInfo.isInvalid)
496-
setInvalid();
488+
param->setInvalid();
497489

498490
// If a type was provided, create the type for the parameter.
499491
if (auto type = paramInfo.Type) {

0 commit comments

Comments
 (0)