Infix calls supported in smart completion too

This commit is contained in:
Valentin Kipyatkov
2014-09-18 17:32:29 +04:00
committed by valentin
parent 2bb553612c
commit 7df65d595c
4 changed files with 36 additions and 15 deletions
@@ -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");
@@ -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;