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.TypeUtils
|
||||||
import org.jetbrains.jet.lang.types.checker.JetTypeChecker
|
import org.jetbrains.jet.lang.types.checker.JetTypeChecker
|
||||||
import org.jetbrains.jet.lexer.JetTokens
|
import org.jetbrains.jet.lexer.JetTokens
|
||||||
|
import org.jetbrains.jet.lang.resolve.calls.callUtil.getCall
|
||||||
|
|
||||||
public class ReferenceVariantsHelper(
|
public class ReferenceVariantsHelper(
|
||||||
private val context: BindingContext,
|
private val context: BindingContext,
|
||||||
@@ -81,6 +82,11 @@ public class ReferenceVariantsHelper(
|
|||||||
return resolutionScope.getDescriptorsFiltered(restrictedFilter, nameFilter)
|
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)
|
val pair = getReferenceVariantsReceiver(expression)
|
||||||
if (pair != null) {
|
if (pair != null) {
|
||||||
val (receiverExpression, callType) = pair
|
val (receiverExpression, callType) = pair
|
||||||
@@ -159,12 +165,8 @@ public class ReferenceVariantsHelper(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getReferenceVariantsReceiver(expression: JetSimpleNameExpression): Pair<JetExpression, CallType>? {
|
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 receiverExpression = expression.getReceiverExpression() ?: return null
|
||||||
|
val parent = expression.getParent()
|
||||||
val callType = when (parent) {
|
val callType = when (parent) {
|
||||||
is JetBinaryExpression -> CallType.INFIX
|
is JetBinaryExpression -> CallType.INFIX
|
||||||
|
|
||||||
@@ -182,7 +184,7 @@ public class ReferenceVariantsHelper(
|
|||||||
CallType.NORMAL
|
CallType.NORMAL
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> error("Unknown parent")
|
else -> return null
|
||||||
}
|
}
|
||||||
return receiverExpression to callType
|
return receiverExpression to callType
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,9 +3,14 @@ package Test.SubTest.AnotherTest
|
|||||||
open class TestClass {
|
open class TestClass {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun globalFun(){}
|
||||||
|
val globalProp: Int = 1
|
||||||
|
|
||||||
class A() : Test.SubTest.AnotherTest.Te<caret> {
|
class A() : Test.SubTest.AnotherTest.Te<caret> {
|
||||||
public fun test() {
|
public fun test() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// EXIST: TestClass
|
// EXIST: TestClass
|
||||||
|
// ABSENT: globalFun
|
||||||
|
// ABSENT: globalProp
|
||||||
|
|||||||
Reference in New Issue
Block a user