Skip to content

Commit 06fbca6

Browse files
authored
Merge pull request swiftlang#39983 from slavapestov/gsb-conditional-inference
GSB: Perform conditional requirement inference in AbstractGenericSignatureRequest too
2 parents 22609ac + 153654c commit 06fbca6

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

lib/AST/GenericSignatureBuilder.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2377,8 +2377,7 @@ GenericSignatureBuilder::resolveConcreteConformance(ResolvedType type,
23772377
bool hasExplicitSource = llvm::any_of(
23782378
equivClass->concreteTypeConstraints,
23792379
[](const ConcreteConstraint &constraint) {
2380-
return (!constraint.source->isDerivedRequirement() &&
2381-
constraint.source->getLoc().isValid());
2380+
return !constraint.source->isDerivedRequirement();
23822381
});
23832382

23842383
if (hasExplicitSource) {
@@ -8513,6 +8512,11 @@ void GenericSignatureBuilder::verifyGenericSignature(ASTContext &context,
85138512
std::move(builder).computeGenericSignature(
85148513
/*allowConcreteGenericParams=*/true);
85158514

8515+
// If the new signature once again contains the removed requirement, it's
8516+
// not redundant.
8517+
if (newSig->isEqual(sig))
8518+
continue;
8519+
85168520
// If the removed requirement is satisfied by the new generic signature,
85178521
// it is redundant. Complain.
85188522
if (newSig->isRequirementSatisfied(requirements[victimIndex])) {

0 commit comments

Comments
 (0)