diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/good/callsInPlace/namedArgument.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/good/callsInPlace/namedArgument.kt index dc2c3955303..014188d4636 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/good/callsInPlace/namedArgument.kt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/contracts/fromSource/good/callsInPlace/namedArgument.kt @@ -9,7 +9,7 @@ inline fun myRun(f: () -> Unit) { @OptIn(ExperimentalContracts::class) inline fun test_1(g: () -> Unit) { - contract { callsInPlace(g, InvocationKind.EXACTLY_ONCE) } + contract { callsInPlace(g, InvocationKind.EXACTLY_ONCE) } myRun(f = g) } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirCallsEffectAnalyzer.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirCallsEffectAnalyzer.kt index 0bc65273c67..f67b0da8291 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirCallsEffectAnalyzer.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/cfa/FirCallsEffectAnalyzer.kt @@ -200,7 +200,8 @@ object FirCallsEffectAnalyzer : FirControlFlowChecker() { } for (arg in node.fir.argumentList.arguments) { - data.checkExpressionForLeakedSymbols(arg) { + val unwrappedArg = arg.unwrapArgument() + data.checkExpressionForLeakedSymbols(unwrappedArg) { node.fir.getArgumentCallsEffect(arg) == null } } @@ -307,7 +308,9 @@ object FirCallsEffectAnalyzer : FirControlFlowChecker() { return this is FirAnonymousFunction && this.isLambda && this.invocationKind != null } - private fun FirExpression?.toQualifiedReference(): FirReference? = (this as? FirQualifiedAccessExpression)?.calleeReference + private fun FirExpression?.toQualifiedReference(): FirReference? { + return (this?.unwrapArgument() as? FirQualifiedAccessExpression)?.calleeReference + } private fun referenceToSymbol(reference: FirReference?): FirBasedSymbol<*>? = when (reference) { is FirResolvedNamedReference -> reference.resolvedSymbol