New J2K: fix ConcurrentModificationException while analysing implicit initializers

This commit is contained in:
Ilya Kirillov
2019-06-10 19:26:02 +03:00
parent 184825d59d
commit 9929dba74d
@@ -87,16 +87,21 @@ class ImplicitInitializerConversion(private val context: NewJ2kConverterContext)
constructors[context.symbolProvider.provideUniverseSymbol(constructor)] = true
}
val constructorsToInitialize = mutableListOf<JKMethodSymbol>()
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