@@ -2397,7 +2397,7 @@ class ConstraintSystem {
23972397 llvm::SmallDenseMap<PackExpansionType *, TypeVariableType *, 4 >
23982398 OpenedPackExpansionTypes;
23992399
2400- llvm::SmallMapVector <ConstraintLocator *, std::pair<UUID, Type>, 4 >
2400+ llvm::SmallDenseMap <ConstraintLocator *, std::pair<UUID, Type>, 4 >
24012401 PackExpansionEnvironments;
24022402
24032403 llvm::SmallMapVector<PackElementExpr *, PackExpansionExpr *, 2 >
@@ -2883,9 +2883,6 @@ class ConstraintSystem {
28832883 // / FIXME: Remove this.
28842884 unsigned numFixes;
28852885
2886- // / The length of \c PackExpansionEnvironments.
2887- unsigned numPackExpansionEnvironments;
2888-
28892886 // / The length of \c PackEnvironments.
28902887 unsigned numPackEnvironments;
28912888
@@ -3464,6 +3461,16 @@ class ConstraintSystem {
34643461 GenericEnvironment *getPackElementEnvironment (ConstraintLocator *locator,
34653462 CanType shapeClass);
34663463
3464+ // / Update PackExpansionEnvironments and record a change in the trail.
3465+ void recordPackExpansionEnvironment (ConstraintLocator *locator,
3466+ std::pair<UUID, Type> uuidAndShape);
3467+
3468+ // / Undo the above change.
3469+ void removePackExpansionEnvironment (ConstraintLocator *locator) {
3470+ bool erased = PackExpansionEnvironments.erase (locator);
3471+ ASSERT (erased);
3472+ }
3473+
34673474 // / Get the opened element generic environment for the given pack element.
34683475 PackExpansionExpr *getPackEnvironment (PackElementExpr *packElement) const ;
34693476
0 commit comments