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 for a "this" expression. It serves as a target of some field selection or message.
9    */
10  class JThis extends JExpression {
11      /**
12       * Constructs an AST node for a "this" expression.
13       *
14       * @param line line in which the expression occurs in the source file.
15       */
16      public JThis(int line) {
17          super(line);
18      }
19  
20      /**
21       * {@inheritDoc}
22       */
23      public JExpression analyze(Context context) {
24          type = ((JClassDeclaration) context.classContext.definition()).thisType();
25          return this;
26      }
27  
28      /**
29       * {@inheritDoc}
30       */
31      public void codegen(CLEmitter output) {
32          output.addNoArgInstruction(ALOAD_0);
33      }
34  
35      /**
36       * {@inheritDoc}
37       */
38      public void toJSON(JSONElement json) {
39          JSONElement e = new JSONElement();
40          json.addChild("JThis:" + line, e);
41      }
42  }
43