Fixed KT-5795 Do not suggest member extension functions with wrong implicit reciever

#KT-5795 Fixed
This commit is contained in:
Valentin Kipyatkov
2014-09-17 13:28:11 +04:00
committed by valentin
parent 6ed57f5e7a
commit 34aada75eb
4 changed files with 31 additions and 9 deletions
@@ -101,7 +101,12 @@ public final class TipsManager {
for (ReceiverParameterDescriptor receiverDescriptor : result) {
JetType receiverType = receiverDescriptor.getType();
descriptorsSet.addAll(receiverType.getMemberScope().getAllDescriptors());
for (DeclarationDescriptor member : receiverType.getMemberScope().getAllDescriptors()) {
// skip member extension functions&properties
if (member instanceof CallableDescriptor && ((CallableDescriptor) member).getReceiverParameter() != null) continue;
descriptorsSet.add(member);
}
}
descriptorsSet.addAll(resolutionScope.getAllDescriptors());
@@ -0,0 +1,11 @@
class X {
fun String.f() {}
}
fun foo() {
with (X()) {
<caret>
}
}
// ABSENT: f
@@ -17,13 +17,10 @@
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;
@@ -614,6 +611,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
doTest(fileName);
}
@TestMetadata("WrongImplicitReceiver.kt")
public void testWrongImplicitReceiver() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/extensions/WrongImplicitReceiver.kt");
doTest(fileName);
}
}
@TestMetadata("idea/testData/completion/basic/common/namedParameters")
@@ -17,13 +17,10 @@
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;
@@ -614,6 +611,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
doTest(fileName);
}
@TestMetadata("WrongImplicitReceiver.kt")
public void testWrongImplicitReceiver() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/basic/common/extensions/WrongImplicitReceiver.kt");
doTest(fileName);
}
}
@TestMetadata("idea/testData/completion/basic/common/namedParameters")