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 org.jetbrains.jet.lang.resolve.bindingContextUtil.recordScopeAndDataFlowInfo
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
|
|
||||||
public trait Qualifier {
|
public trait Qualifier: ReceiverValue {
|
||||||
|
|
||||||
public val expression: JetExpression
|
public val expression: JetExpression
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ class QualifierReceiver (
|
|||||||
val referenceExpression: JetSimpleNameExpression,
|
val referenceExpression: JetSimpleNameExpression,
|
||||||
override val packageView: PackageViewDescriptor?,
|
override val packageView: PackageViewDescriptor?,
|
||||||
override val classifier: ClassifierDescriptor?
|
override val classifier: ClassifierDescriptor?
|
||||||
) : Qualifier, ReceiverValue {
|
) : Qualifier {
|
||||||
|
|
||||||
override val expression: JetExpression = referenceExpression.getTopmostParentQualifiedExpressionForSelector() ?: referenceExpression
|
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.plugin.project.ResolveSessionForBodies
|
||||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor
|
import org.jetbrains.jet.lang.descriptors.VariableDescriptor
|
||||||
import org.jetbrains.jet.lang.resolve.calls.results.ResolutionStatus
|
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 {
|
enum class Tail {
|
||||||
COMMA
|
COMMA
|
||||||
@@ -132,12 +134,13 @@ class ExpectedInfos(val bindingContext: BindingContext, val resolveSession: Reso
|
|||||||
if (parent is JetQualifiedExpression && callElement == parent.getSelectorExpression()) {
|
if (parent is JetQualifiedExpression && callElement == parent.getSelectorExpression()) {
|
||||||
val receiverExpression = parent.getReceiverExpression()
|
val receiverExpression = parent.getReceiverExpression()
|
||||||
val expressionType = bindingContext[BindingContext.EXPRESSION_TYPE, receiverExpression]
|
val expressionType = bindingContext[BindingContext.EXPRESSION_TYPE, receiverExpression]
|
||||||
|
val qualifier = bindingContext[BindingContext.QUALIFIER, receiverExpression]
|
||||||
if (expressionType != null) {
|
if (expressionType != null) {
|
||||||
receiver = ExpressionReceiver(receiverExpression, expressionType)
|
receiver = ExpressionReceiver(receiverExpression, expressionType)
|
||||||
callOperationNode = parent.getOperationTokenNode()
|
callOperationNode = parent.getOperationTokenNode()
|
||||||
}
|
}
|
||||||
else if (bindingContext[BindingContext.QUALIFIER, receiverExpression] != null) {
|
else if (qualifier != null) {
|
||||||
receiver = ReceiverValue.NO_RECEIVER
|
receiver = qualifier
|
||||||
callOperationNode = null
|
callOperationNode = null
|
||||||
}
|
}
|
||||||
else {
|
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 com.intellij.testFramework.TestDataPath;
|
||||||
import org.jetbrains.jet.JUnit3RunnerWithInners;
|
import org.jetbrains.jet.JUnit3RunnerWithInners;
|
||||||
import org.jetbrains.jet.JetTestUtils;
|
import org.jetbrains.jet.JetTestUtils;
|
||||||
|
import org.jetbrains.jet.test.InnerTestClasses;
|
||||||
import org.jetbrains.jet.test.TestMetadata;
|
import org.jetbrains.jet.test.TestMetadata;
|
||||||
import org.junit.runner.RunWith;
|
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);
|
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")
|
@TestMetadata("JavaStaticMethodArgument")
|
||||||
public void testJavaStaticMethodArgument() throws Exception {
|
public void testJavaStaticMethodArgument() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smartMultiFile/JavaStaticMethodArgument/");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smartMultiFile/JavaStaticMethodArgument/");
|
||||||
|
|||||||
Reference in New Issue
Block a user