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 1818#ifndef SWIFT_AST_TYPETRANSFORM_H
1919#define SWIFT_AST_TYPETRANSFORM_H
2020
21+ #include " swift/AST/GenericEnvironment.h"
2122#include " swift/AST/SILLayout.h"
2223
2324namespace swift {
@@ -136,7 +137,29 @@ case TypeKind::Id:
136137 newSubMap);
137138 }
138139
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+
140163 case TypeKind::ElementArchetype: {
141164 auto *local = cast<LocalArchetypeType>(base);
142165 if (auto result = asDerived ().transformLocalArchetypeType (local, pos))
You can’t perform that action at this time.
0 commit comments