@@ -1546,7 +1546,7 @@ class Solution {
15461546 PackExpansionEnvironments;
15471547
15481548 // / The pack expansion environment that can open a given pack element.
1549- llvm::MapVector <PackElementExpr *, PackExpansionExpr *>
1549+ llvm::DenseMap <PackElementExpr *, PackExpansionExpr *>
15501550 PackEnvironments;
15511551
15521552 // / The outer pack element generic environment to use when dealing with nested
@@ -2400,7 +2400,7 @@ class ConstraintSystem {
24002400 llvm::SmallDenseMap<ConstraintLocator *, std::pair<UUID, Type>, 4 >
24012401 PackExpansionEnvironments;
24022402
2403- llvm::SmallMapVector <PackElementExpr *, PackExpansionExpr *, 2 >
2403+ llvm::SmallDenseMap <PackElementExpr *, PackExpansionExpr *, 2 >
24042404 PackEnvironments;
24052405
24062406 llvm::SmallVector<GenericEnvironment *, 4 > PackElementGenericEnvironments;
@@ -2883,9 +2883,6 @@ class ConstraintSystem {
28832883 // / FIXME: Remove this.
28842884 unsigned numFixes;
28852885
2886- // / The length of \c PackEnvironments.
2887- unsigned numPackEnvironments;
2888-
28892886 // / The length of \c PackElementGenericEnvironments.
28902887 unsigned numPackElementGenericEnvironments;
28912888
@@ -3474,10 +3471,17 @@ class ConstraintSystem {
34743471 // / Get the opened element generic environment for the given pack element.
34753472 PackExpansionExpr *getPackEnvironment (PackElementExpr *packElement) const ;
34763473
3477- // / Associate an opened element generic environment to a pack element.
3474+ // / Associate an opened element generic environment to a pack element,
3475+ // / and record a change in the trail.
34783476 void addPackEnvironment (PackElementExpr *packElement,
34793477 PackExpansionExpr *packExpansion);
34803478
3479+ // / Undo the above change.
3480+ void removePackEnvironment (PackElementExpr *packElement) {
3481+ bool erased = PackEnvironments.erase (packElement);
3482+ ASSERT (erased);
3483+ }
3484+
34813485 // / Retrieve the constraint locator for the given anchor and
34823486 // / path, uniqued and automatically infer the summary flags
34833487 ConstraintLocator *
0 commit comments