IDL2K better results stability
This commit is contained in:
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.idl2k
|
package org.jetbrains.idl2k
|
||||||
|
|
||||||
import java.util.HashSet
|
|
||||||
|
|
||||||
data class NamedValue<V>(val name: String, val value: V)
|
data class NamedValue<V>(val name: String, val value: V)
|
||||||
|
|
||||||
data class Repository(
|
data class Repository(
|
||||||
|
|||||||
@@ -46,10 +46,10 @@ private val typeMapper = mapOf(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
fun GenerateTraitOrClass.allSuperTypes(all: Map<String, GenerateTraitOrClass>) = HashSet<GenerateTraitOrClass>().let { result -> allSuperTypesImpl(listOf(this), all, result); result.toList() }
|
fun GenerateTraitOrClass.allSuperTypes(all: Map<String, GenerateTraitOrClass>) = LinkedHashSet<GenerateTraitOrClass>().let { result -> allSuperTypesImpl(listOf(this), all, result); result.toList() }
|
||||||
|
|
||||||
tailRecursive
|
tailRecursive
|
||||||
fun allSuperTypesImpl(roots: List<GenerateTraitOrClass>, all: Map<String, GenerateTraitOrClass>, result: HashSet<GenerateTraitOrClass>) {
|
fun allSuperTypesImpl(roots: List<GenerateTraitOrClass>, all: Map<String, GenerateTraitOrClass>, result: MutableSet<GenerateTraitOrClass>) {
|
||||||
if (roots.isNotEmpty()) {
|
if (roots.isNotEmpty()) {
|
||||||
allSuperTypesImpl(roots.flatMap { it.superTypes }.map { all[it] }.filterNotNull().filter { result.add(it) }, all, result)
|
allSuperTypesImpl(roots.flatMap { it.superTypes }.map { all[it] }.filterNotNull().filter { result.add(it) }, all, result)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user