@@ -455,17 +455,11 @@ void swift::rewriting::desugarRequirements(
455455 SmallVector<StructuralRequirement, 2 > result;
456456 for (auto req : reqs) {
457457 SmallVector<Requirement, 2 > desugaredReqs;
458- SmallVector<RequirementError, 2 > ignoredErrors;
459-
460- if (req.inferred )
461- desugarRequirement (req.req , SourceLoc (), desugaredReqs,
462- inverses, ignoredErrors);
463- else
464- desugarRequirement (req.req , req.loc , desugaredReqs,
465- inverses, errors);
458+ desugarRequirement (req.req , req.loc , desugaredReqs,
459+ inverses, errors);
466460
467461 for (auto desugaredReq : desugaredReqs)
468- result.push_back ({desugaredReq, req.loc , req. inferred });
462+ result.push_back ({desugaredReq, req.loc });
469463 }
470464
471465 std::swap (reqs, result);
@@ -510,11 +504,11 @@ static void realizeTypeRequirement(DeclContext *dc,
510504 if (constraintType->isConstraintType ()) {
511505 result.push_back ({Requirement (RequirementKind::Conformance,
512506 subjectType, constraintType),
513- loc, /* wasInferred= */ false });
507+ loc});
514508 } else if (constraintType->getClassOrBoundGenericClass ()) {
515509 result.push_back ({Requirement (RequirementKind::Superclass,
516510 subjectType, constraintType),
517- loc, /* wasInferred= */ false });
511+ loc});
518512 } else {
519513 errors.push_back (
520514 RequirementError::forInvalidTypeRequirement (subjectType,
@@ -541,6 +535,9 @@ struct InferRequirementsWalker : public TypeWalker {
541535 if (ty->is <UnboundGenericType>())
542536 return Action::Stop;
543537
538+ if (!ty->hasTypeParameter ())
539+ return Action::SkipChildren;
540+
544541 return Action::Continue;
545542 }
546543
@@ -570,7 +567,7 @@ struct InferRequirementsWalker : public TypeWalker {
570567 if (skipRequirement (rawReq, decl))
571568 continue ;
572569
573- reqs.push_back ({rawReq.subst (subMap), SourceLoc (), /* inferred= */ true });
570+ reqs.push_back ({rawReq.subst (subMap), SourceLoc ()});
574571 }
575572
576573 return Action::Continue;
@@ -586,7 +583,7 @@ struct InferRequirementsWalker : public TypeWalker {
586583 auto countType = packExpansion->getCountType ();
587584 for (auto pack : packReferences)
588585 reqs.push_back ({Requirement (RequirementKind::SameShape, countType, pack),
589- SourceLoc (), /* inferred= */ true });
586+ SourceLoc ()});
590587 }
591588
592589 // Infer requirements from `@differentiable` function types.
@@ -600,7 +597,7 @@ struct InferRequirementsWalker : public TypeWalker {
600597 auto addConformanceConstraint = [&](Type type, ProtocolDecl *protocol) {
601598 reqs.push_back ({Requirement (RequirementKind::Conformance, type,
602599 protocol->getDeclaredInterfaceType ()),
603- SourceLoc (), /* inferred= */ true });
600+ SourceLoc ()});
604601 };
605602
606603 auto &ctx = module ->getASTContext ();
@@ -614,7 +611,7 @@ struct InferRequirementsWalker : public TypeWalker {
614611 ->substBaseType (module , firstType);
615612 reqs.push_back ({Requirement (RequirementKind::SameType,
616613 firstType, secondType),
617- SourceLoc (), /* inferred= */ true });
614+ SourceLoc ()});
618615 };
619616 auto *tangentVectorAssocType =
620617 differentiableProtocol->getAssociatedType (ctx.Id_TangentVector );
@@ -662,7 +659,7 @@ struct InferRequirementsWalker : public TypeWalker {
662659 if (skipRequirement (rawReq, decl))
663660 continue ;
664661
665- reqs.push_back ({rawReq.subst (subMap), SourceLoc (), /* inferred= */ true });
662+ reqs.push_back ({rawReq.subst (subMap), SourceLoc ()});
666663 }
667664
668665 return Action::Continue;
@@ -731,7 +728,7 @@ void swift::rewriting::realizeRequirement(
731728 inferRequirements (firstType, firstLoc, moduleForInference, dc, result);
732729 }
733730
734- result.push_back ({req, loc, /* wasInferred= */ false });
731+ result.push_back ({req, loc});
735732 break ;
736733 }
737734
@@ -748,7 +745,7 @@ void swift::rewriting::realizeRequirement(
748745 inferRequirements (secondType, secondLoc, moduleForInference, dc, result);
749746 }
750747
751- result.push_back ({req, loc, /* wasInferred= */ false });
748+ result.push_back ({req, loc});
752749 break ;
753750 }
754751 }
@@ -812,11 +809,7 @@ void swift::rewriting::applyInverses(
812809 if (req.getKind () != RequirementKind::Conformance)
813810 return false ;
814811
815- // Only consider requirements from defaults-expansion...
816- if (!structReq.fromDefault )
817- return false ;
818-
819- // involving an invertible protocol.
812+ // Only consider requirements involving an invertible protocol.
820813 llvm::Optional<InvertibleProtocolKind> proto;
821814 if (auto kp = req.getProtocolDecl ()->getKnownProtocolKind ())
822815 if (auto ip = getInvertibleProtocolKind (*kp))
@@ -917,7 +910,7 @@ StructuralRequirementsRequest::evaluate(Evaluator &evaluator,
917910 result.push_back ({
918911 Requirement (RequirementKind::Conformance,
919912 selfTy, inheritedProto->getDeclaredInterfaceType ()),
920- SourceLoc (), /* wasInferred= */ false });
913+ SourceLoc ()});
921914 }
922915 }
923916
@@ -936,7 +929,7 @@ StructuralRequirementsRequest::evaluate(Evaluator &evaluator,
936929 auto layout = LayoutConstraint::getLayoutConstraint (
937930 LayoutConstraintKind::Class, ctx);
938931 result.push_back ({Requirement (RequirementKind::Layout, selfTy, layout),
939- proto-> getLoc (), /* inferred= */ true });
932+ SourceLoc () });
940933
941934 desugarRequirements (result, inverses, errors);
942935 InverseRequirement::expandDefaults (ctx, needsDefaultRequirements, result);
@@ -1000,8 +993,7 @@ StructuralRequirementsRequest::evaluate(Evaluator &evaluator,
1000993 selfTy, typeAliasDecl->getName ());
1001994 Requirement req (RequirementKind::SameType, subjectType,
1002995 underlyingType);
1003- result.push_back ({req, typeAliasDecl->getLoc (),
1004- /* inferred=*/ false });
996+ result.push_back ({req, typeAliasDecl->getLoc ()});
1005997 }
1006998 }
1007999 }
0 commit comments