1   // Copyright 2012- Bill Campbell, Swami Iyer and Bahar Akbal-Delibas
2   
3   package jminusminus;
4   
5   import static jminusminus.CLConstants.*;
6   
7   /**
8    * The AST node for the null literal.
9    */
10  class JLiteralNull extends JExpression {
11      /**
12       * Constructs an AST node for the null literal given its line number.
13       *
14       * @param line line in which the literal occurs in the source file.
15       */
16      public JLiteralNull(int line) {
17          super(line);
18      }
19  
20      /**
21       * {@inheritDoc}
22       */
23      public JExpression analyze(Context context) {
24          type = Type.NULLTYPE;
25          return this;
26      }
27  
28      /**
29       * {@inheritDoc}
30       */
31      public void codegen(CLEmitter output) {
32          output.addNoArgInstruction(ACONST_NULL);
33      }
34  
35      /**
36       * {@inheritDoc}
37       */
38      public void toJSON(JSONElement json) {
39          JSONElement e = new JSONElement();
40          json.addChild("JLiteralNull:" + line, e);
41          e.addAttribute("type", type == null ? "" : type.toString());
42          e.addAttribute("value", "null");
43      }
44  }
45