@@ -247,6 +247,9 @@ Solution ConstraintSystem::finalize() {
247247 for (const auto &packEnv : PackEnvironments)
248248 solution.PackEnvironments .insert (packEnv);
249249
250+ for (const auto &packEltGenericEnv : PackElementGenericEnvironments)
251+ solution.PackElementGenericEnvironments .push_back (packEltGenericEnv);
252+
250253 return solution;
251254}
252255
@@ -316,6 +319,12 @@ void ConstraintSystem::applySolution(const Solution &solution) {
316319 PackEnvironments.insert (packEnvironment);
317320 }
318321
322+ // Register the solutions's pack element generic environments.
323+ for (auto &packElementGenericEnvironment :
324+ solution.PackElementGenericEnvironments ) {
325+ PackElementGenericEnvironments.push_back (packElementGenericEnvironment);
326+ }
327+
319328 // Register the defaulted type variables.
320329 DefaultedConstraints.insert (solution.DefaultedConstraints .begin (),
321330 solution.DefaultedConstraints .end ());
@@ -647,6 +656,7 @@ ConstraintSystem::SolverScope::SolverScope(ConstraintSystem &cs)
647656 numOpenedPackExpansionTypes = cs.OpenedPackExpansionTypes .size ();
648657 numPackExpansionEnvironments = cs.PackExpansionEnvironments .size ();
649658 numPackEnvironments = cs.PackEnvironments .size ();
659+ numPackElementGenericEnvironments = cs.PackElementGenericEnvironments .size ();
650660 numDefaultedConstraints = cs.DefaultedConstraints .size ();
651661 numAddedNodeTypes = cs.addedNodeTypes .size ();
652662 numAddedKeyPathComponentTypes = cs.addedKeyPathComponentTypes .size ();
@@ -736,6 +746,10 @@ ConstraintSystem::SolverScope::~SolverScope() {
736746 // Remove any pack environments.
737747 truncate (cs.PackEnvironments , numPackEnvironments);
738748
749+ // Remove any pack element generic environments.
750+ truncate (cs.PackElementGenericEnvironments ,
751+ numPackElementGenericEnvironments);
752+
739753 // Remove any defaulted type variables.
740754 truncate (cs.DefaultedConstraints , numDefaultedConstraints);
741755
0 commit comments