Code completion: don't complete associated types on non-metatypes

Swift SVN r16817
This commit is contained in:
Dmitri Hrybenko
2014-04-25 12:46:32 +00:00
parent fd25c253b2
commit 35c587aadf
4 changed files with 65 additions and 12 deletions

View File

@@ -230,6 +230,28 @@ AbstractFunctionDecl *DeclContext::getInnermostMethodContext() {
}
}
DeclContext *DeclContext::getInnermostTypeContext() {
DeclContext *Result = this;
while (true) {
switch (Result->getContextKind()) {
case DeclContextKind::AbstractClosureExpr:
case DeclContextKind::Initializer:
case DeclContextKind::TopLevelCodeDecl:
case DeclContextKind::AbstractFunctionDecl:
Result = Result->getParent();
continue;
case DeclContextKind::Module:
case DeclContextKind::FileUnit:
return nullptr;
case DeclContextKind::ExtensionDecl:
case DeclContextKind::NominalTypeDecl:
return Result;
}
}
}
Module *DeclContext::getParentModule() const {
const DeclContext *DC = this;
while (!DC->isModuleContext())