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 }