001    package railo.transformer.bytecode.statement.tag;
002    
003    import railo.transformer.bytecode.BytecodeContext;
004    import railo.transformer.bytecode.BytecodeException;
005    import railo.transformer.bytecode.Statement;
006    import railo.transformer.bytecode.expression.Expression;
007    import railo.transformer.bytecode.statement.Return;
008    
009    public final class TagReturn extends TagBase {
010    
011            public TagReturn(int line) {
012                    this(line,-1);
013            }
014            public TagReturn(int sl,int el) {
015                    super(sl,el);
016                    setHasFlowController(true);
017            }
018    
019            /**
020             *
021             * @see railo.transformer.bytecode.statement.tag.TagBase#_writeOut(org.objectweb.asm.commons.GeneratorAdapter)
022             */
023            public void _writeOut(BytecodeContext bc) throws BytecodeException {
024                    Attribute attr = getAttribute("expr");
025                    Expression expr=null;
026                    if(attr!=null)expr=attr.getValue();
027                    new Return(expr,-1).writeOut(bc);
028                    
029                    /*if(attr!=null)attr.getValue().writeOut(bc, Expression.MODE_REF);
030                    else ASMConstants.NULL(adapter);
031                    adapter.returnValue();
032                    */
033            }
034    
035            /**
036             *
037             * @see railo.transformer.bytecode.statement.StatementBase#setParent(railo.transformer.bytecode.Statement)
038             */
039            public void setParent(Statement parent) {
040                    super.setParent(parent);
041                    parent.setHasFlowController(true);
042            }
043    
044    }