~ more aggressive
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirControlFlowStatementsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirControlFlowStatementsResolveTransformer.kt
index 3572be5..cba5626 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirControlFlowStatementsResolveTransformer.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirControlFlowStatementsResolveTransformer.kt
@@ -226,6 +226,11 @@
if (elvisExpression.calleeReference is FirResolvedNamedReference) return elvisExpression
elvisExpression.transformAnnotations(transformer, data)
+ dataFlowAnalyzer.enterElvis(elvisExpression)
+ elvisExpression.transformLhs(transformer, ResolutionMode.ContextDependent)
+ dataFlowAnalyzer.exitElvisLhs(elvisExpression)
+ elvisExpression.transformRhs(transformer, ResolutionMode.ContextDependent)
+
// Do not use expect type when it's came from if/when (when it doesn't require completion)
// It returns us to K1 behavior in the case of when-elvis combination (see testData/diagnostics/tests/inference/elvisInsideWhen.kt)
// But this is mostly a hack that I hope might be lifted once KT-55692 is considered
@@ -233,16 +238,6 @@
@Suppress("NAME_SHADOWING")
val data = data.takeUnless { it is ResolutionMode.WithExpectedType && !it.forceFullCompletion } ?: ResolutionMode.ContextDependent
- dataFlowAnalyzer.enterElvis(elvisExpression)
- elvisExpression.transformLhs(transformer, ResolutionMode.ContextDependent)
- dataFlowAnalyzer.exitElvisLhs(elvisExpression)
-
- val resolutionModeForRhs = withExpectedType(
- data.expectedType?.coneTypeSafe(),
- mayBeCoercionToUnitApplied = (data as? ResolutionMode.WithExpectedType)?.mayBeCoercionToUnitApplied == true
- )
- elvisExpression.transformRhs(transformer, resolutionModeForRhs)
-
val result = callCompleter.completeCall(
syntheticCallGenerator.generateCalleeForElvisExpression(elvisExpression, resolutionContext, data), data
)
diff --git a/compiler/testData/diagnostics/testsWithStdLib/elvisOnJavaList.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/elvisOnJavaList.fir.kt
index 8a9a2ab..2375ea8 100644
--- a/compiler/testData/diagnostics/testsWithStdLib/elvisOnJavaList.fir.kt
+++ b/compiler/testData/diagnostics/testsWithStdLib/elvisOnJavaList.fir.kt
@@ -14,5 +14,5 @@
fun foo(c: P): MutableList<Int> {
// Error should be here: see KT-8168 Typechecker fails for platform collection type
- return <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>c.getList() ?: <!TYPE_MISMATCH!><!CANNOT_INFER_PARAMETER_TYPE!>listOf<!>()<!><!>
+ return <!RETURN_TYPE_MISMATCH!>c.getList() ?: listOf()<!>
}