mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Sema: Record pack expansion environments in the trail
This commit is contained in:
@@ -868,7 +868,7 @@ ConstraintSystem::getPackElementEnvironment(ConstraintLocator *locator,
|
||||
auto result = PackExpansionEnvironments.find(locator);
|
||||
if (result == PackExpansionEnvironments.end()) {
|
||||
uuidAndShape = std::make_pair(UUID::fromTime(), shapeClass);
|
||||
PackExpansionEnvironments[locator] = uuidAndShape;
|
||||
recordPackExpansionEnvironment(locator, uuidAndShape);
|
||||
} else {
|
||||
uuidAndShape = result->second;
|
||||
}
|
||||
@@ -891,6 +891,17 @@ ConstraintSystem::getPackElementEnvironment(ConstraintLocator *locator,
|
||||
shapeParam, contextSubs);
|
||||
}
|
||||
|
||||
void ConstraintSystem::recordPackExpansionEnvironment(
|
||||
ConstraintLocator *locator, std::pair<UUID, Type> uuidAndShape) {
|
||||
bool inserted = PackExpansionEnvironments.insert({locator, uuidAndShape}).second;
|
||||
if (inserted) {
|
||||
if (isRecordingChanges()) {
|
||||
recordChange(
|
||||
SolverTrail::Change::recordedPackExpansionEnvironment(locator));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PackExpansionExpr *
|
||||
ConstraintSystem::getPackEnvironment(PackElementExpr *packElement) const {
|
||||
const auto match = PackEnvironments.find(packElement);
|
||||
|
||||
Reference in New Issue
Block a user