New J2K: fix ConcurrentModificationException while analysing implicit initializers
This commit is contained in:
@@ -87,16 +87,21 @@ class ImplicitInitializerConversion(private val context: NewJ2kConverterContext)
|
|||||||
constructors[context.symbolProvider.provideUniverseSymbol(constructor)] = true
|
constructors[context.symbolProvider.provideUniverseSymbol(constructor)] = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val constructorsToInitialize = mutableListOf<JKMethodSymbol>()
|
||||||
|
|
||||||
for ((constructor, initialized) in constructors) {
|
for ((constructor, initialized) in constructors) {
|
||||||
if (initialized) continue
|
if (initialized) continue
|
||||||
val parentConstructors =
|
val parentConstructors =
|
||||||
generateSequence(constructor) { it.parentConstructor() }
|
generateSequence(constructor) { it.parentConstructor() }
|
||||||
if (parentConstructors.any { constructors[it] == true }) {
|
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 }
|
val initializedInConstructorsCount = constructors.values.count { it }
|
||||||
return when (initializedInConstructorsCount) {
|
return when (initializedInConstructorsCount) {
|
||||||
0 -> InitializationState.NON_INITIALIZED
|
0 -> InitializationState.NON_INITIALIZED
|
||||||
|
|||||||
Reference in New Issue
Block a user