KT-10664 No code completion after variable initialized with elvis

#KT-10664 Fixed
This commit is contained in:
Valentin Kipyatkov
2016-01-14 14:02:26 +03:00
parent b41f2dcda3
commit 7c6a33a36c
4 changed files with 24 additions and 3 deletions
@@ -73,12 +73,12 @@ public class SmartCastManager {
@NotNull DeclarationDescriptor containingDeclarationOrModule,
@NotNull DataFlowInfo dataFlowInfo
) {
final List<KotlinType> variants = getSmartCastVariants(receiverToCast, bindingContext,
containingDeclarationOrModule, dataFlowInfo);
final List<KotlinType> variants = CollectionsKt.distinct(
getSmartCastVariants(receiverToCast, bindingContext, containingDeclarationOrModule, dataFlowInfo));
return CollectionsKt.filter(variants, new Function1<KotlinType, Boolean>() {
@Override
public Boolean invoke(final KotlinType type) {
return !CollectionsKt.any(variants, new Function1<KotlinType, Boolean>() {
return CollectionsKt.none(variants, new Function1<KotlinType, Boolean>() {
@Override
public Boolean invoke(KotlinType another) {
return another != type && KotlinTypeChecker.DEFAULT.isSubtypeOf(another, type);
+9
View File
@@ -0,0 +1,9 @@
fun foo(): String? = null
fun bar() {
val f = foo() ?: return
f.<caret>
}
// EXIST: length
// EXIST: hashCode
@@ -463,6 +463,12 @@ public class JSBasicCompletionTestGenerated extends AbstractJSBasicCompletionTes
doTest(fileName);
}
@TestMetadata("KT10664.kt")
public void testKT10664() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/KT10664.kt");
doTest(fileName);
}
@TestMetadata("LocalMultideclarationValues.kt")
public void testLocalMultideclarationValues() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/LocalMultideclarationValues.kt");
@@ -463,6 +463,12 @@ public class JvmBasicCompletionTestGenerated extends AbstractJvmBasicCompletionT
doTest(fileName);
}
@TestMetadata("KT10664.kt")
public void testKT10664() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/KT10664.kt");
doTest(fileName);
}
@TestMetadata("LocalMultideclarationValues.kt")
public void testLocalMultideclarationValues() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/idea-completion/testData/basic/common/LocalMultideclarationValues.kt");