AST: GenericContexts store a GenericSignature instead of a GenericEnvironment

This eliminates the entire 'lazy generic environment' concept;
essentially, all generic environments are now lazy, and since
each signature has exactly one environment, their construction
no longer needs to be co-ordinated with deserialization.
This commit is contained in:
Slava Pestov
2019-09-05 18:16:38 -04:00
parent e027c82f37
commit 0405ab5ffc
11 changed files with 48 additions and 196 deletions

View File

@@ -175,17 +175,6 @@ GenericEnvironment *DeclContext::getGenericEnvironmentOfContext() const {
return nullptr;
}
bool DeclContext::contextHasLazyGenericEnvironment() const {
auto dc = this;
do {
if (auto decl = dc->getAsDecl())
if (auto GC = decl->getAsGenericContext())
return GC->hasLazyGenericEnvironment();
} while ((dc = dc->getParent()));
return false;
}
Type DeclContext::mapTypeIntoContext(Type type) const {
return GenericEnvironment::mapTypeIntoContext(
getGenericEnvironmentOfContext(), type);