Merge remote branch 'origin/master'

This commit is contained in:
Alex Tkachman
2011-12-29 18:39:03 +02:00
3 changed files with 36 additions and 16 deletions
@@ -79,7 +79,8 @@ public class JetKeywordCompletionContributor extends CompletionContributor {
@Override @Override
public boolean isAcceptable(Object element, PsiElement context) { public boolean isAcceptable(Object element, PsiElement context) {
//noinspection unchecked //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 @Override
@@ -5,6 +5,7 @@ import com.intellij.debugger.PositionManager;
import com.intellij.debugger.SourcePosition; import com.intellij.debugger.SourcePosition;
import com.intellij.debugger.engine.DebugProcess; import com.intellij.debugger.engine.DebugProcess;
import com.intellij.debugger.requests.ClassPrepareRequestor; import com.intellij.debugger.requests.ClassPrepareRequestor;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
@@ -101,23 +102,32 @@ public class JetPositionManager implements PositionManager {
return result; return result;
} }
private Collection<String> classNamesForPosition(SourcePosition sourcePosition) { private Collection<String> classNamesForPosition(final SourcePosition sourcePosition) {
final JetFile file = (JetFile) sourcePosition.getFile();
JetTypeMapper typeMapper = prepareTypeMapper(file);
final Collection<String> names = new ArrayList<String>(); final Collection<String> names = new ArrayList<String>();
JetClassOrObject jetClass = PsiTreeUtil.getParentOfType(sourcePosition.getElementAt(), JetClassOrObject.class);
if (jetClass != null) { ApplicationManager.getApplication().runReadAction(new Runnable() {
names.addAll(typeMapper.allJvmNames(jetClass)); @Override
} public void run() {
else { final JetFile file = (JetFile) sourcePosition.getFile();
JetFile namespace = PsiTreeUtil.getParentOfType(sourcePosition.getElementAt(), JetFile.class); JetTypeMapper typeMapper = prepareTypeMapper(file);
if (namespace != null) {
names.add(NamespaceCodegen.getJVMClassName(JetPsiUtil.getFQName(namespace))); 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; return names;
} }
@@ -0,0 +1,9 @@
package Test
<caret>
// EXIST: enum
// EXIST: trait
// EXIST: class
// EXIST: fun