diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetImportDirective.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetImportDirective.java index 093f0e07736..3644b8e4ecc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetImportDirective.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetImportDirective.java @@ -19,17 +19,21 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; import com.intellij.psi.tree.IElementType; import com.intellij.psi.tree.TokenSet; +import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.stubs.PsiJetImportDirectiveStub; import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes; +import org.jetbrains.jet.lang.resolve.ImportPath; +import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lexer.JetTokens; public class JetImportDirective extends JetElementImplStub { public static final TokenSet IMPORT_DIRECTIVE_EXPRESSIONS = - TokenSet.create(JetStubElementTypes.REFERENCE_EXPRESSION, JetStubElementTypes.DOT_QUALIFIED_EXPRESSION); - + TokenSet.create(JetStubElementTypes.REFERENCE_EXPRESSION, JetStubElementTypes.DOT_QUALIFIED_EXPRESSION); + public JetImportDirective(@NotNull ASTNode node) { super(node); } @@ -96,4 +100,63 @@ public class JetImportDirective extends JetElementImplStub T getDirectParentOfTypeForBlock(@NotNull JetBlockExpression block, @NotNull Class aClass) { T parent = PsiTreeUtil.getParentOfType(block, aClass); @@ -445,42 +422,6 @@ public class JetPsiUtil { return element instanceof JetSimpleNameExpression && isBackingFieldReference((JetSimpleNameExpression)element); } - @Nullable - private static FqName getFQName(@Nullable JetExpression expression) { - if (expression == null) { - return null; - } - - if (expression instanceof JetDotQualifiedExpression) { - JetDotQualifiedExpression dotQualifiedExpression = (JetDotQualifiedExpression) expression; - FqName parentFqn = getFQName(dotQualifiedExpression.getReceiverExpression()); - Name child = getName(dotQualifiedExpression.getSelectorExpression()); - - return parentFqn != null && child != null ? parentFqn.child(child) : null; - } - else if (expression instanceof JetSimpleNameExpression) { - JetSimpleNameExpression simpleNameExpression = (JetSimpleNameExpression) expression; - return FqName.topLevel(simpleNameExpression.getReferencedNameAsName()); - } - else { - throw new IllegalArgumentException("Can't construct fqn for: " + expression.getClass().toString()); - } - } - - @Nullable - private static Name getName(@Nullable JetExpression expression) { - if (expression == null) { - return null; - } - - if (expression instanceof JetSimpleNameExpression) { - return ((JetSimpleNameExpression) expression).getReferencedNameAsName(); - } - else { - throw new IllegalArgumentException("Can't construct name for: " + expression.getClass().toString()); - } - } - @Nullable public static JetElement getLastStatementInABlock(@Nullable JetBlockExpression blockExpression) { if (blockExpression == null) return null; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ImportsProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ImportsProvider.java index 72dc9626885..c3f3fda7a51 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ImportsProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ImportsProvider.java @@ -20,7 +20,6 @@ import com.google.common.collect.*; import kotlin.Function0; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.psi.JetImportDirective; -import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.ImportPath; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.storage.NotNullLazyValue; @@ -73,7 +72,7 @@ class ImportsProvider { List processedAllUnderImports = Lists.newArrayList(); for (JetImportDirective anImport : importDirectives) { - ImportPath path = JetPsiUtil.getImportPath(anImport); + ImportPath path = anImport.getImportPath(); if (path == null) { // Could be some parse errors continue; diff --git a/compiler/tests/org/jetbrains/jet/lang/psi/JetPsiUtilTest.java b/compiler/tests/org/jetbrains/jet/lang/psi/JetPsiUtilTest.java index 8f60b081c92..d14e2e3c39f 100644 --- a/compiler/tests/org/jetbrains/jet/lang/psi/JetPsiUtilTest.java +++ b/compiler/tests/org/jetbrains/jet/lang/psi/JetPsiUtilTest.java @@ -105,7 +105,7 @@ public class JetPsiUtilTest extends JetLiteFixture { assertNotNull("At least one import directive is expected", importDirective); - return JetPsiUtil.getImportPath(importDirective); + return importDirective.getImportPath(); } private void checkIsSelectorInQualified() { diff --git a/idea/src/org/jetbrains/jet/plugin/imports/KotlinImportOptimizer.kt b/idea/src/org/jetbrains/jet/plugin/imports/KotlinImportOptimizer.kt index 5cbb3928a39..dcaae99d31c 100644 --- a/idea/src/org/jetbrains/jet/plugin/imports/KotlinImportOptimizer.kt +++ b/idea/src/org/jetbrains/jet/plugin/imports/KotlinImportOptimizer.kt @@ -48,7 +48,7 @@ public class KotlinImportOptimizer() : ImportOptimizer { for (anImport in directives) { directivesAfterCurrent.remove(anImport) - val importPath = JetPsiUtil.getImportPath(anImport) + val importPath = anImport.getImportPath() if (importPath == null) { continue } diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ImportInsertHelper.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ImportInsertHelper.java index ef3dd7d0ada..2c4fb190de5 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ImportInsertHelper.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ImportInsertHelper.java @@ -27,9 +27,9 @@ import org.jetbrains.jet.lang.resolve.ImportPath; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.name.FqName; +import org.jetbrains.jet.lang.resolve.name.NamePackage; import org.jetbrains.jet.plugin.project.ProjectStructureUtil; import org.jetbrains.jet.plugin.references.JetReference; -import org.jetbrains.jet.lang.resolve.name.NamePackage; import org.jetbrains.k2js.analyze.AnalyzerFacadeForJS; import java.util.List; @@ -169,7 +169,7 @@ public class ImportInsertHelper { if (!importDirectives.isEmpty()) { // Check if import is already present for (JetImportDirective directive : importDirectives) { - ImportPath existentImportPath = JetPsiUtil.getImportPath(directive); + ImportPath existentImportPath = directive.getImportPath(); if (existentImportPath != null && NamePackage.isImported(importPath, existentImportPath)) { return false; }