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:
@@ -2397,7 +2397,7 @@ private:
|
||||
llvm::SmallDenseMap<PackExpansionType *, TypeVariableType *, 4>
|
||||
OpenedPackExpansionTypes;
|
||||
|
||||
llvm::SmallMapVector<ConstraintLocator *, std::pair<UUID, Type>, 4>
|
||||
llvm::SmallDenseMap<ConstraintLocator *, std::pair<UUID, Type>, 4>
|
||||
PackExpansionEnvironments;
|
||||
|
||||
llvm::SmallMapVector<PackElementExpr *, PackExpansionExpr *, 2>
|
||||
@@ -2883,9 +2883,6 @@ public:
|
||||
/// FIXME: Remove this.
|
||||
unsigned numFixes;
|
||||
|
||||
/// The length of \c PackExpansionEnvironments.
|
||||
unsigned numPackExpansionEnvironments;
|
||||
|
||||
/// The length of \c PackEnvironments.
|
||||
unsigned numPackEnvironments;
|
||||
|
||||
@@ -3464,6 +3461,16 @@ public:
|
||||
GenericEnvironment *getPackElementEnvironment(ConstraintLocator *locator,
|
||||
CanType shapeClass);
|
||||
|
||||
/// Update PackExpansionEnvironments and record a change in the trail.
|
||||
void recordPackExpansionEnvironment(ConstraintLocator *locator,
|
||||
std::pair<UUID, Type> uuidAndShape);
|
||||
|
||||
/// Undo the above change.
|
||||
void removePackExpansionEnvironment(ConstraintLocator *locator) {
|
||||
bool erased = PackExpansionEnvironments.erase(locator);
|
||||
ASSERT(erased);
|
||||
}
|
||||
|
||||
/// Get the opened element generic environment for the given pack element.
|
||||
PackExpansionExpr *getPackEnvironment(PackElementExpr *packElement) const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user