[FIR] Drop duplicate edges in fir tree graph

This commit is contained in:
Dmitriy Novozhilov
2020-01-24 16:27:42 +03:00
parent 985b61f925
commit a882cd98ea
@@ -36,6 +36,12 @@ private fun printInterfaceClassGraph(builder: AbstractFirTreeBuilder) {
} }
val elements = builder.elements + builder.elements.flatMap { it.allParents } val elements = builder.elements + builder.elements.flatMap { it.allParents }
data class Edge(val from: String, val to: String) {
override fun toString(): String {
return "$from -> $to"
}
}
File("FirTree.dot").printWriter().use { printer -> File("FirTree.dot").printWriter().use { printer ->
with(printer) { with(printer) {
println("digraph FirTree {") println("digraph FirTree {")
@@ -43,11 +49,17 @@ private fun printInterfaceClassGraph(builder: AbstractFirTreeBuilder) {
println(" ${it.type} [color=${it.kind!!.toColor()}]") println(" ${it.type} [color=${it.kind!!.toColor()}]")
} }
println() println()
val edges = mutableSetOf<Edge>()
elements.forEach { element -> elements.forEach { element ->
element.allParents.forEach { parent -> element.allParents.forEach { parent ->
println(" ${parent.type} -> ${element.type}") edges += Edge(parent.type, element.type)
} }
} }
edges.forEach {
print(" ")
println(it)
}
println("}") println("}")
} }
} }