Skip to content

Commit efe877e

Browse files
committed
Remove unnecesary interface type resets
Now that setInvalid() is a semantic property, drop the explicit calls to reset the interface type. It is already ErrorType.
1 parent db79d06 commit efe877e

File tree

7 files changed

+8
-31
lines changed

7 files changed

+8
-31
lines changed

lib/Sema/ConstraintSystem.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -828,7 +828,7 @@ Type ConstraintSystem::getUnopenedTypeOfReference(VarDecl *value, Type baseType,
828828
if (!var->isInvalid()) {
829829
TC.diagnose(var->getLoc(), diag::recursive_decl_reference,
830830
var->getDescriptiveKind(), var->getName());
831-
var->setInterfaceType(ErrorType::get(getASTContext()));
831+
var->setInvalid();
832832
}
833833
return ErrorType::get(TC.Context);
834834
}

lib/Sema/TypeCheckConstraints.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2815,10 +2815,10 @@ bool TypeChecker::typeCheckBinding(Pattern *&pattern, Expr *&initializer,
28152815
// compute a type for.
28162816
if (var->hasInterfaceType() &&
28172817
!var->getType()->hasUnboundGenericType() &&
2818-
!var->getType()->hasError())
2818+
!var->isInvalid())
28192819
return;
28202820

2821-
var->setInterfaceType(ErrorType::get(Context));
2821+
var->setInvalid();
28222822
});
28232823
}
28242824

@@ -3034,7 +3034,7 @@ bool TypeChecker::typeCheckStmtCondition(StmtCondition &cond, DeclContext *dc,
30343034
// compute a type for.
30353035
if (var->hasInterfaceType() && !var->getType()->hasError())
30363036
return;
3037-
var->setInterfaceType(ErrorType::get(Context));
3037+
var->setInvalid();
30383038
});
30393039
};
30403040

lib/Sema/TypeCheckDecl.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -713,19 +713,13 @@ static void checkRedeclaration(ASTContext &ctx, ValueDecl *current) {
713713
if (!other->isAccessibleFrom(currentDC))
714714
continue;
715715

716-
const auto markInvalid = [&current]() {
717-
current->setInvalid();
718-
if (current->hasInterfaceType())
719-
current->setInterfaceType(ErrorType::get(current->getInterfaceType()));
720-
};
721-
722716
// Thwart attempts to override the same declaration more than once.
723717
const auto *currentOverride = current->getOverriddenDecl();
724718
const auto *otherOverride = other->getOverriddenDecl();
725719
if (currentOverride && currentOverride == otherOverride) {
726720
current->diagnose(diag::multiple_override, current->getFullName());
727721
other->diagnose(diag::multiple_override_prev, other->getFullName());
728-
markInvalid();
722+
current->setInvalid();
729723
break;
730724
}
731725

@@ -872,7 +866,7 @@ static void checkRedeclaration(ASTContext &ctx, ValueDecl *current) {
872866
other->diagnose(diag::invalid_redecl_prev, other->getFullName());
873867
});
874868
}
875-
markInvalid();
869+
current->setInvalid();
876870
}
877871

878872
// Make sure we don't do this checking again for the same decl. We also
@@ -2463,7 +2457,6 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
24632457
auto markVarAndPBDInvalid = [PBD, var] {
24642458
PBD->setInvalid();
24652459
var->setInvalid();
2466-
var->setInterfaceType(ErrorType::get(var->getASTContext()));
24672460
};
24682461

24692462
// Properties with an opaque return type need an initializer to

lib/Sema/TypeCheckGeneric.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,6 @@ void TypeChecker::checkReferencedGenericParams(GenericContext *dc) {
421421

422422
// Check that every generic parameter type from the signature is
423423
// among referencedGenericParams.
424-
auto &ctx = decl->getASTContext();
425424
for (auto *genParam : genericSig->getGenericParams()) {
426425
auto *paramDecl = genParam->getDecl();
427426
if (paramDecl->getDepth() != fnGenericParamsDepth)
@@ -439,10 +438,8 @@ void TypeChecker::checkReferencedGenericParams(GenericContext *dc) {
439438
continue;
440439
}
441440
// Produce an error that this generic parameter cannot be bound.
442-
ctx.Diags.diagnose(paramDecl->getLoc(),
443-
diag::unreferenced_generic_parameter,
444-
paramDecl->getNameStr());
445-
decl->setInterfaceType(ErrorType::get(ctx));
441+
paramDecl->diagnose(diag::unreferenced_generic_parameter,
442+
paramDecl->getNameStr());
446443
decl->setInvalid();
447444
}
448445
}

lib/Sema/TypeCheckPattern.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -787,7 +787,6 @@ bool TypeChecker::typeCheckPattern(Pattern *P, DeclContext *dc,
787787
P->setType(ErrorType::get(Context));
788788
if (auto named = dyn_cast<NamedPattern>(P)) {
789789
if (auto var = named->getDecl()) {
790-
var->setInterfaceType(ErrorType::get(Context));
791790
var->setInvalid();
792791
}
793792
}

lib/Sema/TypeCheckStmt.cpp

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,7 +1064,6 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
10641064
// If that failed, mark any variables binding pieces of the pattern
10651065
// as invalid to silence follow-on errors.
10661066
pattern->forEachVariable([&](VarDecl *VD) {
1067-
VD->setInterfaceType(ErrorType::get(TC.Context));
10681067
VD->setInvalid();
10691068
});
10701069
}
@@ -1142,10 +1141,7 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
11421141
!vd->getType()->isEqual(initialCaseVarDecl->getType())) {
11431142
TC.diagnose(vd->getLoc(), diag::type_mismatch_multiple_pattern_list,
11441143
vd->getType(), initialCaseVarDecl->getType());
1145-
vd->setInterfaceType(ErrorType::get(TC.Context));
11461144
vd->setInvalid();
1147-
1148-
initialCaseVarDecl->setInterfaceType(ErrorType::get(TC.Context));
11491145
initialCaseVarDecl->setInvalid();
11501146
}
11511147

@@ -1166,10 +1162,7 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
11661162
if (foundVP)
11671163
diag.fixItReplace(foundVP->getLoc(),
11681164
initialCaseVarDecl->isLet() ? "let" : "var");
1169-
vd->setInterfaceType(ErrorType::get(TC.Context));
11701165
vd->setInvalid();
1171-
1172-
initialCaseVarDecl->setInterfaceType(ErrorType::get(TC.Context));
11731166
initialCaseVarDecl->setInvalid();
11741167
}
11751168
});
@@ -1237,10 +1230,7 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
12371230
TC.diagnose(previous->getLoc(),
12381231
diag::type_mismatch_fallthrough_pattern_list,
12391232
previous->getType(), expected->getType());
1240-
previous->setInterfaceType(ErrorType::get(TC.Context));
12411233
previous->setInvalid();
1242-
1243-
expected->setInterfaceType(ErrorType::get(TC.Context));
12441234
expected->setInvalid();
12451235
}
12461236

@@ -1476,7 +1466,6 @@ bool TypeChecker::typeCheckCatchPattern(CatchStmt *S, DeclContext *DC) {
14761466
// before we type-check the guard. (This will probably kill
14771467
// most of the type-checking, but maybe not.)
14781468
pattern->forEachVariable([&](VarDecl *var) {
1479-
var->setInterfaceType(ErrorType::get(Context));
14801469
var->setInvalid();
14811470
});
14821471
}

lib/Sema/TypeCheckStorage.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ void swift::setBoundVarsTypeError(Pattern *pattern, ASTContext &ctx) {
4242
if (var->hasInterfaceType())
4343
return;
4444

45-
var->setInterfaceType(ErrorType::get(var->getASTContext()));
4645
var->setInvalid();
4746
});
4847
}

0 commit comments

Comments
 (0)