diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/ShortenReferences.kt b/idea/src/org/jetbrains/jet/plugin/codeInsight/ShortenReferences.kt index e13d609dda6..2ab08d8ad24 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/ShortenReferences.kt +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/ShortenReferences.kt @@ -107,13 +107,17 @@ public object ShortenReferences { } } - private class ShortenQualifiedExpressionsVisitor(val file: JetFile, val resolveMap: Map) : JetTreeVisitorVoid() { + private class ShortenQualifiedExpressionsVisitor(val file: JetFile, val resolveMap: Map) : JetVisitorVoid() { private val resolveSession : ResolveSessionForBodies get() = AnalyzerFacadeWithCache.getLazyResolveSessionForFile(file) private fun bindingContext(expression: JetReferenceExpression): BindingContext = resolveMap[expression] ?: resolveSession.resolveToElement(expression) // binding context can be absent in the map if some references have been shortened already + override fun visitJetElement(element: JetElement) { + acceptChildren(element) + } + override fun visitDotQualifiedExpression(expression: JetDotQualifiedExpression) { val resultElement = processDotQualifiedExpression(expression) acceptChildren(resultElement) diff --git a/idea/testData/shortenRefs/classObject.kt b/idea/testData/shortenRefs/classObject.kt new file mode 100644 index 00000000000..6cacac6fee7 --- /dev/null +++ b/idea/testData/shortenRefs/classObject.kt @@ -0,0 +1,16 @@ +package p.q + +fun foo(): Int { + p.q.MyClass.foo() + return p.q.MyClass.coProp + 10 +} + +class MyClass { + class object { + val coProp = 1 + + fun foo() { + + } + } +} \ No newline at end of file diff --git a/idea/testData/shortenRefs/classObject.kt.after b/idea/testData/shortenRefs/classObject.kt.after new file mode 100644 index 00000000000..74dbf912285 --- /dev/null +++ b/idea/testData/shortenRefs/classObject.kt.after @@ -0,0 +1,16 @@ +package p.q + +fun foo(): Int { + MyClass.foo() + return MyClass.coProp + 10 +} + +class MyClass { + class object { + val coProp = 1 + + fun foo() { + + } + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/shortenRefs/ShortenRefsTestGenerated.java b/idea/tests/org/jetbrains/jet/shortenRefs/ShortenRefsTestGenerated.java index a228c7a80ac..3c1c1e5a1d8 100644 --- a/idea/tests/org/jetbrains/jet/shortenRefs/ShortenRefsTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/shortenRefs/ShortenRefsTestGenerated.java @@ -37,6 +37,11 @@ public class ShortenRefsTestGenerated extends AbstractShortenRefsTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/shortenRefs"), Pattern.compile("^([^\\.]+)\\.kt$"), true); } + @TestMetadata("classObject.kt") + public void testClassObject() throws Exception { + doTest("idea/testData/shortenRefs/classObject.kt"); + } + @TestMetadata("JavaStaticMethod.kt") public void testJavaStaticMethod() throws Exception { doTest("idea/testData/shortenRefs/JavaStaticMethod.kt");