diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamespaceHeader.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamespaceHeader.java index 86cc272a7f8..7cc50a64cb5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamespaceHeader.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamespaceHeader.java @@ -24,6 +24,7 @@ import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetNodeTypes; +import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import java.util.List; @@ -89,9 +90,30 @@ public class JetNamespaceHeader extends JetReferenceExpression { return getName().length() == 0; } + @NotNull + public FqName getFqName() { + String qualifiedName = getQualifiedName(); + return qualifiedName.isEmpty() ? FqName.ROOT : new FqName(qualifiedName); + } + + @NotNull + public FqName getParentFqName(JetReferenceExpression nameExpression) { + String parentQualifiedName = getQualifiedNameParentOf(nameExpression); + return parentQualifiedName.isEmpty() ? FqName.ROOT : new FqName(parentQualifiedName); + } + + @NotNull public String getQualifiedName() { + return getQualifiedNameParentOf(null); + } + + private String getQualifiedNameParentOf(@Nullable JetReferenceExpression nameExpression) { StringBuilder builder = new StringBuilder(); for (JetSimpleNameExpression e : findChildrenByClass(JetSimpleNameExpression.class)) { + if (e == nameExpression) { + break; + } + if (builder.length() > 0) { builder.append("."); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java index 00209375a3c..a83bb05d8b2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java @@ -97,16 +97,6 @@ public class JetPsiUtil { return rootElements; } - @Nullable - public static JetNamedFunction getSurroundingFunction(@Nullable PsiElement element) { - while (element != null) { - if (element instanceof JetNamedFunction) return (JetNamedFunction) element; - if (element instanceof JetClassOrObject || element instanceof JetFile) return null; - element = element.getParent(); - } - return null; - } - @NotNull public static String unquoteIdentifier(@NotNull String quoted) { if (quoted.indexOf('`') < 0) { @@ -135,23 +125,9 @@ public class JetPsiUtil { } } - private static FqName getFQName(JetNamespaceHeader header) { - StringBuilder builder = new StringBuilder(); - for (JetSimpleNameExpression nameExpression : header.getParentNamespaceNames()) { - builder.append(nameExpression.getReferencedName()); - builder.append("."); - } - builder.append(header.getName()); - return new FqName(builder.toString()); - } - public static FqName getFQName(JetFile file) { - if (file.isScript()) { - return FqName.ROOT; - } - else { - return getFQName(file.getNamespaceHeader()); - } + JetNamespaceHeader header = file.getNamespaceHeader(); + return header != null ? header.getFqName() : FqName.ROOT; } @Nullable @@ -202,11 +178,6 @@ public class JetPsiUtil { return new ImportPath(text.replaceAll(" ", "") + (importDirective.isAllUnder() ? ".*" : "")); } - @NotNull - private static FqName makeFQName(@NotNull FqName prefix, @NotNull JetClassOrObject jetClass) { - return prefix.child(Name.identifier(jetClass.getName())); - } - public static boolean isIrrefutable(JetWhenEntry entry) { if (entry.isElse()) return true; for (JetWhenCondition condition : entry.getConditions()) {