Fix true and false in when entry with subject broken before

This commit is contained in:
Valentin Kipyatkov
2015-10-02 16:40:31 +03:00
parent 2e02f02d9b
commit 7436355c17
4 changed files with 22 additions and 5 deletions
@@ -145,7 +145,7 @@ sealed class ArgumentPositionData(val function: FunctionDescriptor) : ExpectedIn
class ReturnValueAdditionalData(val callable: CallableDescriptor) : ExpectedInfo.AdditionalData
object WhenEntryAdditionalData : ExpectedInfo.AdditionalData
class WhenEntryAdditionalData(val whenWithSubject: Boolean) : ExpectedInfo.AdditionalData
class ExpectedInfos(
val bindingContext: BindingContext,
@@ -491,10 +491,10 @@ class ExpectedInfos(
val subject = whenExpression.getSubjectExpression()
if (subject != null) {
val subjectType = bindingContext.getType(subject) ?: return null
return listOf(ExpectedInfo(subjectType, null, null, additionalData = WhenEntryAdditionalData))
return listOf(ExpectedInfo(subjectType, null, null, additionalData = WhenEntryAdditionalData(whenWithSubject = true)))
}
else {
return listOf(ExpectedInfo(resolutionFacade.moduleDescriptor.builtIns.booleanType, null, null, additionalData = WhenEntryAdditionalData))
return listOf(ExpectedInfo(resolutionFacade.moduleDescriptor.builtIns.booleanType, null, null, additionalData = WhenEntryAdditionalData(whenWithSubject = false)))
}
}
@@ -55,8 +55,10 @@ object KeywordValues {
) {
if (callTypeAndReceiver is CallTypeAndReceiver.DEFAULT) {
val booleanInfoMatcher = matcher@ { info: ExpectedInfo ->
// no sense in true or false as when entry
if (info.additionalData is WhenEntryAdditionalData) return@matcher ExpectedInfoMatch.noMatch
// no sense in true or false as when entry for when with no subject
if (info.additionalData is WhenEntryAdditionalData && !info.additionalData.whenWithSubject) {
return@matcher ExpectedInfoMatch.noMatch
}
if (info.fuzzyType?.type?.isBooleanOrNullableBoolean() ?: false)
ExpectedInfoMatch.match(TypeSubstitutor.EMPTY)
@@ -0,0 +1,9 @@
fun foo(b: Boolean?) {
when (b) {
<caret>
}
}
// EXIST: true
// EXIST: false
// EXIST: null
@@ -1602,5 +1602,11 @@ public class JvmSmartCompletionTestGenerated extends AbstractJvmSmartCompletionT
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/smart/whenEntry/WhenWithNoSubject2.kt");
doTest(fileName);
}
@TestMetadata("WhenWithSubjectTrueFalse.kt")
public void testWhenWithSubjectTrueFalse() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/idea-completion/testData/smart/whenEntry/WhenWithSubjectTrueFalse.kt");
doTest(fileName);
}
}
}