@@ -247,6 +247,9 @@ Solution ConstraintSystem::finalize() {
247
247
for (const auto &packEnv : PackEnvironments)
248
248
solution.PackEnvironments .insert (packEnv);
249
249
250
+ for (const auto &packEltGenericEnv : PackElementGenericEnvironments)
251
+ solution.PackElementGenericEnvironments .push_back (packEltGenericEnv);
252
+
250
253
return solution;
251
254
}
252
255
@@ -316,6 +319,12 @@ void ConstraintSystem::applySolution(const Solution &solution) {
316
319
PackEnvironments.insert (packEnvironment);
317
320
}
318
321
322
+ // Register the solutions's pack element generic environments.
323
+ for (auto &packElementGenericEnvironment :
324
+ solution.PackElementGenericEnvironments ) {
325
+ PackElementGenericEnvironments.push_back (packElementGenericEnvironment);
326
+ }
327
+
319
328
// Register the defaulted type variables.
320
329
DefaultedConstraints.insert (solution.DefaultedConstraints .begin (),
321
330
solution.DefaultedConstraints .end ());
@@ -647,6 +656,7 @@ ConstraintSystem::SolverScope::SolverScope(ConstraintSystem &cs)
647
656
numOpenedPackExpansionTypes = cs.OpenedPackExpansionTypes .size ();
648
657
numPackExpansionEnvironments = cs.PackExpansionEnvironments .size ();
649
658
numPackEnvironments = cs.PackEnvironments .size ();
659
+ numPackElementGenericEnvironments = cs.PackElementGenericEnvironments .size ();
650
660
numDefaultedConstraints = cs.DefaultedConstraints .size ();
651
661
numAddedNodeTypes = cs.addedNodeTypes .size ();
652
662
numAddedKeyPathComponentTypes = cs.addedKeyPathComponentTypes .size ();
@@ -736,6 +746,10 @@ ConstraintSystem::SolverScope::~SolverScope() {
736
746
// Remove any pack environments.
737
747
truncate (cs.PackEnvironments , numPackEnvironments);
738
748
749
+ // Remove any pack element generic environments.
750
+ truncate (cs.PackElementGenericEnvironments ,
751
+ numPackElementGenericEnvironments);
752
+
739
753
// Remove any defaulted type variables.
740
754
truncate (cs.DefaultedConstraints , numDefaultedConstraints);
741
755
0 commit comments