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    }