IDL2K better results stability

This commit is contained in:
Sergey Mashkov
2015-06-15 20:52:27 +03:00
parent 1a5e6634e2
commit 28f228ccc0
2 changed files with 2 additions and 4 deletions
@@ -16,8 +16,6 @@
package org.jetbrains.idl2k
import java.util.HashSet
data class NamedValue<V>(val name: String, val value: V)
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
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()) {
allSuperTypesImpl(roots.flatMap { it.superTypes }.map { all[it] }.filterNotNull().filter { result.add(it) }, all, result)
}