KT-6132 No smart completion for argument of java static method
#KT-6132 Fixed
This commit is contained in:
@@ -35,7 +35,7 @@ import org.jetbrains.jet.lang.psi.JetExpression
|
||||
import org.jetbrains.jet.lang.resolve.bindingContextUtil.recordScopeAndDataFlowInfo
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
public trait Qualifier {
|
||||
public trait Qualifier: ReceiverValue {
|
||||
|
||||
public val expression: JetExpression
|
||||
|
||||
@@ -56,7 +56,7 @@ class QualifierReceiver (
|
||||
val referenceExpression: JetSimpleNameExpression,
|
||||
override val packageView: PackageViewDescriptor?,
|
||||
override val classifier: ClassifierDescriptor?
|
||||
) : Qualifier, ReceiverValue {
|
||||
) : Qualifier {
|
||||
|
||||
override val expression: JetExpression = referenceExpression.getTopmostParentQualifiedExpressionForSelector() ?: referenceExpression
|
||||
|
||||
|
||||
@@ -68,6 +68,8 @@ import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor
|
||||
import org.jetbrains.jet.plugin.project.ResolveSessionForBodies
|
||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.calls.results.ResolutionStatus
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.Qualifier
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.QualifierReceiver
|
||||
|
||||
enum class Tail {
|
||||
COMMA
|
||||
@@ -132,12 +134,13 @@ class ExpectedInfos(val bindingContext: BindingContext, val resolveSession: Reso
|
||||
if (parent is JetQualifiedExpression && callElement == parent.getSelectorExpression()) {
|
||||
val receiverExpression = parent.getReceiverExpression()
|
||||
val expressionType = bindingContext[BindingContext.EXPRESSION_TYPE, receiverExpression]
|
||||
val qualifier = bindingContext[BindingContext.QUALIFIER, receiverExpression]
|
||||
if (expressionType != null) {
|
||||
receiver = ExpressionReceiver(receiverExpression, expressionType)
|
||||
callOperationNode = parent.getOperationTokenNode()
|
||||
}
|
||||
else if (bindingContext[BindingContext.QUALIFIER, receiverExpression] != null) {
|
||||
receiver = ReceiverValue.NO_RECEIVER
|
||||
else if (qualifier != null) {
|
||||
receiver = qualifier
|
||||
callOperationNode = null
|
||||
}
|
||||
else {
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package p1
|
||||
|
||||
fun test(s: String, i: Int) {
|
||||
p2.foo(<caret>)
|
||||
|
||||
fun foo(i: Int) = i
|
||||
|
||||
// EXIST: s
|
||||
@@ -0,0 +1,3 @@
|
||||
package p2
|
||||
|
||||
fun foo(s: String) {}
|
||||
@@ -19,6 +19,7 @@ package org.jetbrains.jet.completion;
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.jet.JUnit3RunnerWithInners;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.test.InnerTestClasses;
|
||||
import org.jetbrains.jet.test.TestMetadata;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -35,6 +36,12 @@ public class MultiFileSmartCompletionTestGenerated extends AbstractMultiFileSmar
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/completion/smartMultiFile"), Pattern.compile("^([^\\.]+)$"), false);
|
||||
}
|
||||
|
||||
@TestMetadata("FunctionFromAnotherPackage")
|
||||
public void testFunctionFromAnotherPackage() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smartMultiFile/FunctionFromAnotherPackage/");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("JavaStaticMethodArgument")
|
||||
public void testJavaStaticMethodArgument() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smartMultiFile/JavaStaticMethodArgument/");
|
||||
|
||||
Reference in New Issue
Block a user