~ 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()<!>
 }