@@ -2423,14 +2423,17 @@ static PackType *replaceTypeVariablesWithFreshPacks(ConstraintSystem &cs,
2423
2423
// wrapping a pack type variable. Otherwise, create a new scalar
2424
2424
// type variable.
2425
2425
//
2426
- // FIXME: Locator for diagnostics
2427
2426
// FIXME: Other TVO_* flags for type variables?
2427
+ auto elementLoc = cs.getConstraintLocator(loc,
2428
+ LocatorPathElt::PackElement(freshTypeVars.size()));
2428
2429
if (packExpansionElt != nullptr) {
2429
- auto *freshTypeVar = cs.createTypeVariable(loc, TVO_CanBindToPack);
2430
+ auto *freshTypeVar =
2431
+ cs.createTypeVariable(elementLoc, TVO_CanBindToPack);
2430
2432
freshTypeVars.push_back(PackExpansionType::get(
2431
2433
freshTypeVar, packExpansionElt->getCountType()));
2432
2434
} else {
2433
- freshTypeVars.push_back(cs.createTypeVariable(loc, /*options=*/0));
2435
+ freshTypeVars.push_back(
2436
+ cs.createTypeVariable(elementLoc, /*options=*/0));
2434
2437
}
2435
2438
}
2436
2439
}
@@ -2483,7 +2486,6 @@ static PackType *replaceTypeVariablesWithFreshPacks(ConstraintSystem &cs,
2483
2486
// Bind each pack type variable occurring in the pattern type to its
2484
2487
// binding pack that was constructed above.
2485
2488
for (const auto &pair : typeVars) {
2486
- // FIXME: Locator for diagnostics
2487
2489
cs.addConstraint(ConstraintKind::Bind,
2488
2490
pair.first, PackType::get(ctx, pair.second), locator);
2489
2491
}
@@ -2521,7 +2523,6 @@ ConstraintSystem::matchPackExpansionTypes(PackExpansionType *expansion1,
2521
2523
if (auto *pack2 = pattern2->getAs<PackType>()) {
2522
2524
if (auto *pack1 = replaceTypeVariablesWithFreshPacks(
2523
2525
*this, pattern1, pack2, locator)) {
2524
- // FIXME: Locator for diagnostics.
2525
2526
addConstraint(kind, pack1, pack2, locator);
2526
2527
return getTypeMatchSuccess();
2527
2528
}
@@ -2537,7 +2538,6 @@ ConstraintSystem::matchPackExpansionTypes(PackExpansionType *expansion1,
2537
2538
if (auto *pack1 = pattern1->getAs<PackType>()) {
2538
2539
if (auto *pack2 = replaceTypeVariablesWithFreshPacks(
2539
2540
*this, pattern2, pack1, locator)) {
2540
- // FIXME: Locator for diagnostics.
2541
2541
addConstraint(kind, pack1, pack2, locator);
2542
2542
return getTypeMatchSuccess();
2543
2543
}
@@ -6849,8 +6849,6 @@ ConstraintSystem::matchTypes(Type type1, Type type2, ConstraintKind kind,
6849
6849
kind, subflags, packLoc);
6850
6850
}
6851
6851
case TypeKind::PackExpansion: {
6852
- // FIXME: Need a new locator element
6853
-
6854
6852
auto expansion1 = cast<PackExpansionType>(desugar1);
6855
6853
auto expansion2 = cast<PackExpansionType>(desugar2);
6856
6854
0 commit comments