1   // Copyright 2012- Bill Campbell, Swami Iyer and Bahar Akbal-Delibas
2   
3   package jminusminus;
4   
5   /**
6    * The AST node for a formal parameter declaration.
7    */
8   class JFormalParameter extends JAST {
9       // Parameter name.
10      private String name;
11  
12      // Parameter type.
13      private Type type;
14  
15      /**
16       * Constructs an AST node for a formal parameter declaration.
17       *
18       * @param line line in which the parameter occurs in the source file.
19       * @param name parameter name.
20       * @param type parameter type.
21       */
22      public JFormalParameter(int line, String name, Type type) {
23          super(line);
24          this.name = name;
25          this.type = type;
26      }
27  
28      /**
29       * Returns the parameter's name.
30       *
31       * @return the parameter's name.
32       */
33      public String name() {
34          return name;
35      }
36  
37      /**
38       * Returns the parameter's type.
39       *
40       * @return the parameter's type.
41       */
42      public Type type() {
43          return type;
44      }
45  
46      /**
47       * Sets the parameter's type to the specified type, and returns the new type.
48       *
49       * @param newType the new type.
50       * @return return the new type.
51       */
52      public Type setType(Type newType) {
53          return type = newType;
54      }
55  
56      /**
57       * {@inheritDoc}
58       */
59      public JAST analyze(Context context) {
60          // Nothing here.
61          return this;
62      }
63  
64      /**
65       * {@inheritDoc}
66       */
67      public void codegen(CLEmitter output) {
68          // Nothing here.
69      }
70  }
71