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 }