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)
+ }
}
}