001    /* This file was generated with JastAdd2 (http://jastadd.org) version R20130213 */
002    package AST;
003    
004    import java.util.HashSet;
005    import java.io.File;
006    import java.util.*;
007    import beaver.*;
008    import java.util.ArrayList;
009    import java.util.zip.*;
010    import java.io.*;
011    import java.io.FileNotFoundException;
012    import java.util.Collection;
013    /**
014     * @production ArrayTypeAccess : {@link TypeAccess} ::= <span class="component">&lt;Package:String&gt;</span> <span class="component">&lt;ID:String&gt;</span> <span class="component">{@link Access}</span>;
015     * @ast node
016     * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:25
017     */
018    public class ArrayTypeAccess extends TypeAccess implements Cloneable {
019      /**
020       * @apilevel low-level
021       */
022      public void flushCache() {
023      }
024      /**
025       * @apilevel internal
026       */
027      public void flushCollectionCache() {
028      }
029      /**
030       * @apilevel internal
031       */
032      @SuppressWarnings({"unchecked", "cast"})
033      public ArrayTypeAccess clone() throws CloneNotSupportedException {
034        ArrayTypeAccess node = (ArrayTypeAccess)super.clone();
035        node.getPackage_computed = false;
036        node.getPackage_value = null;
037        node.getID_computed = false;
038        node.getID_value = null;
039        node.decl_computed = false;
040        node.decl_value = null;
041        node.in$Circle(false);
042        node.is$Final(false);
043        return node;
044      }
045    /**
046     * @apilevel internal
047     */
048      @SuppressWarnings({"unchecked", "cast"})
049    public ArrayTypeAccess copy() {
050      
051      try {
052        ArrayTypeAccess node = (ArrayTypeAccess) clone();
053        node.parent = null;
054        if(children != null)
055          node.children = (ASTNode[]) children.clone();
056        
057        return node;
058      } catch (CloneNotSupportedException e) {
059        throw new Error("Error: clone not supported for " + getClass().getName());
060      }
061      
062    }/**
063     * Create a deep copy of the AST subtree at this node.
064     * The copy is dangling, i.e. has no parent.
065     * @return dangling copy of the subtree at this node
066     * @apilevel low-level
067     */
068      @SuppressWarnings({"unchecked", "cast"})
069    public ArrayTypeAccess fullCopy() {
070      
071      ArrayTypeAccess tree = (ArrayTypeAccess) copy();
072      if (children != null) {
073        for (int i = 0; i < children.length; ++i) {
074          
075          ASTNode child = (ASTNode) children[i];
076          if(child != null) {
077            child = child.fullCopy();
078            tree.setChild(child, i);
079          }
080        }
081      }
082      return tree;
083      
084    }  /**
085       * @ast method 
086       * @aspect NameCheck
087       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:155
088       */
089      public void nameCheck() {
090        if(decl().elementType().isUnknown())
091          error("no type named " + decl().elementType().typeName());
092      }
093      /**
094       * @ast method 
095       * @aspect PrettyPrint
096       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:490
097       */
098      public void toString(StringBuffer s) {
099        getAccess().toString(s);
100        s.append("[]");
101      }
102      /**
103       * @ast method 
104       * @aspect CreateBCode
105       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:812
106       */
107      public void createBCode(CodeGeneration gen) {
108        getAccess().createBCode(gen);
109      }
110      /**
111       * @ast method 
112       * 
113       */
114      public ArrayTypeAccess() {
115        super();
116    
117    
118      }
119      /**
120       * Initializes the child array to the correct size.
121       * Initializes List and Opt nta children.
122       * @apilevel internal
123       * @ast method
124       * @ast method 
125       * 
126       */
127      public void init$Children() {
128        children = new ASTNode[1];
129      }
130      /**
131       * @ast method 
132       * 
133       */
134      public ArrayTypeAccess(Access p0) {
135        setChild(p0, 0);
136      }
137      /**
138       * @apilevel low-level
139       * @ast method 
140       * 
141       */
142      protected int numChildren() {
143        return 1;
144      }
145      /**
146       * @apilevel internal
147       * @ast method 
148       * 
149       */
150      public boolean mayHaveRewrite() {
151        return false;
152      }
153      /**
154       * Replaces the Access child.
155       * @param node The new node to replace the Access child.
156       * @apilevel high-level
157       * @ast method 
158       * 
159       */
160      public void setAccess(Access node) {
161        setChild(node, 0);
162      }
163      /**
164       * Retrieves the Access child.
165       * @return The current node used as the Access child.
166       * @apilevel high-level
167       * @ast method 
168       * 
169       */
170      public Access getAccess() {
171        return (Access)getChild(0);
172      }
173      /**
174       * Retrieves the Access child.
175       * <p><em>This method does not invoke AST transformations.</em></p>
176       * @return The current node used as the Access child.
177       * @apilevel low-level
178       * @ast method 
179       * 
180       */
181      public Access getAccessNoTransform() {
182        return (Access)getChildNoTransform(0);
183      }
184      /**
185       * Replaces the lexeme Package.
186       * @param value The new value for the lexeme Package.
187       * @apilevel high-level
188       * @ast method 
189       * 
190       */
191      public void setPackage(String value) {
192        tokenString_Package = value;
193      }
194      /**
195       * @apilevel internal
196       * @ast method 
197       * 
198       */
199      
200      /**
201       * @apilevel internal
202       */
203      protected String tokenString_Package;
204      /**
205       * Replaces the lexeme ID.
206       * @param value The new value for the lexeme ID.
207       * @apilevel high-level
208       * @ast method 
209       * 
210       */
211      public void setID(String value) {
212        tokenString_ID = value;
213      }
214      /**
215       * @apilevel internal
216       * @ast method 
217       * 
218       */
219      
220      /**
221       * @apilevel internal
222       */
223      protected String tokenString_ID;
224      /**
225       * @apilevel internal
226       */
227      protected boolean getPackage_computed = false;
228      /**
229       * @apilevel internal
230       */
231      protected String getPackage_value;
232      /**
233       * @attribute syn nta
234       * @aspect Arrays
235       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:56
236       */
237      @SuppressWarnings({"unchecked", "cast"})
238      public String getPackage() {
239        if(getPackage_computed) {
240          return getPackage_value;
241        }
242          ASTNode$State state = state();
243      int num = state.boundariesCrossed;
244      boolean isFinal = this.is$Final();
245        getPackage_value = getPackage_compute();
246          setPackage(getPackage_value);
247      if(isFinal && num == state().boundariesCrossed){ getPackage_computed = true; }
248            return getPackage_value;
249      }
250      /**
251       * @apilevel internal
252       */
253      private String getPackage_compute() {  return getAccess().type().packageName();  }
254      /**
255       * @apilevel internal
256       */
257      protected boolean getID_computed = false;
258      /**
259       * @apilevel internal
260       */
261      protected String getID_value;
262      /**
263       * @attribute syn nta
264       * @aspect Arrays
265       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:57
266       */
267      @SuppressWarnings({"unchecked", "cast"})
268      public String getID() {
269        if(getID_computed) {
270          return getID_value;
271        }
272          ASTNode$State state = state();
273      int num = state.boundariesCrossed;
274      boolean isFinal = this.is$Final();
275        getID_value = getID_compute();
276          setID(getID_value);
277      if(isFinal && num == state().boundariesCrossed){ getID_computed = true; }
278            return getID_value;
279      }
280      /**
281       * @apilevel internal
282       */
283      private String getID_compute() {  return getAccess().type().name();  }
284      /**
285       * @attribute syn
286       * @aspect DA
287       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:235
288       */
289      public boolean isDAafter(Variable v) {
290        ASTNode$State state = state();
291        try {  return getAccess().isDAafter(v);  }
292        finally {
293        }
294      }
295      /**
296       * @attribute syn
297       * @aspect DU
298       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:694
299       */
300      public boolean isDUafter(Variable v) {
301        ASTNode$State state = state();
302        try {  return getAccess().isDUafter(v);  }
303        finally {
304        }
305      }
306      /**
307       * @apilevel internal
308       */
309      protected boolean decl_computed = false;
310      /**
311       * @apilevel internal
312       */
313      protected TypeDecl decl_value;
314      /**
315       * @attribute syn
316       * @aspect TypeScopePropagation
317       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:246
318       */
319      @SuppressWarnings({"unchecked", "cast"})
320      public TypeDecl decl() {
321        if(decl_computed) {
322          return decl_value;
323        }
324          ASTNode$State state = state();
325      int num = state.boundariesCrossed;
326      boolean isFinal = this.is$Final();
327        decl_value = decl_compute();
328      if(isFinal && num == state().boundariesCrossed){ decl_computed = true; }
329            return decl_value;
330      }
331      /**
332       * @apilevel internal
333       */
334      private TypeDecl decl_compute() {  return getAccess().type().arrayType();  }
335      /**
336       * @attribute syn
337       * @aspect PrettyPrint
338       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:800
339       */
340      public String dumpString() {
341        ASTNode$State state = state();
342        try {  return getClass().getName();  }
343        finally {
344        }
345      }
346      /**
347       * @attribute syn
348       * @aspect SyntacticClassification
349       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/SyntacticClassification.jrag:56
350       */
351      public NameType predNameType() {
352        ASTNode$State state = state();
353        try {  return NameType.AMBIGUOUS_NAME;  }
354        finally {
355        }
356      }
357      /**
358       * @attribute syn
359       * @aspect TypeHierarchyCheck
360       * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:150
361       */
362      public boolean staticContextQualifier() {
363        ASTNode$State state = state();
364        try {  return true;  }
365        finally {
366        }
367      }
368      /**
369       * @apilevel internal
370       */
371      public ASTNode rewriteTo() {
372        return super.rewriteTo();
373      }
374    }