diff --git a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java index 7866c92206b..0fbf10a8364 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java +++ b/idea/src/org/jetbrains/jet/plugin/completion/JetKeywordCompletionContributor.java @@ -79,7 +79,8 @@ public class JetKeywordCompletionContributor extends CompletionContributor { @Override public boolean isAcceptable(Object element, PsiElement context) { //noinspection unchecked - return PsiTreeUtil.getParentOfType(context, JetFile.class, false, JetClass.class, JetFunction.class) != null; + return PsiTreeUtil.getParentOfType(context, JetFile.class, false, JetClassBody.class, JetBlockExpression.class) != null && + PsiTreeUtil.getParentOfType(context, JetParameterList.class, JetTypeParameterList.class) == null; } @Override diff --git a/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java b/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java index 9953e231900..67a34432260 100644 --- a/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java +++ b/idea/src/org/jetbrains/jet/plugin/debugger/JetPositionManager.java @@ -5,6 +5,7 @@ import com.intellij.debugger.PositionManager; import com.intellij.debugger.SourcePosition; import com.intellij.debugger.engine.DebugProcess; import com.intellij.debugger.requests.ClassPrepareRequestor; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiFile; @@ -101,23 +102,32 @@ public class JetPositionManager implements PositionManager { return result; } - private Collection classNamesForPosition(SourcePosition sourcePosition) { - final JetFile file = (JetFile) sourcePosition.getFile(); - JetTypeMapper typeMapper = prepareTypeMapper(file); + private Collection classNamesForPosition(final SourcePosition sourcePosition) { + final Collection names = new ArrayList(); - JetClassOrObject jetClass = PsiTreeUtil.getParentOfType(sourcePosition.getElementAt(), JetClassOrObject.class); - if (jetClass != null) { - names.addAll(typeMapper.allJvmNames(jetClass)); - } - else { - JetFile namespace = PsiTreeUtil.getParentOfType(sourcePosition.getElementAt(), JetFile.class); - if (namespace != null) { - names.add(NamespaceCodegen.getJVMClassName(JetPsiUtil.getFQName(namespace))); + + ApplicationManager.getApplication().runReadAction(new Runnable() { + @Override + public void run() { + final JetFile file = (JetFile) sourcePosition.getFile(); + JetTypeMapper typeMapper = prepareTypeMapper(file); + + JetClassOrObject jetClass = PsiTreeUtil.getParentOfType(sourcePosition.getElementAt(), JetClassOrObject.class); + if (jetClass != null) { + names.addAll(typeMapper.allJvmNames(jetClass)); + } + else { + JetFile namespace = PsiTreeUtil.getParentOfType(sourcePosition.getElementAt(), JetFile.class); + if (namespace != null) { + names.add(NamespaceCodegen.getJVMClassName(JetPsiUtil.getFQName(namespace))); + } + else { + names.add(NamespaceCodegen.getJVMClassName(JetPsiUtil.getFQName(file))); + } + } } - else { - names.add(NamespaceCodegen.getJVMClassName(JetPsiUtil.getFQName(file))); - } - } + }); + return names; } diff --git a/idea/testData/completion/keywords/InTopScopeAfterPackage.kt b/idea/testData/completion/keywords/InTopScopeAfterPackage.kt new file mode 100644 index 00000000000..80d8446a904 --- /dev/null +++ b/idea/testData/completion/keywords/InTopScopeAfterPackage.kt @@ -0,0 +1,9 @@ +package Test + + + +// EXIST: enum +// EXIST: trait +// EXIST: class +// EXIST: fun +