001 package railo.transformer.bytecode.literal; 002 003 import org.objectweb.asm.Type; 004 005 import railo.runtime.type.scope.Scope; 006 import railo.transformer.bytecode.BytecodeContext; 007 import railo.transformer.bytecode.BytecodeException; 008 import railo.transformer.bytecode.Position; 009 import railo.transformer.bytecode.expression.ExpressionBase; 010 import railo.transformer.bytecode.expression.var.DataMember; 011 import railo.transformer.bytecode.expression.var.Variable; 012 import railo.transformer.bytecode.util.ASMConstants; 013 import railo.transformer.bytecode.util.Types; 014 015 public class Null extends ExpressionBase { 016 017 018 public Null(Position start, Position end) { 019 super(start, end); 020 } 021 022 @Override 023 public Type _writeOut(BytecodeContext bc, int mode) throws BytecodeException { 024 ASMConstants.NULL(bc.getAdapter()); 025 return Types.OBJECT; 026 } 027 028 public Variable toVariable() { 029 Variable v = new Variable(Scope.SCOPE_UNDEFINED,getStart(),getEnd()); 030 v.addMember(new DataMember(LitString.toExprString("null"))); 031 return v; 032 } 033 034 }