@@ -304,7 +304,7 @@ static void desugarConformanceRequirement(Type subjectType, Type constraintType,
304304 if (conformance.isConcrete ()) {
305305 // Introduce conditional requirements if the conformance is concrete.
306306 for (auto req : conformance.getConcrete ()->getConditionalRequirements ()) {
307- desugarRequirement (req, result, errors);
307+ desugarRequirement (req, loc, result, errors);
308308 }
309309 }
310310
@@ -324,7 +324,7 @@ static void desugarConformanceRequirement(Type subjectType, Type constraintType,
324324 paramType->getRequirements (subjectType, reqs);
325325
326326 for (const auto &req : reqs)
327- desugarRequirement (req, result, errors);
327+ desugarRequirement (req, loc, result, errors);
328328
329329 return ;
330330 }
@@ -352,30 +352,30 @@ static void desugarConformanceRequirement(Type subjectType, Type constraintType,
352352// / composition, into zero or more "proper" requirements which can then be
353353// / converted into rewrite rules by the RuleBuilder.
354354void
355- swift::rewriting::desugarRequirement (Requirement req,
355+ swift::rewriting::desugarRequirement (Requirement req, SourceLoc loc,
356356 SmallVectorImpl<Requirement> &result,
357357 SmallVectorImpl<RequirementError> &errors) {
358358 auto firstType = req.getFirstType ();
359359
360360 switch (req.getKind ()) {
361361 case RequirementKind::Conformance:
362362 desugarConformanceRequirement (firstType, req.getSecondType (),
363- SourceLoc () , result, errors);
363+ loc , result, errors);
364364 break ;
365365
366366 case RequirementKind::Superclass:
367367 desugarSuperclassRequirement (firstType, req.getSecondType (),
368- SourceLoc () , result, errors);
368+ loc , result, errors);
369369 break ;
370370
371371 case RequirementKind::Layout:
372372 desugarLayoutRequirement (firstType, req.getLayoutConstraint (),
373- SourceLoc () , result, errors);
373+ loc , result, errors);
374374 break ;
375375
376376 case RequirementKind::SameType:
377377 desugarSameTypeRequirement (firstType, req.getSecondType (),
378- SourceLoc () , result, errors);
378+ loc , result, errors);
379379 break ;
380380 }
381381}
@@ -435,7 +435,7 @@ struct InferRequirementsWalker : public TypeWalker {
435435 auto subMap = typeAlias->getSubstitutionMap ();
436436 for (const auto &rawReq : decl->getGenericSignature ().getRequirements ()) {
437437 if (auto req = rawReq.subst (subMap))
438- desugarRequirement (*req, reqs, errors);
438+ desugarRequirement (*req, SourceLoc (), reqs, errors);
439439 }
440440
441441 return Action::Continue;
@@ -455,15 +455,15 @@ struct InferRequirementsWalker : public TypeWalker {
455455 auto addConformanceConstraint = [&](Type type, ProtocolDecl *protocol) {
456456 Requirement req (RequirementKind::Conformance, type,
457457 protocol->getDeclaredInterfaceType ());
458- desugarRequirement (req, reqs, errors);
458+ desugarRequirement (req, SourceLoc (), reqs, errors);
459459 };
460460 auto addSameTypeConstraint = [&](Type firstType,
461461 AssociatedTypeDecl *assocType) {
462462 auto secondType = assocType->getDeclaredInterfaceType ()
463463 ->castTo <DependentMemberType>()
464464 ->substBaseType (module , firstType);
465465 Requirement req (RequirementKind::SameType, firstType, secondType);
466- desugarRequirement (req, reqs, errors);
466+ desugarRequirement (req, SourceLoc (), reqs, errors);
467467 };
468468 auto *tangentVectorAssocType =
469469 differentiableProtocol->getAssociatedType (ctx.Id_TangentVector );
@@ -502,7 +502,7 @@ struct InferRequirementsWalker : public TypeWalker {
502502 // FIXME: Inaccurate TypeReprs.
503503 for (const auto &rawReq : genericSig.getRequirements ()) {
504504 if (auto req = rawReq.subst (subMap))
505- desugarRequirement (*req, reqs, errors);
505+ desugarRequirement (*req, SourceLoc (), reqs, errors);
506506 }
507507
508508 return Action::Continue;
0 commit comments