From 9dc6a82fef7a763a6d606cdc4df015ab50116e92 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 28 Nov 2014 19:23:25 +0300 Subject: [PATCH] More clear code + better test --- .../plugin/codeInsight/ReferenceVariantsHelper.kt | 14 ++++++++------ .../basic/common/ExtendQualifiedClassName.kt | 5 +++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt b/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt index 63dd73bc072..1cf282a28ad 100644 --- a/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt +++ b/idea/ide-common/src/org/jetbrains/jet/plugin/codeInsight/ReferenceVariantsHelper.kt @@ -37,6 +37,7 @@ import org.jetbrains.jet.lang.types.JetType import org.jetbrains.jet.lang.types.TypeUtils import org.jetbrains.jet.lang.types.checker.JetTypeChecker import org.jetbrains.jet.lexer.JetTokens +import org.jetbrains.jet.lang.resolve.calls.callUtil.getCall public class ReferenceVariantsHelper( private val context: BindingContext, @@ -81,6 +82,11 @@ public class ReferenceVariantsHelper( return resolutionScope.getDescriptorsFiltered(restrictedFilter, nameFilter) } + if (parent is JetUserType) { + val restrictedFilter = kindFilter.restrictedToKinds(DescriptorKindFilter.CLASSIFIERS_MASK or DescriptorKindFilter.PACKAGES_MASK) ?: return listOf() + return resolutionScope.getDescriptorsFiltered(restrictedFilter, nameFilter) + } + val pair = getReferenceVariantsReceiver(expression) if (pair != null) { val (receiverExpression, callType) = pair @@ -159,12 +165,8 @@ public class ReferenceVariantsHelper( } private fun getReferenceVariantsReceiver(expression: JetSimpleNameExpression): Pair? { - val parent = expression.getParent() - val inPositionForCompletionWithReceiver = parent is JetCallExpression - || parent is JetQualifiedExpression - || parent is JetBinaryExpression - if (!inPositionForCompletionWithReceiver) return null val receiverExpression = expression.getReceiverExpression() ?: return null + val parent = expression.getParent() val callType = when (parent) { is JetBinaryExpression -> CallType.INFIX @@ -182,7 +184,7 @@ public class ReferenceVariantsHelper( CallType.NORMAL } - else -> error("Unknown parent") + else -> return null } return receiverExpression to callType } diff --git a/idea/testData/completion/basic/common/ExtendQualifiedClassName.kt b/idea/testData/completion/basic/common/ExtendQualifiedClassName.kt index 64ef3e7b843..30080595e67 100644 --- a/idea/testData/completion/basic/common/ExtendQualifiedClassName.kt +++ b/idea/testData/completion/basic/common/ExtendQualifiedClassName.kt @@ -3,9 +3,14 @@ package Test.SubTest.AnotherTest open class TestClass { } +fun globalFun(){} +val globalProp: Int = 1 + class A() : Test.SubTest.AnotherTest.Te { public fun test() { } } // EXIST: TestClass +// ABSENT: globalFun +// ABSENT: globalProp