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 com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
|
import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession
|
||||||
import org.jetbrains.jet.renderer.DescriptorRenderer
|
import org.jetbrains.jet.renderer.DescriptorRenderer
|
||||||
|
import org.jetbrains.jet.lang.psi.psiUtil.getReceiverExpression
|
||||||
|
|
||||||
class SmartCompletion(val expression: JetSimpleNameExpression,
|
class SmartCompletion(val expression: JetSimpleNameExpression,
|
||||||
val resolveSession: ResolveSessionForBodies,
|
val resolveSession: ResolveSessionForBodies,
|
||||||
@@ -79,16 +80,12 @@ class SmartCompletion(val expression: JetSimpleNameExpression,
|
|||||||
val asTypePositionResult = buildForAsTypePosition()
|
val asTypePositionResult = buildForAsTypePosition()
|
||||||
if (asTypePositionResult != null) return asTypePositionResult
|
if (asTypePositionResult != null) return asTypePositionResult
|
||||||
|
|
||||||
val parent = expression.getParent()
|
val receiver = expression.getReceiverExpression()
|
||||||
val expressionWithType: JetExpression
|
val expressionWithType = if (receiver != null) {
|
||||||
val receiver: JetExpression?
|
expression.getParent() as? JetExpression ?: return null
|
||||||
if (parent is JetQualifiedExpression) {
|
|
||||||
expressionWithType = parent
|
|
||||||
receiver = parent.getReceiverExpression()
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
expressionWithType = expression
|
expression
|
||||||
receiver = null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val allExpectedInfos = calcExpectedInfos(expressionWithType) ?: return null
|
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;
|
package org.jetbrains.jet.completion;
|
||||||
|
|
||||||
import com.intellij.testFramework.TestDataPath;
|
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.JetTestUtils;
|
||||||
import org.jetbrains.jet.test.InnerTestClasses;
|
|
||||||
import org.jetbrains.jet.test.TestMetadata;
|
import org.jetbrains.jet.test.TestMetadata;
|
||||||
import org.jetbrains.jet.JUnit3RunnerWithInners;
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
@@ -356,6 +352,12 @@ public class JvmSmartCompletionTestGenerated extends AbstractJvmSmartCompletionT
|
|||||||
doTest(fileName);
|
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")
|
@TestMetadata("InsideIdentifier.kt")
|
||||||
public void testInsideIdentifier() throws Exception {
|
public void testInsideIdentifier() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/InsideIdentifier.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/InsideIdentifier.kt");
|
||||||
|
|||||||
+6
-2
@@ -17,9 +17,13 @@
|
|||||||
package org.jetbrains.jet.completion;
|
package org.jetbrains.jet.completion;
|
||||||
|
|
||||||
import com.intellij.testFramework.TestDataPath;
|
import com.intellij.testFramework.TestDataPath;
|
||||||
import org.jetbrains.jet.JetTestUtils;
|
import junit.framework.Test;
|
||||||
import org.jetbrains.jet.test.TestMetadata;
|
import junit.framework.TestSuite;
|
||||||
import org.junit.runner.RunWith;
|
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.io.File;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|||||||
Reference in New Issue
Block a user