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.Position;
006    import railo.transformer.bytecode.Statement;
007    import railo.transformer.bytecode.expression.Expression;
008    import railo.transformer.bytecode.statement.Return;
009    
010    public final class TagReturn extends TagBaseNoFinal {
011    
012            public TagReturn(Position start,Position end) {
013                    super(start,end);
014                    setHasFlowController(true);
015            }
016    
017            /**
018             *
019             * @see railo.transformer.bytecode.statement.tag.TagBase#_writeOut(org.objectweb.asm.commons.GeneratorAdapter)
020             */
021            public void _writeOut(BytecodeContext bc) throws BytecodeException {
022                    Attribute attr = getAttribute("expr");
023                    Expression expr=null;
024                    if(attr!=null)expr=attr.getValue();
025                    new Return(expr,expr.getStart(),expr.getEnd()).writeOut(bc);
026            }
027    
028            /**
029             *
030             * @see railo.transformer.bytecode.statement.StatementBase#setParent(railo.transformer.bytecode.Statement)
031             */
032            public void setParent(Statement parent) {
033                    super.setParent(parent);
034                    parent.setHasFlowController(true);
035            }
036    
037    }