KT-6132 No smart completion for argument of java static method

#KT-6132 Fixed
This commit is contained in:
Svetlana Isakova
2014-10-31 14:48:13 +03:00
parent d4275e1110
commit fad4261448
5 changed files with 25 additions and 4 deletions
@@ -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 {
@@ -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/");