From b113059c2cbc8bd47d1be33b7686ad4531afa9c2 Mon Sep 17 00:00:00 2001 From: "Natalia.Ukhorskaya" Date: Wed, 5 Sep 2012 11:39:42 +0400 Subject: [PATCH] KT-2709 Optimizing import removes reference to class when in code val from its class object is used #KT-2709 Fixed --- .../src/org/jetbrains/jet/lang/psi/JetPsiUtil.java | 13 ++++++++++++- idea/testData/editor/optimizeImports/Kt2709.kt | 11 +++++++++++ .../testData/editor/optimizeImports/Kt2709_after.kt | 11 +++++++++++ .../plugin/importOptimizer/OptimizeImportsTest.java | 4 ++++ 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 idea/testData/editor/optimizeImports/Kt2709.kt create mode 100644 idea/testData/editor/optimizeImports/Kt2709_after.kt 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 448ff6334c1..693a0aa184c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java @@ -163,8 +163,19 @@ public class JetPsiUtil { if (parent instanceof JetFile) { firstPart = getFQName((JetFile) parent); } - else if (parent instanceof JetNamedFunction || parent instanceof JetClass || parent instanceof JetObjectDeclaration) { + else if (parent instanceof JetNamedFunction || parent instanceof JetClass) { firstPart = getFQName((JetNamedDeclaration) parent); + } + else if (parent instanceof JetObjectDeclaration) { + if (parent.getParent() instanceof JetClassObject) { + JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(parent, JetClassOrObject.class); + if (classOrObject != null) { + firstPart = getFQName((JetNamedDeclaration) classOrObject); + } + } + else { + firstPart = getFQName((JetNamedDeclaration) parent); + } } if (firstPart == null) { diff --git a/idea/testData/editor/optimizeImports/Kt2709.kt b/idea/testData/editor/optimizeImports/Kt2709.kt new file mode 100644 index 00000000000..7303b62992f --- /dev/null +++ b/idea/testData/editor/optimizeImports/Kt2709.kt @@ -0,0 +1,11 @@ +import MyClass.* + +fun main() { + TEST +} + +class MyClass { + class object { + public val TEST: String = "" + } +} diff --git a/idea/testData/editor/optimizeImports/Kt2709_after.kt b/idea/testData/editor/optimizeImports/Kt2709_after.kt new file mode 100644 index 00000000000..7303b62992f --- /dev/null +++ b/idea/testData/editor/optimizeImports/Kt2709_after.kt @@ -0,0 +1,11 @@ +import MyClass.* + +fun main() { + TEST +} + +class MyClass { + class object { + public val TEST: String = "" + } +} diff --git a/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java b/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java index 40df0fc30fc..60db86fca35 100644 --- a/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java @@ -68,6 +68,10 @@ public class OptimizeImportsTest extends LightCodeInsightTestCase { doTest(); } + public void testKt2709() throws Exception { + doTest(); + } + public void doTest() throws Exception { configureByFile(fileName()); invokeFormatFile();