@Override public void visit(ConditionalExpr expr) { ConditionalStatement statement = new ConditionalStatement(); statement.setCondition(expr.getCondition()); expr.getCondition().acceptVisitor(new ExpressionSideEffectDecomposer(statement.getConsequent())); expr.getAlternative().acceptVisitor(new ExpressionSideEffectDecomposer(statement.getAlternative())); target.add(statement); } @Override
@Override public void visit(ConditionalExpr expr) { try { output.writeByte(2); writeExpr(expr.getCondition()); writeExpr(expr.getConsequent()); writeExpr(expr.getAlternative()); } catch (IOException e) { throw new IOExceptionWrapper(e); } }
@Override public void visit(ConditionalExpr expr) { expr.getCondition().acceptVisitor(this); expr.getConsequent().acceptVisitor(this); expr.getAlternative().acceptVisitor(this); }
@Override public void visit(ConditionalExpr expr) { writer.print("("); expr.getCondition().acceptVisitor(this); writer.print(" ? "); expr.getConsequent().acceptVisitor(this); writer.print(" : "); expr.getAlternative().acceptVisitor(this); writer.print(")"); }
@Override public void visit(ConditionalExpr expr) { accept(expr.getCondition()); WasmConditional conditional = new WasmConditional(forCondition(result)); accept(expr.getConsequent()); conditional.getThenBlock().getBody().add(result); result.acceptVisitor(typeInference); WasmType thenType = typeInference.getResult(); conditional.getThenBlock().setType(thenType); accept(expr.getAlternative()); conditional.getElseBlock().getBody().add(result); result.acceptVisitor(typeInference); WasmType elseType = typeInference.getResult(); conditional.getElseBlock().setType(elseType); assert thenType == elseType; conditional.setType(thenType); result = conditional; }
@Override public void visit(ConditionalExpr expr) { pushLocation(expr.getLocation()); try { expr.getCondition().acceptVisitor(this); Expr cond = optimizeCondition(resultExpr); Statement barrier = addBarrier(); expr.getConsequent().acceptVisitor(this); Expr consequent = resultExpr; expr.getAlternative().acceptVisitor(this); Expr alternative = resultExpr; removeBarrier(barrier); expr.setCondition(cond); expr.setConsequent(consequent); expr.setAlternative(alternative); resultExpr = expr; } finally { popLocation(); } }
@Override public void visit(ConditionalExpr expr) { try { if (expr.getLocation() != null) { pushLocation(expr.getLocation()); } Precedence outerPrecedence = precedence; if (outerPrecedence.ordinal() > Precedence.CONDITIONAL.ordinal()) { writer.append('('); } precedence = Precedence.CONDITIONAL.next(); expr.getCondition().acceptVisitor(this); writer.ws().append("?").ws(); precedence = Precedence.CONDITIONAL.next(); expr.getConsequent().acceptVisitor(this); writer.ws().append(":").ws(); precedence = Precedence.CONDITIONAL; expr.getAlternative().acceptVisitor(this); if (outerPrecedence.ordinal() > Precedence.CONDITIONAL.ordinal()) { writer.append(')'); } if (expr.getLocation() != null) { popLocation(); } } catch (IOException e) { throw new RenderingException("IO error occured", e); } }
@Override public void visit(ConditionalExpr expr) { ConditionalStatement statement = new ConditionalStatement(); statement.setCondition(expr.getCondition()); expr.getCondition().acceptVisitor(new ExpressionSideEffectDecomposer(statement.getConsequent())); expr.getAlternative().acceptVisitor(new ExpressionSideEffectDecomposer(statement.getAlternative())); target.add(statement); } @Override
@Override public void visit(ConditionalExpr expr) { try { output.writeByte(2); writeExpr(expr.getCondition()); writeExpr(expr.getConsequent()); writeExpr(expr.getAlternative()); } catch (IOException e) { throw new IOExceptionWrapper(e); } }
@Override public void visit(ConditionalExpr expr) { expr.getCondition().acceptVisitor(this); expr.getConsequent().acceptVisitor(this); expr.getAlternative().acceptVisitor(this); }
@Override public void visit(ConditionalExpr expr) { pushLocation(expr.getLocation()); try { expr.getCondition().acceptVisitor(this); Expr cond = resultExpr; expr.getConsequent().acceptVisitor(this); Expr consequent = resultExpr; expr.getAlternative().acceptVisitor(this); Expr alternative = resultExpr; expr.setCondition(cond); expr.setConsequent(consequent); expr.setAlternative(alternative); resultExpr = expr; } finally { popLocation(); } }
@Override public void visit(ConditionalExpr expr) { accept(expr.getCondition()); WasmConditional conditional = new WasmConditional(forCondition(result)); accept(expr.getConsequent()); conditional.getThenBlock().getBody().add(result); result.acceptVisitor(typeInference); WasmType thenType = typeInference.getResult(); conditional.getThenBlock().setType(thenType); accept(expr.getAlternative()); conditional.getElseBlock().getBody().add(result); result.acceptVisitor(typeInference); WasmType elseType = typeInference.getResult(); conditional.getElseBlock().setType(elseType); assert thenType == elseType; conditional.setType(thenType); result = conditional; }
@Override public void visit(ConditionalExpr expr) { try { if (expr.getLocation() != null) { pushLocation(expr.getLocation()); } Precedence outerPrecedence = precedence; if (outerPrecedence.ordinal() > Precedence.CONDITIONAL.ordinal()) { writer.append('('); } precedence = Precedence.CONDITIONAL.next(); expr.getCondition().acceptVisitor(this); writer.ws().append("?").ws(); precedence = Precedence.CONDITIONAL.next(); expr.getConsequent().acceptVisitor(this); writer.ws().append(":").ws(); precedence = Precedence.CONDITIONAL; expr.getAlternative().acceptVisitor(this); if (outerPrecedence.ordinal() > Precedence.CONDITIONAL.ordinal()) { writer.append(')'); } if (expr.getLocation() != null) { popLocation(); } } catch (IOException e) { throw new RenderingException("IO error occured", e); } }