@@ -1594,7 +1594,7 @@ class Solution {
15941594 llvm::DenseMap<Expr *, ExprPattern *> exprPatterns;
15951595
15961596 // / The set of parameters that have been inferred to be 'isolated'.
1597- std::vector <ParamDecl *> isolatedParams;
1597+ llvm::DenseSet <ParamDecl *> isolatedParams;
15981598
15991599 // / The set of closures that have been inferred to be "isolated by
16001600 // / preconcurrency".
@@ -2292,7 +2292,7 @@ class ConstraintSystem {
22922292 llvm::SmallDenseMap<Expr *, ExprPattern *, 2 > exprPatterns;
22932293
22942294 // / The set of parameters that have been inferred to be 'isolated'.
2295- llvm::SmallSetVector <ParamDecl *, 2 > isolatedParams;
2295+ llvm::SmallDenseSet <ParamDecl *, 2 > isolatedParams;
22962296
22972297 // / The set of closures that have been inferred to be "isolated by
22982298 // / preconcurrency".
@@ -2855,9 +2855,6 @@ class ConstraintSystem {
28552855 // / FIXME: Remove this.
28562856 unsigned numFixes;
28572857
2858- // / The length of \c isolatedParams.
2859- unsigned numIsolatedParams;
2860-
28612858 // / The length of \c PreconcurrencyClosures.
28622859 unsigned numPreconcurrencyClosures;
28632860
@@ -4215,6 +4212,13 @@ class ConstraintSystem {
42154212 bool resolveClosure (TypeVariableType *typeVar, Type contextualType,
42164213 ConstraintLocatorBuilder locator);
42174214
4215+ // / Used by the above to update isolatedParams and record a change in
4216+ // / the trail.
4217+ void recordIsolatedParam (ParamDecl *param);
4218+
4219+ // / Undo the above change.
4220+ void removeIsolatedParam (ParamDecl *param);
4221+
42184222 // / Given the fact that contextual type is now available for the type
42194223 // / variable representing a pack expansion type, let's resolve the expansion.
42204224 // /
0 commit comments