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 VariableDeclaration : {@link Stmt} ::= <span class="component">{@link Modifiers}</span> <span class="component">TypeAccess:{@link Access}</span> <span class="component"><ID:String></span> <span class="component">[Init:{@link Expr}]</span>; 015 * @ast node 016 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:83 017 */ 018 public class VariableDeclaration extends Stmt implements Cloneable, SimpleSet, Iterator, Variable { 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 VariableDeclaration clone() throws CloneNotSupportedException { 034 VariableDeclaration node = (VariableDeclaration)super.clone(); 035 node.isDAafter_Variable_values = null; 036 node.isDUafter_Variable_values = null; 037 node.constant_computed = false; 038 node.constant_value = null; 039 node.sourceVariableDecl_computed = false; 040 node.sourceVariableDecl_value = null; 041 node.throwTypes_computed = false; 042 node.throwTypes_value = null; 043 node.localNum_computed = false; 044 node.in$Circle(false); 045 node.is$Final(false); 046 return node; 047 } 048 /** 049 * @apilevel internal 050 */ 051 @SuppressWarnings({"unchecked", "cast"}) 052 public VariableDeclaration copy() { 053 054 try { 055 VariableDeclaration node = (VariableDeclaration) clone(); 056 node.parent = null; 057 if(children != null) 058 node.children = (ASTNode[]) children.clone(); 059 060 return node; 061 } catch (CloneNotSupportedException e) { 062 throw new Error("Error: clone not supported for " + getClass().getName()); 063 } 064 065 }/** 066 * Create a deep copy of the AST subtree at this node. 067 * The copy is dangling, i.e. has no parent. 068 * @return dangling copy of the subtree at this node 069 * @apilevel low-level 070 */ 071 @SuppressWarnings({"unchecked", "cast"}) 072 public VariableDeclaration fullCopy() { 073 074 VariableDeclaration tree = (VariableDeclaration) copy(); 075 if (children != null) { 076 for (int i = 0; i < children.length; ++i) { 077 078 ASTNode child = (ASTNode) children[i]; 079 if(child != null) { 080 child = child.fullCopy(); 081 tree.setChild(child, i); 082 } 083 } 084 } 085 return tree; 086 087 } /** 088 * @ast method 089 * @aspect DataStructures 090 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:99 091 */ 092 public SimpleSet add(Object o) { 093 return new SimpleSetImpl().add(this).add(o); 094 } 095 /** 096 * @ast method 097 * @aspect DataStructures 098 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:103 099 */ 100 public boolean isSingleton() { return true; } 101 /** 102 * @ast method 103 * @aspect DataStructures 104 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:104 105 */ 106 public boolean isSingleton(Object o) { return contains(o); } 107 /** 108 * @ast method 109 * @aspect DataStructures 110 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:107 111 */ 112 113 private VariableDeclaration iterElem; 114 /** 115 * @ast method 116 * @aspect DataStructures 117 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:108 118 */ 119 public Iterator iterator() { iterElem = this; return this; } 120 /** 121 * @ast method 122 * @aspect DataStructures 123 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:109 124 */ 125 public boolean hasNext() { return iterElem != null; } 126 /** 127 * @ast method 128 * @aspect DataStructures 129 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:110 130 */ 131 public Object next() { Object o = iterElem; iterElem = null; return o; } 132 /** 133 * @ast method 134 * @aspect DataStructures 135 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:111 136 */ 137 public void remove() { throw new UnsupportedOperationException(); } 138 /** 139 * @ast method 140 * @aspect NodeConstructors 141 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NodeConstructors.jrag:74 142 */ 143 public VariableDeclaration(Access type, String name, Expr init) { 144 this(new Modifiers(new List()), type, name, new Opt(init)); 145 } 146 /** 147 * @ast method 148 * @aspect NodeConstructors 149 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NodeConstructors.jrag:78 150 */ 151 public VariableDeclaration(Access type, String name) { 152 this(new Modifiers(new List()), type, name, new Opt()); 153 } 154 /** 155 * @ast method 156 * @aspect PrettyPrint 157 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:164 158 */ 159 public void toString(StringBuffer s) { 160 s.append(indent()); 161 getModifiers().toString(s); 162 getTypeAccess().toString(s); 163 s.append(" " + name()); 164 if(hasInit()) { 165 s.append(" = "); 166 getInit().toString(s); 167 } 168 s.append(";"); 169 } 170 /** 171 * @ast method 172 * @aspect TypeCheck 173 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:22 174 */ 175 public void typeCheck() { 176 if(hasInit()) { 177 TypeDecl source = getInit().type(); 178 TypeDecl dest = type(); 179 if(!source.assignConversionTo(dest, getInit())) 180 error("can not assign variable " + name() + " of type " + dest.typeName() + 181 " a value of type " + source.typeName()); 182 } 183 } 184 /** 185 * @ast method 186 * @aspect CreateBCode 187 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:237 188 */ 189 public void createBCode(CodeGeneration gen) { 190 super.createBCode(gen); 191 if(hasInit()) { 192 gen.addLocalVariableEntryAtCurrentPC(name(), type().typeDescriptor(), localNum(), variableScopeEndLabel(gen)); 193 getInit().createBCode(gen); 194 getInit().type().emitAssignConvTo(gen, type()); // AssignConversion 195 type().emitStoreLocal(gen, localNum()); 196 } 197 } 198 /** 199 * @ast method 200 * @aspect UncheckedConversion 201 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/UncheckedConversion.jrag:20 202 */ 203 public void checkWarnings() { 204 if (hasInit() && !suppressWarnings("unchecked")) 205 checkUncheckedConversion(getInit().type(), type()); 206 } 207 /** 208 * @ast method 209 * 210 */ 211 public VariableDeclaration() { 212 super(); 213 214 215 } 216 /** 217 * Initializes the child array to the correct size. 218 * Initializes List and Opt nta children. 219 * @apilevel internal 220 * @ast method 221 * @ast method 222 * 223 */ 224 public void init$Children() { 225 children = new ASTNode[3]; 226 setChild(new Opt(), 2); 227 } 228 /** 229 * @ast method 230 * 231 */ 232 public VariableDeclaration(Modifiers p0, Access p1, String p2, Opt<Expr> p3) { 233 setChild(p0, 0); 234 setChild(p1, 1); 235 setID(p2); 236 setChild(p3, 2); 237 } 238 /** 239 * @ast method 240 * 241 */ 242 public VariableDeclaration(Modifiers p0, Access p1, beaver.Symbol p2, Opt<Expr> p3) { 243 setChild(p0, 0); 244 setChild(p1, 1); 245 setID(p2); 246 setChild(p3, 2); 247 } 248 /** 249 * @apilevel low-level 250 * @ast method 251 * 252 */ 253 protected int numChildren() { 254 return 3; 255 } 256 /** 257 * @apilevel internal 258 * @ast method 259 * 260 */ 261 public boolean mayHaveRewrite() { 262 return false; 263 } 264 /** 265 * Replaces the Modifiers child. 266 * @param node The new node to replace the Modifiers child. 267 * @apilevel high-level 268 * @ast method 269 * 270 */ 271 public void setModifiers(Modifiers node) { 272 setChild(node, 0); 273 } 274 /** 275 * Retrieves the Modifiers child. 276 * @return The current node used as the Modifiers child. 277 * @apilevel high-level 278 * @ast method 279 * 280 */ 281 public Modifiers getModifiers() { 282 return (Modifiers)getChild(0); 283 } 284 /** 285 * Retrieves the Modifiers child. 286 * <p><em>This method does not invoke AST transformations.</em></p> 287 * @return The current node used as the Modifiers child. 288 * @apilevel low-level 289 * @ast method 290 * 291 */ 292 public Modifiers getModifiersNoTransform() { 293 return (Modifiers)getChildNoTransform(0); 294 } 295 /** 296 * Replaces the TypeAccess child. 297 * @param node The new node to replace the TypeAccess child. 298 * @apilevel high-level 299 * @ast method 300 * 301 */ 302 public void setTypeAccess(Access node) { 303 setChild(node, 1); 304 } 305 /** 306 * Retrieves the TypeAccess child. 307 * @return The current node used as the TypeAccess child. 308 * @apilevel high-level 309 * @ast method 310 * 311 */ 312 public Access getTypeAccess() { 313 return (Access)getChild(1); 314 } 315 /** 316 * Retrieves the TypeAccess child. 317 * <p><em>This method does not invoke AST transformations.</em></p> 318 * @return The current node used as the TypeAccess child. 319 * @apilevel low-level 320 * @ast method 321 * 322 */ 323 public Access getTypeAccessNoTransform() { 324 return (Access)getChildNoTransform(1); 325 } 326 /** 327 * Replaces the lexeme ID. 328 * @param value The new value for the lexeme ID. 329 * @apilevel high-level 330 * @ast method 331 * 332 */ 333 public void setID(String value) { 334 tokenString_ID = value; 335 } 336 /** 337 * @apilevel internal 338 * @ast method 339 * 340 */ 341 342 /** 343 * @apilevel internal 344 */ 345 protected String tokenString_ID; 346 /** 347 * @ast method 348 * 349 */ 350 351 public int IDstart; 352 /** 353 * @ast method 354 * 355 */ 356 357 public int IDend; 358 /** 359 * JastAdd-internal setter for lexeme ID using the Beaver parser. 360 * @apilevel internal 361 * @ast method 362 * 363 */ 364 public void setID(beaver.Symbol symbol) { 365 if(symbol.value != null && !(symbol.value instanceof String)) 366 throw new UnsupportedOperationException("setID is only valid for String lexemes"); 367 tokenString_ID = (String)symbol.value; 368 IDstart = symbol.getStart(); 369 IDend = symbol.getEnd(); 370 } 371 /** 372 * Retrieves the value for the lexeme ID. 373 * @return The value for the lexeme ID. 374 * @apilevel high-level 375 * @ast method 376 * 377 */ 378 public String getID() { 379 return tokenString_ID != null ? tokenString_ID : ""; 380 } 381 /** 382 * Replaces the optional node for the Init child. This is the {@code Opt} node containing the child Init, not the actual child! 383 * @param opt The new node to be used as the optional node for the Init child. 384 * @apilevel low-level 385 * @ast method 386 * 387 */ 388 public void setInitOpt(Opt<Expr> opt) { 389 setChild(opt, 2); 390 } 391 /** 392 * Check whether the optional Init child exists. 393 * @return {@code true} if the optional Init child exists, {@code false} if it does not. 394 * @apilevel high-level 395 * @ast method 396 * 397 */ 398 public boolean hasInit() { 399 return getInitOpt().getNumChild() != 0; 400 } 401 /** 402 * Retrieves the (optional) Init child. 403 * @return The Init child, if it exists. Returns {@code null} otherwise. 404 * @apilevel low-level 405 * @ast method 406 * 407 */ 408 @SuppressWarnings({"unchecked", "cast"}) 409 public Expr getInit() { 410 return (Expr)getInitOpt().getChild(0); 411 } 412 /** 413 * Replaces the (optional) Init child. 414 * @param node The new node to be used as the Init child. 415 * @apilevel high-level 416 * @ast method 417 * 418 */ 419 public void setInit(Expr node) { 420 getInitOpt().setChild(node, 0); 421 } 422 /** 423 * @apilevel low-level 424 * @ast method 425 * 426 */ 427 @SuppressWarnings({"unchecked", "cast"}) 428 public Opt<Expr> getInitOpt() { 429 return (Opt<Expr>)getChild(2); 430 } 431 /** 432 * Retrieves the optional node for child Init. This is the {@code Opt} node containing the child Init, not the actual child! 433 * <p><em>This method does not invoke AST transformations.</em></p> 434 * @return The optional node for child Init. 435 * @apilevel low-level 436 * @ast method 437 * 438 */ 439 @SuppressWarnings({"unchecked", "cast"}) 440 public Opt<Expr> getInitOptNoTransform() { 441 return (Opt<Expr>)getChildNoTransform(2); 442 } 443 /** 444 * @ast method 445 * @aspect MultiCatch 446 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/MultiCatch.jrag:240 447 */ 448 449 public void nameCheck() { 450 SimpleSet decls = outerScope().lookupVariable(name()); 451 for(Iterator iter = decls.iterator(); iter.hasNext(); ) { 452 Variable var = (Variable)iter.next(); 453 if(var instanceof VariableDeclaration) { 454 VariableDeclaration decl = (VariableDeclaration)var; 455 if(decl != this && decl.enclosingBodyDecl() == enclosingBodyDecl()) 456 error("duplicate declaration of local variable " + name()); 457 } 458 // 8.4.1 459 else if(var instanceof ParameterDeclaration) { 460 ParameterDeclaration decl = (ParameterDeclaration)var; 461 if(decl.enclosingBodyDecl() == enclosingBodyDecl()) 462 error("duplicate declaration of local variable " + name()); 463 } else if(var instanceof CatchParameterDeclaration) { 464 CatchParameterDeclaration decl = (CatchParameterDeclaration)var; 465 if(decl.enclosingBodyDecl() == enclosingBodyDecl()) 466 error("duplicate declaration of local variable " + name()); 467 } 468 } 469 if(getParent().getParent() instanceof Block) { 470 Block block = (Block)getParent().getParent(); 471 for(int i = 0; i < block.getNumStmt(); i++) { 472 if(block.getStmt(i) instanceof Variable) { 473 Variable v = (Variable)block.getStmt(i); 474 if(v.name().equals(name()) && v != this) { 475 error("duplicate declaration of local variable " + name()); 476 } 477 } 478 } 479 } 480 } 481 /** 482 * @attribute syn 483 * @aspect DataStructures 484 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:97 485 */ 486 public int size() { 487 ASTNode$State state = state(); 488 try { return 1; } 489 finally { 490 } 491 } 492 /** 493 * @attribute syn 494 * @aspect DataStructures 495 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:98 496 */ 497 public boolean isEmpty() { 498 ASTNode$State state = state(); 499 try { return false; } 500 finally { 501 } 502 } 503 /** 504 * @attribute syn 505 * @aspect DataStructures 506 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:102 507 */ 508 public boolean contains(Object o) { 509 ASTNode$State state = state(); 510 try { return this == o; } 511 finally { 512 } 513 } 514 /** 515 * @attribute syn 516 * @aspect DefiniteAssignment 517 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:91 518 */ 519 public boolean isBlankFinal() { 520 ASTNode$State state = state(); 521 try { return isFinal() && (!hasInit() || !getInit().isConstant()); } 522 finally { 523 } 524 } 525 /** 526 * @attribute syn 527 * @aspect DefiniteAssignment 528 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:92 529 */ 530 public boolean isValue() { 531 ASTNode$State state = state(); 532 try { return isFinal() && hasInit() && getInit().isConstant(); } 533 finally { 534 } 535 } 536 protected java.util.Map isDAafter_Variable_values; 537 /** 538 * @attribute syn 539 * @aspect DA 540 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:492 541 */ 542 @SuppressWarnings({"unchecked", "cast"}) 543 public boolean isDAafter(Variable v) { 544 Object _parameters = v; 545 if(isDAafter_Variable_values == null) isDAafter_Variable_values = new java.util.HashMap(4); 546 if(isDAafter_Variable_values.containsKey(_parameters)) { 547 return ((Boolean)isDAafter_Variable_values.get(_parameters)).booleanValue(); 548 } 549 ASTNode$State state = state(); 550 int num = state.boundariesCrossed; 551 boolean isFinal = this.is$Final(); 552 boolean isDAafter_Variable_value = isDAafter_compute(v); 553 if(isFinal && num == state().boundariesCrossed){ isDAafter_Variable_values.put(_parameters, Boolean.valueOf(isDAafter_Variable_value)); } 554 return isDAafter_Variable_value; 555 } 556 /** 557 * @apilevel internal 558 */ 559 private boolean isDAafter_compute(Variable v) { 560 if(v == this) 561 return hasInit(); 562 return hasInit() ? getInit().isDAafter(v) : isDAbefore(v); 563 } 564 protected java.util.Map isDUafter_Variable_values; 565 /** 566 * @attribute syn 567 * @aspect DU 568 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:875 569 */ 570 @SuppressWarnings({"unchecked", "cast"}) 571 public boolean isDUafter(Variable v) { 572 Object _parameters = v; 573 if(isDUafter_Variable_values == null) isDUafter_Variable_values = new java.util.HashMap(4); 574 if(isDUafter_Variable_values.containsKey(_parameters)) { 575 return ((Boolean)isDUafter_Variable_values.get(_parameters)).booleanValue(); 576 } 577 ASTNode$State state = state(); 578 int num = state.boundariesCrossed; 579 boolean isFinal = this.is$Final(); 580 boolean isDUafter_Variable_value = isDUafter_compute(v); 581 if(isFinal && num == state().boundariesCrossed){ isDUafter_Variable_values.put(_parameters, Boolean.valueOf(isDUafter_Variable_value)); } 582 return isDUafter_Variable_value; 583 } 584 /** 585 * @apilevel internal 586 */ 587 private boolean isDUafter_compute(Variable v) { 588 if(v == this) 589 return !hasInit(); 590 return hasInit() ? getInit().isDUafter(v) : isDUbefore(v); 591 } 592 /** 593 * @attribute syn 594 * @aspect VariableScope 595 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:129 596 */ 597 public boolean declaresVariable(String name) { 598 ASTNode$State state = state(); 599 try { return name().equals(name); } 600 finally { 601 } 602 } 603 /** 604 * @attribute syn 605 * @aspect Modifiers 606 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:219 607 */ 608 public boolean isSynthetic() { 609 ASTNode$State state = state(); 610 try { return getModifiers().isSynthetic(); } 611 finally { 612 } 613 } 614 /** 615 * @attribute syn 616 * @aspect PrettyPrint 617 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:800 618 */ 619 public String dumpString() { 620 ASTNode$State state = state(); 621 try { return getClass().getName() + " [" + getID() + "]"; } 622 finally { 623 } 624 } 625 /** 626 * @attribute syn 627 * @aspect TypeAnalysis 628 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:252 629 */ 630 public TypeDecl type() { 631 ASTNode$State state = state(); 632 try { return getTypeAccess().type(); } 633 finally { 634 } 635 } 636 /** 637 * @attribute syn 638 * @aspect Variables 639 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:13 640 */ 641 public boolean isParameter() { 642 ASTNode$State state = state(); 643 try { return false; } 644 finally { 645 } 646 } 647 /** 648 * @attribute syn 649 * @aspect Variables 650 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:15 651 */ 652 public boolean isClassVariable() { 653 ASTNode$State state = state(); 654 try { return false; } 655 finally { 656 } 657 } 658 /** 659 * @attribute syn 660 * @aspect Variables 661 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:16 662 */ 663 public boolean isInstanceVariable() { 664 ASTNode$State state = state(); 665 try { return false; } 666 finally { 667 } 668 } 669 /** 670 * @attribute syn 671 * @aspect Variables 672 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:17 673 */ 674 public boolean isMethodParameter() { 675 ASTNode$State state = state(); 676 try { return false; } 677 finally { 678 } 679 } 680 /** 681 * @attribute syn 682 * @aspect Variables 683 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:18 684 */ 685 public boolean isConstructorParameter() { 686 ASTNode$State state = state(); 687 try { return false; } 688 finally { 689 } 690 } 691 /** 692 * @attribute syn 693 * @aspect Variables 694 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:19 695 */ 696 public boolean isExceptionHandlerParameter() { 697 ASTNode$State state = state(); 698 try { return false; } 699 finally { 700 } 701 } 702 /** 703 * @attribute syn 704 * @aspect Variables 705 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:20 706 */ 707 public boolean isLocalVariable() { 708 ASTNode$State state = state(); 709 try { return true; } 710 finally { 711 } 712 } 713 /** 714 * @attribute syn 715 * @aspect Variables 716 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:22 717 */ 718 public boolean isFinal() { 719 ASTNode$State state = state(); 720 try { return getModifiers().isFinal(); } 721 finally { 722 } 723 } 724 /** 725 * @attribute syn 726 * @aspect Variables 727 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:23 728 */ 729 public boolean isVolatile() { 730 ASTNode$State state = state(); 731 try { return getModifiers().isVolatile(); } 732 finally { 733 } 734 } 735 /** 736 * @attribute syn 737 * @aspect Variables 738 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:24 739 */ 740 public boolean isBlank() { 741 ASTNode$State state = state(); 742 try { return !hasInit(); } 743 finally { 744 } 745 } 746 /** 747 * @attribute syn 748 * @aspect Variables 749 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:25 750 */ 751 public boolean isStatic() { 752 ASTNode$State state = state(); 753 try { return false; } 754 finally { 755 } 756 } 757 /** 758 * @attribute syn 759 * @aspect Variables 760 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:27 761 */ 762 public String name() { 763 ASTNode$State state = state(); 764 try { return getID(); } 765 finally { 766 } 767 } 768 /** 769 * @apilevel internal 770 */ 771 protected boolean constant_computed = false; 772 /** 773 * @apilevel internal 774 */ 775 protected Constant constant_value; 776 /** 777 * @attribute syn 778 * @aspect Variables 779 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:29 780 */ 781 @SuppressWarnings({"unchecked", "cast"}) 782 public Constant constant() { 783 if(constant_computed) { 784 return constant_value; 785 } 786 ASTNode$State state = state(); 787 int num = state.boundariesCrossed; 788 boolean isFinal = this.is$Final(); 789 constant_value = constant_compute(); 790 if(isFinal && num == state().boundariesCrossed){ constant_computed = true; } 791 return constant_value; 792 } 793 /** 794 * @apilevel internal 795 */ 796 private Constant constant_compute() { return type().cast(getInit().constant()); } 797 /** 798 * @apilevel internal 799 */ 800 protected boolean sourceVariableDecl_computed = false; 801 /** 802 * @apilevel internal 803 */ 804 protected Variable sourceVariableDecl_value; 805 /** 806 * @attribute syn 807 * @aspect SourceDeclarations 808 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1520 809 */ 810 @SuppressWarnings({"unchecked", "cast"}) 811 public Variable sourceVariableDecl() { 812 if(sourceVariableDecl_computed) { 813 return sourceVariableDecl_value; 814 } 815 ASTNode$State state = state(); 816 int num = state.boundariesCrossed; 817 boolean isFinal = this.is$Final(); 818 sourceVariableDecl_value = sourceVariableDecl_compute(); 819 if(isFinal && num == state().boundariesCrossed){ sourceVariableDecl_computed = true; } 820 return sourceVariableDecl_value; 821 } 822 /** 823 * @apilevel internal 824 */ 825 private Variable sourceVariableDecl_compute() { return this; } 826 /** 827 * @apilevel internal 828 */ 829 protected boolean throwTypes_computed = false; 830 /** 831 * @apilevel internal 832 */ 833 protected Collection<TypeDecl> throwTypes_value; 834 /** 835 * @attribute syn 836 * @aspect PreciseRethrow 837 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/PreciseRethrow.jrag:17 838 */ 839 @SuppressWarnings({"unchecked", "cast"}) 840 public Collection<TypeDecl> throwTypes() { 841 if(throwTypes_computed) { 842 return throwTypes_value; 843 } 844 ASTNode$State state = state(); 845 int num = state.boundariesCrossed; 846 boolean isFinal = this.is$Final(); 847 throwTypes_value = throwTypes_compute(); 848 if(isFinal && num == state().boundariesCrossed){ throwTypes_computed = true; } 849 return throwTypes_value; 850 } 851 /** 852 * @apilevel internal 853 */ 854 private Collection<TypeDecl> throwTypes_compute() { 855 Collection<TypeDecl> tts = new LinkedList<TypeDecl>(); 856 tts.add(type()); 857 return tts; 858 } 859 /** 860 * @attribute syn 861 * @aspect PreciseRethrow 862 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/PreciseRethrow.jrag:55 863 */ 864 public boolean modifiedInScope(Variable var) { 865 ASTNode$State state = state(); 866 try { return false; } 867 finally { 868 } 869 } 870 /** 871 * @attribute syn 872 * @aspect SuppressWarnings 873 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/SuppressWarnings.jrag:10 874 */ 875 public boolean hasAnnotationSuppressWarnings(String s) { 876 ASTNode$State state = state(); 877 try { return getModifiers().hasAnnotationSuppressWarnings(s); } 878 finally { 879 } 880 } 881 /** 882 * @attribute syn 883 * @aspect SuppressWarnings 884 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/SuppressWarnings.jrag:20 885 */ 886 public boolean suppressWarnings(String type) { 887 ASTNode$State state = state(); 888 try { return hasAnnotationSuppressWarnings(type) || withinSuppressWarnings(type); } 889 finally { 890 } 891 } 892 /** 893 * @attribute inh 894 * @aspect VariableScope 895 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:21 896 */ 897 @SuppressWarnings({"unchecked", "cast"}) 898 public SimpleSet lookupVariable(String name) { 899 ASTNode$State state = state(); 900 SimpleSet lookupVariable_String_value = getParent().Define_SimpleSet_lookupVariable(this, null, name); 901 return lookupVariable_String_value; 902 } 903 /** 904 * @attribute inh 905 * @aspect NameCheck 906 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:294 907 */ 908 @SuppressWarnings({"unchecked", "cast"}) 909 public VariableScope outerScope() { 910 ASTNode$State state = state(); 911 VariableScope outerScope_value = getParent().Define_VariableScope_outerScope(this, null); 912 return outerScope_value; 913 } 914 /** 915 * @attribute inh 916 * @aspect NestedTypes 917 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:588 918 */ 919 @SuppressWarnings({"unchecked", "cast"}) 920 public TypeDecl hostType() { 921 ASTNode$State state = state(); 922 TypeDecl hostType_value = getParent().Define_TypeDecl_hostType(this, null); 923 return hostType_value; 924 } 925 /** 926 * @attribute inh 927 * @aspect CodeGeneration 928 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:42 929 */ 930 @SuppressWarnings({"unchecked", "cast"}) 931 public int variableScopeEndLabel(CodeGeneration gen) { 932 ASTNode$State state = state(); 933 int variableScopeEndLabel_CodeGeneration_value = getParent().Define_int_variableScopeEndLabel(this, null, gen); 934 return variableScopeEndLabel_CodeGeneration_value; 935 } 936 /** 937 * @apilevel internal 938 */ 939 protected boolean localNum_computed = false; 940 /** 941 * @apilevel internal 942 */ 943 protected int localNum_value; 944 /** 945 * @attribute inh 946 * @aspect LocalNum 947 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/LocalNum.jrag:11 948 */ 949 @SuppressWarnings({"unchecked", "cast"}) 950 public int localNum() { 951 if(localNum_computed) { 952 return localNum_value; 953 } 954 ASTNode$State state = state(); 955 int num = state.boundariesCrossed; 956 boolean isFinal = this.is$Final(); 957 localNum_value = getParent().Define_int_localNum(this, null); 958 if(isFinal && num == state().boundariesCrossed){ localNum_computed = true; } 959 return localNum_value; 960 } 961 /** 962 * @attribute inh 963 * @aspect SuppressWarnings 964 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/SuppressWarnings.jrag:13 965 */ 966 @SuppressWarnings({"unchecked", "cast"}) 967 public boolean withinSuppressWarnings(String s) { 968 ASTNode$State state = state(); 969 boolean withinSuppressWarnings_String_value = getParent().Define_boolean_withinSuppressWarnings(this, null, s); 970 return withinSuppressWarnings_String_value; 971 } 972 /** 973 * @attribute inh 974 * @aspect TryWithResources 975 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/TryWithResources.jrag:144 976 */ 977 @SuppressWarnings({"unchecked", "cast"}) 978 public boolean resourcePreviouslyDeclared(String name) { 979 ASTNode$State state = state(); 980 boolean resourcePreviouslyDeclared_String_value = getParent().Define_boolean_resourcePreviouslyDeclared(this, null, name); 981 return resourcePreviouslyDeclared_String_value; 982 } 983 /** 984 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:40 985 * @apilevel internal 986 */ 987 public boolean Define_boolean_isSource(ASTNode caller, ASTNode child) { 988 if(caller == getInitOptNoTransform()) { 989 return true; 990 } 991 else { return getParent().Define_boolean_isSource(this, caller); 992 } 993 } 994 /** 995 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:497 996 * @apilevel internal 997 */ 998 public boolean Define_boolean_isDAbefore(ASTNode caller, ASTNode child, Variable v) { 999 if(caller == getInitOptNoTransform()) { 1000 return isDAbefore(v); 1001 } 1002 else { return getParent().Define_boolean_isDAbefore(this, caller, v); 1003 } 1004 } 1005 /** 1006 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:880 1007 * @apilevel internal 1008 */ 1009 public boolean Define_boolean_isDUbefore(ASTNode caller, ASTNode child, Variable v) { 1010 if(caller == getInitOptNoTransform()) { 1011 return isDUbefore(v); 1012 } 1013 else { return getParent().Define_boolean_isDUbefore(this, caller, v); 1014 } 1015 } 1016 /** 1017 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:286 1018 * @apilevel internal 1019 */ 1020 public boolean Define_boolean_mayBeFinal(ASTNode caller, ASTNode child) { 1021 if(caller == getModifiersNoTransform()) { 1022 return true; 1023 } 1024 else { return getParent().Define_boolean_mayBeFinal(this, caller); 1025 } 1026 } 1027 /** 1028 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/SyntacticClassification.jrag:85 1029 * @apilevel internal 1030 */ 1031 public NameType Define_NameType_nameType(ASTNode caller, ASTNode child) { 1032 if(caller == getTypeAccessNoTransform()) { 1033 return NameType.TYPE_NAME; 1034 } 1035 else { return getParent().Define_NameType_nameType(this, caller); 1036 } 1037 } 1038 /** 1039 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:261 1040 * @apilevel internal 1041 */ 1042 public TypeDecl Define_TypeDecl_declType(ASTNode caller, ASTNode child) { 1043 if(caller == getInitOptNoTransform()) { 1044 return type(); 1045 } 1046 else { return getParent().Define_TypeDecl_declType(this, caller); 1047 } 1048 } 1049 /** 1050 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:68 1051 * @apilevel internal 1052 */ 1053 public TypeDecl Define_TypeDecl_expectedType(ASTNode caller, ASTNode child) { 1054 if(caller == getInitOptNoTransform()) { 1055 return type().componentType(); 1056 } 1057 else { return getParent().Define_TypeDecl_expectedType(this, caller); 1058 } 1059 } 1060 /** 1061 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:92 1062 * @apilevel internal 1063 */ 1064 public boolean Define_boolean_mayUseAnnotationTarget(ASTNode caller, ASTNode child, String name) { 1065 if(caller == getModifiersNoTransform()) { 1066 return name.equals("LOCAL_VARIABLE"); 1067 } 1068 else { return getParent().Define_boolean_mayUseAnnotationTarget(this, caller, name); 1069 } 1070 } 1071 /** 1072 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethodsInference.jrag:34 1073 * @apilevel internal 1074 */ 1075 public TypeDecl Define_TypeDecl_assignConvertedType(ASTNode caller, ASTNode child) { 1076 if(caller == getInitOptNoTransform()) { 1077 return type(); 1078 } 1079 else { return getParent().Define_TypeDecl_assignConvertedType(this, caller); 1080 } 1081 } 1082 /** 1083 * @apilevel internal 1084 */ 1085 public ASTNode rewriteTo() { 1086 return super.rewriteTo(); 1087 } 1088 }