Simplify asm.kt

This commit is contained in:
Iaroslav Postovalov 2020-09-25 20:49:08 +07:00
parent 1e50587da4
commit 8014b3df0b
No known key found for this signature in database
GPG Key ID: 46E15E4A31B3BCD7

View File

@ -19,8 +19,7 @@ import kotlin.reflect.KClass
* @author Alexander Nozik * @author Alexander Nozik
*/ */
public fun <T : Any> MST.compileWith(type: KClass<T>, algebra: Algebra<T>): Expression<T> { public fun <T : Any> MST.compileWith(type: KClass<T>, algebra: Algebra<T>): Expression<T> {
fun AsmBuilder<T>.visit(node: MST) { fun AsmBuilder<T>.visit(node: MST): Unit = when (node) {
when (node) {
is MST.Symbolic -> { is MST.Symbolic -> {
val symbol = try { val symbol = try {
algebra.symbol(node.value) algebra.symbol(node.value)
@ -53,7 +52,6 @@ public fun <T : Any> MST.compileWith(type: KClass<T>, algebra: Algebra<T>): Expr
visit(node.right) visit(node.right)
} }
} }
}
return AsmBuilder(type, algebra, buildName(this)) { visit(this@compileWith) }.getInstance() return AsmBuilder(type, algebra, buildName(this)) { visit(this@compileWith) }.getInstance()
} }