Skip to content

Commit e8d717b

Browse files
committed
AST: Remove ModuleDecl parameter from checkRequirements()
1 parent 8feb3bd commit e8d717b

7 files changed

+8
-16
lines changed

include/swift/AST/Requirement.h

+1-2
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,7 @@ checkRequirementsWithoutContext(ArrayRef<Requirement> requirements);
241241
/// Check if each requirement is satisfied after applying the given
242242
/// substitutions. The substitutions must replace all type parameters that
243243
/// appear in the requirement with concrete types or archetypes.
244-
CheckRequirementsResult checkRequirements(ModuleDecl *module,
245-
ArrayRef<Requirement> requirements,
244+
CheckRequirementsResult checkRequirements(ArrayRef<Requirement> requirements,
246245
TypeSubstitutionFn substitutions,
247246
SubstOptions options = std::nullopt);
248247

lib/AST/Requirement.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -327,12 +327,12 @@ swift::checkRequirementsWithoutContext(ArrayRef<Requirement> requirements) {
327327
}
328328

329329
CheckRequirementsResult swift::checkRequirements(
330-
ModuleDecl *module, ArrayRef<Requirement> requirements,
330+
ArrayRef<Requirement> requirements,
331331
TypeSubstitutionFn substitutions, SubstOptions options) {
332332
SmallVector<Requirement, 4> substReqs;
333333
for (auto req : requirements) {
334334
substReqs.push_back(req.subst(substitutions,
335-
LookUpConformanceInModule(), options));
335+
LookUpConformanceInModule(), options));
336336
}
337337

338338
return checkRequirements(substReqs);

lib/Sema/AssociatedTypeInference.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -2844,7 +2844,7 @@ bool AssociatedTypeInference::checkCurrentTypeWitnesses(
28442844
sanitizedRequirements);
28452845

28462846
switch (checkRequirements(
2847-
dc->getParentModule(), sanitizedRequirements,
2847+
sanitizedRequirements,
28482848
QuerySubstitutionMap{substitutions}, options)) {
28492849
case CheckRequirementsResult::RequirementFailure:
28502850
++NumSolutionStatesFailedCheck;
@@ -2892,7 +2892,7 @@ bool AssociatedTypeInference::checkConstrainedExtension(ExtensionDecl *ext) {
28922892

28932893
SubstOptions options = getSubstOptionsWithCurrentTypeWitnesses();
28942894
switch (checkRequirements(
2895-
dc->getParentModule(), ext->getGenericSignature().getRequirements(),
2895+
ext->getGenericSignature().getRequirements(),
28962896
QueryTypeSubstitutionMap{subs}, options)) {
28972897
case CheckRequirementsResult::Success:
28982898
case CheckRequirementsResult::SubstitutionFailure:

lib/Sema/CSStep.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,6 @@ bool IsDeclRefinementOfRequest::evaluate(Evaluator &evaluator,
681681
return false;
682682

683683
auto result = checkRequirements(
684-
declA->getDeclContext()->getParentModule(),
685684
genericSignatureB.getRequirements(),
686685
QueryTypeSubstitutionMap{ substMap });
687686

lib/Sema/CodeSynthesis.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,6 @@ createDesignatedInitOverride(ClassDecl *classDecl,
778778
// satisfied by the derived class. In this case, we don't want to inherit
779779
// this initializer; there's no way to call it on the derived class.
780780
auto checkResult = checkRequirements(
781-
classDecl->getParentModule(),
782781
superclassCtorSig.getRequirements(),
783782
[&](Type type) -> Type {
784783
auto substType = type.subst(subMap);

lib/Sema/IDETypeCheckingRequests.cpp

+2-6
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,10 @@ static bool isExtensionAppliedInternal(const DeclContext *DC, Type BaseTy,
167167
if (isExtensionWithSelfBound(ED, BaseTypeProtocolDecl)) {
168168
return true;
169169
}
170-
auto *module = DC->getParentModule();
171170
GenericSignature genericSig = ED->getGenericSignature();
172171
SubstitutionMap substMap = BaseTy->getContextSubstitutionMap(
173172
ED->getExtendedNominal());
174-
return checkRequirements(module,
175-
genericSig.getRequirements(),
173+
return checkRequirements(genericSig.getRequirements(),
176174
QuerySubstitutionMap{substMap}) ==
177175
CheckRequirementsResult::Success;
178176
}
@@ -210,7 +208,6 @@ static bool isMemberDeclAppliedInternal(const DeclContext *DC, Type BaseTy,
210208

211209
// The context substitution map for the base type fixes the declaration's
212210
// outer generic parameters.
213-
auto *module = DC->getParentModule();
214211
auto substMap = BaseTy->getContextSubstitutionMap(
215212
VD->getDeclContext(), genericDecl->getGenericEnvironment());
216213

@@ -221,8 +218,7 @@ static bool isMemberDeclAppliedInternal(const DeclContext *DC, Type BaseTy,
221218

222219
// We treat substitution failure as success, to ignore requirements
223220
// that involve innermost generic parameters.
224-
return checkRequirements(module,
225-
genericSig.getRequirements(),
221+
return checkRequirements(genericSig.getRequirements(),
226222
[&](SubstitutableType *type) -> Type {
227223
auto *paramTy = cast<GenericTypeParamType>(type);
228224
if (paramTy->getDepth() == innerDepth)

lib/Sema/TypeCheckAttr.cpp

+1-2
Original file line numberDiff line numberDiff line change
@@ -3840,13 +3840,12 @@ TypeEraserHasViableInitRequest::evaluate(Evaluator &evaluator,
38403840
// type conforming to the annotated protocol. We will check this by
38413841
// substituting the protocol's Self type for the generic arg and check that
38423842
// the requirements in the generic signature are satisfied.
3843-
auto *module = nominalTypeDecl->getParentModule();
38443843
auto baseMap =
38453844
typeEraser->getContextSubstitutionMap(nominalTypeDecl);
38463845
QuerySubstitutionMap getSubstitution{baseMap};
38473846

38483847
auto result = checkRequirements(
3849-
module, genericSignature.getRequirements(),
3848+
genericSignature.getRequirements(),
38503849
[&](SubstitutableType *type) -> Type {
38513850
if (type->isEqual(genericParamType))
38523851
return protocol->getSelfTypeInContext();

0 commit comments

Comments
 (0)