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.
|
||||
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: 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