From d1422dbf9f4955c637eb62243d7be9623af7edcd Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Tue, 31 Mar 2020 11:57:04 +0300 Subject: [PATCH] [FIR] Don't pass analyzed lambda to data flow analyzer --- .../resolve/FirDeclarationsResolveTransformer.kt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index ae3a403cf75..98d65a36260 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -431,12 +431,17 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) ): CompositeTransformResult { return withLocalScopeCleanup { addLocalScope(FirLocalScope()) - dataFlowAnalyzer.enterFunction(function) + val functionIsNotAnalyzed = transformerPhase != function.resolvePhase + if (functionIsNotAnalyzed) { + dataFlowAnalyzer.enterFunction(function) + } @Suppress("UNCHECKED_CAST") transformDeclarationContent(function, data).also { - val result = it.single as FirFunction<*> - dataFlowAnalyzer.exitFunction(result)?.let { controlFlowGraph -> - result.transformControlFlowGraphReference(ControlFlowGraphReferenceTransformer, controlFlowGraph) + if (functionIsNotAnalyzed) { + val result = it.single as FirFunction<*> + dataFlowAnalyzer.exitFunction(result)?.let { controlFlowGraph -> + result.transformControlFlowGraphReference(ControlFlowGraphReferenceTransformer, controlFlowGraph) + } } } as CompositeTransformResult }