FIR: make transformInplace to be thread safe if no transformation was done ^KT-50822 fixed
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 cb5f3b9..fcd1d9e 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 @@ while (iterator.hasNext()) { val next = iterator.next() as FirPureAbstractElement val result = next.transform<T, D>(transformer, data) - iterator.set(result) + if (result !== next) { + iterator.set(result) + } } } @@ -36,7 +38,9 @@ TransformData.Nothing -> continue } val result = next.transform<T, D>(transformer, data) - iterator.set(result) + if (result !== next) { + iterator.set(result) + } } }