From ce1e4f252f5a7f748b701b11b35223e1818155ce Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 18 Jan 2022 12:23:56 +0300 Subject: [PATCH] FIR: make transformInplace to be thread safe if no transformation was done ^KT-50822 fixed --- .../jetbrains/kotlin/fir/visitors/FirTransformerUtil.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirTransformerUtil.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirTransformerUtil.kt index cb5f3b98d17..fcd1d9ec662 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirTransformerUtil.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/visitors/FirTransformerUtil.kt @@ -17,7 +17,9 @@ fun MutableList.transformInplace(transformer: FirTransfor while (iterator.hasNext()) { val next = iterator.next() as FirPureAbstractElement val result = next.transform(transformer, data) - iterator.set(result) + if (result !== next) { + iterator.set(result) + } } } @@ -36,7 +38,9 @@ inline fun MutableList.transformInplace(transformer: FirT TransformData.Nothing -> continue } val result = next.transform(transformer, data) - iterator.set(result) + if (result !== next) { + iterator.set(result) + } } }