Skip to content

Commit 31d2330

Browse files
committed
[NFC] Strip all remaining TypeResolutionOptions parameters
Now that these are stored in the TypeResolution object itself, and all callers that mutate flags create a new resolution object, this data can be derived from the resolution itself.
1 parent 4130170 commit 31d2330

14 files changed

+87
-121
lines changed

lib/Sema/CSGen.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1454,7 +1454,7 @@ namespace {
14541454
options |= TypeResolutionFlags::AllowUnboundGenerics;
14551455
bool hadError = TypeChecker::validateType(
14561456
CS.getASTContext(), loc,
1457-
TypeResolution::forContextual(CS.DC, options), options);
1457+
TypeResolution::forContextual(CS.DC, options));
14581458
return hadError ? Type() : loc.getType();
14591459
}
14601460

@@ -1717,7 +1717,7 @@ namespace {
17171717
auto tyLoc = TypeLoc{specializations[i]};
17181718
if (TypeChecker::validateType(
17191719
CS.getASTContext(), tyLoc,
1720-
TypeResolution::forContextual(CS.DC, options), options))
1720+
TypeResolution::forContextual(CS.DC, options)))
17211721
return Type();
17221722

17231723
CS.addConstraint(ConstraintKind::Bind,
@@ -2662,8 +2662,7 @@ namespace {
26622662
if (TypeChecker::validateType(
26632663
CS.getASTContext(), isp->getCastTypeLoc(),
26642664
TypeResolution::forContextual(
2665-
CS.DC, TypeResolverContext::InExpression),
2666-
TypeResolverContext::InExpression)) {
2665+
CS.DC, TypeResolverContext::InExpression))) {
26672666
return false;
26682667
}
26692668

@@ -2988,7 +2987,7 @@ namespace {
29882987
options |= TypeResolutionFlags::AllowUnboundGenerics;
29892988
if (TypeChecker::validateType(
29902989
CS.getASTContext(), expr->getCastTypeLoc(),
2991-
TypeResolution::forContextual(CS.DC, options), options))
2990+
TypeResolution::forContextual(CS.DC, options)))
29922991
return nullptr;
29932992

29942993
// Open the type we're casting to.
@@ -3017,7 +3016,7 @@ namespace {
30173016
options |= TypeResolutionFlags::AllowUnboundGenerics;
30183017
if (TypeChecker::validateType(
30193018
CS.getASTContext(), expr->getCastTypeLoc(),
3020-
TypeResolution::forContextual(CS.DC, options), options))
3019+
TypeResolution::forContextual(CS.DC, options)))
30213020
return nullptr;
30223021

30233022
// Open the type we're casting to.
@@ -3053,7 +3052,7 @@ namespace {
30533052
options |= TypeResolutionFlags::AllowUnboundGenerics;
30543053
if (TypeChecker::validateType(
30553054
ctx, expr->getCastTypeLoc(),
3056-
TypeResolution::forContextual(CS.DC, options), options))
3055+
TypeResolution::forContextual(CS.DC, options)))
30573056
return nullptr;
30583057

30593058
// Open the type we're casting to.
@@ -3083,7 +3082,7 @@ namespace {
30833082
options |= TypeResolutionFlags::AllowUnboundGenerics;
30843083
if (TypeChecker::validateType(
30853084
ctx, expr->getCastTypeLoc(),
3086-
TypeResolution::forContextual(CS.DC, options), options))
3085+
TypeResolution::forContextual(CS.DC, options)))
30873086
return nullptr;
30883087

30893088
// Open up the type we're checking.

lib/Sema/CSSolver.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -994,8 +994,7 @@ void ConstraintSystem::shrink(Expr *expr) {
994994
auto coercionRepr = typeRepr->clone(CS.getASTContext());
995995
// Let's try to resolve coercion type from cloned representative.
996996
auto resolution = TypeResolution::forContextual(CS.DC, None);
997-
auto coercionType =
998-
resolution.resolveType(coercionRepr, None);
997+
auto coercionType = resolution.resolveType(coercionRepr);
999998

1000999
// Looks like coercion type is invalid, let's skip this sub-tree.
10011000
if (coercionType->hasError())

lib/Sema/ConstraintSystem.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1092,7 +1092,6 @@ ConstraintSystem::getTypeOfReference(ValueDecl *value,
10921092
auto type = TypeChecker::resolveTypeInContext(
10931093
typeDecl, nullptr,
10941094
TypeResolution::forContextual(useDC, TypeResolverContext::InExpression),
1095-
TypeResolverContext::InExpression,
10961095
/*isSpecialized=*/false);
10971096

10981097
checkNestedTypeConstraints(*this, type, locator);

lib/Sema/TypeCheckAttr.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2620,7 +2620,7 @@ ResolveTypeEraserTypeRequest::evaluate(Evaluator &evaluator,
26202620
TypeEraserAttr *attr) const {
26212621
if (auto *typeEraserRepr = attr->getParsedTypeEraserTypeRepr()) {
26222622
auto resolution = TypeResolution::forContextual(PD, None);
2623-
return resolution.resolveType(typeEraserRepr, /*options=*/None);
2623+
return resolution.resolveType(typeEraserRepr);
26242624
} else {
26252625
auto *LazyResolver = attr->Resolver;
26262626
assert(LazyResolver && "type eraser was neither parsed nor deserialized?");
@@ -2807,7 +2807,7 @@ void AttributeChecker::visitImplementsAttr(ImplementsAttr *attr) {
28072807
options |= TypeResolutionFlags::AllowUnboundGenerics;
28082808

28092809
auto resolution = TypeResolution::forContextual(DC, options);
2810-
T = resolution.resolveType(ProtoTypeLoc.getTypeRepr(), options);
2810+
T = resolution.resolveType(ProtoTypeLoc.getTypeRepr());
28112811
ProtoTypeLoc.setType(T);
28122812
}
28132813

@@ -4473,7 +4473,7 @@ static bool typeCheckDerivativeAttr(ASTContext &Ctx, Decl *D,
44734473
options |= TypeResolutionFlags::AllowModule;
44744474
auto resolution =
44754475
TypeResolution::forContextual(derivative->getDeclContext(), options);
4476-
baseType = resolution.resolveType(baseTypeRepr, options);
4476+
baseType = resolution.resolveType(baseTypeRepr);
44774477
}
44784478
if (baseType && baseType->hasError())
44794479
return true;
@@ -4985,7 +4985,7 @@ void AttributeChecker::visitTransposeAttr(TransposeAttr *attr) {
49854985
TypeResolution::forContextual(transpose->getDeclContext(), None);
49864986
Type baseType;
49874987
if (attr->getBaseTypeRepr())
4988-
baseType = resolution.resolveType(attr->getBaseTypeRepr(), None);
4988+
baseType = resolution.resolveType(attr->getBaseTypeRepr());
49894989
auto lookupOptions =
49904990
(attr->getBaseTypeRepr() ? defaultMemberLookupOptions
49914991
: defaultUnqualifiedLookupOptions) |

lib/Sema/TypeCheckConstraints.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1391,7 +1391,7 @@ TypeExpr *PreCheckExpression::simplifyNestedTypeExpr(UnresolvedDotExpr *UDE) {
13911391
options |= TypeResolutionFlags::AllowUnboundGenerics;
13921392
options |= TypeResolutionFlags::AllowUnavailable;
13931393
auto resolution = TypeResolution::forContextual(DC, options);
1394-
auto BaseTy = resolution.resolveType(InnerTypeRepr, options);
1394+
auto BaseTy = resolution.resolveType(InnerTypeRepr);
13951395

13961396
if (BaseTy && BaseTy->mayHaveMembers()) {
13971397
auto lookupOptions = defaultMemberLookupOptions;
@@ -1918,8 +1918,7 @@ Expr *PreCheckExpression::simplifyTypeConstructionWithLiteralArg(Expr *E) {
19181918

19191919
typeLoc = TypeLoc(typeExpr->getTypeRepr(), Type());
19201920
bool hadError = TypeChecker::validateType(
1921-
getASTContext(), typeLoc, TypeResolution::forContextual(DC, options),
1922-
options);
1921+
getASTContext(), typeLoc, TypeResolution::forContextual(DC, options));
19231922

19241923
if (hadError)
19251924
return nullptr;

lib/Sema/TypeCheckDecl.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -817,7 +817,7 @@ DefaultDefinitionTypeRequest::evaluate(Evaluator &evaluator,
817817
if (defaultDefinition) {
818818
auto resolution =
819819
TypeResolution::forInterface(assocType->getDeclContext(), None);
820-
return resolution.resolveType(defaultDefinition, None);
820+
return resolution.resolveType(defaultDefinition);
821821
}
822822

823823
return Type();
@@ -1436,7 +1436,7 @@ static NominalTypeDecl *resolveSingleNominalTypeDecl(
14361436
TypeResolutionOptions options = TypeResolverContext::TypeAliasDecl;
14371437
options |= flags;
14381438
if (TypeChecker::validateType(
1439-
Ctx, typeLoc, TypeResolution::forInterface(DC, options), options))
1439+
Ctx, typeLoc, TypeResolution::forInterface(DC, options)))
14401440
return nullptr;
14411441

14421442
return typeLoc.getType()->getAnyNominal();
@@ -1771,7 +1771,7 @@ UnderlyingTypeRequest::evaluate(Evaluator &evaluator,
17711771
auto underlyingLoc = TypeLoc(typeAlias->getUnderlyingTypeRepr());
17721772
if (TypeChecker::validateType(
17731773
typeAlias->getASTContext(), underlyingLoc,
1774-
TypeResolution::forInterface(typeAlias, options), options)) {
1774+
TypeResolution::forInterface(typeAlias, options))) {
17751775
typeAlias->setInvalid();
17761776
return ErrorType::get(typeAlias->getASTContext());
17771777
}
@@ -2021,8 +2021,7 @@ ResultTypeRequest::evaluate(Evaluator &evaluator, ValueDecl *decl) const {
20212021
auto *dc = decl->getInnermostDeclContext();
20222022
auto resolution =
20232023
TypeResolution::forInterface(dc, TypeResolverContext::FunctionResult);
2024-
return resolution.resolveType(
2025-
resultTyRepr, TypeResolverContext::FunctionResult);
2024+
return resolution.resolveType(resultTyRepr);
20262025
}
20272026

20282027
ParamSpecifier
@@ -2125,7 +2124,7 @@ static Type validateParameterType(ParamDecl *decl) {
21252124

21262125
auto &ctx = dc->getASTContext();
21272126
auto resolution = TypeResolution::forInterface(dc, options);
2128-
if (TypeChecker::validateType(ctx, TL, resolution, options)) {
2127+
if (TypeChecker::validateType(ctx, TL, resolution)) {
21292128
decl->setInvalid();
21302129
return ErrorType::get(ctx);
21312130
}
@@ -2545,7 +2544,7 @@ ExtendedTypeRequest::evaluate(Evaluator &eval, ExtensionDecl *ext) const {
25452544
TypeResolutionOptions options(TypeResolverContext::ExtensionBinding);
25462545
options |= TypeResolutionFlags::AllowUnboundGenerics;
25472546
auto tr = TypeResolution::forStructural(ext->getDeclContext(), options);
2548-
auto extendedType = tr.resolveType(extendedRepr, options);
2547+
auto extendedType = tr.resolveType(extendedRepr);
25492548

25502549
if (extendedType->hasError())
25512550
return error();

lib/Sema/TypeCheckGeneric.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ OpaqueResultTypeRequest::evaluate(Evaluator &evaluator,
136136
auto resolution = TypeResolution::forInterface(
137137
dc, dc->getGenericSignatureOfContext(), options);
138138
bool validationError
139-
= TypeChecker::validateType(ctx, constraintTypeLoc, resolution, options);
139+
= TypeChecker::validateType(ctx, constraintTypeLoc, resolution);
140140
auto constraintType = constraintTypeLoc.getType();
141141
if (validationError)
142142
return nullptr;
@@ -674,8 +674,7 @@ GenericSignatureRequest::evaluate(Evaluator &evaluator,
674674
: TypeResolverContext::FunctionInput);
675675
paramOptions |= TypeResolutionFlags::Direct;
676676

677-
auto type = resolution.withOptions(paramOptions)
678-
.resolveType(typeRepr, paramOptions);
677+
auto type = resolution.withOptions(paramOptions).resolveType(typeRepr);
679678

680679
if (auto *specifier = dyn_cast<SpecifierTypeRepr>(typeRepr))
681680
typeRepr = specifier->getBase();
@@ -696,8 +695,7 @@ GenericSignatureRequest::evaluate(Evaluator &evaluator,
696695
if (resultTypeRepr && !isa<OpaqueReturnTypeRepr>(resultTypeRepr)) {
697696
auto resultType =
698697
resolution.withOptions(TypeResolverContext::FunctionResult)
699-
.resolveType(resultTypeRepr,
700-
TypeResolverContext::FunctionResult);
698+
.resolveType(resultTypeRepr);
701699

702700
inferenceSources.emplace_back(resultTypeRepr, resultType);
703701
}
@@ -940,7 +938,7 @@ RequirementRequest::evaluate(Evaluator &evaluator,
940938
auto resolveType = [&](TypeLoc &typeLoc) -> Type {
941939
Type result;
942940
if (auto typeRepr = typeLoc.getTypeRepr())
943-
result = resolution->resolveType(typeRepr, options);
941+
result = resolution->resolveType(typeRepr);
944942
else
945943
result = typeLoc.getType();
946944

@@ -992,8 +990,8 @@ Type StructuralTypeRequest::evaluate(Evaluator &evaluator,
992990
}
993991

994992
auto resolution = TypeResolution::forStructural(typeAlias, options);
995-
auto type = resolution.resolveType(underlyingTypeRepr, options);
996-
993+
auto type = resolution.resolveType(underlyingTypeRepr);
994+
997995
auto genericSig = typeAlias->getGenericSignature();
998996
SubstitutionMap subs;
999997
if (genericSig)

lib/Sema/TypeCheckPattern.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ class ResolvePattern : public ASTVisitor<ResolvePattern,
465465

466466
// See if the repr resolves to a type.
467467
Type ty = TypeChecker::resolveIdentifierType(
468-
TypeResolution::forContextual(DC, options), repr, options);
468+
TypeResolution::forContextual(DC, options), repr);
469469

470470
auto *enumDecl = dyn_cast_or_null<EnumDecl>(ty->getAnyNominal());
471471
if (!enumDecl)
@@ -564,7 +564,7 @@ class ResolvePattern : public ASTVisitor<ResolvePattern,
564564

565565
// See first if the entire repr resolves to a type.
566566
Type enumTy = TypeChecker::resolveIdentifierType(
567-
TypeResolution::forContextual(DC, options), prefixRepr, options);
567+
TypeResolution::forContextual(DC, options), prefixRepr);
568568
if (!dyn_cast_or_null<EnumDecl>(enumTy->getAnyNominal()))
569569
return nullptr;
570570

@@ -694,7 +694,7 @@ static Type validateTypedPattern(TypeResolution resolution,
694694
hadError = true;
695695
}
696696
} else {
697-
hadError = TypeChecker::validateType(Context, TL, resolution, options);
697+
hadError = TypeChecker::validateType(Context, TL, resolution);
698698
}
699699

700700
if (hadError) {
@@ -1211,7 +1211,7 @@ Pattern *TypeChecker::coercePatternToType(ContextualPattern pattern,
12111211
// Type-check the type parameter.
12121212
TypeResolutionOptions paramOptions(TypeResolverContext::InExpression);
12131213
TypeResolution resolution = TypeResolution::forContextual(dc, paramOptions);
1214-
if (validateType(Context, IP->getCastTypeLoc(), resolution, paramOptions))
1214+
if (validateType(Context, IP->getCastTypeLoc(), resolution))
12151215
return nullptr;
12161216

12171217
auto castType = IP->getCastTypeLoc().getType();

lib/Sema/TypeCheckPropertyWrapper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,7 @@ Type AttachedPropertyWrapperTypeRequest::evaluate(Evaluator &evaluator,
567567
TypeResolution::forContextual(var->getDeclContext(), options);
568568
if (TypeChecker::validateType(var->getASTContext(),
569569
customAttr->getTypeLoc(),
570-
resolution, options)) {
570+
resolution)) {
571571
return ErrorType::get(var->getASTContext());
572572
}
573573

lib/Sema/TypeCheckRequestFunctions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ InheritedTypeRequest::evaluate(
7272

7373
Type inheritedType;
7474
if (typeLoc.getTypeRepr())
75-
inheritedType = resolution->resolveType(typeLoc.getTypeRepr(), options);
75+
inheritedType = resolution->resolveType(typeLoc.getTypeRepr());
7676
else
7777
inheritedType = typeLoc.getType();
7878

0 commit comments

Comments
 (0)