提交 5a9c50d3 编写于 作者: M Maxim Shafirov

PSI is just a tree with getters in Kotlin

上级 f82259ae
package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetNodeTypes;
......@@ -105,17 +104,6 @@ public class JetClass extends JetTypeParameterListOwner implements JetClassOrObj
return body.getProperties();
}
public String getFQName() {
JetNamedDeclaration parent = PsiTreeUtil.getParentOfType(this, JetNamespace.class, JetClass.class);
if (parent instanceof JetNamespace) {
return ((JetNamespace) parent).getFQName() + "." + getName();
}
if (parent instanceof JetClass) {
return ((JetClass) parent).getFQName() + "." + getName();
}
return getName();
}
public boolean isTrait() {
return findChildByType(JetTokens.TRAIT_KEYWORD) != null;
}
......
......@@ -8,7 +8,11 @@ import com.intellij.openapi.module.Module;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import org.jetbrains.jet.lang.psi.*;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.jet.lang.psi.JetClass;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetNamedDeclaration;
import org.jetbrains.jet.lang.psi.JetNamespace;
import org.jetbrains.jet.plugin.JetMainDetector;
/**
......@@ -21,6 +25,17 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
super(JetRunConfigurationType.getInstance());
}
private static String getFQName(JetClass jetClass) {
JetNamedDeclaration parent = PsiTreeUtil.getParentOfType(jetClass, JetNamespace.class, JetClass.class);
if (parent instanceof JetNamespace) {
return ((JetNamespace) parent).getFQName() + "." + jetClass.getName();
}
if (parent instanceof JetClass) {
return getFQName(((JetClass) parent)) + "." + jetClass.getName();
}
return jetClass.getName();
}
@Override
public PsiElement getSourceElement() {
return mySourceElement;
......@@ -31,7 +46,7 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im
JetClass containingClass = (JetClass) location.getParentElement(JetClass.class);
if (containingClass != null && JetMainDetector.hasMain(containingClass.getDeclarations())) {
mySourceElement = containingClass;
return createConfigurationByQName(location.getModule(), configurationContext, containingClass.getFQName());
return createConfigurationByQName(location.getModule(), configurationContext, getFQName(containingClass));
}
PsiFile psiFile = location.getPsiElement().getContainingFile();
if (psiFile instanceof JetFile) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册