@@ -2423,14 +2423,17 @@ static PackType *replaceTypeVariablesWithFreshPacks(ConstraintSystem &cs,
24232423 // wrapping a pack type variable. Otherwise, create a new scalar
24242424 // type variable.
24252425 //
2426- // FIXME: Locator for diagnostics
24272426 // FIXME: Other TVO_* flags for type variables?
2427+ auto elementLoc = cs.getConstraintLocator(loc,
2428+ LocatorPathElt::PackElement(freshTypeVars.size()));
24282429 if (packExpansionElt != nullptr) {
2429- auto *freshTypeVar = cs.createTypeVariable(loc, TVO_CanBindToPack);
2430+ auto *freshTypeVar =
2431+ cs.createTypeVariable(elementLoc, TVO_CanBindToPack);
24302432 freshTypeVars.push_back(PackExpansionType::get(
24312433 freshTypeVar, packExpansionElt->getCountType()));
24322434 } else {
2433- freshTypeVars.push_back(cs.createTypeVariable(loc, /*options=*/0));
2435+ freshTypeVars.push_back(
2436+ cs.createTypeVariable(elementLoc, /*options=*/0));
24342437 }
24352438 }
24362439 }
@@ -2483,7 +2486,6 @@ static PackType *replaceTypeVariablesWithFreshPacks(ConstraintSystem &cs,
24832486 // Bind each pack type variable occurring in the pattern type to its
24842487 // binding pack that was constructed above.
24852488 for (const auto &pair : typeVars) {
2486- // FIXME: Locator for diagnostics
24872489 cs.addConstraint(ConstraintKind::Bind,
24882490 pair.first, PackType::get(ctx, pair.second), locator);
24892491 }
@@ -2521,7 +2523,6 @@ ConstraintSystem::matchPackExpansionTypes(PackExpansionType *expansion1,
25212523 if (auto *pack2 = pattern2->getAs<PackType>()) {
25222524 if (auto *pack1 = replaceTypeVariablesWithFreshPacks(
25232525 *this, pattern1, pack2, locator)) {
2524- // FIXME: Locator for diagnostics.
25252526 addConstraint(kind, pack1, pack2, locator);
25262527 return getTypeMatchSuccess();
25272528 }
@@ -2537,7 +2538,6 @@ ConstraintSystem::matchPackExpansionTypes(PackExpansionType *expansion1,
25372538 if (auto *pack1 = pattern1->getAs<PackType>()) {
25382539 if (auto *pack2 = replaceTypeVariablesWithFreshPacks(
25392540 *this, pattern2, pack1, locator)) {
2540- // FIXME: Locator for diagnostics.
25412541 addConstraint(kind, pack1, pack2, locator);
25422542 return getTypeMatchSuccess();
25432543 }
@@ -6849,8 +6849,6 @@ ConstraintSystem::matchTypes(Type type1, Type type2, ConstraintKind kind,
68496849 kind, subflags, packLoc);
68506850 }
68516851 case TypeKind::PackExpansion: {
6852- // FIXME: Need a new locator element
6853-
68546852 auto expansion1 = cast<PackExpansionType>(desugar1);
68556853 auto expansion2 = cast<PackExpansionType>(desugar2);
68566854
0 commit comments