No true/false for if-condition too

This commit is contained in:
Valentin Kipyatkov
2015-10-02 16:45:30 +03:00
parent 7436355c17
commit feb4492455
3 changed files with 12 additions and 3 deletions
@@ -147,6 +147,8 @@ class ReturnValueAdditionalData(val callable: CallableDescriptor) : ExpectedInfo
class WhenEntryAdditionalData(val whenWithSubject: Boolean) : ExpectedInfo.AdditionalData
object IfConditionAdditionalData : ExpectedInfo.AdditionalData
class ExpectedInfos(
val bindingContext: BindingContext,
val resolutionFacade: ResolutionFacade,
@@ -423,7 +425,7 @@ class ExpectedInfos(
private fun calculateForIf(expressionWithType: JetExpression): Collection<ExpectedInfo>? {
val ifExpression = (expressionWithType.getParent() as? JetContainerNode)?.getParent() as? JetIfExpression ?: return null
return when (expressionWithType) {
ifExpression.getCondition() -> listOf(ExpectedInfo(resolutionFacade.moduleDescriptor.builtIns.booleanType, null, Tail.RPARENTH))
ifExpression.getCondition() -> listOf(ExpectedInfo(resolutionFacade.moduleDescriptor.builtIns.booleanType, null, Tail.RPARENTH, additionalData = IfConditionAdditionalData))
ifExpression.getThen() -> calculate(ifExpression).map { ExpectedInfo(it.filter, it.expectedName, Tail.ELSE) }
@@ -55,8 +55,13 @@ object KeywordValues {
) {
if (callTypeAndReceiver is CallTypeAndReceiver.DEFAULT) {
val booleanInfoMatcher = matcher@ { info: ExpectedInfo ->
// no sense in true or false as when entry for when with no subject
if (info.additionalData is WhenEntryAdditionalData && !info.additionalData.whenWithSubject) {
// no sense in true or false as if-condition or when entry for when with no subject
val skipTrueFalse = when (info.additionalData) {
is IfConditionAdditionalData -> true
is WhenEntryAdditionalData -> !info.additionalData.whenWithSubject
else -> false
}
if (skipTrueFalse) {
return@matcher ExpectedInfoMatch.noMatch
}
+2
View File
@@ -4,3 +4,5 @@ fun bar(b: Boolean, c: Char){
// EXIST: b
// ABSENT: c
// ABSENT: true
// ABSENT: false