More clear code + better test
This commit is contained in:
@@ -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<JetExpression, CallType>? {
|
||||
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
|
||||
}
|
||||
|
||||
@@ -3,9 +3,14 @@ package Test.SubTest.AnotherTest
|
||||
open class TestClass {
|
||||
}
|
||||
|
||||
fun globalFun(){}
|
||||
val globalProp: Int = 1
|
||||
|
||||
class A() : Test.SubTest.AnotherTest.Te<caret> {
|
||||
public fun test() {
|
||||
}
|
||||
}
|
||||
|
||||
// EXIST: TestClass
|
||||
// ABSENT: globalFun
|
||||
// ABSENT: globalProp
|
||||
|
||||
Reference in New Issue
Block a user