Infix calls supported in smart completion too
This commit is contained in:
committed by
valentin
parent
2bb553612c
commit
7df65d595c
@@ -32,6 +32,7 @@ import org.jetbrains.jet.plugin.util.makeNullable
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
|
||||
import org.jetbrains.jet.renderer.DescriptorRenderer
|
||||
import org.jetbrains.jet.lang.psi.psiUtil.getReceiverExpression
|
||||
|
||||
class SmartCompletion(val expression: JetSimpleNameExpression,
|
||||
val resolveSession: ResolveSessionForBodies,
|
||||
@@ -79,16 +80,12 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
|
||||
val asTypePositionResult = buildForAsTypePosition()
|
||||
if (asTypePositionResult != null) return asTypePositionResult
|
||||
|
||||
val parent = expression.getParent()
|
||||
val expressionWithType: JetExpression
|
||||
val receiver: JetExpression?
|
||||
if (parent is JetQualifiedExpression) {
|
||||
expressionWithType = parent
|
||||
receiver = parent.getReceiverExpression()
|
||||
val receiver = expression.getReceiverExpression()
|
||||
val expressionWithType = if (receiver != null) {
|
||||
expression.getParent() as? JetExpression ?: return null
|
||||
}
|
||||
else {
|
||||
expressionWithType = expression
|
||||
receiver = null
|
||||
expression
|
||||
}
|
||||
|
||||
val allExpectedInfos = calcExpectedInfos(expressionWithType) ?: return null
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
class X {
|
||||
fun foo(i: Int) = ""
|
||||
fun bar() = ""
|
||||
val prop: String = ""
|
||||
}
|
||||
|
||||
fun X.ext1(s: String) = ""
|
||||
fun X.ext2() = ""
|
||||
fun X.extProp: String get() = ""
|
||||
|
||||
val s: String = X() <caret>
|
||||
|
||||
// EXIST: foo
|
||||
// ABSENT: bar
|
||||
// ABSENT: prop
|
||||
// EXIST: ext1
|
||||
// ABSENT: ext2
|
||||
// ABSENT: extProp
|
||||
@@ -17,13 +17,9 @@
|
||||
package org.jetbrains.jet.completion;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestSuite;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.test.InnerTestClasses;
|
||||
import org.jetbrains.jet.test.TestMetadata;
|
||||
import org.jetbrains.jet.JUnit3RunnerWithInners;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -356,6 +352,12 @@ public class JvmSmartCompletionTestGenerated extends AbstractJvmSmartCompletionT
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("InfixCall.kt")
|
||||
public void testInfixCall() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/InfixCall.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("InsideIdentifier.kt")
|
||||
public void testInsideIdentifier() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/InsideIdentifier.kt");
|
||||
|
||||
+6
-2
@@ -17,9 +17,13 @@
|
||||
package org.jetbrains.jet.completion;
|
||||
|
||||
import com.intellij.testFramework.TestDataPath;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.test.TestMetadata;
|
||||
import junit.framework.Test;
|
||||
import junit.framework.TestSuite;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.jetbrains.jet.JetTestUtils;
|
||||
import org.jetbrains.jet.test.InnerTestClasses;
|
||||
import org.jetbrains.jet.test.TestMetadata;
|
||||
import org.jetbrains.jet.JUnit3RunnerWithInners;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
Reference in New Issue
Block a user