001 package railo.transformer.bytecode.statement; 002 003 import org.objectweb.asm.Type; 004 import org.objectweb.asm.commons.GeneratorAdapter; 005 006 import railo.transformer.bytecode.BytecodeContext; 007 import railo.transformer.bytecode.BytecodeException; 008 import railo.transformer.bytecode.Literal; 009 import railo.transformer.bytecode.expression.Expression; 010 import railo.transformer.bytecode.util.ASMUtil; 011 import railo.transformer.bytecode.util.Types; 012 013 public final class ExpressionAsStatement extends StatementBaseNoFinal { 014 015 private Expression expr; 016 017 018 /** 019 * Constructor of the class 020 * @param expr 021 */ 022 public ExpressionAsStatement(Expression expr) { 023 super(expr.getStart(),expr.getEnd()); 024 this.expr=expr; 025 } 026 027 /** 028 * 029 * @see railo.transformer.bytecode.statement.StatementBase#_writeOut(org.objectweb.asm.commons.GeneratorAdapter) 030 */ 031 public void _writeOut(BytecodeContext bc) throws BytecodeException { 032 GeneratorAdapter adapter = bc.getAdapter(); 033 if(!(expr instanceof Literal)) { 034 Type type = expr.writeOut(bc, Expression.MODE_VALUE); 035 if(!type.equals(Types.VOID))ASMUtil.pop(adapter, type); 036 //if(type.equals(Types.DOUBLE_VALUE))adapter.pop2(); 037 //else adapter.pop(); 038 } 039 } 040 041 /** 042 * @return the expr 043 */ 044 public Expression getExpr() { 045 return expr; 046 } 047 }