diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt index 95a20f203a8..3d7114e9bd1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirExpressionsResolveTransformer.kt @@ -943,6 +943,7 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT return transformOtherChildren(transformer, ResolutionMode.ContextIndependent) } + @OptIn(UnresolvedExpressionTypeAccess::class) override fun transformCheckNotNullCall( checkNotNullCall: FirCheckNotNullCall, data: ResolutionMode, @@ -955,7 +956,10 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT return checkNotNullCall } - dataFlowAnalyzer.enterCheckNotNullCall() + if (checkNotNullCall.arguments.firstOrNull()?.coneTypeOrNull !is ConeDynamicType) { + dataFlowAnalyzer.enterCheckNotNullCall() + } + checkNotNullCall .transformAnnotations(transformer, ResolutionMode.ContextIndependent) .replaceArgumentList(checkNotNullCall.argumentList.transform(transformer, ResolutionMode.ContextDependent)) @@ -964,7 +968,10 @@ open class FirExpressionsResolveTransformer(transformer: FirAbstractBodyResolveT components.syntheticCallGenerator.generateCalleeForCheckNotNullCall(checkNotNullCall, resolutionContext), data ) - dataFlowAnalyzer.exitCheckNotNullCall(result, data.forceFullCompletion) + if (checkNotNullCall.arguments.firstOrNull()?.coneTypeOrNull !is ConeDynamicType) { + dataFlowAnalyzer.exitCheckNotNullCall(result, data.forceFullCompletion) + } + return result } diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensionVals.fir.kt b/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensionVals.fir.kt index dc9b17b242f..4308b271f0b 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensionVals.fir.kt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensionVals.fir.kt @@ -12,7 +12,7 @@ fun test(d: dynamic) { d!!.onAnyVal } run { - d!!.onAnyVal = 1 + d!!.onAnyVal = 1 } d.onNullableAnyVal = 1 diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensionVars.fir.kt b/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensionVars.fir.kt index a299d9d8e53..d510989a48f 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensionVars.fir.kt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensionVars.fir.kt @@ -13,7 +13,7 @@ fun test(d: dynamic) { } run { - d!!.onAnyVar = 1 + d!!.onAnyVar = 1 } d.onNullableAnyVar = 1 @@ -22,7 +22,7 @@ fun test(d: dynamic) { d.onDynamicVar = 1 - d?.onDynamicVar = 1 + d?.onDynamicVar = 1 (d as String).onStringVar (d as Any).onAnyVar diff --git a/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensions.fir.kt b/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensions.fir.kt index 38bd17c9928..90ff3159a47 100644 --- a/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensions.fir.kt +++ b/compiler/testData/diagnostics/testsWithJsStdLib/dynamicTypes/extensions.fir.kt @@ -14,7 +14,7 @@ fun test(d: dynamic) { d.onString() d.onDynamic() - d?.onDynamic() + d?.onDynamic() (d as String).onString() (d as Any).onAny()