From c58536f1d901aaacd174b1d3618ebd351a274fc1 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 17 Feb 2015 21:44:42 +0300 Subject: [PATCH] Optimize imports: fixed bug with references in class declaration header --- .../jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt | 4 ++-- .../NestedClassReferenceOutsideClassBody.kt | 7 +++++++ .../NestedClassReferenceOutsideClassBody.kt.after | 7 +++++++ .../kotlin/idea/imports/OptimizeImportsTestGenerated.java | 6 ++++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 idea/testData/editor/optimizeImports/NestedClassReferenceOutsideClassBody.kt create mode 100644 idea/testData/editor/optimizeImports/NestedClassReferenceOutsideClassBody.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt b/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt index 9ed05cd7ddb..d1fb29ff2c0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt @@ -216,8 +216,8 @@ public class KotlinImportOptimizer() : ImportOptimizer { container.getContainingDeclaration() as? ClassDescriptor ?: return false else container - val declaration = DescriptorToSourceUtils.classDescriptorToDeclaration(scope) - return declaration != null && declaration.getContainingFile() == file && declaration.isAncestor(place) + val classBody = (DescriptorToSourceUtils.classDescriptorToDeclaration(scope) as? JetClassOrObject)?.getBody() + return classBody != null && classBody.getContainingFile() == file && classBody.isAncestor(place) } } } diff --git a/idea/testData/editor/optimizeImports/NestedClassReferenceOutsideClassBody.kt b/idea/testData/editor/optimizeImports/NestedClassReferenceOutsideClassBody.kt new file mode 100644 index 00000000000..08bf4f8d2a9 --- /dev/null +++ b/idea/testData/editor/optimizeImports/NestedClassReferenceOutsideClassBody.kt @@ -0,0 +1,7 @@ +package ppp + +import ppp.Base.Nested + +class Base(p: Nested) { + class Nested +} diff --git a/idea/testData/editor/optimizeImports/NestedClassReferenceOutsideClassBody.kt.after b/idea/testData/editor/optimizeImports/NestedClassReferenceOutsideClassBody.kt.after new file mode 100644 index 00000000000..08bf4f8d2a9 --- /dev/null +++ b/idea/testData/editor/optimizeImports/NestedClassReferenceOutsideClassBody.kt.after @@ -0,0 +1,7 @@ +package ppp + +import ppp.Base.Nested + +class Base(p: Nested) { + class Nested +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/imports/OptimizeImportsTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/imports/OptimizeImportsTestGenerated.java index 3721dba5c6d..2bce88cb437 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/imports/OptimizeImportsTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/imports/OptimizeImportsTestGenerated.java @@ -139,6 +139,12 @@ public class OptimizeImportsTestGenerated extends AbstractOptimizeImportsTest { doTest(fileName); } + @TestMetadata("NestedClassReferenceOutsideClassBody.kt") + public void testNestedClassReferenceOutsideClassBody() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/NestedClassReferenceOutsideClassBody.kt"); + doTest(fileName); + } + @TestMetadata("PartiallyQualified.kt") public void testPartiallyQualified() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/editor/optimizeImports/PartiallyQualified.kt");