From 9929dba74d3e32152a59bae8405903f4d446f089 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 10 Jun 2019 19:26:02 +0300 Subject: [PATCH] New J2K: fix ConcurrentModificationException while analysing implicit initializers --- .../nj2k/conversions/ImplicitInitializerConversion.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitInitializerConversion.kt b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitInitializerConversion.kt index b53f2336bb8..53f944a6a14 100644 --- a/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitInitializerConversion.kt +++ b/nj2k/src/org/jetbrains/kotlin/nj2k/conversions/ImplicitInitializerConversion.kt @@ -87,16 +87,21 @@ class ImplicitInitializerConversion(private val context: NewJ2kConverterContext) constructors[context.symbolProvider.provideUniverseSymbol(constructor)] = true } + val constructorsToInitialize = mutableListOf() for ((constructor, initialized) in constructors) { if (initialized) continue val parentConstructors = generateSequence(constructor) { it.parentConstructor() } if (parentConstructors.any { constructors[it] == true }) { - parentConstructors.forEach { constructors[it] = true } + constructorsToInitialize += parentConstructors } } + for (constructor in constructorsToInitialize) { + constructors[constructor] = true + } + val initializedInConstructorsCount = constructors.values.count { it } return when (initializedInConstructorsCount) { 0 -> InitializationState.NON_INITIALIZED