JS: decomposition of "if"
This commit is contained in:
@@ -314,7 +314,12 @@ private open class JsExpressionVisitor() : JsVisitorWithContextImpl() {
|
|||||||
// where init and test do not contain inline calls.
|
// where init and test do not contain inline calls.
|
||||||
override fun visit(x: JsFor, ctx: JsContext<*>): Boolean = false
|
override fun visit(x: JsFor, ctx: JsContext<*>): Boolean = false
|
||||||
|
|
||||||
override fun visit(x: JsIf, ctx: JsContext<*>): Boolean = false
|
override fun visit(x: JsIf, ctx: JsContext<*>): Boolean {
|
||||||
|
val test = x.getIfExpression()
|
||||||
|
x.setIfExpression(accept(test))
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
override fun visit(x: JsWhile, ctx: JsContext<*>): Boolean = false
|
override fun visit(x: JsWhile, ctx: JsContext<*>): Boolean = false
|
||||||
override fun visit(x: JsDoWhile, ctx: JsContext<*>): Boolean = false
|
override fun visit(x: JsDoWhile, ctx: JsContext<*>): Boolean = false
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
package foo
|
||||||
|
|
||||||
|
fun test(x: Boolean, y: Boolean): Boolean {
|
||||||
|
if (fizz(x) && buzz(y)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
assertEquals(false, test(false, true))
|
||||||
|
assertEquals("fizz(false);", pullLog())
|
||||||
|
|
||||||
|
assertEquals(false, test(true, false))
|
||||||
|
assertEquals("fizz(true);buzz(false);", pullLog())
|
||||||
|
|
||||||
|
assertEquals(true, test(true, true))
|
||||||
|
assertEquals("fizz(true);buzz(true);", pullLog())
|
||||||
|
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user