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 FieldDeclaration : {@link MemberDecl} ::= <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:80 017 */ 018 public class FieldDeclaration extends MemberDecl 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 FieldDeclaration clone() throws CloneNotSupportedException { 034 FieldDeclaration node = (FieldDeclaration)super.clone(); 035 node.accessibleFrom_TypeDecl_values = null; 036 node.exceptions_computed = false; 037 node.exceptions_value = null; 038 node.isDAafter_Variable_values = null; 039 node.isDUafter_Variable_values = null; 040 node.constant_computed = false; 041 node.constant_value = null; 042 node.attributes_computed = false; 043 node.attributes_value = null; 044 node.flags_computed = false; 045 node.usesTypeVariable_computed = false; 046 node.sourceVariableDecl_computed = false; 047 node.sourceVariableDecl_value = null; 048 node.throwTypes_computed = false; 049 node.throwTypes_value = null; 050 node.in$Circle(false); 051 node.is$Final(false); 052 return node; 053 } 054 /** 055 * @apilevel internal 056 */ 057 @SuppressWarnings({"unchecked", "cast"}) 058 public FieldDeclaration copy() { 059 060 try { 061 FieldDeclaration node = (FieldDeclaration) clone(); 062 node.parent = null; 063 if(children != null) 064 node.children = (ASTNode[]) children.clone(); 065 066 return node; 067 } catch (CloneNotSupportedException e) { 068 throw new Error("Error: clone not supported for " + getClass().getName()); 069 } 070 071 }/** 072 * Create a deep copy of the AST subtree at this node. 073 * The copy is dangling, i.e. has no parent. 074 * @return dangling copy of the subtree at this node 075 * @apilevel low-level 076 */ 077 @SuppressWarnings({"unchecked", "cast"}) 078 public FieldDeclaration fullCopy() { 079 080 FieldDeclaration tree = (FieldDeclaration) copy(); 081 if (children != null) { 082 for (int i = 0; i < children.length; ++i) { 083 084 ASTNode child = (ASTNode) children[i]; 085 if(child != null) { 086 child = child.fullCopy(); 087 tree.setChild(child, i); 088 } 089 } 090 } 091 return tree; 092 093 } /** 094 * @ast method 095 * @aspect BoundNames 096 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/BoundNames.jrag:11 097 */ 098 public Access createQualifiedBoundAccess() { 099 if(isStatic()) 100 return hostType().createQualifiedAccess().qualifiesAccess(new BoundFieldAccess(this)); 101 else 102 return new ThisAccess("this").qualifiesAccess( 103 new BoundFieldAccess(this)); 104 } 105 /** 106 * @ast method 107 * @aspect BoundNames 108 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/BoundNames.jrag:86 109 */ 110 public Access createBoundFieldAccess() { 111 return createQualifiedBoundAccess(); 112 } 113 /** 114 * @ast method 115 * @aspect DataStructures 116 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:81 117 */ 118 public SimpleSet add(Object o) { 119 return new SimpleSetImpl().add(this).add(o); 120 } 121 /** 122 * @ast method 123 * @aspect DataStructures 124 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:85 125 */ 126 public boolean isSingleton() { return true; } 127 /** 128 * @ast method 129 * @aspect DataStructures 130 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:86 131 */ 132 public boolean isSingleton(Object o) { return contains(o); } 133 /** 134 * @ast method 135 * @aspect DataStructures 136 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:89 137 */ 138 139 private FieldDeclaration iterElem; 140 /** 141 * @ast method 142 * @aspect DataStructures 143 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:90 144 */ 145 public Iterator iterator() { iterElem = this; return this; } 146 /** 147 * @ast method 148 * @aspect DataStructures 149 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:91 150 */ 151 public boolean hasNext() { return iterElem != null; } 152 /** 153 * @ast method 154 * @aspect DataStructures 155 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:92 156 */ 157 public Object next() { Object o = iterElem; iterElem = null; return o; } 158 /** 159 * @ast method 160 * @aspect DataStructures 161 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:93 162 */ 163 public void remove() { throw new UnsupportedOperationException(); } 164 /** 165 * @ast method 166 * @aspect DefiniteAssignment 167 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:177 168 */ 169 public void definiteAssignment() { 170 super.definiteAssignment(); 171 if(isBlank() && isFinal() && isClassVariable()) { 172 boolean found = false; 173 TypeDecl typeDecl = hostType(); 174 for(int i = 0; i < typeDecl.getNumBodyDecl(); i++) { 175 if(typeDecl.getBodyDecl(i) instanceof StaticInitializer) { 176 StaticInitializer s = (StaticInitializer)typeDecl.getBodyDecl(i); 177 if(s.isDAafter(this)) 178 found = true; 179 } 180 181 else if(typeDecl.getBodyDecl(i) instanceof FieldDeclaration) { 182 FieldDeclaration f = (FieldDeclaration)typeDecl.getBodyDecl(i); 183 if(f.isStatic() && f.isDAafter(this)) 184 found = true; 185 } 186 187 } 188 if(!found) 189 error("blank final class variable " + name() + " in " + hostType().typeName() + " is not definitely assigned in static initializer"); 190 191 } 192 if(isBlank() && isFinal() && isInstanceVariable()) { 193 TypeDecl typeDecl = hostType(); 194 boolean found = false; 195 for(int i = 0; !found && i < typeDecl.getNumBodyDecl(); i++) { 196 if(typeDecl.getBodyDecl(i) instanceof FieldDeclaration) { 197 FieldDeclaration f = (FieldDeclaration)typeDecl.getBodyDecl(i); 198 if(!f.isStatic() && f.isDAafter(this)) 199 found = true; 200 } 201 else if(typeDecl.getBodyDecl(i) instanceof InstanceInitializer) { 202 InstanceInitializer ii = (InstanceInitializer)typeDecl.getBodyDecl(i); 203 if(ii.getBlock().isDAafter(this)) 204 found = true; 205 } 206 } 207 for(Iterator iter = typeDecl.constructors().iterator(); !found && iter.hasNext(); ) { 208 ConstructorDecl c = (ConstructorDecl)iter.next(); 209 if(!c.isDAafter(this)) { 210 error("blank final instance variable " + name() + " in " + hostType().typeName() + " is not definitely assigned after " + c.signature()); 211 } 212 } 213 } 214 if(isBlank() && hostType().isInterfaceDecl()) { 215 error("variable " + name() + " in " + hostType().typeName() + " which is an interface must have an initializer"); 216 } 217 218 } 219 /** 220 * @ast method 221 * @aspect Modifiers 222 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:114 223 */ 224 public void checkModifiers() { 225 super.checkModifiers(); 226 if(hostType().isInterfaceDecl()) { 227 if(isProtected()) 228 error("an interface field may not be protected"); 229 if(isPrivate()) 230 error("an interface field may not be private"); 231 if(isTransient()) 232 error("an interface field may not be transient"); 233 if(isVolatile()) 234 error("an interface field may not be volatile"); 235 } 236 } 237 /** 238 * @ast method 239 * @aspect NameCheck 240 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:282 241 */ 242 public void nameCheck() { 243 super.nameCheck(); 244 // 8.3 245 for(Iterator iter = hostType().memberFields(name()).iterator(); iter.hasNext(); ) { 246 Variable v = (Variable)iter.next(); 247 if(v != this && v.hostType() == hostType()) 248 error("field named " + name() + " is multiply declared in type " + hostType().typeName()); 249 } 250 251 } 252 /** 253 * @ast method 254 * @aspect NodeConstructors 255 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NodeConstructors.jrag:86 256 */ 257 public FieldDeclaration(Modifiers m, Access type, String name) { 258 this(m, type, name, new Opt()); 259 } 260 /** 261 * @ast method 262 * @aspect NodeConstructors 263 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NodeConstructors.jrag:90 264 */ 265 public FieldDeclaration(Modifiers m, Access type, String name, Expr init) { 266 this(m, type, name, new Opt(init)); 267 } 268 /** 269 * @ast method 270 * @aspect PrettyPrint 271 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:152 272 */ 273 public void toString(StringBuffer s) { 274 s.append(indent()); 275 getModifiers().toString(s); 276 getTypeAccess().toString(s); 277 s.append(" " + name()); 278 if(hasInit()) { 279 s.append(" = "); 280 getInit().toString(s); 281 } 282 s.append(";"); 283 } 284 /** 285 * @ast method 286 * @aspect TypeCheck 287 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:33 288 */ 289 public void typeCheck() { 290 if(hasInit()) { 291 TypeDecl source = getInit().type(); 292 TypeDecl dest = type(); 293 if(!source.assignConversionTo(dest, getInit())) 294 error("can not assign field " + name() + " of type " + dest.typeName() + 295 " a value of type " + source.typeName()); 296 } 297 } 298 /** 299 * @ast method 300 * @aspect VariableDeclarationTransformation 301 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:91 302 */ 303 304 // when splitting a FieldDecl into multiple FieldDeclarations, provide every FieldDeclaration with a reference 305 // to the original FieldDecl; if only a single FieldDeclaration results, no reference is stored 306 private FieldDecl fieldDecl = null; 307 /** 308 * @ast method 309 * @aspect VariableDeclarationTransformation 310 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:92 311 */ 312 public FieldDecl getFieldDecl() { 313 return fieldDecl; 314 } 315 /** 316 * @ast method 317 * @aspect VariableDeclarationTransformation 318 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:95 319 */ 320 public void setFieldDecl(FieldDecl fieldDecl) { 321 this.fieldDecl = fieldDecl; 322 } 323 /** 324 * @ast method 325 * @aspect CodeGeneration 326 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:678 327 */ 328 public void emitLoadField(CodeGeneration gen, TypeDecl typeDecl) { 329 if(hostType().isArrayDecl() && name().equals("length")) { 330 gen.emit(Bytecode.ARRAYLENGTH); 331 return; 332 } 333 String classname = typeDecl.constantPoolName(); 334 String desc = type().typeDescriptor(); 335 String name = name(); 336 int index = gen.constantPool().addFieldref(classname, name, desc); 337 if(isStatic()) 338 gen.emit(Bytecode.GETSTATIC, type().variableSize()).add2(index); 339 else 340 gen.emit(Bytecode.GETFIELD, type().variableSize() - 1).add2(index); 341 } 342 /** 343 * @ast method 344 * @aspect CodeGeneration 345 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:736 346 */ 347 public void emitStoreField(CodeGeneration gen, TypeDecl typeDecl) { 348 String classname = typeDecl.constantPoolName(); 349 String desc = type().typeDescriptor(); 350 String name = name(); 351 int index = gen.constantPool().addFieldref(classname, name, desc); 352 if(isStatic()) 353 gen.emit(Bytecode.PUTSTATIC, -type().variableSize()).add2(index); 354 else 355 gen.emit(Bytecode.PUTFIELD, -type().variableSize() - 1).add2(index); 356 } 357 /** 358 * @ast method 359 * @aspect GenerateClassfile 360 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:372 361 */ 362 public boolean clear() { 363 return false; 364 } 365 /** 366 * @ast method 367 * @aspect InnerClasses 368 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:290 369 */ 370 public MethodDecl createAccessor(TypeDecl fieldQualifier) { 371 MethodDecl m = (MethodDecl)fieldQualifier.getAccessor(this, "field_read"); 372 if(m != null) return m; 373 374 int accessorIndex = fieldQualifier.accessorCounter++; 375 Modifiers modifiers = new Modifiers(new List()); 376 modifiers.addModifier(new Modifier("static")); 377 modifiers.addModifier(new Modifier("synthetic")); 378 modifiers.addModifier(new Modifier("public")); 379 380 List parameters = new List(); 381 if(!isStatic()) 382 parameters.add(new ParameterDeclaration(fieldQualifier.createQualifiedAccess(), "that")); 383 384 m = new MethodDecl( 385 modifiers, 386 type().createQualifiedAccess(), 387 "get$" + name() + "$access$" + accessorIndex, 388 parameters, 389 new List(), 390 new Opt( 391 new Block( 392 new List().add( 393 new ReturnStmt(createAccess()) 394 ) 395 ) 396 ) 397 ); 398 m = fieldQualifier.addMemberMethod(m); 399 fieldQualifier.addAccessor(this, "field_read", m); 400 return m; 401 } 402 /** 403 * @ast method 404 * @aspect InnerClasses 405 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:323 406 */ 407 public MethodDecl createAccessorWrite(TypeDecl fieldQualifier) { 408 MethodDecl m = (MethodDecl)fieldQualifier.getAccessor(this, "field_write"); 409 if(m != null) return m; 410 411 int accessorIndex = fieldQualifier.accessorCounter++; 412 Modifiers modifiers = new Modifiers(new List()); 413 modifiers.addModifier(new Modifier("static")); 414 modifiers.addModifier(new Modifier("synthetic")); 415 modifiers.addModifier(new Modifier("public")); 416 417 List parameters = new List(); 418 if(!isStatic()) 419 parameters.add(new ParameterDeclaration(fieldQualifier.createQualifiedAccess(), "that")); 420 parameters.add(new ParameterDeclaration(type().createQualifiedAccess(), "value")); 421 422 m = new MethodDecl( 423 modifiers, 424 type().createQualifiedAccess(), 425 "set$" + name() + "$access$" + accessorIndex, 426 parameters, 427 new List(), 428 new Opt( 429 new Block( 430 new List().add( 431 new ExprStmt( 432 new AssignSimpleExpr( 433 createAccess(), 434 new VarAccess("value") 435 ) 436 ) 437 ).add( 438 new ReturnStmt( 439 new Opt( 440 new VarAccess("value") 441 ) 442 ) 443 ) 444 ) 445 ) 446 ); 447 m = fieldQualifier.addMemberMethod(m); 448 fieldQualifier.addAccessor(this, "field_write", m); 449 return m; 450 } 451 /** 452 * @ast method 453 * @aspect InnerClasses 454 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:368 455 */ 456 private Access createAccess() { 457 Access fieldAccess = new BoundFieldAccess(this); 458 return isStatic() ? fieldAccess : new VarAccess("that").qualifiesAccess(fieldAccess); 459 } 460 /** 461 * @ast method 462 * @aspect LookupParTypeDecl 463 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1295 464 */ 465 public BodyDecl substitutedBodyDecl(Parameterization parTypeDecl) { 466 FieldDeclaration f = new FieldDeclarationSubstituted( 467 (Modifiers)getModifiers().fullCopy(), 468 getTypeAccess().type().substituteReturnType(parTypeDecl), 469 getID(), 470 new Opt(), 471 this 472 ); 473 return f; 474 } 475 /** 476 * @ast method 477 * @aspect UncheckedConversion 478 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/UncheckedConversion.jrag:25 479 */ 480 public void checkWarnings() { 481 if (hasInit() && !suppressWarnings("unchecked")) 482 checkUncheckedConversion(getInit().type(), type()); 483 } 484 /** 485 * @ast method 486 * 487 */ 488 public FieldDeclaration() { 489 super(); 490 491 492 } 493 /** 494 * Initializes the child array to the correct size. 495 * Initializes List and Opt nta children. 496 * @apilevel internal 497 * @ast method 498 * @ast method 499 * 500 */ 501 public void init$Children() { 502 children = new ASTNode[3]; 503 setChild(new Opt(), 2); 504 } 505 /** 506 * @ast method 507 * 508 */ 509 public FieldDeclaration(Modifiers p0, Access p1, String p2, Opt<Expr> p3) { 510 setChild(p0, 0); 511 setChild(p1, 1); 512 setID(p2); 513 setChild(p3, 2); 514 } 515 /** 516 * @ast method 517 * 518 */ 519 public FieldDeclaration(Modifiers p0, Access p1, beaver.Symbol p2, Opt<Expr> p3) { 520 setChild(p0, 0); 521 setChild(p1, 1); 522 setID(p2); 523 setChild(p3, 2); 524 } 525 /** 526 * @apilevel low-level 527 * @ast method 528 * 529 */ 530 protected int numChildren() { 531 return 3; 532 } 533 /** 534 * @apilevel internal 535 * @ast method 536 * 537 */ 538 public boolean mayHaveRewrite() { 539 return false; 540 } 541 /** 542 * Replaces the Modifiers child. 543 * @param node The new node to replace the Modifiers child. 544 * @apilevel high-level 545 * @ast method 546 * 547 */ 548 public void setModifiers(Modifiers node) { 549 setChild(node, 0); 550 } 551 /** 552 * Retrieves the Modifiers child. 553 * @return The current node used as the Modifiers child. 554 * @apilevel high-level 555 * @ast method 556 * 557 */ 558 public Modifiers getModifiers() { 559 return (Modifiers)getChild(0); 560 } 561 /** 562 * Retrieves the Modifiers child. 563 * <p><em>This method does not invoke AST transformations.</em></p> 564 * @return The current node used as the Modifiers child. 565 * @apilevel low-level 566 * @ast method 567 * 568 */ 569 public Modifiers getModifiersNoTransform() { 570 return (Modifiers)getChildNoTransform(0); 571 } 572 /** 573 * Replaces the TypeAccess child. 574 * @param node The new node to replace the TypeAccess child. 575 * @apilevel high-level 576 * @ast method 577 * 578 */ 579 public void setTypeAccess(Access node) { 580 setChild(node, 1); 581 } 582 /** 583 * Retrieves the TypeAccess child. 584 * @return The current node used as the TypeAccess child. 585 * @apilevel high-level 586 * @ast method 587 * 588 */ 589 public Access getTypeAccess() { 590 return (Access)getChild(1); 591 } 592 /** 593 * Retrieves the TypeAccess child. 594 * <p><em>This method does not invoke AST transformations.</em></p> 595 * @return The current node used as the TypeAccess child. 596 * @apilevel low-level 597 * @ast method 598 * 599 */ 600 public Access getTypeAccessNoTransform() { 601 return (Access)getChildNoTransform(1); 602 } 603 /** 604 * Replaces the lexeme ID. 605 * @param value The new value for the lexeme ID. 606 * @apilevel high-level 607 * @ast method 608 * 609 */ 610 public void setID(String value) { 611 tokenString_ID = value; 612 } 613 /** 614 * @apilevel internal 615 * @ast method 616 * 617 */ 618 619 /** 620 * @apilevel internal 621 */ 622 protected String tokenString_ID; 623 /** 624 * @ast method 625 * 626 */ 627 628 public int IDstart; 629 /** 630 * @ast method 631 * 632 */ 633 634 public int IDend; 635 /** 636 * JastAdd-internal setter for lexeme ID using the Beaver parser. 637 * @apilevel internal 638 * @ast method 639 * 640 */ 641 public void setID(beaver.Symbol symbol) { 642 if(symbol.value != null && !(symbol.value instanceof String)) 643 throw new UnsupportedOperationException("setID is only valid for String lexemes"); 644 tokenString_ID = (String)symbol.value; 645 IDstart = symbol.getStart(); 646 IDend = symbol.getEnd(); 647 } 648 /** 649 * Retrieves the value for the lexeme ID. 650 * @return The value for the lexeme ID. 651 * @apilevel high-level 652 * @ast method 653 * 654 */ 655 public String getID() { 656 return tokenString_ID != null ? tokenString_ID : ""; 657 } 658 /** 659 * Replaces the optional node for the Init child. This is the {@code Opt} node containing the child Init, not the actual child! 660 * @param opt The new node to be used as the optional node for the Init child. 661 * @apilevel low-level 662 * @ast method 663 * 664 */ 665 public void setInitOpt(Opt<Expr> opt) { 666 setChild(opt, 2); 667 } 668 /** 669 * Check whether the optional Init child exists. 670 * @return {@code true} if the optional Init child exists, {@code false} if it does not. 671 * @apilevel high-level 672 * @ast method 673 * 674 */ 675 public boolean hasInit() { 676 return getInitOpt().getNumChild() != 0; 677 } 678 /** 679 * Retrieves the (optional) Init child. 680 * @return The Init child, if it exists. Returns {@code null} otherwise. 681 * @apilevel low-level 682 * @ast method 683 * 684 */ 685 @SuppressWarnings({"unchecked", "cast"}) 686 public Expr getInit() { 687 return (Expr)getInitOpt().getChild(0); 688 } 689 /** 690 * Replaces the (optional) Init child. 691 * @param node The new node to be used as the Init child. 692 * @apilevel high-level 693 * @ast method 694 * 695 */ 696 public void setInit(Expr node) { 697 getInitOpt().setChild(node, 0); 698 } 699 /** 700 * @apilevel low-level 701 * @ast method 702 * 703 */ 704 @SuppressWarnings({"unchecked", "cast"}) 705 public Opt<Expr> getInitOpt() { 706 return (Opt<Expr>)getChild(2); 707 } 708 /** 709 * Retrieves the optional node for child Init. This is the {@code Opt} node containing the child Init, not the actual child! 710 * <p><em>This method does not invoke AST transformations.</em></p> 711 * @return The optional node for child Init. 712 * @apilevel low-level 713 * @ast method 714 * 715 */ 716 @SuppressWarnings({"unchecked", "cast"}) 717 public Opt<Expr> getInitOptNoTransform() { 718 return (Opt<Expr>)getChildNoTransform(2); 719 } 720 /** 721 * @ast method 722 * @aspect Attributes 723 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Attributes.jrag:183 724 */ 725 private Collection refined_Attributes_FieldDeclaration_attributes() 726 { 727 ArrayList l = new ArrayList(); 728 if(isFinal() && isConstant() && (type().isPrimitive() || type().isString())) 729 l.add(new ConstantValueAttribute(hostType().constantPool(), this)); 730 return l; 731 } 732 /** 733 * @ast method 734 * @aspect AnnotationsCodegen 735 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/AnnotationsCodegen.jrag:17 736 */ 737 private Collection refined_AnnotationsCodegen_FieldDeclaration_attributes() 738 { 739 Collection c = refined_Attributes_FieldDeclaration_attributes(); 740 getModifiers().addRuntimeVisibleAnnotationsAttribute(c); 741 getModifiers().addRuntimeInvisibleAnnotationsAttribute(c); 742 return c; 743 } 744 /** 745 * @attribute syn 746 * @aspect ConstantExpression 747 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:332 748 */ 749 public boolean isConstant() { 750 ASTNode$State state = state(); 751 try { return isFinal() && hasInit() && getInit().isConstant() && (type() instanceof PrimitiveType || type().isString()); } 752 finally { 753 } 754 } 755 protected java.util.Map accessibleFrom_TypeDecl_values; 756 /** 757 * @attribute syn 758 * @aspect AccessControl 759 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/AccessControl.jrag:109 760 */ 761 @SuppressWarnings({"unchecked", "cast"}) 762 public boolean accessibleFrom(TypeDecl type) { 763 Object _parameters = type; 764 if(accessibleFrom_TypeDecl_values == null) accessibleFrom_TypeDecl_values = new java.util.HashMap(4); 765 if(accessibleFrom_TypeDecl_values.containsKey(_parameters)) { 766 return ((Boolean)accessibleFrom_TypeDecl_values.get(_parameters)).booleanValue(); 767 } 768 ASTNode$State state = state(); 769 int num = state.boundariesCrossed; 770 boolean isFinal = this.is$Final(); 771 boolean accessibleFrom_TypeDecl_value = accessibleFrom_compute(type); 772 if(isFinal && num == state().boundariesCrossed){ accessibleFrom_TypeDecl_values.put(_parameters, Boolean.valueOf(accessibleFrom_TypeDecl_value)); } 773 return accessibleFrom_TypeDecl_value; 774 } 775 /** 776 * @apilevel internal 777 */ 778 private boolean accessibleFrom_compute(TypeDecl type) { 779 if(isPublic()) 780 return true; 781 else if(isProtected()) { 782 if(hostPackage().equals(type.hostPackage())) 783 return true; 784 if(type.withinBodyThatSubclasses(hostType()) != null) 785 return true; 786 return false; 787 } 788 else if(isPrivate()) 789 return hostType().topLevelType() == type.topLevelType(); 790 else 791 return hostPackage().equals(type.hostPackage()); 792 } 793 /** 794 * @apilevel internal 795 */ 796 protected boolean exceptions_computed = false; 797 /** 798 * @apilevel internal 799 */ 800 protected Collection exceptions_value; 801 /** 802 * @attribute syn 803 * @aspect AnonymousClasses 804 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/AnonymousClasses.jrag:178 805 */ 806 @SuppressWarnings({"unchecked", "cast"}) 807 public Collection exceptions() { 808 if(exceptions_computed) { 809 return exceptions_value; 810 } 811 ASTNode$State state = state(); 812 int num = state.boundariesCrossed; 813 boolean isFinal = this.is$Final(); 814 exceptions_value = exceptions_compute(); 815 if(isFinal && num == state().boundariesCrossed){ exceptions_computed = true; } 816 return exceptions_value; 817 } 818 /** 819 * @apilevel internal 820 */ 821 private Collection exceptions_compute() { 822 HashSet set = new HashSet(); 823 if(isInstanceVariable() && hasInit()) { 824 collectExceptions(set, this); 825 for(Iterator iter = set.iterator(); iter.hasNext(); ) { 826 TypeDecl typeDecl = (TypeDecl)iter.next(); 827 if(!getInit().reachedException(typeDecl)) 828 iter.remove(); 829 } 830 } 831 return set; 832 } 833 /** 834 * @attribute syn 835 * @aspect DataStructures 836 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:79 837 */ 838 public int size() { 839 ASTNode$State state = state(); 840 try { return 1; } 841 finally { 842 } 843 } 844 /** 845 * @attribute syn 846 * @aspect DataStructures 847 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:80 848 */ 849 public boolean isEmpty() { 850 ASTNode$State state = state(); 851 try { return false; } 852 finally { 853 } 854 } 855 /** 856 * @attribute syn 857 * @aspect DataStructures 858 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:84 859 */ 860 public boolean contains(Object o) { 861 ASTNode$State state = state(); 862 try { return this == o; } 863 finally { 864 } 865 } 866 protected java.util.Map isDAafter_Variable_values; 867 /** 868 * @attribute syn 869 * @aspect DA 870 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:314 871 */ 872 @SuppressWarnings({"unchecked", "cast"}) 873 public boolean isDAafter(Variable v) { 874 Object _parameters = v; 875 if(isDAafter_Variable_values == null) isDAafter_Variable_values = new java.util.HashMap(4); 876 if(isDAafter_Variable_values.containsKey(_parameters)) { 877 return ((Boolean)isDAafter_Variable_values.get(_parameters)).booleanValue(); 878 } 879 ASTNode$State state = state(); 880 int num = state.boundariesCrossed; 881 boolean isFinal = this.is$Final(); 882 boolean isDAafter_Variable_value = isDAafter_compute(v); 883 if(isFinal && num == state().boundariesCrossed){ isDAafter_Variable_values.put(_parameters, Boolean.valueOf(isDAafter_Variable_value)); } 884 return isDAafter_Variable_value; 885 } 886 /** 887 * @apilevel internal 888 */ 889 private boolean isDAafter_compute(Variable v) { 890 if(v == this) 891 return hasInit(); 892 return hasInit() ? getInit().isDAafter(v) : isDAbefore(v); 893 } 894 protected java.util.Map isDUafter_Variable_values; 895 /** 896 * @attribute syn 897 * @aspect DU 898 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:771 899 */ 900 @SuppressWarnings({"unchecked", "cast"}) 901 public boolean isDUafter(Variable v) { 902 Object _parameters = v; 903 if(isDUafter_Variable_values == null) isDUafter_Variable_values = new java.util.HashMap(4); 904 if(isDUafter_Variable_values.containsKey(_parameters)) { 905 return ((Boolean)isDUafter_Variable_values.get(_parameters)).booleanValue(); 906 } 907 ASTNode$State state = state(); 908 int num = state.boundariesCrossed; 909 boolean isFinal = this.is$Final(); 910 boolean isDUafter_Variable_value = isDUafter_compute(v); 911 if(isFinal && num == state().boundariesCrossed){ isDUafter_Variable_values.put(_parameters, Boolean.valueOf(isDUafter_Variable_value)); } 912 return isDUafter_Variable_value; 913 } 914 /** 915 * @apilevel internal 916 */ 917 private boolean isDUafter_compute(Variable v) { 918 if(v == this) 919 return !hasInit(); 920 return hasInit() ? getInit().isDUafter(v) : isDUbefore(v); 921 } 922 /** 923 * @attribute syn 924 * @aspect Modifiers 925 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:214 926 */ 927 public boolean isSynthetic() { 928 ASTNode$State state = state(); 929 try { return getModifiers().isSynthetic(); } 930 finally { 931 } 932 } 933 /** 934 * @attribute syn 935 * @aspect Modifiers 936 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:239 937 */ 938 public boolean isPublic() { 939 ASTNode$State state = state(); 940 try { return getModifiers().isPublic() || hostType().isInterfaceDecl(); } 941 finally { 942 } 943 } 944 /** 945 * @attribute syn 946 * @aspect Modifiers 947 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:240 948 */ 949 public boolean isPrivate() { 950 ASTNode$State state = state(); 951 try { return getModifiers().isPrivate(); } 952 finally { 953 } 954 } 955 /** 956 * @attribute syn 957 * @aspect Modifiers 958 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:241 959 */ 960 public boolean isProtected() { 961 ASTNode$State state = state(); 962 try { return getModifiers().isProtected(); } 963 finally { 964 } 965 } 966 /** 967 * @attribute syn 968 * @aspect Modifiers 969 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:242 970 */ 971 public boolean isStatic() { 972 ASTNode$State state = state(); 973 try { return getModifiers().isStatic() || hostType().isInterfaceDecl(); } 974 finally { 975 } 976 } 977 /** 978 * @attribute syn 979 * @aspect Modifiers 980 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:244 981 */ 982 public boolean isFinal() { 983 ASTNode$State state = state(); 984 try { return getModifiers().isFinal() || hostType().isInterfaceDecl(); } 985 finally { 986 } 987 } 988 /** 989 * @attribute syn 990 * @aspect Modifiers 991 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:245 992 */ 993 public boolean isTransient() { 994 ASTNode$State state = state(); 995 try { return getModifiers().isTransient(); } 996 finally { 997 } 998 } 999 /** 1000 * @attribute syn 1001 * @aspect Modifiers 1002 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:246 1003 */ 1004 public boolean isVolatile() { 1005 ASTNode$State state = state(); 1006 try { return getModifiers().isVolatile(); } 1007 finally { 1008 } 1009 } 1010 /** 1011 * @attribute syn 1012 * @aspect PrettyPrint 1013 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:800 1014 */ 1015 public String dumpString() { 1016 ASTNode$State state = state(); 1017 try { return getClass().getName() + " [" + getID() + "]"; } 1018 finally { 1019 } 1020 } 1021 /** 1022 * @attribute syn 1023 * @aspect TypeAnalysis 1024 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:251 1025 */ 1026 public TypeDecl type() { 1027 ASTNode$State state = state(); 1028 try { return getTypeAccess().type(); } 1029 finally { 1030 } 1031 } 1032 /** 1033 * @attribute syn 1034 * @aspect TypeAnalysis 1035 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:271 1036 */ 1037 public boolean isVoid() { 1038 ASTNode$State state = state(); 1039 try { return type().isVoid(); } 1040 finally { 1041 } 1042 } 1043 /** 1044 * @attribute syn 1045 * @aspect Variables 1046 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:32 1047 */ 1048 public boolean isParameter() { 1049 ASTNode$State state = state(); 1050 try { return false; } 1051 finally { 1052 } 1053 } 1054 /** 1055 * @attribute syn 1056 * @aspect Variables 1057 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:34 1058 */ 1059 public boolean isClassVariable() { 1060 ASTNode$State state = state(); 1061 try { return isStatic() || hostType().isInterfaceDecl(); } 1062 finally { 1063 } 1064 } 1065 /** 1066 * @attribute syn 1067 * @aspect Variables 1068 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:35 1069 */ 1070 public boolean isInstanceVariable() { 1071 ASTNode$State state = state(); 1072 try { return (hostType().isClassDecl() || hostType().isAnonymous() )&& !isStatic(); } 1073 finally { 1074 } 1075 } 1076 /** 1077 * @attribute syn 1078 * @aspect Variables 1079 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:36 1080 */ 1081 public boolean isMethodParameter() { 1082 ASTNode$State state = state(); 1083 try { return false; } 1084 finally { 1085 } 1086 } 1087 /** 1088 * @attribute syn 1089 * @aspect Variables 1090 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:37 1091 */ 1092 public boolean isConstructorParameter() { 1093 ASTNode$State state = state(); 1094 try { return false; } 1095 finally { 1096 } 1097 } 1098 /** 1099 * @attribute syn 1100 * @aspect Variables 1101 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:38 1102 */ 1103 public boolean isExceptionHandlerParameter() { 1104 ASTNode$State state = state(); 1105 try { return false; } 1106 finally { 1107 } 1108 } 1109 /** 1110 * @attribute syn 1111 * @aspect Variables 1112 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:39 1113 */ 1114 public boolean isLocalVariable() { 1115 ASTNode$State state = state(); 1116 try { return false; } 1117 finally { 1118 } 1119 } 1120 /** 1121 * @attribute syn 1122 * @aspect Variables 1123 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:41 1124 */ 1125 public boolean isBlank() { 1126 ASTNode$State state = state(); 1127 try { return !hasInit(); } 1128 finally { 1129 } 1130 } 1131 /** 1132 * @attribute syn 1133 * @aspect Variables 1134 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:43 1135 */ 1136 public String name() { 1137 ASTNode$State state = state(); 1138 try { return getID(); } 1139 finally { 1140 } 1141 } 1142 /** 1143 * @apilevel internal 1144 */ 1145 protected boolean constant_computed = false; 1146 /** 1147 * @apilevel internal 1148 */ 1149 protected Constant constant_value; 1150 /** 1151 * @attribute syn 1152 * @aspect Variables 1153 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/VariableDeclaration.jrag:44 1154 */ 1155 @SuppressWarnings({"unchecked", "cast"}) 1156 public Constant constant() { 1157 if(constant_computed) { 1158 return constant_value; 1159 } 1160 ASTNode$State state = state(); 1161 int num = state.boundariesCrossed; 1162 boolean isFinal = this.is$Final(); 1163 constant_value = constant_compute(); 1164 if(isFinal && num == state().boundariesCrossed){ constant_computed = true; } 1165 return constant_value; 1166 } 1167 /** 1168 * @apilevel internal 1169 */ 1170 private Constant constant_compute() { return type().cast(getInit().constant()); } 1171 /** 1172 * @apilevel internal 1173 */ 1174 protected boolean attributes_computed = false; 1175 /** 1176 * @apilevel internal 1177 */ 1178 protected Collection attributes_value; 1179 /** 1180 * @attribute syn 1181 * @aspect GenericsCodegen 1182 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:324 1183 */ 1184 @SuppressWarnings({"unchecked", "cast"}) 1185 public Collection attributes() { 1186 if(attributes_computed) { 1187 return attributes_value; 1188 } 1189 ASTNode$State state = state(); 1190 int num = state.boundariesCrossed; 1191 boolean isFinal = this.is$Final(); 1192 attributes_value = attributes_compute(); 1193 if(isFinal && num == state().boundariesCrossed){ attributes_computed = true; } 1194 return attributes_value; 1195 } 1196 /** 1197 * @apilevel internal 1198 */ 1199 private Collection attributes_compute() { 1200 Collection c = refined_AnnotationsCodegen_FieldDeclaration_attributes(); 1201 if(needsSignatureAttribute()) 1202 c.add(new SignatureAttribute(hostType().constantPool(), type().fieldTypeSignature())); 1203 return c; 1204 } 1205 /** 1206 * @apilevel internal 1207 */ 1208 protected boolean flags_computed = false; 1209 /** 1210 * @apilevel internal 1211 */ 1212 protected int flags_value; 1213 /** 1214 * @attribute syn 1215 * @aspect Flags 1216 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Flags.jrag:76 1217 */ 1218 @SuppressWarnings({"unchecked", "cast"}) 1219 public int flags() { 1220 if(flags_computed) { 1221 return flags_value; 1222 } 1223 ASTNode$State state = state(); 1224 int num = state.boundariesCrossed; 1225 boolean isFinal = this.is$Final(); 1226 flags_value = flags_compute(); 1227 if(isFinal && num == state().boundariesCrossed){ flags_computed = true; } 1228 return flags_value; 1229 } 1230 /** 1231 * @apilevel internal 1232 */ 1233 private int flags_compute() { 1234 int res = 0; 1235 if(isPublic()) res |= Modifiers.ACC_PUBLIC; 1236 if(isPrivate()) res |= Modifiers.ACC_PRIVATE; 1237 if(isProtected()) res |= Modifiers.ACC_PROTECTED; 1238 if(isStatic()) res |= Modifiers.ACC_STATIC; 1239 if(isFinal()) res |= Modifiers.ACC_FINAL; 1240 if(isVolatile()) res |= Modifiers.ACC_VOLATILE; 1241 if(isTransient()) res |= Modifiers.ACC_TRANSIENT; 1242 return res; 1243 } 1244 /** 1245 * @attribute syn 1246 * @aspect GenerateClassfile 1247 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:293 1248 */ 1249 public boolean isBytecodeField() { 1250 ASTNode$State state = state(); 1251 try { return true; } 1252 finally { 1253 } 1254 } 1255 /** 1256 * @attribute syn 1257 * @aspect GenerateClassfile 1258 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:325 1259 */ 1260 public boolean flush() { 1261 ASTNode$State state = state(); 1262 try { return false; } 1263 finally { 1264 } 1265 } 1266 /** 1267 * @attribute syn 1268 * @aspect Annotations 1269 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:283 1270 */ 1271 public boolean hasAnnotationSuppressWarnings(String s) { 1272 ASTNode$State state = state(); 1273 try { return getModifiers().hasAnnotationSuppressWarnings(s); } 1274 finally { 1275 } 1276 } 1277 /** 1278 * @attribute syn 1279 * @aspect Annotations 1280 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:325 1281 */ 1282 public boolean isDeprecated() { 1283 ASTNode$State state = state(); 1284 try { return getModifiers().hasDeprecatedAnnotation(); } 1285 finally { 1286 } 1287 } 1288 /** 1289 * @apilevel internal 1290 */ 1291 protected boolean usesTypeVariable_computed = false; 1292 /** 1293 * @apilevel internal 1294 */ 1295 protected boolean usesTypeVariable_value; 1296 /** 1297 * @attribute syn 1298 * @aspect LookupParTypeDecl 1299 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1065 1300 */ 1301 @SuppressWarnings({"unchecked", "cast"}) 1302 public boolean usesTypeVariable() { 1303 if(usesTypeVariable_computed) { 1304 return usesTypeVariable_value; 1305 } 1306 ASTNode$State state = state(); 1307 int num = state.boundariesCrossed; 1308 boolean isFinal = this.is$Final(); 1309 usesTypeVariable_value = usesTypeVariable_compute(); 1310 if(isFinal && num == state().boundariesCrossed){ usesTypeVariable_computed = true; } 1311 return usesTypeVariable_value; 1312 } 1313 /** 1314 * @apilevel internal 1315 */ 1316 private boolean usesTypeVariable_compute() { return getTypeAccess().usesTypeVariable(); } 1317 /** 1318 * @apilevel internal 1319 */ 1320 protected boolean sourceVariableDecl_computed = false; 1321 /** 1322 * @apilevel internal 1323 */ 1324 protected Variable sourceVariableDecl_value; 1325 /** 1326 * @attribute syn 1327 * @aspect SourceDeclarations 1328 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1521 1329 */ 1330 @SuppressWarnings({"unchecked", "cast"}) 1331 public Variable sourceVariableDecl() { 1332 if(sourceVariableDecl_computed) { 1333 return sourceVariableDecl_value; 1334 } 1335 ASTNode$State state = state(); 1336 int num = state.boundariesCrossed; 1337 boolean isFinal = this.is$Final(); 1338 sourceVariableDecl_value = sourceVariableDecl_compute(); 1339 if(isFinal && num == state().boundariesCrossed){ sourceVariableDecl_computed = true; } 1340 return sourceVariableDecl_value; 1341 } 1342 /** 1343 * @apilevel internal 1344 */ 1345 private Variable sourceVariableDecl_compute() { return this; } 1346 /** 1347 * @attribute syn 1348 * @aspect GenericsParTypeDecl 1349 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsParTypeDecl.jrag:67 1350 */ 1351 public boolean visibleTypeParameters() { 1352 ASTNode$State state = state(); 1353 try { return !isStatic(); } 1354 finally { 1355 } 1356 } 1357 /** 1358 * @attribute syn 1359 * @aspect GenericsCodegen 1360 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:53 1361 */ 1362 public FieldDeclaration erasedField() { 1363 ASTNode$State state = state(); 1364 try { return this; } 1365 finally { 1366 } 1367 } 1368 /** 1369 * @attribute syn 1370 * @aspect GenericsCodegen 1371 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:362 1372 */ 1373 public boolean needsSignatureAttribute() { 1374 ASTNode$State state = state(); 1375 try { return type().needsSignatureAttribute(); } 1376 finally { 1377 } 1378 } 1379 /** 1380 * @apilevel internal 1381 */ 1382 protected boolean throwTypes_computed = false; 1383 /** 1384 * @apilevel internal 1385 */ 1386 protected Collection<TypeDecl> throwTypes_value; 1387 /** 1388 * @attribute syn 1389 * @aspect PreciseRethrow 1390 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/PreciseRethrow.jrag:22 1391 */ 1392 @SuppressWarnings({"unchecked", "cast"}) 1393 public Collection<TypeDecl> throwTypes() { 1394 if(throwTypes_computed) { 1395 return throwTypes_value; 1396 } 1397 ASTNode$State state = state(); 1398 int num = state.boundariesCrossed; 1399 boolean isFinal = this.is$Final(); 1400 throwTypes_value = throwTypes_compute(); 1401 if(isFinal && num == state().boundariesCrossed){ throwTypes_computed = true; } 1402 return throwTypes_value; 1403 } 1404 /** 1405 * @apilevel internal 1406 */ 1407 private Collection<TypeDecl> throwTypes_compute() { 1408 Collection<TypeDecl> tts = new LinkedList<TypeDecl>(); 1409 tts.add(type()); 1410 return tts; 1411 } 1412 /** 1413 * @return true if the modifier list includes the SafeVarargs annotation 1414 * @attribute syn 1415 * @aspect SafeVarargs 1416 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/SafeVarargs.jrag:20 1417 */ 1418 public boolean hasAnnotationSafeVarargs() { 1419 ASTNode$State state = state(); 1420 try { return getModifiers().hasAnnotationSafeVarargs(); } 1421 finally { 1422 } 1423 } 1424 /** 1425 * @attribute syn 1426 * @aspect SuppressWarnings 1427 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/SuppressWarnings.jrag:22 1428 */ 1429 public boolean suppressWarnings(String type) { 1430 ASTNode$State state = state(); 1431 try { return hasAnnotationSuppressWarnings(type) || withinSuppressWarnings(type); } 1432 finally { 1433 } 1434 } 1435 /** 1436 * @attribute inh 1437 * @aspect ExceptionHandling 1438 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:48 1439 */ 1440 @SuppressWarnings({"unchecked", "cast"}) 1441 public boolean handlesException(TypeDecl exceptionType) { 1442 ASTNode$State state = state(); 1443 boolean handlesException_TypeDecl_value = getParent().Define_boolean_handlesException(this, null, exceptionType); 1444 return handlesException_TypeDecl_value; 1445 } 1446 /** 1447 * @attribute inh 1448 * @aspect SuppressWarnings 1449 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/SuppressWarnings.jrag:14 1450 */ 1451 @SuppressWarnings({"unchecked", "cast"}) 1452 public boolean withinSuppressWarnings(String s) { 1453 ASTNode$State state = state(); 1454 boolean withinSuppressWarnings_String_value = getParent().Define_boolean_withinSuppressWarnings(this, null, s); 1455 return withinSuppressWarnings_String_value; 1456 } 1457 /** 1458 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:39 1459 * @apilevel internal 1460 */ 1461 public boolean Define_boolean_isSource(ASTNode caller, ASTNode child) { 1462 if(caller == getInitOptNoTransform()) { 1463 return true; 1464 } 1465 else { return getParent().Define_boolean_isSource(this, caller); 1466 } 1467 } 1468 /** 1469 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:320 1470 * @apilevel internal 1471 */ 1472 public boolean Define_boolean_isDAbefore(ASTNode caller, ASTNode child, Variable v) { 1473 if(caller == getInitOptNoTransform()){ 1474 return isDAbefore(v); 1475 } 1476 else { return getParent().Define_boolean_isDAbefore(this, caller, v); 1477 } 1478 } 1479 /** 1480 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:166 1481 * @apilevel internal 1482 */ 1483 public boolean Define_boolean_handlesException(ASTNode caller, ASTNode child, TypeDecl exceptionType) { 1484 if(caller == getInitOptNoTransform()){ 1485 if(hostType().isAnonymous()) 1486 return true; 1487 if(!exceptionType.isUncheckedException()) 1488 return true; 1489 for(Iterator iter = hostType().constructors().iterator(); iter.hasNext(); ) { 1490 ConstructorDecl decl = (ConstructorDecl)iter.next(); 1491 if(!decl.throwsException(exceptionType)) 1492 return false; 1493 } 1494 return true; 1495 } 1496 else { return getParent().Define_boolean_handlesException(this, caller, exceptionType); 1497 } 1498 } 1499 /** 1500 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:262 1501 * @apilevel internal 1502 */ 1503 public boolean Define_boolean_mayBePublic(ASTNode caller, ASTNode child) { 1504 if(caller == getModifiersNoTransform()) { 1505 return true; 1506 } 1507 else { return getParent().Define_boolean_mayBePublic(this, caller); 1508 } 1509 } 1510 /** 1511 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:263 1512 * @apilevel internal 1513 */ 1514 public boolean Define_boolean_mayBeProtected(ASTNode caller, ASTNode child) { 1515 if(caller == getModifiersNoTransform()) { 1516 return true; 1517 } 1518 else { return getParent().Define_boolean_mayBeProtected(this, caller); 1519 } 1520 } 1521 /** 1522 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:264 1523 * @apilevel internal 1524 */ 1525 public boolean Define_boolean_mayBePrivate(ASTNode caller, ASTNode child) { 1526 if(caller == getModifiersNoTransform()) { 1527 return true; 1528 } 1529 else { return getParent().Define_boolean_mayBePrivate(this, caller); 1530 } 1531 } 1532 /** 1533 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:265 1534 * @apilevel internal 1535 */ 1536 public boolean Define_boolean_mayBeStatic(ASTNode caller, ASTNode child) { 1537 if(caller == getModifiersNoTransform()) { 1538 return true; 1539 } 1540 else { return getParent().Define_boolean_mayBeStatic(this, caller); 1541 } 1542 } 1543 /** 1544 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:266 1545 * @apilevel internal 1546 */ 1547 public boolean Define_boolean_mayBeFinal(ASTNode caller, ASTNode child) { 1548 if(caller == getModifiersNoTransform()) { 1549 return true; 1550 } 1551 else { return getParent().Define_boolean_mayBeFinal(this, caller); 1552 } 1553 } 1554 /** 1555 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:267 1556 * @apilevel internal 1557 */ 1558 public boolean Define_boolean_mayBeTransient(ASTNode caller, ASTNode child) { 1559 if(caller == getModifiersNoTransform()) { 1560 return true; 1561 } 1562 else { return getParent().Define_boolean_mayBeTransient(this, caller); 1563 } 1564 } 1565 /** 1566 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:268 1567 * @apilevel internal 1568 */ 1569 public boolean Define_boolean_mayBeVolatile(ASTNode caller, ASTNode child) { 1570 if(caller == getModifiersNoTransform()) { 1571 return true; 1572 } 1573 else { return getParent().Define_boolean_mayBeVolatile(this, caller); 1574 } 1575 } 1576 /** 1577 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/SyntacticClassification.jrag:78 1578 * @apilevel internal 1579 */ 1580 public NameType Define_NameType_nameType(ASTNode caller, ASTNode child) { 1581 if(caller == getTypeAccessNoTransform()) { 1582 return NameType.TYPE_NAME; 1583 } 1584 else { return getParent().Define_NameType_nameType(this, caller); 1585 } 1586 } 1587 /** 1588 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:260 1589 * @apilevel internal 1590 */ 1591 public TypeDecl Define_TypeDecl_declType(ASTNode caller, ASTNode child) { 1592 if(caller == getInitOptNoTransform()) { 1593 return type(); 1594 } 1595 else { return getParent().Define_TypeDecl_declType(this, caller); 1596 } 1597 } 1598 /** 1599 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:141 1600 * @apilevel internal 1601 */ 1602 public boolean Define_boolean_inStaticContext(ASTNode caller, ASTNode child) { 1603 if(caller == getInitOptNoTransform()) { 1604 return isStatic() || hostType().isInterfaceDecl(); 1605 } 1606 else { return getParent().Define_boolean_inStaticContext(this, caller); 1607 } 1608 } 1609 /** 1610 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:67 1611 * @apilevel internal 1612 */ 1613 public TypeDecl Define_TypeDecl_expectedType(ASTNode caller, ASTNode child) { 1614 if(caller == getInitOptNoTransform()) { 1615 return type().componentType(); 1616 } 1617 else { return getParent().Define_TypeDecl_expectedType(this, caller); 1618 } 1619 } 1620 /** 1621 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:80 1622 * @apilevel internal 1623 */ 1624 public boolean Define_boolean_mayUseAnnotationTarget(ASTNode caller, ASTNode child, String name) { 1625 if(caller == getModifiersNoTransform()) { 1626 return name.equals("FIELD"); 1627 } 1628 else { return getParent().Define_boolean_mayUseAnnotationTarget(this, caller, name); 1629 } 1630 } 1631 /** 1632 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethodsInference.jrag:35 1633 * @apilevel internal 1634 */ 1635 public TypeDecl Define_TypeDecl_assignConvertedType(ASTNode caller, ASTNode child) { 1636 if(caller == getInitOptNoTransform()) { 1637 return type(); 1638 } 1639 else { return getParent().Define_TypeDecl_assignConvertedType(this, caller); 1640 } 1641 } 1642 /** 1643 * @apilevel internal 1644 */ 1645 public ASTNode rewriteTo() { 1646 return super.rewriteTo(); 1647 } 1648 }