diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt index a2256110766..41edb5133d1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt @@ -164,14 +164,17 @@ class CreateExpectedClassFix( generateClassOrObject(project, true, element, checker) }) -private tailrec fun TypeAccessibilityChecker.findAndApplyExistingClasses(elements: Collection): HashSet { - val classes = elements.filterIsInstance() - val existingNames = classes.mapNotNull { it.fqName?.asString() }.toHashSet() - existingFqNames = existingNames +private fun TypeAccessibilityChecker.findAndApplyExistingClasses(elements: Collection): HashSet { + var classes = elements.filterIsInstance() + while (true) { + val existingNames = classes.mapNotNull { it.fqName?.asString() }.toHashSet() + existingFqNames = existingNames - val newExistingClasses = classes.filter { isCorrectAndHaveNonPrivate(it) } - return if (classes.size == newExistingClasses.size) existingNames - else findAndApplyExistingClasses(newExistingClasses) + val newExistingClasses = classes.filter { isCorrectAndHaveNonPrivate(it) } + if (classes.size == newExistingClasses.size) return existingNames + + classes = newExistingClasses + } } private fun showUnknownTypesDialog(project: Project, declarationsWithNonExistentClasses: Collection): Boolean {