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    }