File tree Expand file tree Collapse file tree 1 file changed +24
-1
lines changed Expand file tree Collapse file tree 1 file changed +24
-1
lines changed Original file line number Diff line number Diff line change 18
18
#ifndef SWIFT_AST_TYPETRANSFORM_H
19
19
#define SWIFT_AST_TYPETRANSFORM_H
20
20
21
+ #include " swift/AST/GenericEnvironment.h"
21
22
#include " swift/AST/SILLayout.h"
22
23
23
24
namespace swift {
@@ -136,7 +137,29 @@ case TypeKind::Id:
136
137
newSubMap);
137
138
}
138
139
139
- case TypeKind::OpenedArchetype:
140
+ case TypeKind::OpenedArchetype: {
141
+ auto *local = cast<LocalArchetypeType>(base);
142
+ if (auto result = asDerived ().transformLocalArchetypeType (local, pos))
143
+ return *result;
144
+
145
+ auto *env = local->getGenericEnvironment ();
146
+
147
+ auto genericSig = env->getGenericSignature ();
148
+ auto existentialTy = env->getOpenedExistentialType ();
149
+ auto subMap = env->getOuterSubstitutions ();
150
+ auto uuid = env->getOpenedExistentialUUID ();
151
+
152
+ auto newSubMap = asDerived ().transformSubMap (subMap);
153
+ if (newSubMap == subMap)
154
+ return t;
155
+ if (!newSubMap)
156
+ return Type ();
157
+
158
+ auto *newEnv = GenericEnvironment::forOpenedExistential (
159
+ genericSig, existentialTy, newSubMap, uuid);
160
+ return newEnv->mapTypeIntoContext (local->getInterfaceType ());
161
+ }
162
+
140
163
case TypeKind::ElementArchetype: {
141
164
auto *local = cast<LocalArchetypeType>(base);
142
165
if (auto result = asDerived ().transformLocalArchetypeType (local, pos))
You can’t perform that action at this time.
0 commit comments