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 TypeDecl : {@link ASTNode} ::= <span class="component">{@link Modifiers}</span> <span class="component"><ID:String></span> <span class="component">{@link BodyDecl}*</span>; 015 * @ast node 016 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:41 017 */ 018 public abstract class TypeDecl extends ASTNode<ASTNode> implements Cloneable, SimpleSet, Iterator, VariableScope { 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 TypeDecl clone() throws CloneNotSupportedException { 034 TypeDecl node = (TypeDecl)super.clone(); 035 node.accessibleFromPackage_String_values = null; 036 node.accessibleFromExtend_TypeDecl_values = null; 037 node.accessibleFrom_TypeDecl_values = null; 038 node.dimension_computed = false; 039 node.elementType_computed = false; 040 node.elementType_value = null; 041 node.arrayType_computed = false; 042 node.arrayType_value = null; 043 node.isException_computed = false; 044 node.isCheckedException_computed = false; 045 node.isUncheckedException_computed = false; 046 node.mayCatch_TypeDecl_values = null; 047 node.constructors_computed = false; 048 node.constructors_value = null; 049 node.unqualifiedLookupMethod_String_values = null; 050 node.methodsNameMap_computed = false; 051 node.methodsNameMap_value = null; 052 node.localMethodsSignatureMap_computed = false; 053 node.localMethodsSignatureMap_value = null; 054 node.methodsSignatureMap_computed = false; 055 node.methodsSignatureMap_value = null; 056 node.ancestorMethods_String_values = null; 057 node.localTypeDecls_String_values = null; 058 node.memberTypes_String_values = null; 059 node.localFields_String_values = null; 060 node.localFieldsMap_computed = false; 061 node.localFieldsMap_value = null; 062 node.memberFieldsMap_computed = false; 063 node.memberFieldsMap_value = null; 064 node.memberFields_String_values = null; 065 node.hasAbstract_computed = false; 066 node.unimplementedMethods_computed = false; 067 node.unimplementedMethods_value = null; 068 node.isPublic_computed = false; 069 node.isStatic_computed = false; 070 node.fullName_computed = false; 071 node.fullName_value = null; 072 node.typeName_computed = false; 073 node.typeName_value = null; 074 node.narrowingConversionTo_TypeDecl_values = null; 075 node.methodInvocationConversionTo_TypeDecl_values = null; 076 node.castingConversionTo_TypeDecl_values = null; 077 node.isString_computed = false; 078 node.isObject_computed = false; 079 node.instanceOf_TypeDecl_values = null; 080 node.isCircular_visited = -1; 081 node.isCircular_computed = false; 082 node.isCircular_initialized = false; 083 node.innerClassesAttributeEntries_computed = false; 084 node.innerClassesAttributeEntries_value = null; 085 node.attributes_computed = false; 086 node.attributes_value = null; 087 node.clinit_attributes_computed = false; 088 node.clinit_attributes_value = null; 089 node.constantPool_computed = false; 090 node.constantPool_value = null; 091 node.constantPoolName_computed = false; 092 node.constantPoolName_value = null; 093 node.typeDescriptor_computed = false; 094 node.typeDescriptor_value = null; 095 node.hasClinit_computed = false; 096 node.bytecodes_ConstantPool_values = null; 097 node.flags_computed = false; 098 node.bcFields_computed = false; 099 node.bcFields_value = null; 100 node.enclosingVariables_computed = false; 101 node.enclosingVariables_value = null; 102 node.uniqueIndex_computed = false; 103 node.jvmName_computed = false; 104 node.jvmName_value = null; 105 node.boxed_computed = false; 106 node.boxed_value = null; 107 node.unboxed_computed = false; 108 node.unboxed_value = null; 109 node.isIterable_computed = false; 110 node.involvesTypeParameters_visited = -1; 111 node.involvesTypeParameters_computed = false; 112 node.involvesTypeParameters_initialized = false; 113 node.erasure_computed = false; 114 node.erasure_value = null; 115 node.implementedInterfaces_computed = false; 116 node.implementedInterfaces_value = null; 117 node.usesTypeVariable_visited = -1; 118 node.usesTypeVariable_computed = false; 119 node.usesTypeVariable_initialized = false; 120 node.sourceTypeDecl_computed = false; 121 node.sourceTypeDecl_value = null; 122 node.containedIn_TypeDecl_values = null; 123 node.sameStructure_TypeDecl_values = null; 124 node.subtype_TypeDecl_values = null; 125 node.createEnumMethod_TypeDecl_values = null; 126 node.createEnumIndex_EnumConstant_values = null; 127 node.createEnumArray_TypeDecl_values = null; 128 node.needsSignatureAttribute_computed = false; 129 node.classSignature_computed = false; 130 node.classSignature_value = null; 131 node.fieldTypeSignature_computed = false; 132 node.fieldTypeSignature_value = null; 133 node.classTypeSignature_computed = false; 134 node.classTypeSignature_value = null; 135 node.componentType_computed = false; 136 node.componentType_value = null; 137 node.isDAbefore_Variable_values = null; 138 node.isDUbefore_Variable_values = null; 139 node.typeException_computed = false; 140 node.typeException_value = null; 141 node.typeRuntimeException_computed = false; 142 node.typeRuntimeException_value = null; 143 node.typeError_computed = false; 144 node.typeError_value = null; 145 node.lookupMethod_String_values = null; 146 node.typeObject_computed = false; 147 node.typeObject_value = null; 148 node.lookupType_String_values = null; 149 node.lookupVariable_String_values = null; 150 node.packageName_computed = false; 151 node.packageName_value = null; 152 node.isAnonymous_computed = false; 153 node.unknownType_computed = false; 154 node.unknownType_value = null; 155 node.inExplicitConstructorInvocation_computed = false; 156 node.inStaticContext_computed = false; 157 node.destinationPath_computed = false; 158 node.destinationPath_value = null; 159 node.in$Circle(false); 160 node.is$Final(false); 161 return node; 162 } 163 /** 164 * @ast method 165 * @aspect AnonymousClasses 166 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/AnonymousClasses.jrag:28 167 */ 168 169 170 public int anonymousIndex = 0; 171 /** 172 * @ast method 173 * @aspect AnonymousClasses 174 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/AnonymousClasses.jrag:45 175 */ 176 public int nextAnonymousIndex() { 177 if(isNestedType()) 178 return enclosingType().nextAnonymousIndex(); 179 return anonymousIndex++; 180 } 181 /** 182 * @ast method 183 * @aspect BoundNames 184 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/BoundNames.jrag:24 185 */ 186 public MethodDecl addMemberMethod(MethodDecl m) { 187 addBodyDecl(m); 188 return (MethodDecl)getBodyDecl(getNumBodyDecl()-1); 189 /* 190 HashMap map = methodsNameMap(); 191 ArrayList list = (ArrayList)map.get(m.name()); 192 if(list == null) { 193 list = new ArrayList(4); 194 map.put(m.name(), list); 195 } 196 list.add(m); 197 if(!memberMethods(m.name()).contains(m)) 198 throw new Error("The method " + m.signature() + " added to " + typeName() + " can not be found using lookupMemberMethod"); 199 */ 200 } 201 /** 202 * @ast method 203 * @aspect BoundNames 204 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/BoundNames.jrag:40 205 */ 206 public ConstructorDecl addConstructor(ConstructorDecl c) { 207 addBodyDecl(c); 208 return (ConstructorDecl)getBodyDecl(getNumBodyDecl()-1); 209 } 210 /** 211 * @ast method 212 * @aspect BoundNames 213 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/BoundNames.jrag:45 214 */ 215 public ClassDecl addMemberClass(ClassDecl c) { 216 addBodyDecl(new MemberClassDecl(c)); 217 return ((MemberClassDecl)getBodyDecl(getNumBodyDecl()-1)).getClassDecl(); 218 } 219 /** 220 * @ast method 221 * @aspect BoundNames 222 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/BoundNames.jrag:52 223 */ 224 public FieldDeclaration addMemberField(FieldDeclaration f) { 225 addBodyDecl(f); 226 return (FieldDeclaration)getBodyDecl(getNumBodyDecl()-1); 227 //if(!memberFields(f.name()).contains(f)) 228 // throw new Error("The field " + f.name() + " added to " + typeName() + " can not be found using lookupMemberField"); 229 } 230 /** 231 * @ast method 232 * @aspect BoundNames 233 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/BoundNames.jrag:90 234 */ 235 public TypeAccess createBoundAccess() { 236 return new BoundTypeAccess("", name(), this); 237 } 238 /** 239 * @ast method 240 * @aspect DataStructures 241 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:136 242 */ 243 public SimpleSet add(Object o) { 244 return new SimpleSetImpl().add(this).add(o); 245 } 246 /** 247 * @ast method 248 * @aspect DataStructures 249 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:140 250 */ 251 public boolean isSingleton() { return true; } 252 /** 253 * @ast method 254 * @aspect DataStructures 255 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:141 256 */ 257 public boolean isSingleton(Object o) { return contains(o); } 258 /** 259 * @ast method 260 * @aspect DataStructures 261 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:144 262 */ 263 264 private TypeDecl iterElem; 265 /** 266 * @ast method 267 * @aspect DataStructures 268 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:145 269 */ 270 public Iterator iterator() { iterElem = this; return this; } 271 /** 272 * @ast method 273 * @aspect DataStructures 274 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:146 275 */ 276 public boolean hasNext() { return iterElem != null; } 277 /** 278 * @ast method 279 * @aspect DataStructures 280 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:147 281 */ 282 public Object next() { Object o = iterElem; iterElem = null; return o; } 283 /** 284 * @ast method 285 * @aspect DataStructures 286 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:148 287 */ 288 public void remove() { throw new UnsupportedOperationException(); } 289 /** 290 * @ast method 291 * @aspect DeclareBeforeUse 292 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DeclareBeforeUse.jrag:41 293 */ 294 public boolean declaredBeforeUse(Variable decl, ASTNode use) { 295 int indexDecl = ((ASTNode)decl).varChildIndex(this); 296 int indexUse = use.varChildIndex(this); 297 return indexDecl < indexUse; 298 } 299 /** 300 * @ast method 301 * @aspect DeclareBeforeUse 302 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DeclareBeforeUse.jrag:46 303 */ 304 public boolean declaredBeforeUse(Variable decl, int indexUse) { 305 int indexDecl = ((ASTNode)decl).varChildIndex(this); 306 return indexDecl < indexUse; 307 } 308 /** 309 * @ast method 310 * @aspect ConstructorLookup 311 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:88 312 */ 313 public ConstructorDecl lookupConstructor(ConstructorDecl signature) { 314 for(Iterator iter = constructors().iterator(); iter.hasNext(); ) { 315 ConstructorDecl decl = (ConstructorDecl)iter.next(); 316 if(decl.sameSignature(signature)) { 317 return decl; 318 } 319 } 320 return null; 321 } 322 /** 323 * @return true if the method access may access the method 324 * @ast method 325 * @aspect MethodDecl 326 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:189 327 */ 328 public boolean mayAccess(MethodAccess access, MethodDecl method) { 329 if (instanceOf(method.hostType()) 330 && access.qualifier().type().instanceOf(this)) 331 return true; 332 333 if (isNestedType()) 334 return enclosingType().mayAccess(access, method); 335 else 336 return false; 337 } 338 /** 339 * @ast method 340 * @aspect MemberMethods 341 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:231 342 */ 343 public Iterator localMethodsIterator() { 344 return new Iterator() { 345 private Iterator outer = localMethodsSignatureMap().values().iterator(); 346 private Iterator inner = null; 347 public boolean hasNext() { 348 if((inner == null || !inner.hasNext()) && outer.hasNext()) 349 inner = ((SimpleSet)outer.next()).iterator(); 350 return inner == null ? false : inner.hasNext(); 351 } 352 public Object next() { 353 return inner.next(); 354 } 355 public void remove() { throw new UnsupportedOperationException(); } 356 }; 357 //return localMethodsSignatureMap().values().iterator(); 358 } 359 /** 360 * @ast method 361 * @aspect MemberMethods 362 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:299 363 */ 364 public Iterator methodsIterator() { 365 return new Iterator() { 366 private Iterator outer = methodsSignatureMap().values().iterator(); 367 private Iterator inner = null; 368 public boolean hasNext() { 369 if((inner == null || !inner.hasNext()) && outer.hasNext()) 370 inner = ((SimpleSet)outer.next()).iterator(); 371 return inner != null ? inner.hasNext() : false; 372 } 373 public Object next() { 374 return inner.next(); 375 } 376 public void remove() { throw new UnsupportedOperationException(); } 377 }; 378 } 379 /** 380 * @ast method 381 * @aspect MemberMethods 382 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:364 383 */ 384 protected boolean allMethodsAbstract(SimpleSet set) { 385 if(set == null) return true; 386 for(Iterator iter = set.iterator(); iter.hasNext(); ) { 387 MethodDecl m = (MethodDecl)iter.next(); 388 if(!m.isAbstract()) 389 return false; 390 } 391 return true; 392 } 393 /** 394 * @return true if the expression may access the field 395 * @ast method 396 * @aspect VariableScope 397 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:213 398 */ 399 public boolean mayAccess(Expr expr, FieldDeclaration field) { 400 if (instanceOf(field.hostType())) { 401 if (!field.isInstanceVariable() 402 || expr.isSuperAccess() 403 || expr.type().instanceOf(this)) 404 return true; 405 } 406 407 if (isNestedType()) { 408 return enclosingType().mayAccess(expr, field); 409 } else { 410 return false; 411 } 412 } 413 /** 414 * @ast method 415 * @aspect Fields 416 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:315 417 */ 418 public Iterator fieldsIterator() { 419 return new Iterator() { 420 private Iterator outer = memberFieldsMap().values().iterator(); 421 private Iterator inner = null; 422 public boolean hasNext() { 423 if((inner == null || !inner.hasNext()) && outer.hasNext()) 424 inner = ((SimpleSet)outer.next()).iterator(); 425 return inner != null ? inner.hasNext() : false; 426 } 427 public Object next() { 428 return inner.next(); 429 } 430 public void remove() { throw new UnsupportedOperationException(); } 431 }; 432 } 433 /** 434 * @ast method 435 * @aspect Modifiers 436 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:68 437 */ 438 public void checkModifiers() { 439 super.checkModifiers(); 440 // 8.1.1 441 if(isPublic() && !isTopLevelType() && !isMemberType()) 442 error("public pertains only to top level types and member types"); 443 444 // 8.1.1 445 if((isProtected() || isPrivate()) && !(isMemberType() && enclosingType().isClassDecl())) 446 error("protected and private may only be used on member types within a directly enclosing class declaration"); 447 448 // 8.1.1 449 if(isStatic() && !isMemberType()) 450 error("static pertains only to member types"); 451 452 453 // 8.4.3.1 454 // 8.1.1.1 455 if(!isAbstract() && hasAbstract()) { 456 StringBuffer s = new StringBuffer(); 457 s.append("" + name() + " is not declared abstract but contains abstract members: \n"); 458 for(Iterator iter = unimplementedMethods().iterator(); iter.hasNext(); ) { 459 MethodDecl m = (MethodDecl)iter.next(); 460 s.append(" " + m.signature() + " in " + m.hostType().typeName() + "\n"); 461 } 462 error(s.toString()); 463 } 464 } 465 /** 466 * @ast method 467 * @aspect NameCheck 468 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:251 469 */ 470 public void nameCheck() { 471 if(isTopLevelType() && lookupType(packageName(), name()) != this) 472 error("duplicate type " + name() + " in package " + packageName()); 473 474 if(!isTopLevelType() && !isAnonymous() && !isLocalClass() && extractSingleType(enclosingType().memberTypes(name())) != this) 475 error("duplicate member type " + name() + " in type " + enclosingType().typeName()); 476 477 // 14.3 478 if(isLocalClass()) { 479 TypeDecl typeDecl = extractSingleType(lookupType(name())); 480 if(typeDecl != null && typeDecl != this && typeDecl.isLocalClass() && enclosingBlock() == typeDecl.enclosingBlock()) 481 error("local class named " + name() + " may not be redeclared as a local class in the same block"); 482 } 483 484 if(!packageName().equals("") && hasPackage(fullName())) 485 error("type name conflicts with a package using the same name: " + name()); 486 487 // 8.1 & 9.1 488 if(hasEnclosingTypeDecl(name())) { 489 error("type may not have the same simple name as an enclosing type declaration"); 490 } 491 } 492 /** 493 * @ast method 494 * @aspect PrettyPrint 495 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:62 496 */ 497 protected void ppBodyDecls(StringBuffer s) { 498 s.append(" {"); 499 for(int i=0; i < getNumBodyDecl(); i++) { 500 getBodyDecl(i).toString(s); 501 } 502 s.append(indent() + "}"); 503 } 504 /** 505 * @ast method 506 * @aspect CreateQualifiedAccesses 507 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/QualifiedNames.jrag:96 508 */ 509 public Access createQualifiedAccess() { 510 if(isLocalClass() || isAnonymous()) { 511 return new TypeAccess(name()); 512 } 513 else if(!isTopLevelType()) { 514 return enclosingType().createQualifiedAccess().qualifiesAccess(new TypeAccess(name())); 515 } 516 else { 517 return new TypeAccess(packageName(), name()); 518 } 519 } 520 /** 521 * @ast method 522 * @aspect TypeAnalysis 523 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:234 524 */ 525 public FieldDeclaration findSingleVariable(String name) { 526 return (FieldDeclaration)memberFields(name).iterator().next(); 527 } 528 /** 529 * @ast method 530 * @aspect TypeHierarchyCheck 531 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:157 532 */ 533 public void refined_TypeHierarchyCheck_TypeDecl_typeCheck() { 534 // 8.4.6.4 & 9.4.1 535 for(Iterator iter1 = localMethodsIterator(); iter1.hasNext(); ) { 536 MethodDecl m = (MethodDecl)iter1.next(); 537 ASTNode target = m.hostType() == this ? (ASTNode)m : (ASTNode)this; 538 539 //for(Iterator i2 = overrides(m).iterator(); i2.hasNext(); ) { 540 for(Iterator i2 = ancestorMethods(m.signature()).iterator(); i2.hasNext(); ) { 541 MethodDecl decl = (MethodDecl)i2.next(); 542 if(m.overrides(decl)) { 543 // 8.4.6.1 544 if(!m.isStatic() && decl.isStatic()) 545 target.error("an instance method may not override a static method"); 546 547 // regardless of overriding 548 // 8.4.6.3 549 if(!m.mayOverrideReturn(decl)) 550 target.error("the return type of method " + m.signature() + " in " + m.hostType().typeName() + " does not match the return type of method " + decl.signature() + " in " + decl.hostType().typeName() + " and may thus not be overriden"); 551 552 // regardless of overriding 553 // 8.4.4 554 for(int i = 0; i < m.getNumException(); i++) { 555 Access e = m.getException(i); 556 boolean found = false; 557 for(int j = 0; !found && j < decl.getNumException(); j++) { 558 if(e.type().instanceOf(decl.getException(j).type())) 559 found = true; 560 } 561 if(!found && e.type().isUncheckedException()) 562 target.error(m.signature() + " in " + m.hostType().typeName() + " may not throw more checked exceptions than overridden method " + 563 decl.signature() + " in " + decl.hostType().typeName()); 564 } 565 // 8.4.6.3 566 if(decl.isPublic() && !m.isPublic()) 567 target.error("overriding access modifier error"); 568 // 8.4.6.3 569 if(decl.isProtected() && !(m.isPublic() || m.isProtected())) 570 target.error("overriding access modifier error"); 571 // 8.4.6.3 572 if((!decl.isPrivate() && !decl.isProtected() && !decl.isPublic()) && m.isPrivate()) 573 target.error("overriding access modifier error"); 574 575 // regardless of overriding 576 if(decl.isFinal()) 577 target.error("method " + m.signature() + " in " + hostType().typeName() + " can not override final method " + decl.signature() + " in " + decl.hostType().typeName()); 578 } 579 if(m.hides(decl)) { 580 // 8.4.6.2 581 if(m.isStatic() && !decl.isStatic()) 582 target.error("a static method may not hide an instance method"); 583 // 8.4.6.3 584 if(!m.mayOverrideReturn(decl)) 585 target.error("can not hide a method with a different return type"); 586 // 8.4.4 587 for(int i = 0; i < m.getNumException(); i++) { 588 Access e = m.getException(i); 589 boolean found = false; 590 for(int j = 0; !found && j < decl.getNumException(); j++) { 591 if(e.type().instanceOf(decl.getException(j).type())) 592 found = true; 593 } 594 if(!found) 595 target.error("may not throw more checked exceptions than hidden method"); 596 } 597 // 8.4.6.3 598 if(decl.isPublic() && !m.isPublic()) 599 target.error("hiding access modifier error: public method " + decl.signature() + " in " + decl.hostType().typeName() + " is hidden by non public method " + m.signature() + " in " + m.hostType().typeName()); 600 // 8.4.6.3 601 if(decl.isProtected() && !(m.isPublic() || m.isProtected())) 602 target.error("hiding access modifier error: protected method " + decl.signature() + " in " + decl.hostType().typeName() + " is hidden by non (public|protected) method " + m.signature() + " in " + m.hostType().typeName()); 603 // 8.4.6.3 604 if((!decl.isPrivate() && !decl.isProtected() && !decl.isPublic()) && m.isPrivate()) 605 target.error("hiding access modifier error: default method " + decl.signature() + " in " + decl.hostType().typeName() + " is hidden by private method " + m.signature() + " in " + m.hostType().typeName()); 606 if(decl.isFinal()) 607 target.error("method " + m.signature() + " in " + hostType().typeName() + " can not hide final method " + decl.signature() + " in " + decl.hostType().typeName()); 608 } 609 } 610 } 611 } 612 /** 613 * @ast method 614 * @aspect Attributes 615 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Attributes.jrag:58 616 */ 617 public int addConstant(ConstantPool p, Constant c) { 618 if(isString()) return p.addConstant(c.stringValue()); 619 throw new Error("Not supported"); 620 } 621 /** 622 * @ast method 623 * @aspect CodeGeneration 624 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:542 625 */ 626 public void emitPushConstant(CodeGeneration gen, int value) { } 627 /** 628 * @ast method 629 * @aspect CodeGeneration 630 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:612 631 */ 632 public void emitReturn(CodeGeneration gen) { error(); } 633 /** 634 * @ast method 635 * @aspect CodeGeneration 636 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:634 637 */ 638 public void emitLoadLocal(CodeGeneration gen, int pos) {error();} 639 /** 640 * @ast method 641 * @aspect CodeGeneration 642 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:747 643 */ 644 public void emitStoreLocal(CodeGeneration gen, int pos) {error();} 645 /** 646 * @ast method 647 * @aspect CodeGeneration 648 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:844 649 */ 650 public void emitDup(CodeGeneration gen) { gen.emit(Bytecode.DUP); } 651 /** 652 * @ast method 653 * @aspect CodeGeneration 654 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:849 655 */ 656 public void emitDup_x1(CodeGeneration gen) { gen.emit(Bytecode.DUP_X1); } 657 /** 658 * @ast method 659 * @aspect CodeGeneration 660 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:854 661 */ 662 public void emitDup_x2(CodeGeneration gen) { gen.emit(Bytecode.DUP_X2); } 663 /** 664 * @ast method 665 * @aspect CodeGeneration 666 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:859 667 */ 668 public void emitPop(CodeGeneration gen) { gen.emit(Bytecode.POP); } 669 /** 670 * @ast method 671 * @aspect CodeGeneration 672 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:930 673 */ 674 public void emitNew(CodeGeneration gen) { 675 int index = gen.constantPool().addClass(constantPoolName()); 676 gen.emit(Bytecode.NEW).add2(index); 677 } 678 /** 679 * @ast method 680 * @aspect CodeGenerationConversions 681 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:941 682 */ 683 void emitCastTo(CodeGeneration gen, TypeDecl type) { throw new Error("CastTo not implemented for " + getClass().getName()); } 684 /** 685 * @ast method 686 * @aspect CodeGenerationConversions 687 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:953 688 */ 689 void intToThis(CodeGeneration gen) { throw new Error("intToThis not implemented for " + getClass().getName()); } 690 /** 691 * @ast method 692 * @aspect CodeGenerationConversions 693 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:962 694 */ 695 void floatToThis(CodeGeneration gen) { throw new Error("floatToThis not implemented for " + getClass().getName()); } 696 /** 697 * @ast method 698 * @aspect CodeGenerationConversions 699 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:971 700 */ 701 void doubleToThis(CodeGeneration gen) { throw new Error("doubleToThis not implemented for " + getClass().getName()); } 702 /** 703 * @ast method 704 * @aspect CodeGenerationConversions 705 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:980 706 */ 707 void longToThis(CodeGeneration gen) { throw new Error("longToThis not implemented for " + getClass().getName()); } 708 /** 709 * @ast method 710 * @aspect CodeGenerationConversions 711 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:989 712 */ 713 void byteToThis(CodeGeneration gen) { throw new Error("byteToThis not implemented for " + getClass().getName()); } 714 /** 715 * @ast method 716 * @aspect CodeGenerationConversions 717 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:996 718 */ 719 void charToThis(CodeGeneration gen) { throw new Error("charToThis not implemented for " + getClass().getName()); } 720 /** 721 * @ast method 722 * @aspect CodeGenerationConversions 723 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1004 724 */ 725 void shortToThis(CodeGeneration gen) { throw new Error("shortToThis not implemented for " + getClass().getName()); } 726 /** 727 * @ast method 728 * @aspect CodeGenerationBinaryOperations 729 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1037 730 */ 731 void neg(CodeGeneration gen) { error(); } 732 /** 733 * @ast method 734 * @aspect CodeGenerationBinaryOperations 735 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1043 736 */ 737 void bitNot(CodeGeneration gen) { error(); } 738 /** 739 * @ast method 740 * @aspect CodeGenerationBinaryOperations 741 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1047 742 */ 743 void logNot(CodeGeneration gen) { error();} 744 /** 745 * @ast method 746 * @aspect CodeGenerationBinaryOperations 747 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1050 748 */ 749 void add(CodeGeneration gen) {error();} 750 /** 751 * @ast method 752 * @aspect CodeGenerationBinaryOperations 753 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1056 754 */ 755 void sub(CodeGeneration gen) {error();} 756 /** 757 * @ast method 758 * @aspect CodeGenerationBinaryOperations 759 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1062 760 */ 761 void mul(CodeGeneration gen) {error();} 762 /** 763 * @ast method 764 * @aspect CodeGenerationBinaryOperations 765 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1068 766 */ 767 void div(CodeGeneration gen) {error();} 768 /** 769 * @ast method 770 * @aspect CodeGenerationBinaryOperations 771 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1074 772 */ 773 void rem(CodeGeneration gen) {error();} 774 /** 775 * @ast method 776 * @aspect CodeGenerationBinaryOperations 777 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1080 778 */ 779 void shl(CodeGeneration gen) {error();} 780 /** 781 * @ast method 782 * @aspect CodeGenerationBinaryOperations 783 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1084 784 */ 785 void shr(CodeGeneration gen) {error();} 786 /** 787 * @ast method 788 * @aspect CodeGenerationBinaryOperations 789 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1088 790 */ 791 void ushr(CodeGeneration gen) {error();} 792 /** 793 * @ast method 794 * @aspect CodeGenerationBinaryOperations 795 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1092 796 */ 797 void bitand(CodeGeneration gen) {error();} 798 /** 799 * @ast method 800 * @aspect CodeGenerationBinaryOperations 801 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1097 802 */ 803 void bitor(CodeGeneration gen) {error();} 804 /** 805 * @ast method 806 * @aspect CodeGenerationBinaryOperations 807 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1102 808 */ 809 void bitxor(CodeGeneration gen) {error();} 810 /** 811 * @ast method 812 * @aspect CodeGenerationBranch 813 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1109 814 */ 815 public void branchLT(CodeGeneration gen, int label) { throw new Error("branchLT not supported for " + getClass().getName()); } 816 /** 817 * @ast method 818 * @aspect CodeGenerationBranch 819 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1115 820 */ 821 public void branchLE(CodeGeneration gen, int label) { throw new Error("branchLE not supported for " + getClass().getName()); } 822 /** 823 * @ast method 824 * @aspect CodeGenerationBranch 825 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1121 826 */ 827 public void branchGE(CodeGeneration gen, int label) { throw new Error("branchGE not supported for " + getClass().getName()); } 828 /** 829 * @ast method 830 * @aspect CodeGenerationBranch 831 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1127 832 */ 833 public void branchGT(CodeGeneration gen, int label) { throw new Error("branchGT not supported for " + getClass().getName()); } 834 /** 835 * @ast method 836 * @aspect CodeGenerationBranch 837 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1133 838 */ 839 public void branchEQ(CodeGeneration gen, int label) { throw new Error("branchEQ not supported for " + getClass().getName()); } 840 /** 841 * @ast method 842 * @aspect CodeGenerationBranch 843 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:1142 844 */ 845 public void branchNE(CodeGeneration gen, int label) { throw new Error("branchNE not supported for " + getClass().getName()); } 846 /** 847 * @ast method 848 * @aspect CreateBCode 849 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:53 850 */ 851 private void generateBytecodes(CodeGeneration gen) { 852 for(int i = 0; i < getNumBodyDecl(); i++) { 853 BodyDecl b = getBodyDecl(i); 854 if(b instanceof FieldDeclaration && b.isBytecodeField() && b.generate()) { 855 FieldDeclaration f = (FieldDeclaration)b; 856 if(f.isStatic() && f.hasInit()) { 857 f.getInit().createBCode(gen); 858 f.getInit().type().emitAssignConvTo(gen, f.type()); // AssignConversion 859 f.emitStoreField(gen, this); 860 } 861 } 862 else if(b instanceof StaticInitializer) { 863 b.createBCode(gen); 864 } 865 } 866 gen.emitReturn(); 867 } 868 /** 869 * @ast method 870 * @aspect Flags 871 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Flags.jrag:28 872 */ 873 public int mangledFlags(int flags) { 874 boolean privateFlag = (flags & Modifiers.ACC_PRIVATE) != 0; 875 boolean protectedFlag = (flags & Modifiers.ACC_PROTECTED) != 0; 876 flags &= ~ Modifiers.ACC_PRIVATE; 877 flags &= ~ Modifiers.ACC_PROTECTED; 878 if(protectedFlag) 879 flags |= Modifiers.ACC_PUBLIC; 880 return flags; 881 } 882 /** 883 * @ast method 884 * @aspect GenerateClassfile 885 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:27 886 */ 887 public void generateClassfile() { 888 for(Iterator iter = nestedTypes().iterator(); iter.hasNext(); ) { 889 TypeDecl typeDecl = (TypeDecl)iter.next(); 890 typeDecl.generateClassfile(); 891 } 892 } 893 /** 894 * @ast method 895 * @aspect GenerateClassfile 896 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:335 897 */ 898 public boolean clear() { 899 bytecodes(constantPool()).clearCodeGeneration(); 900 for(int i = 0; i < getNumBodyDecl(); i++) 901 getBodyDecl(i).clear(); 902 attributes_computed = false; 903 attributes_value = null; 904 clinit_attributes_computed = false; 905 clinit_attributes_value = null; 906 constantPool_computed = false; 907 constantPool_value = null; 908 bytecodes_ConstantPool_values = null; 909 return false; 910 } 911 /** 912 * @ast method 913 * @aspect InnerClasses 914 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:12 915 */ 916 public boolean hasField(String name) { 917 if(!memberFields(name).isEmpty()) 918 return true; 919 for(int i = 0; i < getNumBodyDecl(); i++) { 920 if(getBodyDecl(i) instanceof FieldDeclaration) { 921 FieldDeclaration decl = (FieldDeclaration)getBodyDecl(i); 922 if(decl.name().equals(name)) 923 return true; 924 } 925 } 926 return false; 927 } 928 /** 929 * @ast method 930 * @aspect InnerClasses 931 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:36 932 */ 933 public boolean hasMethod(String id) { 934 if(!memberMethods(id).isEmpty()) return true; 935 for(int i = 0; i < getNumBodyDecl(); i++) { 936 if(getBodyDecl(i) instanceof MethodDecl) { 937 MethodDecl decl = (MethodDecl)getBodyDecl(i); 938 if(decl.name().equals(id)) 939 return true; 940 } 941 } 942 return false; 943 } 944 /** 945 * @ast method 946 * @aspect InnerClasses 947 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:124 948 */ 949 950 951 // The set of TypeDecls that has this TypeDecl as their directly enclosing TypeDecl. 952 // I.e., NestedTypes, InnerTypes, AnonymousClasses, LocalClasses. 953 private Collection nestedTypes; 954 /** 955 * @ast method 956 * @aspect InnerClasses 957 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:125 958 */ 959 public Collection nestedTypes() { 960 return nestedTypes != null ? nestedTypes : new HashSet(); 961 } 962 /** 963 * @ast method 964 * @aspect InnerClasses 965 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:128 966 */ 967 public void addNestedType(TypeDecl typeDecl) { 968 if(nestedTypes == null) nestedTypes = new HashSet(); 969 if(typeDecl != this) 970 nestedTypes.add(typeDecl); 971 } 972 /** 973 * @ast method 974 * @aspect InnerClasses 975 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:135 976 */ 977 978 979 // The set of nested TypeDecls that are accessed in this TypeDecl 980 private Collection usedNestedTypes; 981 /** 982 * @ast method 983 * @aspect InnerClasses 984 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:136 985 */ 986 public Collection usedNestedTypes() { 987 return usedNestedTypes != null ? usedNestedTypes : new HashSet(); 988 } 989 /** 990 * @ast method 991 * @aspect InnerClasses 992 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:139 993 */ 994 public void addUsedNestedType(TypeDecl typeDecl) { 995 if(usedNestedTypes == null) usedNestedTypes = new HashSet(); 996 usedNestedTypes.add(typeDecl); 997 } 998 /** 999 * @ast method 1000 * @aspect InnerClasses 1001 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:170 1002 */ 1003 1004 1005 1006 public int accessorCounter = 0; 1007 /** 1008 * @ast method 1009 * @aspect InnerClasses 1010 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:172 1011 */ 1012 1013 1014 private HashMap accessorMap = null; 1015 /** 1016 * @ast method 1017 * @aspect InnerClasses 1018 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:173 1019 */ 1020 public ASTNode getAccessor(ASTNode source, String name) { 1021 ArrayList key = new ArrayList(2); 1022 key.add(source); 1023 key.add(name); 1024 if(accessorMap == null || !accessorMap.containsKey(key)) return null; 1025 return (ASTNode)accessorMap.get(key); 1026 } 1027 /** 1028 * @ast method 1029 * @aspect InnerClasses 1030 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:181 1031 */ 1032 public void addAccessor(ASTNode source, String name, ASTNode accessor) { 1033 ArrayList key = new ArrayList(2); 1034 key.add(source); 1035 key.add(name); 1036 if(accessorMap == null) accessorMap = new HashMap(); 1037 accessorMap.put(key, accessor); 1038 } 1039 /** 1040 * @ast method 1041 * @aspect InnerClasses 1042 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:189 1043 */ 1044 public ASTNode getAccessorSource(ASTNode accessor) { 1045 Iterator i = accessorMap.entrySet().iterator(); 1046 while (i.hasNext()) { 1047 Map.Entry entry = (Map.Entry) i.next(); 1048 if (entry.getValue() == accessor) 1049 return (ASTNode) ((ArrayList) entry.getKey()).get(0); 1050 } 1051 return null; 1052 } 1053 /** 1054 * @ast method 1055 * @aspect InnerClasses 1056 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:442 1057 */ 1058 1059 1060 1061 1062 // add val$name as fields to the class 1063 private boolean addEnclosingVariables = true; 1064 /** 1065 * @ast method 1066 * @aspect InnerClasses 1067 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:443 1068 */ 1069 public void addEnclosingVariables() { 1070 if(!addEnclosingVariables) return; 1071 addEnclosingVariables = false; 1072 for(Iterator iter = enclosingVariables().iterator(); iter.hasNext(); ) { 1073 Variable v = (Variable)iter.next(); 1074 Modifiers m = new Modifiers(); 1075 m.addModifier(new Modifier("public")); 1076 m.addModifier(new Modifier("synthetic")); 1077 m.addModifier(new Modifier("final")); 1078 addMemberField(new FieldDeclaration(m, v.type().createQualifiedAccess(), "val$" + v.name(), new Opt())); 1079 } 1080 } 1081 /** 1082 * @ast method 1083 * @aspect Java2Rewrites 1084 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:11 1085 */ 1086 1087 int uniqueIndexCounter = 1; 1088 /** 1089 * @ast method 1090 * @aspect Java2Rewrites 1091 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:65 1092 */ 1093 1094 1095 1096 // lazily build a static field for assertionsDisabled 1097 private FieldDeclaration createAssertionsDisabled = null; 1098 /** 1099 * @ast method 1100 * @aspect Java2Rewrites 1101 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:66 1102 */ 1103 public FieldDeclaration createAssertionsDisabled() { 1104 if(createAssertionsDisabled != null) 1105 return createAssertionsDisabled; 1106 // static final boolean $assertionsDisabled = !TypeName.class.desiredAssertionStatus(); 1107 createAssertionsDisabled = new FieldDeclaration( 1108 new Modifiers(new List().add(new Modifier("public")).add(new Modifier("static")).add(new Modifier("final"))), 1109 new PrimitiveTypeAccess("boolean"), 1110 "$assertionsDisabled", 1111 new Opt( 1112 new LogNotExpr( 1113 topLevelType().createQualifiedAccess().qualifiesAccess( 1114 new ClassAccess().qualifiesAccess( 1115 new MethodAccess( 1116 "desiredAssertionStatus", 1117 new List() 1118 ) 1119 ) 1120 ) 1121 ) 1122 ) 1123 ); 1124 getBodyDeclList().insertChild(createAssertionsDisabled, 0); 1125 // explicit read to trigger possible rewrites 1126 createAssertionsDisabled = (FieldDeclaration)getBodyDeclList().getChild(0); 1127 // transform the generated initalization, e.g., the ClassAccess construct 1128 createAssertionsDisabled.transformation(); 1129 return createAssertionsDisabled; 1130 } 1131 /** 1132 * @ast method 1133 * @aspect Java2Rewrites 1134 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:119 1135 */ 1136 1137 1138 // lazily build a static field for each typename used in a .class expression 1139 private HashMap createStaticClassField = null; 1140 /** 1141 * @ast method 1142 * @aspect Java2Rewrites 1143 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:120 1144 */ 1145 public FieldDeclaration createStaticClassField(String name) { 1146 if(createStaticClassField == null) 1147 createStaticClassField = new HashMap(); 1148 if(createStaticClassField.containsKey(name)) 1149 return (FieldDeclaration)createStaticClassField.get(name); 1150 // static synthetic Class class$java$lang$String; 1151 FieldDeclaration f = new FieldDeclaration( 1152 new Modifiers(new List().add(new Modifier("public")).add(new Modifier("static"))), 1153 lookupType("java.lang", "Class").createQualifiedAccess(), 1154 name, 1155 new Opt() 1156 ) { 1157 public boolean isConstant() { 1158 return true; 1159 } 1160 }; 1161 createStaticClassField.put(name, f); 1162 return addMemberField(f); 1163 } 1164 /** 1165 * @ast method 1166 * @aspect Java2Rewrites 1167 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:141 1168 */ 1169 1170 1171 // lazily build a static class$ method in this type declaration 1172 private MethodDecl createStaticClassMethod = null; 1173 /** 1174 * @ast method 1175 * @aspect Java2Rewrites 1176 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:142 1177 */ 1178 public MethodDecl createStaticClassMethod() { 1179 if(createStaticClassMethod != null) 1180 return createStaticClassMethod; 1181 // static synthetic Class class$(String name) { 1182 // try { 1183 // return java.lang.Class.forName(name); 1184 // } catch(java.lang.ClassNotFoundException e) { 1185 // throw new java.lang.NoClassDefFoundError(e.getMessage()); 1186 // } 1187 // } 1188 createStaticClassMethod = new MethodDecl( 1189 new Modifiers(new List().add(new Modifier("public")).add(new Modifier("static"))), 1190 lookupType("java.lang", "Class").createQualifiedAccess(), 1191 "class$", 1192 new List().add( 1193 new ParameterDeclaration( 1194 new Modifiers(new List()), 1195 lookupType("java.lang", "String").createQualifiedAccess(), 1196 "name" 1197 ) 1198 ), 1199 new List(), 1200 new Opt( 1201 new Block( 1202 new List().add( 1203 new TryStmt( 1204 new Block( 1205 new List().add( 1206 new ReturnStmt( 1207 new Opt( 1208 lookupType("java.lang", "Class").createQualifiedAccess().qualifiesAccess( 1209 new MethodAccess( 1210 "forName", 1211 new List().add( 1212 new VarAccess("name") 1213 ) 1214 ) 1215 ) 1216 ) 1217 ) 1218 ) 1219 ), 1220 new List().add( 1221 new BasicCatch( 1222 new ParameterDeclaration( 1223 new Modifiers(new List()), 1224 lookupType("java.lang", "ClassNotFoundException").createQualifiedAccess(), 1225 "e" 1226 ), 1227 new Block( 1228 new List().add( 1229 new ThrowStmt( 1230 new ClassInstanceExpr( 1231 lookupType("java.lang", "NoClassDefFoundError").createQualifiedAccess(), 1232 new List().add( 1233 new VarAccess("e").qualifiesAccess( 1234 new MethodAccess( 1235 "getMessage", 1236 new List() 1237 ) 1238 ) 1239 ), 1240 new Opt() 1241 ) 1242 ) 1243 ) 1244 ) 1245 ) 1246 ), 1247 new Opt() 1248 ) 1249 ) 1250 ) 1251 ) 1252 ) { 1253 public boolean isConstant() { 1254 return true; 1255 } 1256 }; 1257 return addMemberMethod(createStaticClassMethod); 1258 } 1259 /** 1260 * @ast method 1261 * @aspect Transformations 1262 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Transformations.jrag:27 1263 */ 1264 public void transformation() { 1265 addEnclosingVariables(); 1266 super.transformation(); 1267 if(isNestedType()) 1268 enclosingType().addNestedType(this); 1269 } 1270 /** 1271 * @ast method 1272 * @aspect Generics 1273 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:184 1274 */ 1275 public TypeDecl makeGeneric(Signatures.ClassSignature s) { 1276 return this; 1277 } 1278 /** 1279 * @ast method 1280 * @aspect LookupParTypeDecl 1281 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:835 1282 */ 1283 public TypeDecl substitute(TypeVariable typeVariable) { 1284 if(isTopLevelType()) 1285 return typeVariable; 1286 return enclosingType().substitute(typeVariable); 1287 } 1288 /** 1289 * @ast method 1290 * @aspect LookupParTypeDecl 1291 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:873 1292 */ 1293 public Access substitute(Parameterization parTypeDecl) { 1294 if(parTypeDecl instanceof ParTypeDecl && ((ParTypeDecl)parTypeDecl).genericDecl() == this) 1295 return ((TypeDecl)parTypeDecl).createBoundAccess(); 1296 if(isTopLevelType()) 1297 return createBoundAccess(); 1298 return enclosingType().substitute(parTypeDecl).qualifiesAccess(new TypeAccess(name())); 1299 } 1300 /** 1301 * @ast method 1302 * @aspect LookupParTypeDecl 1303 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:913 1304 */ 1305 public Access substituteReturnType(Parameterization parTypeDecl) { 1306 return substitute(parTypeDecl); 1307 } 1308 /** 1309 * @ast method 1310 * @aspect LookupParTypeDecl 1311 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:957 1312 */ 1313 public Access substituteParameterType(Parameterization parTypeDecl) { 1314 return substitute(parTypeDecl); 1315 } 1316 /** 1317 * Add an annotation parameter constant to the constant pool. 1318 * @see AST.TypeDecl#addConstant(ConstantPool, Constant) TypeDecl.addConstant(ConstantPool, Constant) 1319 * @ast method 1320 * @aspect AnnotationsCodegen 1321 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/AnnotationsCodegen.jrag:172 1322 */ 1323 public int addAnnotConstant(ConstantPool p, Constant c) { 1324 if(isString()) 1325 return p.addUtf8(c.stringValue()); 1326 throw new Error("Not supported"); 1327 } 1328 /** 1329 * @ast method 1330 * @aspect AutoBoxingCodegen 1331 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/AutoBoxingCodegen.jrag:79 1332 */ 1333 protected void emitBoxingOperation(CodeGeneration gen) { 1334 // Box the value on the stack into this Reference type 1335 String classname = constantPoolName(); 1336 String desc = "(" + unboxed().typeDescriptor() + ")" + typeDescriptor(); 1337 String name = "valueOf"; 1338 int index = gen.constantPool().addMethodref(classname, name, desc); 1339 gen.emit(Bytecode.INVOKESTATIC, variableSize() - unboxed().variableSize()).add2(index); 1340 } 1341 /** 1342 * @ast method 1343 * @aspect AutoBoxingCodegen 1344 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/AutoBoxingCodegen.jrag:97 1345 */ 1346 protected void emitUnboxingOperation(CodeGeneration gen) { 1347 // Unbox the value on the stack from this Reference type 1348 String classname = constantPoolName(); 1349 String desc = "(" + ")" + unboxed().typeDescriptor(); 1350 String name = unboxed().name() + "Value"; 1351 int index = gen.constantPool().addMethodref(classname, name, desc); 1352 gen.emit(Bytecode.INVOKEVIRTUAL, unboxed().variableSize() - 1).add2(index); 1353 } 1354 /** 1355 * @ast method 1356 * @aspect EnumsCodegen 1357 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/EnumsCodegen.jrag:85 1358 */ 1359 1360 // compute index of enum constants 1361 private HashMap createEnumIndexMap = null; 1362 /** 1363 * @ast method 1364 * 1365 */ 1366 public TypeDecl() { 1367 super(); 1368 1369 1370 } 1371 /** 1372 * Initializes the child array to the correct size. 1373 * Initializes List and Opt nta children. 1374 * @apilevel internal 1375 * @ast method 1376 * @ast method 1377 * 1378 */ 1379 public void init$Children() { 1380 children = new ASTNode[2]; 1381 setChild(new List(), 1); 1382 } 1383 /** 1384 * @ast method 1385 * 1386 */ 1387 public TypeDecl(Modifiers p0, String p1, List<BodyDecl> p2) { 1388 setChild(p0, 0); 1389 setID(p1); 1390 setChild(p2, 1); 1391 } 1392 /** 1393 * @ast method 1394 * 1395 */ 1396 public TypeDecl(Modifiers p0, beaver.Symbol p1, List<BodyDecl> p2) { 1397 setChild(p0, 0); 1398 setID(p1); 1399 setChild(p2, 1); 1400 } 1401 /** 1402 * @apilevel low-level 1403 * @ast method 1404 * 1405 */ 1406 protected int numChildren() { 1407 return 2; 1408 } 1409 /** 1410 * @apilevel internal 1411 * @ast method 1412 * 1413 */ 1414 public boolean mayHaveRewrite() { 1415 return false; 1416 } 1417 /** 1418 * Replaces the Modifiers child. 1419 * @param node The new node to replace the Modifiers child. 1420 * @apilevel high-level 1421 * @ast method 1422 * 1423 */ 1424 public void setModifiers(Modifiers node) { 1425 setChild(node, 0); 1426 } 1427 /** 1428 * Retrieves the Modifiers child. 1429 * @return The current node used as the Modifiers child. 1430 * @apilevel high-level 1431 * @ast method 1432 * 1433 */ 1434 public Modifiers getModifiers() { 1435 return (Modifiers)getChild(0); 1436 } 1437 /** 1438 * Retrieves the Modifiers child. 1439 * <p><em>This method does not invoke AST transformations.</em></p> 1440 * @return The current node used as the Modifiers child. 1441 * @apilevel low-level 1442 * @ast method 1443 * 1444 */ 1445 public Modifiers getModifiersNoTransform() { 1446 return (Modifiers)getChildNoTransform(0); 1447 } 1448 /** 1449 * Replaces the lexeme ID. 1450 * @param value The new value for the lexeme ID. 1451 * @apilevel high-level 1452 * @ast method 1453 * 1454 */ 1455 public void setID(String value) { 1456 tokenString_ID = value; 1457 } 1458 /** 1459 * @apilevel internal 1460 * @ast method 1461 * 1462 */ 1463 1464 /** 1465 * @apilevel internal 1466 */ 1467 protected String tokenString_ID; 1468 /** 1469 * @ast method 1470 * 1471 */ 1472 1473 public int IDstart; 1474 /** 1475 * @ast method 1476 * 1477 */ 1478 1479 public int IDend; 1480 /** 1481 * JastAdd-internal setter for lexeme ID using the Beaver parser. 1482 * @apilevel internal 1483 * @ast method 1484 * 1485 */ 1486 public void setID(beaver.Symbol symbol) { 1487 if(symbol.value != null && !(symbol.value instanceof String)) 1488 throw new UnsupportedOperationException("setID is only valid for String lexemes"); 1489 tokenString_ID = (String)symbol.value; 1490 IDstart = symbol.getStart(); 1491 IDend = symbol.getEnd(); 1492 } 1493 /** 1494 * Retrieves the value for the lexeme ID. 1495 * @return The value for the lexeme ID. 1496 * @apilevel high-level 1497 * @ast method 1498 * 1499 */ 1500 public String getID() { 1501 return tokenString_ID != null ? tokenString_ID : ""; 1502 } 1503 /** 1504 * Replaces the BodyDecl list. 1505 * @param list The new list node to be used as the BodyDecl list. 1506 * @apilevel high-level 1507 * @ast method 1508 * 1509 */ 1510 public void setBodyDeclList(List<BodyDecl> list) { 1511 setChild(list, 1); 1512 } 1513 /** 1514 * Retrieves the number of children in the BodyDecl list. 1515 * @return Number of children in the BodyDecl list. 1516 * @apilevel high-level 1517 * @ast method 1518 * 1519 */ 1520 public int getNumBodyDecl() { 1521 return getBodyDeclList().getNumChild(); 1522 } 1523 /** 1524 * Retrieves the number of children in the BodyDecl list. 1525 * Calling this method will not trigger rewrites.. 1526 * @return Number of children in the BodyDecl list. 1527 * @apilevel low-level 1528 * @ast method 1529 * 1530 */ 1531 public int getNumBodyDeclNoTransform() { 1532 return getBodyDeclListNoTransform().getNumChildNoTransform(); 1533 } 1534 /** 1535 * Retrieves the element at index {@code i} in the BodyDecl list.. 1536 * @param i Index of the element to return. 1537 * @return The element at position {@code i} in the BodyDecl list. 1538 * @apilevel high-level 1539 * @ast method 1540 * 1541 */ 1542 @SuppressWarnings({"unchecked", "cast"}) 1543 public BodyDecl getBodyDecl(int i) { 1544 return (BodyDecl)getBodyDeclList().getChild(i); 1545 } 1546 /** 1547 * Append an element to the BodyDecl list. 1548 * @param node The element to append to the BodyDecl list. 1549 * @apilevel high-level 1550 * @ast method 1551 * 1552 */ 1553 public void addBodyDecl(BodyDecl node) { 1554 List<BodyDecl> list = (parent == null || state == null) ? getBodyDeclListNoTransform() : getBodyDeclList(); 1555 list.addChild(node); 1556 } 1557 /** 1558 * @apilevel low-level 1559 * @ast method 1560 * 1561 */ 1562 public void addBodyDeclNoTransform(BodyDecl node) { 1563 List<BodyDecl> list = getBodyDeclListNoTransform(); 1564 list.addChild(node); 1565 } 1566 /** 1567 * Replaces the BodyDecl list element at index {@code i} with the new node {@code node}. 1568 * @param node The new node to replace the old list element. 1569 * @param i The list index of the node to be replaced. 1570 * @apilevel high-level 1571 * @ast method 1572 * 1573 */ 1574 public void setBodyDecl(BodyDecl node, int i) { 1575 List<BodyDecl> list = getBodyDeclList(); 1576 list.setChild(node, i); 1577 } 1578 /** 1579 * Retrieves the BodyDecl list. 1580 * @return The node representing the BodyDecl list. 1581 * @apilevel high-level 1582 * @ast method 1583 * 1584 */ 1585 public List<BodyDecl> getBodyDecls() { 1586 return getBodyDeclList(); 1587 } 1588 /** 1589 * Retrieves the BodyDecl list. 1590 * <p><em>This method does not invoke AST transformations.</em></p> 1591 * @return The node representing the BodyDecl list. 1592 * @apilevel low-level 1593 * @ast method 1594 * 1595 */ 1596 public List<BodyDecl> getBodyDeclsNoTransform() { 1597 return getBodyDeclListNoTransform(); 1598 } 1599 /** 1600 * Retrieves the BodyDecl list. 1601 * @return The node representing the BodyDecl list. 1602 * @apilevel high-level 1603 * @ast method 1604 * 1605 */ 1606 @SuppressWarnings({"unchecked", "cast"}) 1607 public List<BodyDecl> getBodyDeclList() { 1608 List<BodyDecl> list = (List<BodyDecl>)getChild(1); 1609 list.getNumChild(); 1610 return list; 1611 } 1612 /** 1613 * Retrieves the BodyDecl list. 1614 * <p><em>This method does not invoke AST transformations.</em></p> 1615 * @return The node representing the BodyDecl list. 1616 * @apilevel low-level 1617 * @ast method 1618 * 1619 */ 1620 @SuppressWarnings({"unchecked", "cast"}) 1621 public List<BodyDecl> getBodyDeclListNoTransform() { 1622 return (List<BodyDecl>)getChildNoTransform(1); 1623 } 1624 /** 1625 * @ast method 1626 * @aspect GenericsTypeCheck 1627 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:359 1628 */ 1629 public void typeCheck() { 1630 refined_TypeHierarchyCheck_TypeDecl_typeCheck(); 1631 ArrayList list = new ArrayList(); 1632 list.addAll(implementedInterfaces()); 1633 for(int i = 0; i < list.size(); i++) { 1634 InterfaceDecl decl = (InterfaceDecl)list.get(i); 1635 if(decl instanceof ParInterfaceDecl) { 1636 ParInterfaceDecl p = (ParInterfaceDecl)decl; 1637 for(Iterator i2 = list.listIterator(i); i2.hasNext(); ) { 1638 InterfaceDecl decl2 = (InterfaceDecl)i2.next(); 1639 if(decl2 instanceof ParInterfaceDecl) { 1640 ParInterfaceDecl q = (ParInterfaceDecl)decl2; 1641 if(p != q && p.genericDecl() == q.genericDecl() && !p.sameArgument(q)) 1642 error(p.genericDecl().name() + " cannot be inherited with different arguments: " + 1643 p.typeName() + " and " + q.typeName()); 1644 } 1645 } 1646 } 1647 } 1648 } 1649 /** 1650 * @ast method 1651 * @aspect AutoBoxingCodegen 1652 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/AutoBoxingCodegen.jrag:289 1653 */ 1654 void emitAssignConvTo(CodeGeneration gen, TypeDecl type) { 1655 if(!type.isIntegralType() || !isIntegralType() || type.isLong() || type.isReferenceType() || isReferenceType()) 1656 emitCastTo(gen, type); 1657 } 1658 /** 1659 * @ast method 1660 * @aspect TypeConversion 1661 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:59 1662 */ 1663 private boolean refined_TypeConversion_TypeDecl_assignConversionTo_TypeDecl_Expr(TypeDecl type, Expr expr) 1664 { 1665 //System.out.println("@@@ " + fullName() + " assign conversion to " + type.fullName() + ", expr: " + expr); 1666 boolean sourceIsConstant = expr != null ? expr.isConstant() : false; 1667 //System.out.println("@@@ sourceIsConstant: " + sourceIsConstant); 1668 if(identityConversionTo(type) || wideningConversionTo(type)) 1669 return true; 1670 //System.out.println("@@@ narrowing conversion needed"); 1671 //System.out.println("@@@ value: " + expr.value()); 1672 if(sourceIsConstant && (isInt() || isChar() || isShort() || isByte()) && 1673 (type.isByte() || type.isShort() || type.isChar()) && 1674 narrowingConversionTo(type) && expr.representableIn(type)) 1675 return true; 1676 //System.out.println("@@@ false"); 1677 return false; 1678 } 1679 /** 1680 * @ast method 1681 * @aspect TypeConversion 1682 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:76 1683 */ 1684 private boolean refined_TypeConversion_TypeDecl_methodInvocationConversionTo_TypeDecl(TypeDecl type) 1685 { 1686 return identityConversionTo(type) || wideningConversionTo(type); 1687 } 1688 /** 1689 * @ast method 1690 * @aspect TypeConversion 1691 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:81 1692 */ 1693 private boolean refined_TypeConversion_TypeDecl_castingConversionTo_TypeDecl(TypeDecl type) 1694 { return identityConversionTo(type) || 1695 wideningConversionTo(type) || narrowingConversionTo(type); } 1696 /** 1697 * @ast method 1698 * @aspect Attributes 1699 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Attributes.jrag:164 1700 */ 1701 private Collection refined_Attributes_TypeDecl_attributes() 1702 { 1703 Collection c = new ArrayList(); 1704 if(!innerClassesAttributeEntries().isEmpty()) 1705 c.add(new InnerClassesAttribute(this)); 1706 if(isSynthetic()) 1707 c.add(new SyntheticAttribute(constantPool())); 1708 if(compilationUnit().fromSource()) { 1709 String relativeName = compilationUnit().relativeName(); 1710 if(relativeName != null) { 1711 String splitToken = java.io.File.separator; 1712 if(splitToken.equals("\\")) 1713 splitToken = "\\\\"; 1714 String[] strings = relativeName.split(splitToken); 1715 c.add(new SourceFileAttribute(constantPool(), strings[strings.length-1])); 1716 } 1717 } 1718 return c; 1719 } 1720 /** 1721 * @ast method 1722 * @aspect AnnotationsCodegen 1723 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/AnnotationsCodegen.jrag:11 1724 */ 1725 private Collection refined_AnnotationsCodegen_TypeDecl_attributes() 1726 { 1727 Collection c = refined_Attributes_TypeDecl_attributes(); 1728 getModifiers().addRuntimeVisibleAnnotationsAttribute(c); 1729 getModifiers().addRuntimeInvisibleAnnotationsAttribute(c); 1730 return c; 1731 } 1732 /** 1733 * @ast method 1734 * @aspect GenericsCodegen 1735 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:310 1736 */ 1737 private Collection refined_GenericsCodegen_TypeDecl_attributes() 1738 { 1739 Collection c = refined_AnnotationsCodegen_TypeDecl_attributes(); 1740 if(needsSignatureAttribute()) 1741 c.add(new SignatureAttribute(constantPool(), classSignature())); 1742 return c; 1743 } 1744 /** 1745 * @attribute syn 1746 * @aspect ConstantExpression 1747 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:160 1748 */ 1749 public Constant cast(Constant c) { 1750 ASTNode$State state = state(); 1751 try { 1752 throw new UnsupportedOperationException("ConstantExpression operation cast" + 1753 " not supported for type " + getClass().getName()); 1754 } 1755 finally { 1756 } 1757 } 1758 /** 1759 * @attribute syn 1760 * @aspect ConstantExpression 1761 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:174 1762 */ 1763 public Constant plus(Constant c) { 1764 ASTNode$State state = state(); 1765 try { 1766 throw new UnsupportedOperationException("ConstantExpression operation plus" + 1767 " not supported for type " + getClass().getName()); 1768 } 1769 finally { 1770 } 1771 } 1772 /** 1773 * @attribute syn 1774 * @aspect ConstantExpression 1775 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:183 1776 */ 1777 public Constant minus(Constant c) { 1778 ASTNode$State state = state(); 1779 try { 1780 throw new UnsupportedOperationException("ConstantExpression operation minus" + 1781 " not supported for type " + getClass().getName()); 1782 } 1783 finally { 1784 } 1785 } 1786 /** 1787 * @attribute syn 1788 * @aspect ConstantExpression 1789 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:192 1790 */ 1791 public Constant bitNot(Constant c) { 1792 ASTNode$State state = state(); 1793 try { 1794 throw new UnsupportedOperationException("ConstantExpression operation bitNot" + 1795 " not supported for type " + getClass().getName()); 1796 } 1797 finally { 1798 } 1799 } 1800 /** 1801 * @attribute syn 1802 * @aspect ConstantExpression 1803 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:199 1804 */ 1805 public Constant mul(Constant c1, Constant c2) { 1806 ASTNode$State state = state(); 1807 try { 1808 throw new UnsupportedOperationException("ConstantExpression operation mul" + 1809 " not supported for type " + getClass().getName()); 1810 } 1811 finally { 1812 } 1813 } 1814 /** 1815 * @attribute syn 1816 * @aspect ConstantExpression 1817 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:208 1818 */ 1819 public Constant div(Constant c1, Constant c2) { 1820 ASTNode$State state = state(); 1821 try { 1822 throw new UnsupportedOperationException("ConstantExpression operation div" + 1823 " not supported for type " + getClass().getName()); 1824 } 1825 finally { 1826 } 1827 } 1828 /** 1829 * @attribute syn 1830 * @aspect ConstantExpression 1831 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:217 1832 */ 1833 public Constant mod(Constant c1, Constant c2) { 1834 ASTNode$State state = state(); 1835 try { 1836 throw new UnsupportedOperationException("ConstantExpression operation mod" + 1837 " not supported for type " + getClass().getName()); 1838 } 1839 finally { 1840 } 1841 } 1842 /** 1843 * @attribute syn 1844 * @aspect ConstantExpression 1845 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:226 1846 */ 1847 public Constant add(Constant c1, Constant c2) { 1848 ASTNode$State state = state(); 1849 try { 1850 throw new UnsupportedOperationException("ConstantExpression operation add" + 1851 " not supported for type " + getClass().getName()); 1852 } 1853 finally { 1854 } 1855 } 1856 /** 1857 * @attribute syn 1858 * @aspect ConstantExpression 1859 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:236 1860 */ 1861 public Constant sub(Constant c1, Constant c2) { 1862 ASTNode$State state = state(); 1863 try { 1864 throw new UnsupportedOperationException("ConstantExpression operation sub" + 1865 " not supported for type " + getClass().getName()); 1866 } 1867 finally { 1868 } 1869 } 1870 /** 1871 * @attribute syn 1872 * @aspect ConstantExpression 1873 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:245 1874 */ 1875 public Constant lshift(Constant c1, Constant c2) { 1876 ASTNode$State state = state(); 1877 try { 1878 throw new UnsupportedOperationException("ConstantExpression operation lshift" + 1879 " not supported for type " + getClass().getName()); 1880 } 1881 finally { 1882 } 1883 } 1884 /** 1885 * @attribute syn 1886 * @aspect ConstantExpression 1887 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:252 1888 */ 1889 public Constant rshift(Constant c1, Constant c2) { 1890 ASTNode$State state = state(); 1891 try { 1892 throw new UnsupportedOperationException("ConstantExpression operation rshift" + 1893 " not supported for type " + getClass().getName()); 1894 } 1895 finally { 1896 } 1897 } 1898 /** 1899 * @attribute syn 1900 * @aspect ConstantExpression 1901 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:259 1902 */ 1903 public Constant urshift(Constant c1, Constant c2) { 1904 ASTNode$State state = state(); 1905 try { 1906 throw new UnsupportedOperationException("ConstantExpression operation urshift" + 1907 " not supported for type " + getClass().getName()); 1908 } 1909 finally { 1910 } 1911 } 1912 /** 1913 * @attribute syn 1914 * @aspect ConstantExpression 1915 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:266 1916 */ 1917 public Constant andBitwise(Constant c1, Constant c2) { 1918 ASTNode$State state = state(); 1919 try { 1920 throw new UnsupportedOperationException("ConstantExpression operation andBitwise" + 1921 " not supported for type " + getClass().getName()); 1922 } 1923 finally { 1924 } 1925 } 1926 /** 1927 * @attribute syn 1928 * @aspect ConstantExpression 1929 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:274 1930 */ 1931 public Constant xorBitwise(Constant c1, Constant c2) { 1932 ASTNode$State state = state(); 1933 try { 1934 throw new UnsupportedOperationException("ConstantExpression operation xorBitwise" + 1935 " not supported for type " + getClass().getName()); 1936 } 1937 finally { 1938 } 1939 } 1940 /** 1941 * @attribute syn 1942 * @aspect ConstantExpression 1943 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:282 1944 */ 1945 public Constant orBitwise(Constant c1, Constant c2) { 1946 ASTNode$State state = state(); 1947 try { 1948 throw new UnsupportedOperationException("ConstantExpression operation orBitwise" + 1949 " not supported for type " + getClass().getName()); 1950 } 1951 finally { 1952 } 1953 } 1954 /** 1955 * @attribute syn 1956 * @aspect ConstantExpression 1957 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:290 1958 */ 1959 public Constant questionColon(Constant cond, Constant c1, Constant c2) { 1960 ASTNode$State state = state(); 1961 try { 1962 throw new UnsupportedOperationException("ConstantExpression operation questionColon" + 1963 " not supported for type " + getClass().getName()); 1964 } 1965 finally { 1966 } 1967 } 1968 /** 1969 * @attribute syn 1970 * @aspect ConstantExpression 1971 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:394 1972 */ 1973 public boolean eqIsTrue(Expr left, Expr right) { 1974 ASTNode$State state = state(); 1975 try { 1976 System.err.println("Evaluation eqIsTrue for unknown type: " + getClass().getName()); 1977 return false; 1978 } 1979 finally { 1980 } 1981 } 1982 /** 1983 * @attribute syn 1984 * @aspect ConstantExpression 1985 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:405 1986 */ 1987 public boolean ltIsTrue(Expr left, Expr right) { 1988 ASTNode$State state = state(); 1989 try { return false; } 1990 finally { 1991 } 1992 } 1993 /** 1994 * @attribute syn 1995 * @aspect ConstantExpression 1996 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/ConstantExpression.jrag:411 1997 */ 1998 public boolean leIsTrue(Expr left, Expr right) { 1999 ASTNode$State state = state(); 2000 try { return false; } 2001 finally { 2002 } 2003 } 2004 protected java.util.Map accessibleFromPackage_String_values; 2005 /** 2006 * @attribute syn 2007 * @aspect AccessControl 2008 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/AccessControl.jrag:15 2009 */ 2010 @SuppressWarnings({"unchecked", "cast"}) 2011 public boolean accessibleFromPackage(String packageName) { 2012 Object _parameters = packageName; 2013 if(accessibleFromPackage_String_values == null) accessibleFromPackage_String_values = new java.util.HashMap(4); 2014 if(accessibleFromPackage_String_values.containsKey(_parameters)) { 2015 return ((Boolean)accessibleFromPackage_String_values.get(_parameters)).booleanValue(); 2016 } 2017 ASTNode$State state = state(); 2018 int num = state.boundariesCrossed; 2019 boolean isFinal = this.is$Final(); 2020 boolean accessibleFromPackage_String_value = accessibleFromPackage_compute(packageName); 2021 if(isFinal && num == state().boundariesCrossed){ accessibleFromPackage_String_values.put(_parameters, Boolean.valueOf(accessibleFromPackage_String_value)); } 2022 return accessibleFromPackage_String_value; 2023 } 2024 /** 2025 * @apilevel internal 2026 */ 2027 private boolean accessibleFromPackage_compute(String packageName) { return !isPrivate() && (isPublic() || hostPackage().equals(packageName)); } 2028 protected java.util.Map accessibleFromExtend_TypeDecl_values; 2029 /** 2030 * @attribute syn 2031 * @aspect AccessControl 2032 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/AccessControl.jrag:18 2033 */ 2034 @SuppressWarnings({"unchecked", "cast"}) 2035 public boolean accessibleFromExtend(TypeDecl type) { 2036 Object _parameters = type; 2037 if(accessibleFromExtend_TypeDecl_values == null) accessibleFromExtend_TypeDecl_values = new java.util.HashMap(4); 2038 if(accessibleFromExtend_TypeDecl_values.containsKey(_parameters)) { 2039 return ((Boolean)accessibleFromExtend_TypeDecl_values.get(_parameters)).booleanValue(); 2040 } 2041 ASTNode$State state = state(); 2042 int num = state.boundariesCrossed; 2043 boolean isFinal = this.is$Final(); 2044 boolean accessibleFromExtend_TypeDecl_value = accessibleFromExtend_compute(type); 2045 if(isFinal && num == state().boundariesCrossed){ accessibleFromExtend_TypeDecl_values.put(_parameters, Boolean.valueOf(accessibleFromExtend_TypeDecl_value)); } 2046 return accessibleFromExtend_TypeDecl_value; 2047 } 2048 /** 2049 * @apilevel internal 2050 */ 2051 private boolean accessibleFromExtend_compute(TypeDecl type) { 2052 if(type == this) 2053 return true; 2054 if(isInnerType()) { 2055 if(!enclosingType().accessibleFrom(type)) { 2056 return false; 2057 } 2058 } 2059 if(isPublic()) 2060 return true; 2061 else if(isProtected()) { 2062 // isProtected implies a nested type 2063 if(hostPackage().equals(type.hostPackage())) { 2064 return true; 2065 } 2066 if(type.isNestedType() && type.enclosingType().withinBodyThatSubclasses(enclosingType()) != null) 2067 return true; 2068 return false; 2069 } 2070 else if(isPrivate()) { 2071 return topLevelType() == type.topLevelType(); 2072 } 2073 else 2074 return hostPackage().equals(type.hostPackage()); 2075 } 2076 protected java.util.Map accessibleFrom_TypeDecl_values; 2077 /** 2078 * @attribute syn 2079 * @aspect AccessControl 2080 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/AccessControl.jrag:44 2081 */ 2082 @SuppressWarnings({"unchecked", "cast"}) 2083 public boolean accessibleFrom(TypeDecl type) { 2084 Object _parameters = type; 2085 if(accessibleFrom_TypeDecl_values == null) accessibleFrom_TypeDecl_values = new java.util.HashMap(4); 2086 if(accessibleFrom_TypeDecl_values.containsKey(_parameters)) { 2087 return ((Boolean)accessibleFrom_TypeDecl_values.get(_parameters)).booleanValue(); 2088 } 2089 ASTNode$State state = state(); 2090 int num = state.boundariesCrossed; 2091 boolean isFinal = this.is$Final(); 2092 boolean accessibleFrom_TypeDecl_value = accessibleFrom_compute(type); 2093 if(isFinal && num == state().boundariesCrossed){ accessibleFrom_TypeDecl_values.put(_parameters, Boolean.valueOf(accessibleFrom_TypeDecl_value)); } 2094 return accessibleFrom_TypeDecl_value; 2095 } 2096 /** 2097 * @apilevel internal 2098 */ 2099 private boolean accessibleFrom_compute(TypeDecl type) { 2100 if(type == this) 2101 return true; 2102 if(isInnerType()) { 2103 if(!enclosingType().accessibleFrom(type)) { 2104 return false; 2105 } 2106 } 2107 if(isPublic()) { 2108 return true; 2109 } 2110 else if(isProtected()) { 2111 if(hostPackage().equals(type.hostPackage())) { 2112 return true; 2113 } 2114 if(isMemberType()) { 2115 TypeDecl typeDecl = type; 2116 while(typeDecl != null && !typeDecl.instanceOf(enclosingType())) 2117 typeDecl = typeDecl.enclosingType(); 2118 if(typeDecl != null) { 2119 return true; 2120 } 2121 } 2122 return false; 2123 } 2124 else if(isPrivate()) { 2125 return topLevelType() == type.topLevelType(); 2126 } 2127 else { 2128 return hostPackage().equals(type.hostPackage()); 2129 } 2130 } 2131 /** 2132 * @apilevel internal 2133 */ 2134 protected boolean dimension_computed = false; 2135 /** 2136 * @apilevel internal 2137 */ 2138 protected int dimension_value; 2139 /** 2140 * @attribute syn 2141 * @aspect Arrays 2142 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:11 2143 */ 2144 @SuppressWarnings({"unchecked", "cast"}) 2145 public int dimension() { 2146 if(dimension_computed) { 2147 return dimension_value; 2148 } 2149 ASTNode$State state = state(); 2150 int num = state.boundariesCrossed; 2151 boolean isFinal = this.is$Final(); 2152 dimension_value = dimension_compute(); 2153 if(isFinal && num == state().boundariesCrossed){ dimension_computed = true; } 2154 return dimension_value; 2155 } 2156 /** 2157 * @apilevel internal 2158 */ 2159 private int dimension_compute() { return 0; } 2160 /** 2161 * @apilevel internal 2162 */ 2163 protected boolean elementType_computed = false; 2164 /** 2165 * @apilevel internal 2166 */ 2167 protected TypeDecl elementType_value; 2168 /** 2169 * @attribute syn 2170 * @aspect Arrays 2171 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:15 2172 */ 2173 @SuppressWarnings({"unchecked", "cast"}) 2174 public TypeDecl elementType() { 2175 if(elementType_computed) { 2176 return elementType_value; 2177 } 2178 ASTNode$State state = state(); 2179 int num = state.boundariesCrossed; 2180 boolean isFinal = this.is$Final(); 2181 elementType_value = elementType_compute(); 2182 if(isFinal && num == state().boundariesCrossed){ elementType_computed = true; } 2183 return elementType_value; 2184 } 2185 /** 2186 * @apilevel internal 2187 */ 2188 private TypeDecl elementType_compute() { return this; } 2189 /** 2190 * @apilevel internal 2191 */ 2192 protected boolean arrayType_computed = false; 2193 /** 2194 * @apilevel internal 2195 */ 2196 protected TypeDecl arrayType_value; 2197 /** 2198 * @attribute syn 2199 * @aspect GenericsArrays 2200 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsArrays.jrag:11 2201 */ 2202 @SuppressWarnings({"unchecked", "cast"}) 2203 public TypeDecl arrayType() { 2204 if(arrayType_computed) { 2205 return arrayType_value; 2206 } 2207 ASTNode$State state = state(); 2208 int num = state.boundariesCrossed; 2209 boolean isFinal = this.is$Final(); 2210 arrayType_value = arrayType_compute(); 2211 arrayType_value.setParent(this); 2212 arrayType_value.is$Final = true; 2213 if(true){ arrayType_computed = true; } 2214 return arrayType_value; 2215 } 2216 /** 2217 * @apilevel internal 2218 */ 2219 private TypeDecl arrayType_compute() { 2220 String name = name() + "[]"; 2221 2222 List body = new List(); 2223 body.add( 2224 new FieldDeclaration( 2225 new Modifiers(new List().add(new Modifier("public")).add(new Modifier("final"))), 2226 new PrimitiveTypeAccess("int"), 2227 "length", 2228 new Opt() // [Init:Expr] 2229 ) 2230 ); 2231 MethodDecl clone = null; 2232 TypeDecl typeObject = typeObject(); 2233 for(int i = 0; clone == null && i < typeObject.getNumBodyDecl(); i++) { 2234 if(typeObject.getBodyDecl(i) instanceof MethodDecl) { 2235 MethodDecl m = (MethodDecl)typeObject.getBodyDecl(i); 2236 if(m.name().equals("clone")) 2237 clone = m; 2238 } 2239 } 2240 if(clone != null) { 2241 body.add( 2242 // we create a substituted method that substitutes the clone method in object 2243 // this has the following two consequences: the return value will be cast to the 2244 // expected return type rather than object, and the invoked method will be the 2245 // method in object rather in the array 2246 new MethodDeclSubstituted( 2247 new Modifiers(new List().add(new Modifier("public"))), 2248 new ArrayTypeAccess(createQualifiedAccess()), 2249 "clone", 2250 new List(), 2251 new List(), 2252 new Opt(new Block()), 2253 (MethodDecl)typeObject().memberMethods("clone").iterator().next() 2254 ) 2255 ); 2256 } 2257 TypeDecl typeDecl = 2258 new ArrayDecl( 2259 new Modifiers(new List().add(new Modifier("public"))), 2260 name, 2261 new Opt(typeObject().createQualifiedAccess()), // [SuperClassAccess] 2262 new List().add(typeCloneable().createQualifiedAccess()).add(typeSerializable().createQualifiedAccess()), // Implements* 2263 body // BodyDecl* 2264 ); 2265 return typeDecl; 2266 } 2267 /** 2268 * @attribute syn 2269 * @aspect DataStructures 2270 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:134 2271 */ 2272 public int size() { 2273 ASTNode$State state = state(); 2274 try { return 1; } 2275 finally { 2276 } 2277 } 2278 /** 2279 * @attribute syn 2280 * @aspect DataStructures 2281 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:135 2282 */ 2283 public boolean isEmpty() { 2284 ASTNode$State state = state(); 2285 try { return false; } 2286 finally { 2287 } 2288 } 2289 /** 2290 * @attribute syn 2291 * @aspect DataStructures 2292 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DataStructures.jrag:139 2293 */ 2294 public boolean contains(Object o) { 2295 ASTNode$State state = state(); 2296 try { return this == o; } 2297 finally { 2298 } 2299 } 2300 /** 2301 * @apilevel internal 2302 */ 2303 protected boolean isException_computed = false; 2304 /** 2305 * @apilevel internal 2306 */ 2307 protected boolean isException_value; 2308 /** 2309 * @attribute syn 2310 * @aspect ExceptionHandling 2311 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:24 2312 */ 2313 @SuppressWarnings({"unchecked", "cast"}) 2314 public boolean isException() { 2315 if(isException_computed) { 2316 return isException_value; 2317 } 2318 ASTNode$State state = state(); 2319 int num = state.boundariesCrossed; 2320 boolean isFinal = this.is$Final(); 2321 isException_value = isException_compute(); 2322 if(isFinal && num == state().boundariesCrossed){ isException_computed = true; } 2323 return isException_value; 2324 } 2325 /** 2326 * @apilevel internal 2327 */ 2328 private boolean isException_compute() { return instanceOf(typeException()); } 2329 /** 2330 * @apilevel internal 2331 */ 2332 protected boolean isCheckedException_computed = false; 2333 /** 2334 * @apilevel internal 2335 */ 2336 protected boolean isCheckedException_value; 2337 /** 2338 * Unfortunately the concept of checked vs. unchecked exceptions 2339 * has been inverted in JastAddJ compared to the Java specification. 2340 * This is a slightly unfortunate design flaw which we cannot change 2341 * at this time. 2342 * @attribute syn 2343 * @aspect ExceptionHandling 2344 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:32 2345 */ 2346 @SuppressWarnings({"unchecked", "cast"}) 2347 public boolean isCheckedException() { 2348 if(isCheckedException_computed) { 2349 return isCheckedException_value; 2350 } 2351 ASTNode$State state = state(); 2352 int num = state.boundariesCrossed; 2353 boolean isFinal = this.is$Final(); 2354 isCheckedException_value = isCheckedException_compute(); 2355 if(isFinal && num == state().boundariesCrossed){ isCheckedException_computed = true; } 2356 return isCheckedException_value; 2357 } 2358 /** 2359 * @apilevel internal 2360 */ 2361 private boolean isCheckedException_compute() { return isException() && 2362 (instanceOf(typeRuntimeException()) || instanceOf(typeError())); } 2363 /** 2364 * @apilevel internal 2365 */ 2366 protected boolean isUncheckedException_computed = false; 2367 /** 2368 * @apilevel internal 2369 */ 2370 protected boolean isUncheckedException_value; 2371 /** 2372 * Unfortunately the concept of checked vs. unchecked exceptions 2373 * has been inverted in JastAddJ compared to the Java specification. 2374 * This is a slightly unfortunate design flaw which we cannot change 2375 * at this time. 2376 * @attribute syn 2377 * @aspect ExceptionHandling 2378 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:41 2379 */ 2380 @SuppressWarnings({"unchecked", "cast"}) 2381 public boolean isUncheckedException() { 2382 if(isUncheckedException_computed) { 2383 return isUncheckedException_value; 2384 } 2385 ASTNode$State state = state(); 2386 int num = state.boundariesCrossed; 2387 boolean isFinal = this.is$Final(); 2388 isUncheckedException_value = isUncheckedException_compute(); 2389 if(isFinal && num == state().boundariesCrossed){ isUncheckedException_computed = true; } 2390 return isUncheckedException_value; 2391 } 2392 /** 2393 * @apilevel internal 2394 */ 2395 private boolean isUncheckedException_compute() { return isException() && !isCheckedException(); } 2396 protected java.util.Map mayCatch_TypeDecl_values; 2397 /** 2398 * @attribute syn 2399 * @aspect ExceptionHandling 2400 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:250 2401 */ 2402 @SuppressWarnings({"unchecked", "cast"}) 2403 public boolean mayCatch(TypeDecl thrownType) { 2404 Object _parameters = thrownType; 2405 if(mayCatch_TypeDecl_values == null) mayCatch_TypeDecl_values = new java.util.HashMap(4); 2406 if(mayCatch_TypeDecl_values.containsKey(_parameters)) { 2407 return ((Boolean)mayCatch_TypeDecl_values.get(_parameters)).booleanValue(); 2408 } 2409 ASTNode$State state = state(); 2410 int num = state.boundariesCrossed; 2411 boolean isFinal = this.is$Final(); 2412 boolean mayCatch_TypeDecl_value = mayCatch_compute(thrownType); 2413 if(isFinal && num == state().boundariesCrossed){ mayCatch_TypeDecl_values.put(_parameters, Boolean.valueOf(mayCatch_TypeDecl_value)); } 2414 return mayCatch_TypeDecl_value; 2415 } 2416 /** 2417 * @apilevel internal 2418 */ 2419 private boolean mayCatch_compute(TypeDecl thrownType) { return thrownType.instanceOf(this) || this.instanceOf(thrownType); } 2420 /** 2421 * @attribute syn 2422 * @aspect ConstructScope 2423 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:21 2424 */ 2425 public Collection lookupSuperConstructor() { 2426 ASTNode$State state = state(); 2427 try { return Collections.EMPTY_LIST; } 2428 finally { 2429 } 2430 } 2431 /** 2432 * @apilevel internal 2433 */ 2434 protected boolean constructors_computed = false; 2435 /** 2436 * @apilevel internal 2437 */ 2438 protected Collection constructors_value; 2439 /** 2440 * @attribute syn 2441 * @aspect ConstructorLookup 2442 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:98 2443 */ 2444 @SuppressWarnings({"unchecked", "cast"}) 2445 public Collection constructors() { 2446 if(constructors_computed) { 2447 return constructors_value; 2448 } 2449 ASTNode$State state = state(); 2450 int num = state.boundariesCrossed; 2451 boolean isFinal = this.is$Final(); 2452 constructors_value = constructors_compute(); 2453 if(isFinal && num == state().boundariesCrossed){ constructors_computed = true; } 2454 return constructors_value; 2455 } 2456 /** 2457 * @apilevel internal 2458 */ 2459 private Collection constructors_compute() { 2460 Collection c = new ArrayList(); 2461 for(int i = 0; i < getNumBodyDecl(); i++) { 2462 if(getBodyDecl(i) instanceof ConstructorDecl) { 2463 c.add(getBodyDecl(i)); 2464 } 2465 } 2466 return c; 2467 } 2468 protected java.util.Map unqualifiedLookupMethod_String_values; 2469 /** 2470 * @attribute syn 2471 * @aspect LookupMethod 2472 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:36 2473 */ 2474 @SuppressWarnings({"unchecked", "cast"}) 2475 public Collection unqualifiedLookupMethod(String name) { 2476 Object _parameters = name; 2477 if(unqualifiedLookupMethod_String_values == null) unqualifiedLookupMethod_String_values = new java.util.HashMap(4); 2478 if(unqualifiedLookupMethod_String_values.containsKey(_parameters)) { 2479 return (Collection)unqualifiedLookupMethod_String_values.get(_parameters); 2480 } 2481 ASTNode$State state = state(); 2482 int num = state.boundariesCrossed; 2483 boolean isFinal = this.is$Final(); 2484 Collection unqualifiedLookupMethod_String_value = unqualifiedLookupMethod_compute(name); 2485 if(isFinal && num == state().boundariesCrossed){ unqualifiedLookupMethod_String_values.put(_parameters, unqualifiedLookupMethod_String_value); } 2486 return unqualifiedLookupMethod_String_value; 2487 } 2488 /** 2489 * @apilevel internal 2490 */ 2491 private Collection unqualifiedLookupMethod_compute(String name) { 2492 Collection c = memberMethods(name); 2493 if(!c.isEmpty()) return c; 2494 if(isInnerType()) 2495 return lookupMethod(name); 2496 return removeInstanceMethods(lookupMethod(name)); 2497 } 2498 /** 2499 * @attribute syn 2500 * @aspect MemberMethods 2501 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:210 2502 */ 2503 public Collection memberMethods(String name) { 2504 ASTNode$State state = state(); 2505 try { 2506 Collection c = (Collection)methodsNameMap().get(name); 2507 if(c != null) return c; 2508 return Collections.EMPTY_LIST; 2509 } 2510 finally { 2511 } 2512 } 2513 /** 2514 * @apilevel internal 2515 */ 2516 protected boolean methodsNameMap_computed = false; 2517 /** 2518 * @apilevel internal 2519 */ 2520 protected HashMap methodsNameMap_value; 2521 /** 2522 * @attribute syn 2523 * @aspect MemberMethods 2524 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:216 2525 */ 2526 @SuppressWarnings({"unchecked", "cast"}) 2527 public HashMap methodsNameMap() { 2528 if(methodsNameMap_computed) { 2529 return methodsNameMap_value; 2530 } 2531 ASTNode$State state = state(); 2532 int num = state.boundariesCrossed; 2533 boolean isFinal = this.is$Final(); 2534 methodsNameMap_value = methodsNameMap_compute(); 2535 if(isFinal && num == state().boundariesCrossed){ methodsNameMap_computed = true; } 2536 return methodsNameMap_value; 2537 } 2538 /** 2539 * @apilevel internal 2540 */ 2541 private HashMap methodsNameMap_compute() { 2542 HashMap map = new HashMap(); 2543 for(Iterator iter = methodsIterator(); iter.hasNext(); ) { 2544 MethodDecl m = (MethodDecl)iter.next(); 2545 ArrayList list = (ArrayList)map.get(m.name()); 2546 if(list == null) { 2547 list = new ArrayList(4); 2548 map.put(m.name(), list); 2549 } 2550 list.add(m); 2551 } 2552 return map; 2553 } 2554 /** 2555 * @attribute syn 2556 * @aspect MemberMethods 2557 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:247 2558 */ 2559 public SimpleSet localMethodsSignature(String signature) { 2560 ASTNode$State state = state(); 2561 try { 2562 SimpleSet set = (SimpleSet)localMethodsSignatureMap().get(signature); 2563 if(set != null) return set; 2564 return SimpleSet.emptySet; 2565 } 2566 finally { 2567 } 2568 } 2569 /** 2570 * @apilevel internal 2571 */ 2572 protected boolean localMethodsSignatureMap_computed = false; 2573 /** 2574 * @apilevel internal 2575 */ 2576 protected HashMap localMethodsSignatureMap_value; 2577 /** 2578 * @attribute syn 2579 * @aspect MemberMethods 2580 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:253 2581 */ 2582 @SuppressWarnings({"unchecked", "cast"}) 2583 public HashMap localMethodsSignatureMap() { 2584 if(localMethodsSignatureMap_computed) { 2585 return localMethodsSignatureMap_value; 2586 } 2587 ASTNode$State state = state(); 2588 int num = state.boundariesCrossed; 2589 boolean isFinal = this.is$Final(); 2590 localMethodsSignatureMap_value = localMethodsSignatureMap_compute(); 2591 if(isFinal && num == state().boundariesCrossed){ localMethodsSignatureMap_computed = true; } 2592 return localMethodsSignatureMap_value; 2593 } 2594 /** 2595 * @apilevel internal 2596 */ 2597 private HashMap localMethodsSignatureMap_compute() { 2598 HashMap map = new HashMap(getNumBodyDecl()); 2599 for(int i = 0; i < getNumBodyDecl(); i++) { 2600 if(getBodyDecl(i) instanceof MethodDecl) { 2601 MethodDecl decl = (MethodDecl)getBodyDecl(i); 2602 map.put(decl.signature(), decl); 2603 } 2604 } 2605 return map; 2606 } 2607 /** 2608 * @attribute syn 2609 * @aspect MemberMethods 2610 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:315 2611 */ 2612 public SimpleSet methodsSignature(String signature) { 2613 ASTNode$State state = state(); 2614 try { 2615 SimpleSet set = (SimpleSet)methodsSignatureMap().get(signature); 2616 if(set != null) return set; 2617 return SimpleSet.emptySet; 2618 } 2619 finally { 2620 } 2621 } 2622 /** 2623 * @apilevel internal 2624 */ 2625 protected boolean methodsSignatureMap_computed = false; 2626 /** 2627 * @apilevel internal 2628 */ 2629 protected HashMap methodsSignatureMap_value; 2630 /** 2631 * @attribute syn 2632 * @aspect MemberMethods 2633 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:321 2634 */ 2635 @SuppressWarnings({"unchecked", "cast"}) 2636 public HashMap methodsSignatureMap() { 2637 if(methodsSignatureMap_computed) { 2638 return methodsSignatureMap_value; 2639 } 2640 ASTNode$State state = state(); 2641 int num = state.boundariesCrossed; 2642 boolean isFinal = this.is$Final(); 2643 methodsSignatureMap_value = methodsSignatureMap_compute(); 2644 if(isFinal && num == state().boundariesCrossed){ methodsSignatureMap_computed = true; } 2645 return methodsSignatureMap_value; 2646 } 2647 /** 2648 * @apilevel internal 2649 */ 2650 private HashMap methodsSignatureMap_compute() { return localMethodsSignatureMap(); } 2651 protected java.util.Map ancestorMethods_String_values; 2652 /** 2653 * @attribute syn 2654 * @aspect AncestorMethods 2655 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:378 2656 */ 2657 @SuppressWarnings({"unchecked", "cast"}) 2658 public SimpleSet ancestorMethods(String signature) { 2659 Object _parameters = signature; 2660 if(ancestorMethods_String_values == null) ancestorMethods_String_values = new java.util.HashMap(4); 2661 if(ancestorMethods_String_values.containsKey(_parameters)) { 2662 return (SimpleSet)ancestorMethods_String_values.get(_parameters); 2663 } 2664 ASTNode$State state = state(); 2665 int num = state.boundariesCrossed; 2666 boolean isFinal = this.is$Final(); 2667 SimpleSet ancestorMethods_String_value = ancestorMethods_compute(signature); 2668 if(isFinal && num == state().boundariesCrossed){ ancestorMethods_String_values.put(_parameters, ancestorMethods_String_value); } 2669 return ancestorMethods_String_value; 2670 } 2671 /** 2672 * @apilevel internal 2673 */ 2674 private SimpleSet ancestorMethods_compute(String signature) { return SimpleSet.emptySet; } 2675 /** 2676 * @attribute syn 2677 * @aspect TypeScopePropagation 2678 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:478 2679 */ 2680 public boolean hasType(String name) { 2681 ASTNode$State state = state(); 2682 try { return !memberTypes(name).isEmpty(); } 2683 finally { 2684 } 2685 } 2686 protected java.util.Map localTypeDecls_String_values; 2687 /** 2688 * @attribute syn 2689 * @aspect TypeScopePropagation 2690 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:489 2691 */ 2692 @SuppressWarnings({"unchecked", "cast"}) 2693 public SimpleSet localTypeDecls(String name) { 2694 Object _parameters = name; 2695 if(localTypeDecls_String_values == null) localTypeDecls_String_values = new java.util.HashMap(4); 2696 if(localTypeDecls_String_values.containsKey(_parameters)) { 2697 return (SimpleSet)localTypeDecls_String_values.get(_parameters); 2698 } 2699 ASTNode$State state = state(); 2700 int num = state.boundariesCrossed; 2701 boolean isFinal = this.is$Final(); 2702 SimpleSet localTypeDecls_String_value = localTypeDecls_compute(name); 2703 if(isFinal && num == state().boundariesCrossed){ localTypeDecls_String_values.put(_parameters, localTypeDecls_String_value); } 2704 return localTypeDecls_String_value; 2705 } 2706 /** 2707 * @apilevel internal 2708 */ 2709 private SimpleSet localTypeDecls_compute(String name) { 2710 SimpleSet set = SimpleSet.emptySet; 2711 for(int i = 0; i < getNumBodyDecl(); i++) 2712 if(getBodyDecl(i).declaresType(name)) 2713 set = set.add(getBodyDecl(i).type(name)); 2714 return set; 2715 } 2716 protected java.util.Map memberTypes_String_values; 2717 /** 2718 * @attribute syn 2719 * @aspect TypeScopePropagation 2720 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:497 2721 */ 2722 @SuppressWarnings({"unchecked", "cast"}) 2723 public SimpleSet memberTypes(String name) { 2724 Object _parameters = name; 2725 if(memberTypes_String_values == null) memberTypes_String_values = new java.util.HashMap(4); 2726 if(memberTypes_String_values.containsKey(_parameters)) { 2727 return (SimpleSet)memberTypes_String_values.get(_parameters); 2728 } 2729 ASTNode$State state = state(); 2730 int num = state.boundariesCrossed; 2731 boolean isFinal = this.is$Final(); 2732 SimpleSet memberTypes_String_value = memberTypes_compute(name); 2733 if(isFinal && num == state().boundariesCrossed){ memberTypes_String_values.put(_parameters, memberTypes_String_value); } 2734 return memberTypes_String_value; 2735 } 2736 /** 2737 * @apilevel internal 2738 */ 2739 private SimpleSet memberTypes_compute(String name) { return SimpleSet.emptySet; } 2740 protected java.util.Map localFields_String_values; 2741 /** 2742 * @attribute syn 2743 * @aspect Fields 2744 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:266 2745 */ 2746 @SuppressWarnings({"unchecked", "cast"}) 2747 public SimpleSet localFields(String name) { 2748 Object _parameters = name; 2749 if(localFields_String_values == null) localFields_String_values = new java.util.HashMap(4); 2750 if(localFields_String_values.containsKey(_parameters)) { 2751 return (SimpleSet)localFields_String_values.get(_parameters); 2752 } 2753 ASTNode$State state = state(); 2754 int num = state.boundariesCrossed; 2755 boolean isFinal = this.is$Final(); 2756 SimpleSet localFields_String_value = localFields_compute(name); 2757 if(isFinal && num == state().boundariesCrossed){ localFields_String_values.put(_parameters, localFields_String_value); } 2758 return localFields_String_value; 2759 } 2760 /** 2761 * @apilevel internal 2762 */ 2763 private SimpleSet localFields_compute(String name) { return localFieldsMap().containsKey(name) ? (SimpleSet)localFieldsMap().get(name) : SimpleSet.emptySet; } 2764 /** 2765 * @apilevel internal 2766 */ 2767 protected boolean localFieldsMap_computed = false; 2768 /** 2769 * @apilevel internal 2770 */ 2771 protected HashMap localFieldsMap_value; 2772 /** 2773 * @attribute syn 2774 * @aspect Fields 2775 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:269 2776 */ 2777 @SuppressWarnings({"unchecked", "cast"}) 2778 public HashMap localFieldsMap() { 2779 if(localFieldsMap_computed) { 2780 return localFieldsMap_value; 2781 } 2782 ASTNode$State state = state(); 2783 int num = state.boundariesCrossed; 2784 boolean isFinal = this.is$Final(); 2785 localFieldsMap_value = localFieldsMap_compute(); 2786 if(isFinal && num == state().boundariesCrossed){ localFieldsMap_computed = true; } 2787 return localFieldsMap_value; 2788 } 2789 /** 2790 * @apilevel internal 2791 */ 2792 private HashMap localFieldsMap_compute() { 2793 HashMap map = new HashMap(); 2794 for(int i = 0; i < getNumBodyDecl(); i++) { 2795 if(getBodyDecl(i) instanceof FieldDeclaration) { 2796 FieldDeclaration decl = (FieldDeclaration)getBodyDecl(i); 2797 SimpleSet fields = (SimpleSet)map.get(decl.name()); 2798 if(fields == null) fields = SimpleSet.emptySet; 2799 fields = fields.add(decl); 2800 map.put(decl.name(), fields); 2801 } 2802 } 2803 return map; 2804 } 2805 /** 2806 * @apilevel internal 2807 */ 2808 protected boolean memberFieldsMap_computed = false; 2809 /** 2810 * @apilevel internal 2811 */ 2812 protected HashMap memberFieldsMap_value; 2813 /** 2814 * @attribute syn 2815 * @aspect Fields 2816 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:282 2817 */ 2818 @SuppressWarnings({"unchecked", "cast"}) 2819 public HashMap memberFieldsMap() { 2820 if(memberFieldsMap_computed) { 2821 return memberFieldsMap_value; 2822 } 2823 ASTNode$State state = state(); 2824 int num = state.boundariesCrossed; 2825 boolean isFinal = this.is$Final(); 2826 memberFieldsMap_value = memberFieldsMap_compute(); 2827 if(isFinal && num == state().boundariesCrossed){ memberFieldsMap_computed = true; } 2828 return memberFieldsMap_value; 2829 } 2830 /** 2831 * @apilevel internal 2832 */ 2833 private HashMap memberFieldsMap_compute() { return localFieldsMap(); } 2834 protected java.util.Map memberFields_String_values; 2835 /** 2836 * @attribute syn 2837 * @aspect Fields 2838 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:331 2839 */ 2840 @SuppressWarnings({"unchecked", "cast"}) 2841 public SimpleSet memberFields(String name) { 2842 Object _parameters = name; 2843 if(memberFields_String_values == null) memberFields_String_values = new java.util.HashMap(4); 2844 if(memberFields_String_values.containsKey(_parameters)) { 2845 return (SimpleSet)memberFields_String_values.get(_parameters); 2846 } 2847 ASTNode$State state = state(); 2848 int num = state.boundariesCrossed; 2849 boolean isFinal = this.is$Final(); 2850 SimpleSet memberFields_String_value = memberFields_compute(name); 2851 if(isFinal && num == state().boundariesCrossed){ memberFields_String_values.put(_parameters, memberFields_String_value); } 2852 return memberFields_String_value; 2853 } 2854 /** 2855 * @apilevel internal 2856 */ 2857 private SimpleSet memberFields_compute(String name) { return localFields(name); } 2858 /** 2859 * @apilevel internal 2860 */ 2861 protected boolean hasAbstract_computed = false; 2862 /** 2863 * @apilevel internal 2864 */ 2865 protected boolean hasAbstract_value; 2866 /** 2867 * @attribute syn 2868 * @aspect Modifiers 2869 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:14 2870 */ 2871 @SuppressWarnings({"unchecked", "cast"}) 2872 public boolean hasAbstract() { 2873 if(hasAbstract_computed) { 2874 return hasAbstract_value; 2875 } 2876 ASTNode$State state = state(); 2877 int num = state.boundariesCrossed; 2878 boolean isFinal = this.is$Final(); 2879 hasAbstract_value = hasAbstract_compute(); 2880 if(isFinal && num == state().boundariesCrossed){ hasAbstract_computed = true; } 2881 return hasAbstract_value; 2882 } 2883 /** 2884 * @apilevel internal 2885 */ 2886 private boolean hasAbstract_compute() { return false; } 2887 /** 2888 * @apilevel internal 2889 */ 2890 protected boolean unimplementedMethods_computed = false; 2891 /** 2892 * @apilevel internal 2893 */ 2894 protected Collection unimplementedMethods_value; 2895 /** 2896 * @attribute syn 2897 * @aspect Modifiers 2898 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:16 2899 */ 2900 @SuppressWarnings({"unchecked", "cast"}) 2901 public Collection unimplementedMethods() { 2902 if(unimplementedMethods_computed) { 2903 return unimplementedMethods_value; 2904 } 2905 ASTNode$State state = state(); 2906 int num = state.boundariesCrossed; 2907 boolean isFinal = this.is$Final(); 2908 unimplementedMethods_value = unimplementedMethods_compute(); 2909 if(isFinal && num == state().boundariesCrossed){ unimplementedMethods_computed = true; } 2910 return unimplementedMethods_value; 2911 } 2912 /** 2913 * @apilevel internal 2914 */ 2915 private Collection unimplementedMethods_compute() { return Collections.EMPTY_LIST; } 2916 /** 2917 * @apilevel internal 2918 */ 2919 protected boolean isPublic_computed = false; 2920 /** 2921 * @apilevel internal 2922 */ 2923 protected boolean isPublic_value; 2924 /** 2925 * @attribute syn 2926 * @aspect Modifiers 2927 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:200 2928 */ 2929 @SuppressWarnings({"unchecked", "cast"}) 2930 public boolean isPublic() { 2931 if(isPublic_computed) { 2932 return isPublic_value; 2933 } 2934 ASTNode$State state = state(); 2935 int num = state.boundariesCrossed; 2936 boolean isFinal = this.is$Final(); 2937 isPublic_value = isPublic_compute(); 2938 if(isFinal && num == state().boundariesCrossed){ isPublic_computed = true; } 2939 return isPublic_value; 2940 } 2941 /** 2942 * @apilevel internal 2943 */ 2944 private boolean isPublic_compute() { return getModifiers().isPublic() || isMemberType() && enclosingType().isInterfaceDecl(); } 2945 /** 2946 * @attribute syn 2947 * @aspect Modifiers 2948 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:202 2949 */ 2950 public boolean isPrivate() { 2951 ASTNode$State state = state(); 2952 try { return getModifiers().isPrivate(); } 2953 finally { 2954 } 2955 } 2956 /** 2957 * @attribute syn 2958 * @aspect Modifiers 2959 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:203 2960 */ 2961 public boolean isProtected() { 2962 ASTNode$State state = state(); 2963 try { return getModifiers().isProtected(); } 2964 finally { 2965 } 2966 } 2967 /** 2968 * @attribute syn 2969 * @aspect Modifiers 2970 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:204 2971 */ 2972 public boolean isAbstract() { 2973 ASTNode$State state = state(); 2974 try { return getModifiers().isAbstract(); } 2975 finally { 2976 } 2977 } 2978 /** 2979 * @apilevel internal 2980 */ 2981 protected boolean isStatic_computed = false; 2982 /** 2983 * @apilevel internal 2984 */ 2985 protected boolean isStatic_value; 2986 /** 2987 * @attribute syn 2988 * @aspect Modifiers 2989 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:206 2990 */ 2991 @SuppressWarnings({"unchecked", "cast"}) 2992 public boolean isStatic() { 2993 if(isStatic_computed) { 2994 return isStatic_value; 2995 } 2996 ASTNode$State state = state(); 2997 int num = state.boundariesCrossed; 2998 boolean isFinal = this.is$Final(); 2999 isStatic_value = isStatic_compute(); 3000 if(isFinal && num == state().boundariesCrossed){ isStatic_computed = true; } 3001 return isStatic_value; 3002 } 3003 /** 3004 * @apilevel internal 3005 */ 3006 private boolean isStatic_compute() { return getModifiers().isStatic() || isMemberType() && enclosingType().isInterfaceDecl(); } 3007 /** 3008 * @attribute syn 3009 * @aspect Modifiers 3010 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:209 3011 */ 3012 public boolean isFinal() { 3013 ASTNode$State state = state(); 3014 try { return getModifiers().isFinal(); } 3015 finally { 3016 } 3017 } 3018 /** 3019 * @attribute syn 3020 * @aspect Modifiers 3021 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:210 3022 */ 3023 public boolean isStrictfp() { 3024 ASTNode$State state = state(); 3025 try { return getModifiers().isStrictfp(); } 3026 finally { 3027 } 3028 } 3029 /** 3030 * @attribute syn 3031 * @aspect Modifiers 3032 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:212 3033 */ 3034 public boolean isSynthetic() { 3035 ASTNode$State state = state(); 3036 try { return getModifiers().isSynthetic(); } 3037 finally { 3038 } 3039 } 3040 /** 3041 * @attribute syn 3042 * @aspect NameCheck 3043 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:274 3044 */ 3045 public boolean hasEnclosingTypeDecl(String name) { 3046 ASTNode$State state = state(); 3047 try { 3048 TypeDecl enclosingType = enclosingType(); 3049 if(enclosingType != null) { 3050 return enclosingType.name().equals(name) || enclosingType.hasEnclosingTypeDecl(name); 3051 } 3052 return false; 3053 } 3054 finally { 3055 } 3056 } 3057 /** 3058 * @attribute syn 3059 * @aspect NameCheck 3060 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:427 3061 */ 3062 public boolean assignableToInt() { 3063 ASTNode$State state = state(); 3064 try { return false; } 3065 finally { 3066 } 3067 } 3068 /** 3069 * @attribute syn 3070 * @aspect PrettyPrint 3071 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:758 3072 */ 3073 public boolean addsIndentationLevel() { 3074 ASTNode$State state = state(); 3075 try { return true; } 3076 finally { 3077 } 3078 } 3079 /** 3080 * @attribute syn 3081 * @aspect PrettyPrint 3082 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/PrettyPrint.jadd:800 3083 */ 3084 public String dumpString() { 3085 ASTNode$State state = state(); 3086 try { return getClass().getName() + " [" + getID() + "]"; } 3087 finally { 3088 } 3089 } 3090 /** 3091 * @attribute syn 3092 * @aspect TypeName 3093 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/QualifiedNames.jrag:68 3094 */ 3095 public String name() { 3096 ASTNode$State state = state(); 3097 try { return getID(); } 3098 finally { 3099 } 3100 } 3101 /** 3102 * @apilevel internal 3103 */ 3104 protected boolean fullName_computed = false; 3105 /** 3106 * @apilevel internal 3107 */ 3108 protected String fullName_value; 3109 /** 3110 * @attribute syn 3111 * @aspect TypeName 3112 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/QualifiedNames.jrag:70 3113 */ 3114 @SuppressWarnings({"unchecked", "cast"}) 3115 public String fullName() { 3116 if(fullName_computed) { 3117 return fullName_value; 3118 } 3119 ASTNode$State state = state(); 3120 int num = state.boundariesCrossed; 3121 boolean isFinal = this.is$Final(); 3122 fullName_value = fullName_compute(); 3123 if(isFinal && num == state().boundariesCrossed){ fullName_computed = true; } 3124 return fullName_value; 3125 } 3126 /** 3127 * @apilevel internal 3128 */ 3129 private String fullName_compute() { 3130 if(isNestedType()) 3131 return enclosingType().fullName() + "." + name(); 3132 String packageName = packageName(); 3133 if(packageName.equals("")) 3134 return name(); 3135 return packageName + "." + name(); 3136 } 3137 /** 3138 * @apilevel internal 3139 */ 3140 protected boolean typeName_computed = false; 3141 /** 3142 * @apilevel internal 3143 */ 3144 protected String typeName_value; 3145 /** 3146 * @attribute syn 3147 * @aspect TypeName 3148 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/QualifiedNames.jrag:79 3149 */ 3150 @SuppressWarnings({"unchecked", "cast"}) 3151 public String typeName() { 3152 if(typeName_computed) { 3153 return typeName_value; 3154 } 3155 ASTNode$State state = state(); 3156 int num = state.boundariesCrossed; 3157 boolean isFinal = this.is$Final(); 3158 typeName_value = typeName_compute(); 3159 if(isFinal && num == state().boundariesCrossed){ typeName_computed = true; } 3160 return typeName_value; 3161 } 3162 /** 3163 * @apilevel internal 3164 */ 3165 private String typeName_compute() { 3166 if(isNestedType()) 3167 return enclosingType().typeName() + "." + name(); 3168 String packageName = packageName(); 3169 if(packageName.equals("") || packageName.equals(PRIMITIVE_PACKAGE_NAME)) 3170 return name(); 3171 return packageName + "." + name(); 3172 } 3173 /** 3174 * @attribute syn 3175 * @aspect TypeConversion 3176 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:15 3177 */ 3178 public boolean identityConversionTo(TypeDecl type) { 3179 ASTNode$State state = state(); 3180 try { return this == type; } 3181 finally { 3182 } 3183 } 3184 /** 3185 * @attribute syn 3186 * @aspect TypeConversion 3187 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:17 3188 */ 3189 public boolean wideningConversionTo(TypeDecl type) { 3190 ASTNode$State state = state(); 3191 try { return instanceOf(type); } 3192 finally { 3193 } 3194 } 3195 protected java.util.Map narrowingConversionTo_TypeDecl_values; 3196 /** 3197 * @attribute syn 3198 * @aspect TypeConversion 3199 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:18 3200 */ 3201 @SuppressWarnings({"unchecked", "cast"}) 3202 public boolean narrowingConversionTo(TypeDecl type) { 3203 Object _parameters = type; 3204 if(narrowingConversionTo_TypeDecl_values == null) narrowingConversionTo_TypeDecl_values = new java.util.HashMap(4); 3205 if(narrowingConversionTo_TypeDecl_values.containsKey(_parameters)) { 3206 return ((Boolean)narrowingConversionTo_TypeDecl_values.get(_parameters)).booleanValue(); 3207 } 3208 ASTNode$State state = state(); 3209 int num = state.boundariesCrossed; 3210 boolean isFinal = this.is$Final(); 3211 boolean narrowingConversionTo_TypeDecl_value = narrowingConversionTo_compute(type); 3212 if(isFinal && num == state().boundariesCrossed){ narrowingConversionTo_TypeDecl_values.put(_parameters, Boolean.valueOf(narrowingConversionTo_TypeDecl_value)); } 3213 return narrowingConversionTo_TypeDecl_value; 3214 } 3215 /** 3216 * @apilevel internal 3217 */ 3218 private boolean narrowingConversionTo_compute(TypeDecl type) { return instanceOf(type); } 3219 /** 3220 * @attribute syn 3221 * @aspect TypeConversion 3222 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:55 3223 */ 3224 public boolean stringConversion() { 3225 ASTNode$State state = state(); 3226 try { return true; } 3227 finally { 3228 } 3229 } 3230 /** 3231 * @attribute syn 3232 * @aspect TypeConversion 3233 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:59 3234 */ 3235 public boolean assignConversionTo(TypeDecl type, Expr expr) { 3236 ASTNode$State state = state(); 3237 try { 3238 if(refined_TypeConversion_TypeDecl_assignConversionTo_TypeDecl_Expr(type, expr)) 3239 return true; 3240 boolean canBoxThis = this instanceof PrimitiveType; 3241 boolean canBoxType = type instanceof PrimitiveType; 3242 boolean canUnboxThis = !unboxed().isUnknown(); 3243 boolean canUnboxType = !type.unboxed().isUnknown(); 3244 TypeDecl t = !canUnboxThis && canUnboxType ? type.unboxed() : type; 3245 boolean sourceIsConstant = expr != null ? expr.isConstant() : false; 3246 if(sourceIsConstant && (isInt() || isChar() || isShort() || isByte()) && 3247 (t.isByte() || t.isShort() || t.isChar()) && 3248 narrowingConversionTo(t) && expr.representableIn(t)) 3249 return true; 3250 if(canBoxThis && !canBoxType && boxed().wideningConversionTo(type)) 3251 return true; 3252 else if(canUnboxThis && !canUnboxType && unboxed().wideningConversionTo(type)) 3253 return true; 3254 3255 return false; 3256 } 3257 finally { 3258 } 3259 } 3260 protected java.util.Map methodInvocationConversionTo_TypeDecl_values; 3261 /** 3262 * @attribute syn 3263 * @aspect AutoBoxing 3264 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/AutoBoxing.jrag:99 3265 */ 3266 @SuppressWarnings({"unchecked", "cast"}) 3267 public boolean methodInvocationConversionTo(TypeDecl type) { 3268 Object _parameters = type; 3269 if(methodInvocationConversionTo_TypeDecl_values == null) methodInvocationConversionTo_TypeDecl_values = new java.util.HashMap(4); 3270 if(methodInvocationConversionTo_TypeDecl_values.containsKey(_parameters)) { 3271 return ((Boolean)methodInvocationConversionTo_TypeDecl_values.get(_parameters)).booleanValue(); 3272 } 3273 ASTNode$State state = state(); 3274 int num = state.boundariesCrossed; 3275 boolean isFinal = this.is$Final(); 3276 boolean methodInvocationConversionTo_TypeDecl_value = methodInvocationConversionTo_compute(type); 3277 if(isFinal && num == state().boundariesCrossed){ methodInvocationConversionTo_TypeDecl_values.put(_parameters, Boolean.valueOf(methodInvocationConversionTo_TypeDecl_value)); } 3278 return methodInvocationConversionTo_TypeDecl_value; 3279 } 3280 /** 3281 * @apilevel internal 3282 */ 3283 private boolean methodInvocationConversionTo_compute(TypeDecl type) { 3284 if(refined_TypeConversion_TypeDecl_methodInvocationConversionTo_TypeDecl(type)) 3285 return true; 3286 boolean canBoxThis = this instanceof PrimitiveType; 3287 boolean canBoxType = type instanceof PrimitiveType; 3288 boolean canUnboxThis = !unboxed().isUnknown(); 3289 boolean canUnboxType = !type.unboxed().isUnknown(); 3290 if(canBoxThis && !canBoxType) 3291 return boxed().wideningConversionTo(type); 3292 else if(canUnboxThis && !canUnboxType) 3293 return unboxed().wideningConversionTo(type); 3294 return false; 3295 } 3296 protected java.util.Map castingConversionTo_TypeDecl_values; 3297 /** 3298 * @attribute syn 3299 * @aspect AutoBoxing 3300 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/AutoBoxing.jrag:114 3301 */ 3302 @SuppressWarnings({"unchecked", "cast"}) 3303 public boolean castingConversionTo(TypeDecl type) { 3304 Object _parameters = type; 3305 if(castingConversionTo_TypeDecl_values == null) castingConversionTo_TypeDecl_values = new java.util.HashMap(4); 3306 if(castingConversionTo_TypeDecl_values.containsKey(_parameters)) { 3307 return ((Boolean)castingConversionTo_TypeDecl_values.get(_parameters)).booleanValue(); 3308 } 3309 ASTNode$State state = state(); 3310 int num = state.boundariesCrossed; 3311 boolean isFinal = this.is$Final(); 3312 boolean castingConversionTo_TypeDecl_value = castingConversionTo_compute(type); 3313 if(isFinal && num == state().boundariesCrossed){ castingConversionTo_TypeDecl_values.put(_parameters, Boolean.valueOf(castingConversionTo_TypeDecl_value)); } 3314 return castingConversionTo_TypeDecl_value; 3315 } 3316 /** 3317 * @apilevel internal 3318 */ 3319 private boolean castingConversionTo_compute(TypeDecl type) { 3320 if(refined_TypeConversion_TypeDecl_castingConversionTo_TypeDecl(type)) 3321 return true; 3322 boolean canBoxThis = this instanceof PrimitiveType; 3323 boolean canBoxType = type instanceof PrimitiveType; 3324 boolean canUnboxThis = !unboxed().isUnknown(); 3325 boolean canUnboxType = !type.unboxed().isUnknown(); 3326 if(canBoxThis && !canBoxType) 3327 return boxed().wideningConversionTo(type); 3328 else if(canUnboxThis && !canUnboxType) 3329 return unboxed().wideningConversionTo(type); 3330 return false; 3331 /* 3332 else if(boxingConversionTo(type)) 3333 return true; 3334 else if(unboxingConversionTo(type)) 3335 return true; 3336 return false; 3337 */ 3338 } 3339 /** 3340 * @attribute syn 3341 * @aspect NumericPromotion 3342 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:146 3343 */ 3344 public TypeDecl unaryNumericPromotion() { 3345 ASTNode$State state = state(); 3346 try { return this; } 3347 finally { 3348 } 3349 } 3350 /** 3351 * @attribute syn 3352 * @aspect NumericPromotion 3353 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:154 3354 */ 3355 public TypeDecl binaryNumericPromotion(TypeDecl type) { 3356 ASTNode$State state = state(); 3357 try { return unknownType(); } 3358 finally { 3359 } 3360 } 3361 /** 3362 * @attribute syn 3363 * @aspect TypeAnalysis 3364 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:165 3365 */ 3366 public boolean isReferenceType() { 3367 ASTNode$State state = state(); 3368 try { return false; } 3369 finally { 3370 } 3371 } 3372 /** 3373 * @attribute syn 3374 * @aspect TypeAnalysis 3375 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:168 3376 */ 3377 public boolean isPrimitiveType() { 3378 ASTNode$State state = state(); 3379 try { return false; } 3380 finally { 3381 } 3382 } 3383 /** 3384 * @attribute syn 3385 * @aspect TypeAnalysis 3386 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:173 3387 */ 3388 public boolean isNumericType() { 3389 ASTNode$State state = state(); 3390 try { return false; } 3391 finally { 3392 } 3393 } 3394 /** 3395 * @attribute syn 3396 * @aspect TypeAnalysis 3397 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:177 3398 */ 3399 public boolean isIntegralType() { 3400 ASTNode$State state = state(); 3401 try { return false; } 3402 finally { 3403 } 3404 } 3405 /** 3406 * @attribute syn 3407 * @aspect TypeAnalysis 3408 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:181 3409 */ 3410 public boolean isBoolean() { 3411 ASTNode$State state = state(); 3412 try { return false; } 3413 finally { 3414 } 3415 } 3416 /** 3417 * @attribute syn 3418 * @aspect TypeAnalysis 3419 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:185 3420 */ 3421 public boolean isByte() { 3422 ASTNode$State state = state(); 3423 try { return false; } 3424 finally { 3425 } 3426 } 3427 /** 3428 * @attribute syn 3429 * @aspect TypeAnalysis 3430 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:187 3431 */ 3432 public boolean isChar() { 3433 ASTNode$State state = state(); 3434 try { return false; } 3435 finally { 3436 } 3437 } 3438 /** 3439 * @attribute syn 3440 * @aspect TypeAnalysis 3441 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:189 3442 */ 3443 public boolean isShort() { 3444 ASTNode$State state = state(); 3445 try { return false; } 3446 finally { 3447 } 3448 } 3449 /** 3450 * @attribute syn 3451 * @aspect TypeAnalysis 3452 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:191 3453 */ 3454 public boolean isInt() { 3455 ASTNode$State state = state(); 3456 try { return false; } 3457 finally { 3458 } 3459 } 3460 /** 3461 * @attribute syn 3462 * @aspect TypeAnalysis 3463 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:195 3464 */ 3465 public boolean isFloat() { 3466 ASTNode$State state = state(); 3467 try { return false; } 3468 finally { 3469 } 3470 } 3471 /** 3472 * @attribute syn 3473 * @aspect TypeAnalysis 3474 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:197 3475 */ 3476 public boolean isLong() { 3477 ASTNode$State state = state(); 3478 try { return false; } 3479 finally { 3480 } 3481 } 3482 /** 3483 * @attribute syn 3484 * @aspect TypeAnalysis 3485 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:199 3486 */ 3487 public boolean isDouble() { 3488 ASTNode$State state = state(); 3489 try { return false; } 3490 finally { 3491 } 3492 } 3493 /** 3494 * @attribute syn 3495 * @aspect TypeAnalysis 3496 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:202 3497 */ 3498 public boolean isVoid() { 3499 ASTNode$State state = state(); 3500 try { return false; } 3501 finally { 3502 } 3503 } 3504 /** 3505 * @attribute syn 3506 * @aspect TypeAnalysis 3507 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:205 3508 */ 3509 public boolean isNull() { 3510 ASTNode$State state = state(); 3511 try { return false; } 3512 finally { 3513 } 3514 } 3515 /** 3516 * @attribute syn 3517 * @aspect TypeAnalysis 3518 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:209 3519 */ 3520 public boolean isClassDecl() { 3521 ASTNode$State state = state(); 3522 try { return false; } 3523 finally { 3524 } 3525 } 3526 /** 3527 * @attribute syn 3528 * @aspect TypeAnalysis 3529 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:211 3530 */ 3531 public boolean isInterfaceDecl() { 3532 ASTNode$State state = state(); 3533 try { return false; } 3534 finally { 3535 } 3536 } 3537 /** 3538 * @attribute syn 3539 * @aspect TypeAnalysis 3540 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:213 3541 */ 3542 public boolean isArrayDecl() { 3543 ASTNode$State state = state(); 3544 try { return false; } 3545 finally { 3546 } 3547 } 3548 /** 3549 * @attribute syn 3550 * @aspect TypeAnalysis 3551 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:221 3552 */ 3553 public boolean isPrimitive() { 3554 ASTNode$State state = state(); 3555 try { return false; } 3556 finally { 3557 } 3558 } 3559 /** 3560 * @apilevel internal 3561 */ 3562 protected boolean isString_computed = false; 3563 /** 3564 * @apilevel internal 3565 */ 3566 protected boolean isString_value; 3567 /** 3568 * @attribute syn 3569 * @aspect TypeAnalysis 3570 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:224 3571 */ 3572 @SuppressWarnings({"unchecked", "cast"}) 3573 public boolean isString() { 3574 if(isString_computed) { 3575 return isString_value; 3576 } 3577 ASTNode$State state = state(); 3578 int num = state.boundariesCrossed; 3579 boolean isFinal = this.is$Final(); 3580 isString_value = isString_compute(); 3581 if(isFinal && num == state().boundariesCrossed){ isString_computed = true; } 3582 return isString_value; 3583 } 3584 /** 3585 * @apilevel internal 3586 */ 3587 private boolean isString_compute() { return false; } 3588 /** 3589 * @apilevel internal 3590 */ 3591 protected boolean isObject_computed = false; 3592 /** 3593 * @apilevel internal 3594 */ 3595 protected boolean isObject_value; 3596 /** 3597 * @attribute syn 3598 * @aspect TypeAnalysis 3599 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:227 3600 */ 3601 @SuppressWarnings({"unchecked", "cast"}) 3602 public boolean isObject() { 3603 if(isObject_computed) { 3604 return isObject_value; 3605 } 3606 ASTNode$State state = state(); 3607 int num = state.boundariesCrossed; 3608 boolean isFinal = this.is$Final(); 3609 isObject_value = isObject_compute(); 3610 if(isFinal && num == state().boundariesCrossed){ isObject_computed = true; } 3611 return isObject_value; 3612 } 3613 /** 3614 * @apilevel internal 3615 */ 3616 private boolean isObject_compute() { return false; } 3617 /** 3618 * @attribute syn 3619 * @aspect TypeAnalysis 3620 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:230 3621 */ 3622 public boolean isUnknown() { 3623 ASTNode$State state = state(); 3624 try { return false; } 3625 finally { 3626 } 3627 } 3628 protected java.util.Map instanceOf_TypeDecl_values; 3629 /** 3630 * @attribute syn 3631 * @aspect GenericsSubtype 3632 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:386 3633 */ 3634 @SuppressWarnings({"unchecked", "cast"}) 3635 public boolean instanceOf(TypeDecl type) { 3636 Object _parameters = type; 3637 if(instanceOf_TypeDecl_values == null) instanceOf_TypeDecl_values = new java.util.HashMap(4); 3638 if(instanceOf_TypeDecl_values.containsKey(_parameters)) { 3639 return ((Boolean)instanceOf_TypeDecl_values.get(_parameters)).booleanValue(); 3640 } 3641 ASTNode$State state = state(); 3642 int num = state.boundariesCrossed; 3643 boolean isFinal = this.is$Final(); 3644 boolean instanceOf_TypeDecl_value = instanceOf_compute(type); 3645 if(isFinal && num == state().boundariesCrossed){ instanceOf_TypeDecl_values.put(_parameters, Boolean.valueOf(instanceOf_TypeDecl_value)); } 3646 return instanceOf_TypeDecl_value; 3647 } 3648 /** 3649 * @apilevel internal 3650 */ 3651 private boolean instanceOf_compute(TypeDecl type) { return subtype(type); } 3652 /** 3653 * @attribute syn 3654 * @aspect TypeWideningAndIdentity 3655 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:423 3656 */ 3657 public boolean isSupertypeOfClassDecl(ClassDecl type) { 3658 ASTNode$State state = state(); 3659 try { return type == this; } 3660 finally { 3661 } 3662 } 3663 /** 3664 * @attribute syn 3665 * @aspect TypeWideningAndIdentity 3666 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:440 3667 */ 3668 public boolean isSupertypeOfInterfaceDecl(InterfaceDecl type) { 3669 ASTNode$State state = state(); 3670 try { return type == this; } 3671 finally { 3672 } 3673 } 3674 /** 3675 * @attribute syn 3676 * @aspect TypeWideningAndIdentity 3677 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:453 3678 */ 3679 public boolean isSupertypeOfArrayDecl(ArrayDecl type) { 3680 ASTNode$State state = state(); 3681 try { return this == type; } 3682 finally { 3683 } 3684 } 3685 /** 3686 * @attribute syn 3687 * @aspect TypeWideningAndIdentity 3688 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:475 3689 */ 3690 public boolean isSupertypeOfPrimitiveType(PrimitiveType type) { 3691 ASTNode$State state = state(); 3692 try { return type == this; } 3693 finally { 3694 } 3695 } 3696 /** 3697 * @attribute syn 3698 * @aspect TypeWideningAndIdentity 3699 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:482 3700 */ 3701 public boolean isSupertypeOfNullType(NullType type) { 3702 ASTNode$State state = state(); 3703 try { return false; } 3704 finally { 3705 } 3706 } 3707 /** 3708 * @attribute syn 3709 * @aspect TypeWideningAndIdentity 3710 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:486 3711 */ 3712 public boolean isSupertypeOfVoidType(VoidType type) { 3713 ASTNode$State state = state(); 3714 try { return false; } 3715 finally { 3716 } 3717 } 3718 /** 3719 * @attribute syn 3720 * @aspect NestedTypes 3721 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:497 3722 */ 3723 public TypeDecl topLevelType() { 3724 ASTNode$State state = state(); 3725 try { 3726 if(isTopLevelType()) 3727 return this; 3728 return enclosingType().topLevelType(); 3729 } 3730 finally { 3731 } 3732 } 3733 /** 3734 * @attribute syn 3735 * @aspect NestedTypes 3736 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:523 3737 */ 3738 public boolean isTopLevelType() { 3739 ASTNode$State state = state(); 3740 try { return !isNestedType(); } 3741 finally { 3742 } 3743 } 3744 /** 3745 * @attribute syn 3746 * @aspect NestedTypes 3747 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:534 3748 */ 3749 public boolean isInnerClass() { 3750 ASTNode$State state = state(); 3751 try { return false; } 3752 finally { 3753 } 3754 } 3755 /** 3756 * @attribute syn 3757 * @aspect NestedTypes 3758 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:536 3759 */ 3760 public boolean isInnerType() { 3761 ASTNode$State state = state(); 3762 try { return (isLocalClass() || isAnonymous() || (isMemberType() && !isStatic())) && !inStaticContext(); } 3763 finally { 3764 } 3765 } 3766 /** 3767 * @attribute syn 3768 * @aspect NestedTypes 3769 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:538 3770 */ 3771 public boolean isInnerTypeOf(TypeDecl typeDecl) { 3772 ASTNode$State state = state(); 3773 try { return typeDecl == this || (isInnerType() && enclosingType().isInnerTypeOf(typeDecl)); } 3774 finally { 3775 } 3776 } 3777 /** 3778 * @attribute syn 3779 * @aspect NestedTypes 3780 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:545 3781 */ 3782 public TypeDecl withinBodyThatSubclasses(TypeDecl type) { 3783 ASTNode$State state = state(); 3784 try { 3785 if(instanceOf(type)) 3786 return this; 3787 if(!isTopLevelType()) 3788 return enclosingType().withinBodyThatSubclasses(type); 3789 return null; 3790 } 3791 finally { 3792 } 3793 } 3794 /** 3795 * @attribute syn 3796 * @aspect NestedTypes 3797 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:553 3798 */ 3799 public boolean encloses(TypeDecl type) { 3800 ASTNode$State state = state(); 3801 try { return type.enclosedBy(this); } 3802 finally { 3803 } 3804 } 3805 /** 3806 * @attribute syn 3807 * @aspect NestedTypes 3808 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:555 3809 */ 3810 public boolean enclosedBy(TypeDecl type) { 3811 ASTNode$State state = state(); 3812 try { 3813 if(this == type) 3814 return true; 3815 if(isTopLevelType()) 3816 return false; 3817 return enclosingType().enclosedBy(type); 3818 } 3819 finally { 3820 } 3821 } 3822 /** 3823 * @attribute syn 3824 * @aspect NestedTypes 3825 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:569 3826 */ 3827 public TypeDecl hostType() { 3828 ASTNode$State state = state(); 3829 try { return this; } 3830 finally { 3831 } 3832 } 3833 /** 3834 * @apilevel internal 3835 */ 3836 protected int isCircular_visited = -1; 3837 /** 3838 * @apilevel internal 3839 */ 3840 protected boolean isCircular_computed = false; 3841 /** 3842 * @apilevel internal 3843 */ 3844 protected boolean isCircular_initialized = false; 3845 /** 3846 * @apilevel internal 3847 */ 3848 protected boolean isCircular_value; 3849 /** 3850 * @attribute syn 3851 * @aspect Circularity 3852 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:676 3853 */ 3854 @SuppressWarnings({"unchecked", "cast"}) 3855 public boolean isCircular() { 3856 if(isCircular_computed) { 3857 return isCircular_value; 3858 } 3859 ASTNode$State state = state(); 3860 if (!isCircular_initialized) { 3861 isCircular_initialized = true; 3862 isCircular_value = true; 3863 } 3864 if (!state.IN_CIRCLE) { 3865 state.IN_CIRCLE = true; 3866 int num = state.boundariesCrossed; 3867 boolean isFinal = this.is$Final(); 3868 do { 3869 isCircular_visited = state.CIRCLE_INDEX; 3870 state.CHANGE = false; 3871 boolean new_isCircular_value = isCircular_compute(); 3872 if (new_isCircular_value!=isCircular_value) 3873 state.CHANGE = true; 3874 isCircular_value = new_isCircular_value; 3875 state.CIRCLE_INDEX++; 3876 } while (state.CHANGE); 3877 if(isFinal && num == state().boundariesCrossed) { 3878 isCircular_computed = true; 3879 } 3880 else { 3881 state.RESET_CYCLE = true; 3882 isCircular_compute(); 3883 state.RESET_CYCLE = false; 3884 isCircular_computed = false; 3885 isCircular_initialized = false; 3886 } 3887 state.IN_CIRCLE = false; 3888 return isCircular_value; 3889 } 3890 if(isCircular_visited != state.CIRCLE_INDEX) { 3891 isCircular_visited = state.CIRCLE_INDEX; 3892 if (state.RESET_CYCLE) { 3893 isCircular_computed = false; 3894 isCircular_initialized = false; 3895 isCircular_visited = -1; 3896 return isCircular_value; 3897 } 3898 boolean new_isCircular_value = isCircular_compute(); 3899 if (new_isCircular_value!=isCircular_value) 3900 state.CHANGE = true; 3901 isCircular_value = new_isCircular_value; 3902 return isCircular_value; 3903 } 3904 return isCircular_value; 3905 } 3906 /** 3907 * @apilevel internal 3908 */ 3909 private boolean isCircular_compute() { return false; } 3910 /** 3911 * @apilevel internal 3912 */ 3913 protected boolean innerClassesAttributeEntries_computed = false; 3914 /** 3915 * @apilevel internal 3916 */ 3917 protected Collection innerClassesAttributeEntries_value; 3918 /** 3919 * @attribute syn 3920 * @aspect Attributes 3921 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Attributes.jrag:83 3922 */ 3923 @SuppressWarnings({"unchecked", "cast"}) 3924 public Collection innerClassesAttributeEntries() { 3925 if(innerClassesAttributeEntries_computed) { 3926 return innerClassesAttributeEntries_value; 3927 } 3928 ASTNode$State state = state(); 3929 int num = state.boundariesCrossed; 3930 boolean isFinal = this.is$Final(); 3931 innerClassesAttributeEntries_value = innerClassesAttributeEntries_compute(); 3932 if(isFinal && num == state().boundariesCrossed){ innerClassesAttributeEntries_computed = true; } 3933 return innerClassesAttributeEntries_value; 3934 } 3935 /** 3936 * @apilevel internal 3937 */ 3938 private Collection innerClassesAttributeEntries_compute() { 3939 HashSet list = new HashSet(); 3940 if(isNestedType()) 3941 list.add(this); 3942 for(Iterator iter = nestedTypes().iterator(); iter.hasNext(); ) 3943 list.add(iter.next()); 3944 for(Iterator iter = usedNestedTypes().iterator(); iter.hasNext(); ) 3945 list.add(iter.next()); 3946 return list; 3947 } 3948 /** 3949 * @apilevel internal 3950 */ 3951 protected boolean attributes_computed = false; 3952 /** 3953 * @apilevel internal 3954 */ 3955 protected Collection attributes_value; 3956 /** 3957 * @attribute syn 3958 * @aspect EnclosingMethodAttribute 3959 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/EnclosingMethodAttribute.jrag:12 3960 */ 3961 @SuppressWarnings({"unchecked", "cast"}) 3962 public Collection attributes() { 3963 if(attributes_computed) { 3964 return attributes_value; 3965 } 3966 ASTNode$State state = state(); 3967 int num = state.boundariesCrossed; 3968 boolean isFinal = this.is$Final(); 3969 attributes_value = attributes_compute(); 3970 if(isFinal && num == state().boundariesCrossed){ attributes_computed = true; } 3971 return attributes_value; 3972 } 3973 /** 3974 * @apilevel internal 3975 */ 3976 private Collection attributes_compute() { 3977 Collection c = refined_GenericsCodegen_TypeDecl_attributes(); 3978 if(isLocalClass() || isAnonymous()) { 3979 c.add(new EnclosingMethod(constantPool(), this)); 3980 } 3981 return c; 3982 } 3983 /** 3984 * @apilevel internal 3985 */ 3986 protected boolean clinit_attributes_computed = false; 3987 /** 3988 * @apilevel internal 3989 */ 3990 protected Collection clinit_attributes_value; 3991 /** 3992 * @attribute syn 3993 * @aspect Attributes 3994 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Attributes.jrag:206 3995 */ 3996 @SuppressWarnings({"unchecked", "cast"}) 3997 public Collection clinit_attributes() { 3998 if(clinit_attributes_computed) { 3999 return clinit_attributes_value; 4000 } 4001 ASTNode$State state = state(); 4002 int num = state.boundariesCrossed; 4003 boolean isFinal = this.is$Final(); 4004 clinit_attributes_value = clinit_attributes_compute(); 4005 if(isFinal && num == state().boundariesCrossed){ clinit_attributes_computed = true; } 4006 return clinit_attributes_value; 4007 } 4008 /** 4009 * @apilevel internal 4010 */ 4011 private Collection clinit_attributes_compute() { 4012 ArrayList l = new ArrayList(); 4013 l.add(new CodeAttribute(bytecodes(constantPool()), null)); 4014 return l; 4015 } 4016 /** 4017 * @attribute syn 4018 * @aspect CodeGeneration 4019 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:621 4020 */ 4021 public byte arrayLoad() { 4022 ASTNode$State state = state(); 4023 try { 4024 throw new Error("Cannot create array load for TypeDecl"); 4025 } 4026 finally { 4027 } 4028 } 4029 /** 4030 * @attribute syn 4031 * @aspect CodeGeneration 4032 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CodeGeneration.jrag:723 4033 */ 4034 public byte arrayStore() { 4035 ASTNode$State state = state(); 4036 try { 4037 throw new Error("Cannot create array load for TypeDecl"); 4038 } 4039 finally { 4040 } 4041 } 4042 /** 4043 * @apilevel internal 4044 */ 4045 protected boolean constantPool_computed = false; 4046 /** 4047 * @apilevel internal 4048 */ 4049 protected ConstantPool constantPool_value; 4050 /** 4051 * @attribute syn 4052 * @aspect ConstantPool 4053 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/ConstantPool.jrag:14 4054 */ 4055 @SuppressWarnings({"unchecked", "cast"}) 4056 public ConstantPool constantPool() { 4057 if(constantPool_computed) { 4058 return constantPool_value; 4059 } 4060 ASTNode$State state = state(); 4061 int num = state.boundariesCrossed; 4062 boolean isFinal = this.is$Final(); 4063 constantPool_value = constantPool_compute(); 4064 if(isFinal && num == state().boundariesCrossed){ constantPool_computed = true; } 4065 return constantPool_value; 4066 } 4067 /** 4068 * @apilevel internal 4069 */ 4070 private ConstantPool constantPool_compute() { return new ConstantPool(this); } 4071 /** 4072 * @apilevel internal 4073 */ 4074 protected boolean constantPoolName_computed = false; 4075 /** 4076 * @apilevel internal 4077 */ 4078 protected String constantPoolName_value; 4079 /** 4080 * @attribute syn 4081 * @aspect ConstantPool 4082 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/ConstantPool.jrag:16 4083 */ 4084 @SuppressWarnings({"unchecked", "cast"}) 4085 public String constantPoolName() { 4086 if(constantPoolName_computed) { 4087 return constantPoolName_value; 4088 } 4089 ASTNode$State state = state(); 4090 int num = state.boundariesCrossed; 4091 boolean isFinal = this.is$Final(); 4092 constantPoolName_value = constantPoolName_compute(); 4093 if(isFinal && num == state().boundariesCrossed){ constantPoolName_computed = true; } 4094 return constantPoolName_value; 4095 } 4096 /** 4097 * @apilevel internal 4098 */ 4099 private String constantPoolName_compute() { 4100 if(!isNestedType()) { 4101 String packageName = packageName(); 4102 if(!packageName.equals("")) { 4103 packageName = packageName.replace('.', '/') + "/"; 4104 } 4105 return packageName + name(); 4106 } 4107 else { 4108 String prefix = enclosingType().constantPoolName(); 4109 if(isAnonymous()) { 4110 return prefix + "$" + uniqueIndex(); 4111 } 4112 else if(isLocalClass()) { 4113 return prefix + "$" + uniqueIndex() + name(); 4114 } 4115 return prefix + "$" + name(); 4116 } 4117 } 4118 /** 4119 * @apilevel internal 4120 */ 4121 protected boolean typeDescriptor_computed = false; 4122 /** 4123 * @apilevel internal 4124 */ 4125 protected String typeDescriptor_value; 4126 /** 4127 * @attribute syn 4128 * @aspect ConstantPoolNames 4129 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/ConstantPoolNames.jrag:12 4130 */ 4131 @SuppressWarnings({"unchecked", "cast"}) 4132 public String typeDescriptor() { 4133 if(typeDescriptor_computed) { 4134 return typeDescriptor_value; 4135 } 4136 ASTNode$State state = state(); 4137 int num = state.boundariesCrossed; 4138 boolean isFinal = this.is$Final(); 4139 typeDescriptor_value = typeDescriptor_compute(); 4140 if(isFinal && num == state().boundariesCrossed){ typeDescriptor_computed = true; } 4141 return typeDescriptor_value; 4142 } 4143 /** 4144 * @apilevel internal 4145 */ 4146 private String typeDescriptor_compute() { 4147 throw new Error("Can not compute typeDescriptor for " + getClass().getName()); 4148 } 4149 /** 4150 * @apilevel internal 4151 */ 4152 protected boolean hasClinit_computed = false; 4153 /** 4154 * @apilevel internal 4155 */ 4156 protected boolean hasClinit_value; 4157 /** 4158 * @attribute syn 4159 * @aspect CreateBCode 4160 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:26 4161 */ 4162 @SuppressWarnings({"unchecked", "cast"}) 4163 public boolean hasClinit() { 4164 if(hasClinit_computed) { 4165 return hasClinit_value; 4166 } 4167 ASTNode$State state = state(); 4168 int num = state.boundariesCrossed; 4169 boolean isFinal = this.is$Final(); 4170 hasClinit_value = hasClinit_compute(); 4171 if(isFinal && num == state().boundariesCrossed){ hasClinit_computed = true; } 4172 return hasClinit_value; 4173 } 4174 /** 4175 * @apilevel internal 4176 */ 4177 private boolean hasClinit_compute() { 4178 for(int i = 0; i < getNumBodyDecl(); i++) { 4179 BodyDecl b = getBodyDecl(i); 4180 if(b instanceof FieldDeclaration) { 4181 FieldDeclaration f = (FieldDeclaration)b; 4182 if(f.isStatic() && f.hasInit()) { 4183 return true; 4184 } 4185 } 4186 else if(b instanceof StaticInitializer) { 4187 return true; 4188 } 4189 } 4190 return false; 4191 } 4192 protected java.util.Map bytecodes_ConstantPool_values; 4193 /** 4194 * @attribute syn 4195 * @aspect CreateBCode 4196 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:42 4197 */ 4198 @SuppressWarnings({"unchecked", "cast"}) 4199 public CodeGeneration bytecodes(ConstantPool constantPool) { 4200 Object _parameters = constantPool; 4201 if(bytecodes_ConstantPool_values == null) bytecodes_ConstantPool_values = new java.util.HashMap(4); 4202 if(bytecodes_ConstantPool_values.containsKey(_parameters)) { 4203 return (CodeGeneration)bytecodes_ConstantPool_values.get(_parameters); 4204 } 4205 ASTNode$State state = state(); 4206 int num = state.boundariesCrossed; 4207 boolean isFinal = this.is$Final(); 4208 CodeGeneration bytecodes_ConstantPool_value = bytecodes_compute(constantPool); 4209 if(isFinal && num == state().boundariesCrossed){ bytecodes_ConstantPool_values.put(_parameters, bytecodes_ConstantPool_value); } 4210 return bytecodes_ConstantPool_value; 4211 } 4212 /** 4213 * @apilevel internal 4214 */ 4215 private CodeGeneration bytecodes_compute(ConstantPool constantPool) { 4216 CodeGeneration gen = new CodeGeneration(constantPool); 4217 generateBytecodes(gen); 4218 if(!gen.numberFormatError()) 4219 return gen; 4220 gen = new CodeGeneration(constantPool, true); 4221 generateBytecodes(gen); 4222 if(!gen.numberFormatError()) 4223 return gen; 4224 throw new Error("Could not generate code for initializers in " + hostType().typeName()); 4225 } 4226 /** 4227 * @attribute syn 4228 * @aspect CreateBCode 4229 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:469 4230 */ 4231 public boolean needsAccessorFor(Variable v) { 4232 ASTNode$State state = state(); 4233 try { 4234 if(!(v instanceof FieldDeclaration)) 4235 return false; 4236 FieldDeclaration f = (FieldDeclaration)v; 4237 if(f.isConstant() && (f.type().isPrimitive() || f.type().isString())) 4238 return false; 4239 return f.isPrivate() && !hasField(v.name()); 4240 } 4241 finally { 4242 } 4243 } 4244 /** 4245 * @attribute syn 4246 * @aspect CreateBCode 4247 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:820 4248 */ 4249 public String arrayTypeDescriptor() { 4250 ASTNode$State state = state(); 4251 try { throw new Error("Operation not supported"); } 4252 finally { 4253 } 4254 } 4255 /** 4256 * @attribute syn 4257 * @aspect CreateBCode 4258 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:825 4259 */ 4260 public int arrayPrimitiveTypeDescriptor() { 4261 ASTNode$State state = state(); 4262 try { error(); return -1; } 4263 finally { 4264 } 4265 } 4266 /** 4267 * @apilevel internal 4268 */ 4269 protected boolean flags_computed = false; 4270 /** 4271 * @apilevel internal 4272 */ 4273 protected int flags_value; 4274 /** 4275 * @attribute syn 4276 * @aspect Flags 4277 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Flags.jrag:64 4278 */ 4279 @SuppressWarnings({"unchecked", "cast"}) 4280 public int flags() { 4281 if(flags_computed) { 4282 return flags_value; 4283 } 4284 ASTNode$State state = state(); 4285 int num = state.boundariesCrossed; 4286 boolean isFinal = this.is$Final(); 4287 flags_value = flags_compute(); 4288 if(isFinal && num == state().boundariesCrossed){ flags_computed = true; } 4289 return flags_value; 4290 } 4291 /** 4292 * @apilevel internal 4293 */ 4294 private int flags_compute() { 4295 int res = 0; 4296 if(isPublic()) res |= Modifiers.ACC_PUBLIC; 4297 if(isPrivate()) res |= Modifiers.ACC_PRIVATE; 4298 if(isProtected()) res |= Modifiers.ACC_PROTECTED; 4299 if(isStatic()) res |= Modifiers.ACC_STATIC; 4300 if(isFinal()) res |= Modifiers.ACC_FINAL; 4301 // ACC_INTERFACE handled in InterfaceDecl 4302 if(isAbstract()) res |= Modifiers.ACC_ABSTRACT; 4303 return res; 4304 } 4305 /** 4306 * @attribute syn 4307 * @aspect GenerateClassfile 4308 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:34 4309 */ 4310 public int magicHeader() { 4311 ASTNode$State state = state(); 4312 try { return 0xCAFEBABE; } 4313 finally { 4314 } 4315 } 4316 /** 4317 * @attribute syn 4318 * @aspect GenerateClassfile 4319 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:35 4320 */ 4321 public int minorVersion() { 4322 ASTNode$State state = state(); 4323 try { return 0; } 4324 finally { 4325 } 4326 } 4327 /** 4328 * @attribute syn 4329 * @aspect GenerateClassfile 4330 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:36 4331 */ 4332 public int majorVersion() { 4333 ASTNode$State state = state(); 4334 try { 4335 return 49; 4336 } 4337 finally { 4338 } 4339 } 4340 /** 4341 * @apilevel internal 4342 */ 4343 protected boolean bcFields_computed = false; 4344 /** 4345 * @apilevel internal 4346 */ 4347 protected Collection bcFields_value; 4348 /** 4349 * @attribute syn 4350 * @aspect GenerateClassfile 4351 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:275 4352 */ 4353 @SuppressWarnings({"unchecked", "cast"}) 4354 public Collection bcFields() { 4355 if(bcFields_computed) { 4356 return bcFields_value; 4357 } 4358 ASTNode$State state = state(); 4359 int num = state.boundariesCrossed; 4360 boolean isFinal = this.is$Final(); 4361 bcFields_value = bcFields_compute(); 4362 if(isFinal && num == state().boundariesCrossed){ bcFields_computed = true; } 4363 return bcFields_value; 4364 } 4365 /** 4366 * @apilevel internal 4367 */ 4368 private Collection bcFields_compute() { return new ArrayList(); } 4369 /** 4370 * @attribute syn 4371 * @aspect GenerateClassfile 4372 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/GenerateClassfile.jrag:325 4373 */ 4374 public boolean flush() { 4375 ASTNode$State state = state(); 4376 try { return false; } 4377 finally { 4378 } 4379 } 4380 /** 4381 * @attribute syn 4382 * @aspect InnerClasses 4383 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:82 4384 */ 4385 public TypeDecl stringPromotion() { 4386 ASTNode$State state = state(); 4387 try { return this; } 4388 finally { 4389 } 4390 } 4391 /** 4392 * @attribute syn 4393 * @aspect InnerClasses 4394 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:94 4395 */ 4396 public MethodDecl methodWithArgs(String name, TypeDecl[] args) { 4397 ASTNode$State state = state(); 4398 try { 4399 for(Iterator iter = memberMethods(name).iterator(); iter.hasNext(); ) { 4400 MethodDecl m = (MethodDecl)iter.next(); 4401 if(m.getNumParameter() == args.length) { 4402 for(int i = 0; i < args.length; i++) 4403 if(m.getParameter(i).type() == args[i]) 4404 return m; 4405 } 4406 } 4407 return null; 4408 } 4409 finally { 4410 } 4411 } 4412 /** 4413 * @apilevel internal 4414 */ 4415 protected boolean enclosingVariables_computed = false; 4416 /** 4417 * @apilevel internal 4418 */ 4419 protected Collection enclosingVariables_value; 4420 /** 4421 * @attribute syn 4422 * @aspect InnerClasses 4423 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:145 4424 */ 4425 @SuppressWarnings({"unchecked", "cast"}) 4426 public Collection enclosingVariables() { 4427 if(enclosingVariables_computed) { 4428 return enclosingVariables_value; 4429 } 4430 ASTNode$State state = state(); 4431 int num = state.boundariesCrossed; 4432 boolean isFinal = this.is$Final(); 4433 enclosingVariables_value = enclosingVariables_compute(); 4434 if(isFinal && num == state().boundariesCrossed){ enclosingVariables_computed = true; } 4435 return enclosingVariables_value; 4436 } 4437 /** 4438 * @apilevel internal 4439 */ 4440 private Collection enclosingVariables_compute() { 4441 HashSet set = new HashSet(); 4442 for(TypeDecl e = this; e != null; e = e.enclosingType()) 4443 if(e.isLocalClass() || e.isAnonymous()) 4444 collectEnclosingVariables(set, e.enclosingType()); 4445 if(isClassDecl()) { 4446 ClassDecl classDecl = (ClassDecl)this; 4447 if(classDecl.isNestedType() && classDecl.hasSuperclass()) 4448 set.addAll(classDecl.superclass().enclosingVariables()); 4449 } 4450 return set; 4451 } 4452 /** 4453 * @attribute syn 4454 * @aspect InnerClasses 4455 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:394 4456 */ 4457 public boolean isAnonymousInNonStaticContext() { 4458 ASTNode$State state = state(); 4459 try { 4460 return isAnonymous() && 4461 !((ClassInstanceExpr)getParent().getParent()).unqualifiedScope().inStaticContext() 4462 && (!inExplicitConstructorInvocation() || enclosingBodyDecl().hostType().isInnerType()); 4463 } 4464 finally { 4465 } 4466 } 4467 /** 4468 * @attribute syn 4469 * @aspect InnerClasses 4470 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:400 4471 */ 4472 public boolean needsEnclosing() { 4473 ASTNode$State state = state(); 4474 try { 4475 if(isAnonymous()) 4476 return isAnonymousInNonStaticContext(); 4477 else if(isLocalClass()) 4478 return !inStaticContext(); 4479 else if(isInnerType()) 4480 return true; 4481 return false; 4482 } 4483 finally { 4484 } 4485 } 4486 /** 4487 * @attribute syn 4488 * @aspect InnerClasses 4489 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:410 4490 */ 4491 public boolean needsSuperEnclosing() { 4492 ASTNode$State state = state(); 4493 try { 4494 if(!isAnonymous()) 4495 return false; 4496 TypeDecl superClass = ((ClassDecl)this).superclass(); 4497 if(superClass.isLocalClass()) 4498 return !superClass.inStaticContext(); 4499 else if(superClass.isInnerType()) 4500 return true; 4501 if(needsEnclosing() && enclosing() == superEnclosing()) 4502 return false; 4503 return false; 4504 } 4505 finally { 4506 } 4507 } 4508 /** 4509 * @attribute syn 4510 * @aspect InnerClasses 4511 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:422 4512 */ 4513 public TypeDecl enclosing() { 4514 ASTNode$State state = state(); 4515 try { 4516 if(!needsEnclosing()) 4517 return null; 4518 TypeDecl typeDecl = enclosingType(); 4519 if(isAnonymous() && inExplicitConstructorInvocation()) 4520 typeDecl = typeDecl.enclosingType(); 4521 return typeDecl; 4522 } 4523 finally { 4524 } 4525 } 4526 /** 4527 * @attribute syn 4528 * @aspect InnerClasses 4529 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/InnerClasses.jrag:430 4530 */ 4531 public TypeDecl superEnclosing() { 4532 ASTNode$State state = state(); 4533 try { return null; } 4534 finally { 4535 } 4536 } 4537 /** 4538 * @apilevel internal 4539 */ 4540 protected boolean uniqueIndex_computed = false; 4541 /** 4542 * @apilevel internal 4543 */ 4544 protected int uniqueIndex_value; 4545 /** 4546 * @attribute syn 4547 * @aspect Java2Rewrites 4548 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:12 4549 */ 4550 @SuppressWarnings({"unchecked", "cast"}) 4551 public int uniqueIndex() { 4552 if(uniqueIndex_computed) { 4553 return uniqueIndex_value; 4554 } 4555 ASTNode$State state = state(); 4556 int num = state.boundariesCrossed; 4557 boolean isFinal = this.is$Final(); 4558 uniqueIndex_value = uniqueIndex_compute(); 4559 if(isFinal && num == state().boundariesCrossed){ uniqueIndex_computed = true; } 4560 return uniqueIndex_value; 4561 } 4562 /** 4563 * @apilevel internal 4564 */ 4565 private int uniqueIndex_compute() { return topLevelType().uniqueIndexCounter++; } 4566 /** 4567 * @apilevel internal 4568 */ 4569 protected boolean jvmName_computed = false; 4570 /** 4571 * @apilevel internal 4572 */ 4573 protected String jvmName_value; 4574 /** 4575 * @attribute syn 4576 * @aspect Java2Rewrites 4577 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:15 4578 */ 4579 @SuppressWarnings({"unchecked", "cast"}) 4580 public String jvmName() { 4581 if(jvmName_computed) { 4582 return jvmName_value; 4583 } 4584 ASTNode$State state = state(); 4585 int num = state.boundariesCrossed; 4586 boolean isFinal = this.is$Final(); 4587 jvmName_value = jvmName_compute(); 4588 if(isFinal && num == state().boundariesCrossed){ jvmName_computed = true; } 4589 return jvmName_value; 4590 } 4591 /** 4592 * @apilevel internal 4593 */ 4594 private String jvmName_compute() { 4595 throw new Error("Jvm name only supported for reference types and not " + getClass().getName()); 4596 } 4597 /** 4598 * @attribute syn 4599 * @aspect Java2Rewrites 4600 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:44 4601 */ 4602 public String primitiveClassName() { 4603 ASTNode$State state = state(); 4604 try { 4605 throw new Error("primitiveClassName not supported for " + name() + " of type " + getClass().getName()); 4606 } 4607 finally { 4608 } 4609 } 4610 /** 4611 * @attribute syn 4612 * @aspect Java2Rewrites 4613 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/Java2Rewrites.jrag:57 4614 */ 4615 public String referenceClassFieldName() { 4616 ASTNode$State state = state(); 4617 try { 4618 throw new Error("referenceClassFieldName not supported for " + name() + " of type " + getClass().getName()); 4619 } 4620 finally { 4621 } 4622 } 4623 /** 4624 * @attribute syn 4625 * @aspect LocalNum 4626 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/LocalNum.jrag:124 4627 */ 4628 public int variableSize() { 4629 ASTNode$State state = state(); 4630 try { return 0; } 4631 finally { 4632 } 4633 } 4634 /* It is a compile-time error if the return type of a method declared in an 4635 annotation type is any type other than one of the following: one of the 4636 primitive types, String, Class and any invocation of Class, an enum type 4637 (\ufffd8.9), an annotation type, or an array (\ufffd10) of one of the preceding types.* @attribute syn 4638 * @aspect Annotations 4639 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:121 4640 */ 4641 public boolean isValidAnnotationMethodReturnType() { 4642 ASTNode$State state = state(); 4643 try { return false; } 4644 finally { 4645 } 4646 } 4647 /** 4648 * @attribute syn 4649 * @aspect Annotations 4650 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:225 4651 */ 4652 public Annotation annotation(TypeDecl typeDecl) { 4653 ASTNode$State state = state(); 4654 try { return getModifiers().annotation(typeDecl); } 4655 finally { 4656 } 4657 } 4658 /** 4659 * @attribute syn 4660 * @aspect Annotations 4661 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:282 4662 */ 4663 public boolean hasAnnotationSuppressWarnings(String s) { 4664 ASTNode$State state = state(); 4665 try { return getModifiers().hasAnnotationSuppressWarnings(s); } 4666 finally { 4667 } 4668 } 4669 /** 4670 * @attribute syn 4671 * @aspect Annotations 4672 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:321 4673 */ 4674 public boolean isDeprecated() { 4675 ASTNode$State state = state(); 4676 try { return getModifiers().hasDeprecatedAnnotation(); } 4677 finally { 4678 } 4679 } 4680 /* An element type T is commensurate with an element value V if and only if one of the following conditions is true: 4681 * T is an array type E[] and either: 4682 o V is an ElementValueArrayInitializer and each ElementValueInitializer (analogous to a variable initializer in an array initializer) in V is commensurate with E. Or 4683 o V is an ElementValue that is commensurate with T. 4684 * The type of V is assignment compatible (\ufffd5.2) with T and, furthermore: 4685 o If T is a primitive type or String, V is a constant expression (\ufffd15.28). 4686 o V is not null. 4687 o if T is Class, or an invocation of Class, and V is a class literal (\ufffd15.8.2). 4688 o If T is an enum type, and V is an enum constant. * @attribute syn 4689 * @aspect Annotations 4690 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:474 4691 */ 4692 public boolean commensurateWith(ElementValue value) { 4693 ASTNode$State state = state(); 4694 try { return value.commensurateWithTypeDecl(this); } 4695 finally { 4696 } 4697 } 4698 /** 4699 * @attribute syn 4700 * @aspect Annotations 4701 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:545 4702 */ 4703 public boolean isAnnotationDecl() { 4704 ASTNode$State state = state(); 4705 try { return false; } 4706 finally { 4707 } 4708 } 4709 /* NumericTypes, BooleanTypes 4710 TypeChecking (ensure that an expression of a certain type is valid in a particular context) 4711 TypeComputation (compute the type of an expression) 4712 CodeGeneration (output code including implicit type conversions and promotions) 4713 4714 NumericTypes: 4715 binaryNumericPromotion, unaryNumericPromotion, assignmentConversion, methodInvocationConversion, castingConversion 4716 numeric operations that do not use these kinds of conversions and promotions explicitly need to be refined 4717 BooleanTypes: 4718 assignmentConversion, methodInvocationConversion, castingConversion 4719 4720 * @attribute syn 4721 * @aspect AutoBoxing 4722 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/AutoBoxing.jrag:31 4723 */ 4724 public boolean boxingConversionTo(TypeDecl typeDecl) { 4725 ASTNode$State state = state(); 4726 try { return false; } 4727 finally { 4728 } 4729 } 4730 /** 4731 * @apilevel internal 4732 */ 4733 protected boolean boxed_computed = false; 4734 /** 4735 * @apilevel internal 4736 */ 4737 protected TypeDecl boxed_value; 4738 /** 4739 * @attribute syn 4740 * @aspect AutoBoxing 4741 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/AutoBoxing.jrag:35 4742 */ 4743 @SuppressWarnings({"unchecked", "cast"}) 4744 public TypeDecl boxed() { 4745 if(boxed_computed) { 4746 return boxed_value; 4747 } 4748 ASTNode$State state = state(); 4749 int num = state.boundariesCrossed; 4750 boolean isFinal = this.is$Final(); 4751 boxed_value = boxed_compute(); 4752 if(isFinal && num == state().boundariesCrossed){ boxed_computed = true; } 4753 return boxed_value; 4754 } 4755 /** 4756 * @apilevel internal 4757 */ 4758 private TypeDecl boxed_compute() { return unknownType(); } 4759 /** 4760 * @attribute syn 4761 * @aspect AutoBoxing 4762 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/AutoBoxing.jrag:47 4763 */ 4764 public boolean unboxingConversionTo(TypeDecl typeDecl) { 4765 ASTNode$State state = state(); 4766 try { return false; } 4767 finally { 4768 } 4769 } 4770 /** 4771 * @apilevel internal 4772 */ 4773 protected boolean unboxed_computed = false; 4774 /** 4775 * @apilevel internal 4776 */ 4777 protected TypeDecl unboxed_value; 4778 /** 4779 * @attribute syn 4780 * @aspect AutoBoxing 4781 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/AutoBoxing.jrag:51 4782 */ 4783 @SuppressWarnings({"unchecked", "cast"}) 4784 public TypeDecl unboxed() { 4785 if(unboxed_computed) { 4786 return unboxed_value; 4787 } 4788 ASTNode$State state = state(); 4789 int num = state.boundariesCrossed; 4790 boolean isFinal = this.is$Final(); 4791 unboxed_value = unboxed_compute(); 4792 if(isFinal && num == state().boundariesCrossed){ unboxed_computed = true; } 4793 return unboxed_value; 4794 } 4795 /** 4796 * @apilevel internal 4797 */ 4798 private TypeDecl unboxed_compute() { return unknownType(); } 4799 /** 4800 * @apilevel internal 4801 */ 4802 protected boolean isIterable_computed = false; 4803 /** 4804 * @apilevel internal 4805 */ 4806 protected boolean isIterable_value; 4807 /** 4808 * True if type is java.lang.Iterable or subtype 4809 As long as we use the 1.4 API we check for java.util.Collection instead. 4810 * @attribute syn 4811 * @aspect EnhancedFor 4812 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/EnhancedFor.jrag:35 4813 */ 4814 @SuppressWarnings({"unchecked", "cast"}) 4815 public boolean isIterable() { 4816 if(isIterable_computed) { 4817 return isIterable_value; 4818 } 4819 ASTNode$State state = state(); 4820 int num = state.boundariesCrossed; 4821 boolean isFinal = this.is$Final(); 4822 isIterable_value = isIterable_compute(); 4823 if(isFinal && num == state().boundariesCrossed){ isIterable_computed = true; } 4824 return isIterable_value; 4825 } 4826 /** 4827 * @apilevel internal 4828 */ 4829 private boolean isIterable_compute() { return instanceOf(lookupType("java.lang", "Iterable")); } 4830 /* 4831 1) It is a compile-time error to attempt to explicitly instantiate an enum type 4832 (\ufffd15.9.1). 4833 * @attribute syn 4834 * @aspect Enums 4835 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Enums.jrag:16 4836 */ 4837 public boolean isEnumDecl() { 4838 ASTNode$State state = state(); 4839 try { return false; } 4840 finally { 4841 } 4842 } 4843 /** 4844 * @attribute syn 4845 * @aspect GenericMethodsInference 4846 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethodsInference.jrag:13 4847 */ 4848 public boolean isUnboxedPrimitive() { 4849 ASTNode$State state = state(); 4850 try { return this instanceof PrimitiveType && isPrimitive(); } 4851 finally { 4852 } 4853 } 4854 /** 4855 * @apilevel internal 4856 */ 4857 protected int involvesTypeParameters_visited = -1; 4858 /** 4859 * @apilevel internal 4860 */ 4861 protected boolean involvesTypeParameters_computed = false; 4862 /** 4863 * @apilevel internal 4864 */ 4865 protected boolean involvesTypeParameters_initialized = false; 4866 /** 4867 * @apilevel internal 4868 */ 4869 protected boolean involvesTypeParameters_value; 4870 /** 4871 * @attribute syn 4872 * @aspect GenericMethodsInference 4873 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericMethodsInference.jrag:15 4874 */ 4875 @SuppressWarnings({"unchecked", "cast"}) 4876 public boolean involvesTypeParameters() { 4877 if(involvesTypeParameters_computed) { 4878 return involvesTypeParameters_value; 4879 } 4880 ASTNode$State state = state(); 4881 if (!involvesTypeParameters_initialized) { 4882 involvesTypeParameters_initialized = true; 4883 involvesTypeParameters_value = false; 4884 } 4885 if (!state.IN_CIRCLE) { 4886 state.IN_CIRCLE = true; 4887 int num = state.boundariesCrossed; 4888 boolean isFinal = this.is$Final(); 4889 do { 4890 involvesTypeParameters_visited = state.CIRCLE_INDEX; 4891 state.CHANGE = false; 4892 boolean new_involvesTypeParameters_value = involvesTypeParameters_compute(); 4893 if (new_involvesTypeParameters_value!=involvesTypeParameters_value) 4894 state.CHANGE = true; 4895 involvesTypeParameters_value = new_involvesTypeParameters_value; 4896 state.CIRCLE_INDEX++; 4897 } while (state.CHANGE); 4898 if(isFinal && num == state().boundariesCrossed) { 4899 involvesTypeParameters_computed = true; 4900 } 4901 else { 4902 state.RESET_CYCLE = true; 4903 involvesTypeParameters_compute(); 4904 state.RESET_CYCLE = false; 4905 involvesTypeParameters_computed = false; 4906 involvesTypeParameters_initialized = false; 4907 } 4908 state.IN_CIRCLE = false; 4909 return involvesTypeParameters_value; 4910 } 4911 if(involvesTypeParameters_visited != state.CIRCLE_INDEX) { 4912 involvesTypeParameters_visited = state.CIRCLE_INDEX; 4913 if (state.RESET_CYCLE) { 4914 involvesTypeParameters_computed = false; 4915 involvesTypeParameters_initialized = false; 4916 involvesTypeParameters_visited = -1; 4917 return involvesTypeParameters_value; 4918 } 4919 boolean new_involvesTypeParameters_value = involvesTypeParameters_compute(); 4920 if (new_involvesTypeParameters_value!=involvesTypeParameters_value) 4921 state.CHANGE = true; 4922 involvesTypeParameters_value = new_involvesTypeParameters_value; 4923 return involvesTypeParameters_value; 4924 } 4925 return involvesTypeParameters_value; 4926 } 4927 /** 4928 * @apilevel internal 4929 */ 4930 private boolean involvesTypeParameters_compute() { return false; } 4931 /** 4932 * @attribute syn 4933 * @aspect Generics 4934 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:179 4935 */ 4936 public boolean isGenericType() { 4937 ASTNode$State state = state(); 4938 try { return false; } 4939 finally { 4940 } 4941 } 4942 /** 4943 * @attribute syn 4944 * @aspect Generics 4945 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:253 4946 */ 4947 public boolean isParameterizedType() { 4948 ASTNode$State state = state(); 4949 try { return false; } 4950 finally { 4951 } 4952 } 4953 /** 4954 * @attribute syn 4955 * @aspect Generics 4956 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:256 4957 */ 4958 public boolean isRawType() { 4959 ASTNode$State state = state(); 4960 try { return isNestedType() && enclosingType().isRawType(); } 4961 finally { 4962 } 4963 } 4964 /** 4965 * @apilevel internal 4966 */ 4967 protected boolean erasure_computed = false; 4968 /** 4969 * @apilevel internal 4970 */ 4971 protected TypeDecl erasure_value; 4972 /** 4973 * @attribute syn 4974 * @aspect GenericsErasure 4975 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:343 4976 */ 4977 @SuppressWarnings({"unchecked", "cast"}) 4978 public TypeDecl erasure() { 4979 if(erasure_computed) { 4980 return erasure_value; 4981 } 4982 ASTNode$State state = state(); 4983 int num = state.boundariesCrossed; 4984 boolean isFinal = this.is$Final(); 4985 erasure_value = erasure_compute(); 4986 if(isFinal && num == state().boundariesCrossed){ erasure_computed = true; } 4987 return erasure_value; 4988 } 4989 /** 4990 * @apilevel internal 4991 */ 4992 private TypeDecl erasure_compute() { 4993 if(isAnonymous() || isLocalClass()) 4994 return this; 4995 if(!isNestedType()) 4996 return this; 4997 return extractSingleType(enclosingType().erasure().memberTypes(name())); 4998 } 4999 /** 5000 * @apilevel internal 5001 */ 5002 protected boolean implementedInterfaces_computed = false; 5003 /** 5004 * @apilevel internal 5005 */ 5006 protected HashSet implementedInterfaces_value; 5007 /** 5008 * @attribute syn 5009 * @aspect GenericsTypeCheck 5010 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:399 5011 */ 5012 @SuppressWarnings({"unchecked", "cast"}) 5013 public HashSet implementedInterfaces() { 5014 if(implementedInterfaces_computed) { 5015 return implementedInterfaces_value; 5016 } 5017 ASTNode$State state = state(); 5018 int num = state.boundariesCrossed; 5019 boolean isFinal = this.is$Final(); 5020 implementedInterfaces_value = implementedInterfaces_compute(); 5021 if(isFinal && num == state().boundariesCrossed){ implementedInterfaces_computed = true; } 5022 return implementedInterfaces_value; 5023 } 5024 /** 5025 * @apilevel internal 5026 */ 5027 private HashSet implementedInterfaces_compute() { return new HashSet(); } 5028 /** 5029 * @attribute syn 5030 * @aspect LookupParTypeDecl 5031 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:571 5032 */ 5033 public boolean sameSignature(Access a) { 5034 ASTNode$State state = state(); 5035 try { 5036 if(a instanceof ParTypeAccess) return false; 5037 if(a instanceof AbstractWildcard) return false; 5038 return this == a.type(); 5039 } 5040 finally { 5041 } 5042 } 5043 /** 5044 * @apilevel internal 5045 */ 5046 protected int usesTypeVariable_visited = -1; 5047 /** 5048 * @apilevel internal 5049 */ 5050 protected boolean usesTypeVariable_computed = false; 5051 /** 5052 * @apilevel internal 5053 */ 5054 protected boolean usesTypeVariable_initialized = false; 5055 /** 5056 * @apilevel internal 5057 */ 5058 protected boolean usesTypeVariable_value; 5059 /** 5060 * @attribute syn 5061 * @aspect LookupParTypeDecl 5062 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1068 5063 */ 5064 @SuppressWarnings({"unchecked", "cast"}) 5065 public boolean usesTypeVariable() { 5066 if(usesTypeVariable_computed) { 5067 return usesTypeVariable_value; 5068 } 5069 ASTNode$State state = state(); 5070 if (!usesTypeVariable_initialized) { 5071 usesTypeVariable_initialized = true; 5072 usesTypeVariable_value = false; 5073 } 5074 if (!state.IN_CIRCLE) { 5075 state.IN_CIRCLE = true; 5076 int num = state.boundariesCrossed; 5077 boolean isFinal = this.is$Final(); 5078 do { 5079 usesTypeVariable_visited = state.CIRCLE_INDEX; 5080 state.CHANGE = false; 5081 boolean new_usesTypeVariable_value = usesTypeVariable_compute(); 5082 if (new_usesTypeVariable_value!=usesTypeVariable_value) 5083 state.CHANGE = true; 5084 usesTypeVariable_value = new_usesTypeVariable_value; 5085 state.CIRCLE_INDEX++; 5086 } while (state.CHANGE); 5087 if(isFinal && num == state().boundariesCrossed) { 5088 usesTypeVariable_computed = true; 5089 } 5090 else { 5091 state.RESET_CYCLE = true; 5092 usesTypeVariable_compute(); 5093 state.RESET_CYCLE = false; 5094 usesTypeVariable_computed = false; 5095 usesTypeVariable_initialized = false; 5096 } 5097 state.IN_CIRCLE = false; 5098 return usesTypeVariable_value; 5099 } 5100 if(usesTypeVariable_visited != state.CIRCLE_INDEX) { 5101 usesTypeVariable_visited = state.CIRCLE_INDEX; 5102 if (state.RESET_CYCLE) { 5103 usesTypeVariable_computed = false; 5104 usesTypeVariable_initialized = false; 5105 usesTypeVariable_visited = -1; 5106 return usesTypeVariable_value; 5107 } 5108 boolean new_usesTypeVariable_value = usesTypeVariable_compute(); 5109 if (new_usesTypeVariable_value!=usesTypeVariable_value) 5110 state.CHANGE = true; 5111 usesTypeVariable_value = new_usesTypeVariable_value; 5112 return usesTypeVariable_value; 5113 } 5114 return usesTypeVariable_value; 5115 } 5116 /** 5117 * @apilevel internal 5118 */ 5119 private boolean usesTypeVariable_compute() { return isNestedType() && enclosingType().usesTypeVariable(); } 5120 /** 5121 * @attribute syn 5122 * @aspect LookupParTypeDecl 5123 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1306 5124 */ 5125 public TypeDecl original() { 5126 ASTNode$State state = state(); 5127 try { return this; } 5128 finally { 5129 } 5130 } 5131 /** 5132 * @attribute syn 5133 * @aspect LookupParTypeDecl 5134 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1398 5135 */ 5136 public TypeDecl asWildcardExtends() { 5137 ASTNode$State state = state(); 5138 try { return lookupWildcardExtends(this); } 5139 finally { 5140 } 5141 } 5142 /** 5143 * @attribute syn 5144 * @aspect LookupParTypeDecl 5145 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1411 5146 */ 5147 public TypeDecl asWildcardSuper() { 5148 ASTNode$State state = state(); 5149 try { return lookupWildcardSuper(this); } 5150 finally { 5151 } 5152 } 5153 /** 5154 * @apilevel internal 5155 */ 5156 protected boolean sourceTypeDecl_computed = false; 5157 /** 5158 * @apilevel internal 5159 */ 5160 protected TypeDecl sourceTypeDecl_value; 5161 /** 5162 * @attribute syn 5163 * @aspect SourceDeclarations 5164 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1504 5165 */ 5166 @SuppressWarnings({"unchecked", "cast"}) 5167 public TypeDecl sourceTypeDecl() { 5168 if(sourceTypeDecl_computed) { 5169 return sourceTypeDecl_value; 5170 } 5171 ASTNode$State state = state(); 5172 int num = state.boundariesCrossed; 5173 boolean isFinal = this.is$Final(); 5174 sourceTypeDecl_value = sourceTypeDecl_compute(); 5175 if(isFinal && num == state().boundariesCrossed){ sourceTypeDecl_computed = true; } 5176 return sourceTypeDecl_value; 5177 } 5178 /** 5179 * @apilevel internal 5180 */ 5181 private TypeDecl sourceTypeDecl_compute() { return this; } 5182 /** 5183 * @attribute syn 5184 * @aspect GenericsParTypeDecl 5185 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsParTypeDecl.jrag:73 5186 */ 5187 public boolean isTypeVariable() { 5188 ASTNode$State state = state(); 5189 try { return false; } 5190 finally { 5191 } 5192 } 5193 /** 5194 * @attribute syn 5195 * @aspect GenericsSubtype 5196 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:14 5197 */ 5198 public boolean supertypeGenericClassDecl(GenericClassDecl type) { 5199 ASTNode$State state = state(); 5200 try { return supertypeClassDecl(type); } 5201 finally { 5202 } 5203 } 5204 /** 5205 * @attribute syn 5206 * @aspect GenericsSubtype 5207 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:20 5208 */ 5209 public boolean supertypeGenericInterfaceDecl(GenericInterfaceDecl type) { 5210 ASTNode$State state = state(); 5211 try { return this == type || supertypeInterfaceDecl(type); } 5212 finally { 5213 } 5214 } 5215 /** 5216 * @attribute syn 5217 * @aspect GenericsSubtype 5218 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:26 5219 */ 5220 public boolean supertypeRawClassDecl(RawClassDecl type) { 5221 ASTNode$State state = state(); 5222 try { return supertypeParClassDecl(type); } 5223 finally { 5224 } 5225 } 5226 /** 5227 * @attribute syn 5228 * @aspect GenericsSubtype 5229 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:30 5230 */ 5231 public boolean supertypeRawInterfaceDecl(RawInterfaceDecl type) { 5232 ASTNode$State state = state(); 5233 try { return supertypeParInterfaceDecl(type); } 5234 finally { 5235 } 5236 } 5237 /** 5238 * @attribute syn 5239 * @aspect GenericsSubtype 5240 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:46 5241 */ 5242 public boolean supertypeWildcard(WildcardType type) { 5243 ASTNode$State state = state(); 5244 try { return false; } 5245 finally { 5246 } 5247 } 5248 /** 5249 * @attribute syn 5250 * @aspect GenericsSubtype 5251 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:57 5252 */ 5253 public boolean supertypeWildcardExtends(WildcardExtendsType type) { 5254 ASTNode$State state = state(); 5255 try { return false; } 5256 finally { 5257 } 5258 } 5259 /** 5260 * @attribute syn 5261 * @aspect GenericsSubtype 5262 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:66 5263 */ 5264 public boolean supertypeWildcardSuper(WildcardSuperType type) { 5265 ASTNode$State state = state(); 5266 try { return false; } 5267 finally { 5268 } 5269 } 5270 /** 5271 * @attribute syn 5272 * @aspect GenericsSubtype 5273 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:102 5274 */ 5275 public boolean isWildcard() { 5276 ASTNode$State state = state(); 5277 try { return false; } 5278 finally { 5279 } 5280 } 5281 /** 5282 * @attribute syn 5283 * @aspect GenericsSubtype 5284 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:125 5285 */ 5286 public boolean supertypeParClassDecl(ParClassDecl type) { 5287 ASTNode$State state = state(); 5288 try { return supertypeClassDecl(type); } 5289 finally { 5290 } 5291 } 5292 /** 5293 * @attribute syn 5294 * @aspect GenericsSubtype 5295 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:129 5296 */ 5297 public boolean supertypeParInterfaceDecl(ParInterfaceDecl type) { 5298 ASTNode$State state = state(); 5299 try { return supertypeInterfaceDecl(type); } 5300 finally { 5301 } 5302 } 5303 protected java.util.Map containedIn_TypeDecl_values; 5304 /** 5305 * @attribute syn 5306 * @aspect GenericsSubtype 5307 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:141 5308 */ 5309 @SuppressWarnings({"unchecked", "cast"}) 5310 public boolean containedIn(TypeDecl type) { 5311 Object _parameters = type; 5312 if(containedIn_TypeDecl_values == null) containedIn_TypeDecl_values = new java.util.HashMap(4); 5313 ASTNode$State.CircularValue _value; 5314 if(containedIn_TypeDecl_values.containsKey(_parameters)) { 5315 Object _o = containedIn_TypeDecl_values.get(_parameters); 5316 if(!(_o instanceof ASTNode$State.CircularValue)) { 5317 return ((Boolean)_o).booleanValue(); 5318 } 5319 else 5320 _value = (ASTNode$State.CircularValue)_o; 5321 } 5322 else { 5323 _value = new ASTNode$State.CircularValue(); 5324 containedIn_TypeDecl_values.put(_parameters, _value); 5325 _value.value = Boolean.valueOf(true); 5326 } 5327 ASTNode$State state = state(); 5328 if (!state.IN_CIRCLE) { 5329 state.IN_CIRCLE = true; 5330 int num = state.boundariesCrossed; 5331 boolean isFinal = this.is$Final(); 5332 boolean new_containedIn_TypeDecl_value; 5333 do { 5334 _value.visited = new Integer(state.CIRCLE_INDEX); 5335 state.CHANGE = false; 5336 new_containedIn_TypeDecl_value = containedIn_compute(type); 5337 if (new_containedIn_TypeDecl_value!=((Boolean)_value.value).booleanValue()) { 5338 state.CHANGE = true; 5339 _value.value = Boolean.valueOf(new_containedIn_TypeDecl_value); 5340 } 5341 state.CIRCLE_INDEX++; 5342 } while (state.CHANGE); 5343 if(isFinal && num == state().boundariesCrossed) { 5344 containedIn_TypeDecl_values.put(_parameters, new_containedIn_TypeDecl_value); 5345 } 5346 else { 5347 containedIn_TypeDecl_values.remove(_parameters); 5348 state.RESET_CYCLE = true; 5349 containedIn_compute(type); 5350 state.RESET_CYCLE = false; 5351 } 5352 state.IN_CIRCLE = false; 5353 return new_containedIn_TypeDecl_value; 5354 } 5355 if(!new Integer(state.CIRCLE_INDEX).equals(_value.visited)) { 5356 _value.visited = new Integer(state.CIRCLE_INDEX); 5357 boolean new_containedIn_TypeDecl_value = containedIn_compute(type); 5358 if (state.RESET_CYCLE) { 5359 containedIn_TypeDecl_values.remove(_parameters); 5360 } 5361 else if (new_containedIn_TypeDecl_value!=((Boolean)_value.value).booleanValue()) { 5362 state.CHANGE = true; 5363 _value.value = new_containedIn_TypeDecl_value; 5364 } 5365 return new_containedIn_TypeDecl_value; 5366 } 5367 return ((Boolean)_value.value).booleanValue(); 5368 } 5369 /** 5370 * @apilevel internal 5371 */ 5372 private boolean containedIn_compute(TypeDecl type) { 5373 if(type == this || type instanceof WildcardType) 5374 return true; 5375 else if(type instanceof WildcardExtendsType) 5376 return this.subtype(((WildcardExtendsType)type).extendsType()); 5377 else if(type instanceof WildcardSuperType) 5378 return ((WildcardSuperType)type).superType().subtype(this); 5379 else if(type instanceof TypeVariable) 5380 return subtype(type); 5381 return sameStructure(type); 5382 //return false; 5383 } 5384 protected java.util.Map sameStructure_TypeDecl_values; 5385 /** 5386 * @attribute syn 5387 * @aspect GenericsSubtype 5388 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:178 5389 */ 5390 @SuppressWarnings({"unchecked", "cast"}) 5391 public boolean sameStructure(TypeDecl t) { 5392 Object _parameters = t; 5393 if(sameStructure_TypeDecl_values == null) sameStructure_TypeDecl_values = new java.util.HashMap(4); 5394 ASTNode$State.CircularValue _value; 5395 if(sameStructure_TypeDecl_values.containsKey(_parameters)) { 5396 Object _o = sameStructure_TypeDecl_values.get(_parameters); 5397 if(!(_o instanceof ASTNode$State.CircularValue)) { 5398 return ((Boolean)_o).booleanValue(); 5399 } 5400 else 5401 _value = (ASTNode$State.CircularValue)_o; 5402 } 5403 else { 5404 _value = new ASTNode$State.CircularValue(); 5405 sameStructure_TypeDecl_values.put(_parameters, _value); 5406 _value.value = Boolean.valueOf(true); 5407 } 5408 ASTNode$State state = state(); 5409 if (!state.IN_CIRCLE) { 5410 state.IN_CIRCLE = true; 5411 int num = state.boundariesCrossed; 5412 boolean isFinal = this.is$Final(); 5413 boolean new_sameStructure_TypeDecl_value; 5414 do { 5415 _value.visited = new Integer(state.CIRCLE_INDEX); 5416 state.CHANGE = false; 5417 new_sameStructure_TypeDecl_value = sameStructure_compute(t); 5418 if (new_sameStructure_TypeDecl_value!=((Boolean)_value.value).booleanValue()) { 5419 state.CHANGE = true; 5420 _value.value = Boolean.valueOf(new_sameStructure_TypeDecl_value); 5421 } 5422 state.CIRCLE_INDEX++; 5423 } while (state.CHANGE); 5424 if(isFinal && num == state().boundariesCrossed) { 5425 sameStructure_TypeDecl_values.put(_parameters, new_sameStructure_TypeDecl_value); 5426 } 5427 else { 5428 sameStructure_TypeDecl_values.remove(_parameters); 5429 state.RESET_CYCLE = true; 5430 sameStructure_compute(t); 5431 state.RESET_CYCLE = false; 5432 } 5433 state.IN_CIRCLE = false; 5434 return new_sameStructure_TypeDecl_value; 5435 } 5436 if(!new Integer(state.CIRCLE_INDEX).equals(_value.visited)) { 5437 _value.visited = new Integer(state.CIRCLE_INDEX); 5438 boolean new_sameStructure_TypeDecl_value = sameStructure_compute(t); 5439 if (state.RESET_CYCLE) { 5440 sameStructure_TypeDecl_values.remove(_parameters); 5441 } 5442 else if (new_sameStructure_TypeDecl_value!=((Boolean)_value.value).booleanValue()) { 5443 state.CHANGE = true; 5444 _value.value = new_sameStructure_TypeDecl_value; 5445 } 5446 return new_sameStructure_TypeDecl_value; 5447 } 5448 return ((Boolean)_value.value).booleanValue(); 5449 } 5450 /** 5451 * @apilevel internal 5452 */ 5453 private boolean sameStructure_compute(TypeDecl t) { return t == this; } 5454 /** 5455 * @attribute syn 5456 * @aspect GenericsSubtype 5457 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:291 5458 */ 5459 public boolean supertypeTypeVariable(TypeVariable type) { 5460 ASTNode$State state = state(); 5461 try { 5462 if(type == this) 5463 return true; 5464 for(int i = 0; i < type.getNumTypeBound(); i++) 5465 if(type.getTypeBound(i).type().subtype(this)) 5466 return true; 5467 return false; 5468 } 5469 finally { 5470 } 5471 } 5472 /** 5473 * @attribute syn 5474 * @aspect GenericsSubtype 5475 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:347 5476 */ 5477 public boolean supertypeLUBType(LUBType type) { 5478 ASTNode$State state = state(); 5479 try { 5480 for(int i = 0; i < type.getNumTypeBound(); i++) 5481 if(!type.getTypeBound(i).type().subtype(this)) 5482 return false; 5483 return true; 5484 } 5485 finally { 5486 } 5487 } 5488 /** 5489 * @attribute syn 5490 * @aspect GenericsSubtype 5491 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:366 5492 */ 5493 public boolean supertypeGLBType(GLBType type) { 5494 ASTNode$State state = state(); 5495 try { 5496 // T1 && .. && Tn <: this, if exists 0 < i <= n Ti <: this 5497 for(int i = 0; i < type.getNumTypeBound(); i++) 5498 if(type.getTypeBound(i).type().subtype(this)) 5499 return true; 5500 return false; 5501 } 5502 finally { 5503 } 5504 } 5505 protected java.util.Map subtype_TypeDecl_values; 5506 /** 5507 * @attribute syn 5508 * @aspect GenericsSubtype 5509 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:405 5510 */ 5511 @SuppressWarnings({"unchecked", "cast"}) 5512 public boolean subtype(TypeDecl type) { 5513 Object _parameters = type; 5514 if(subtype_TypeDecl_values == null) subtype_TypeDecl_values = new java.util.HashMap(4); 5515 ASTNode$State.CircularValue _value; 5516 if(subtype_TypeDecl_values.containsKey(_parameters)) { 5517 Object _o = subtype_TypeDecl_values.get(_parameters); 5518 if(!(_o instanceof ASTNode$State.CircularValue)) { 5519 return ((Boolean)_o).booleanValue(); 5520 } 5521 else 5522 _value = (ASTNode$State.CircularValue)_o; 5523 } 5524 else { 5525 _value = new ASTNode$State.CircularValue(); 5526 subtype_TypeDecl_values.put(_parameters, _value); 5527 _value.value = Boolean.valueOf(true); 5528 } 5529 ASTNode$State state = state(); 5530 if (!state.IN_CIRCLE) { 5531 state.IN_CIRCLE = true; 5532 int num = state.boundariesCrossed; 5533 boolean isFinal = this.is$Final(); 5534 boolean new_subtype_TypeDecl_value; 5535 do { 5536 _value.visited = new Integer(state.CIRCLE_INDEX); 5537 state.CHANGE = false; 5538 new_subtype_TypeDecl_value = subtype_compute(type); 5539 if (new_subtype_TypeDecl_value!=((Boolean)_value.value).booleanValue()) { 5540 state.CHANGE = true; 5541 _value.value = Boolean.valueOf(new_subtype_TypeDecl_value); 5542 } 5543 state.CIRCLE_INDEX++; 5544 } while (state.CHANGE); 5545 if(isFinal && num == state().boundariesCrossed) { 5546 subtype_TypeDecl_values.put(_parameters, new_subtype_TypeDecl_value); 5547 } 5548 else { 5549 subtype_TypeDecl_values.remove(_parameters); 5550 state.RESET_CYCLE = true; 5551 subtype_compute(type); 5552 state.RESET_CYCLE = false; 5553 } 5554 state.IN_CIRCLE = false; 5555 return new_subtype_TypeDecl_value; 5556 } 5557 if(!new Integer(state.CIRCLE_INDEX).equals(_value.visited)) { 5558 _value.visited = new Integer(state.CIRCLE_INDEX); 5559 boolean new_subtype_TypeDecl_value = subtype_compute(type); 5560 if (state.RESET_CYCLE) { 5561 subtype_TypeDecl_values.remove(_parameters); 5562 } 5563 else if (new_subtype_TypeDecl_value!=((Boolean)_value.value).booleanValue()) { 5564 state.CHANGE = true; 5565 _value.value = new_subtype_TypeDecl_value; 5566 } 5567 return new_subtype_TypeDecl_value; 5568 } 5569 return ((Boolean)_value.value).booleanValue(); 5570 } 5571 /** 5572 * @apilevel internal 5573 */ 5574 private boolean subtype_compute(TypeDecl type) { return type == this; } 5575 /** 5576 * @attribute syn 5577 * @aspect GenericsSubtype 5578 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:421 5579 */ 5580 public boolean supertypeClassDecl(ClassDecl type) { 5581 ASTNode$State state = state(); 5582 try { return type == this; } 5583 finally { 5584 } 5585 } 5586 /** 5587 * @attribute syn 5588 * @aspect GenericsSubtype 5589 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:437 5590 */ 5591 public boolean supertypeInterfaceDecl(InterfaceDecl type) { 5592 ASTNode$State state = state(); 5593 try { return type == this; } 5594 finally { 5595 } 5596 } 5597 /** 5598 * @attribute syn 5599 * @aspect GenericsSubtype 5600 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:450 5601 */ 5602 public boolean supertypeArrayDecl(ArrayDecl type) { 5603 ASTNode$State state = state(); 5604 try { return this == type; } 5605 finally { 5606 } 5607 } 5608 /** 5609 * @attribute syn 5610 * @aspect GenericsSubtype 5611 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:472 5612 */ 5613 public boolean supertypePrimitiveType(PrimitiveType type) { 5614 ASTNode$State state = state(); 5615 try { return type == this; } 5616 finally { 5617 } 5618 } 5619 /** 5620 * @attribute syn 5621 * @aspect GenericsSubtype 5622 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:479 5623 */ 5624 public boolean supertypeNullType(NullType type) { 5625 ASTNode$State state = state(); 5626 try { return false; } 5627 finally { 5628 } 5629 } 5630 /** 5631 * @attribute syn 5632 * @aspect GenericsSubtype 5633 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:483 5634 */ 5635 public boolean supertypeVoidType(VoidType type) { 5636 ASTNode$State state = state(); 5637 try { return false; } 5638 finally { 5639 } 5640 } 5641 /** 5642 * @attribute syn 5643 * @aspect GenericsSubtype 5644 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:493 5645 */ 5646 public boolean supertypeClassDeclSubstituted(ClassDeclSubstituted type) { 5647 ASTNode$State state = state(); 5648 try { return type.original() == this || supertypeClassDecl(type); } 5649 finally { 5650 } 5651 } 5652 /** 5653 * @attribute syn 5654 * @aspect GenericsSubtype 5655 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:503 5656 */ 5657 public boolean supertypeInterfaceDeclSubstituted(InterfaceDeclSubstituted type) { 5658 ASTNode$State state = state(); 5659 try { return type.original() == this || supertypeInterfaceDecl(type); } 5660 finally { 5661 } 5662 } 5663 /** 5664 * @attribute syn 5665 * @aspect GenericsSubtype 5666 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:513 5667 */ 5668 public boolean supertypeGenericClassDeclSubstituted(GenericClassDeclSubstituted type) { 5669 ASTNode$State state = state(); 5670 try { return type.original() == this || supertypeGenericClassDecl(type); } 5671 finally { 5672 } 5673 } 5674 /** 5675 * @attribute syn 5676 * @aspect GenericsSubtype 5677 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/GenericsSubtype.jrag:523 5678 */ 5679 public boolean supertypeGenericInterfaceDeclSubstituted(GenericInterfaceDeclSubstituted type) { 5680 ASTNode$State state = state(); 5681 try { return type.original() == this || supertypeGenericInterfaceDecl(type); } 5682 finally { 5683 } 5684 } 5685 protected java.util.Map createEnumMethod_TypeDecl_values; 5686 /** 5687 * @attribute syn 5688 * @aspect EnumsCodegen 5689 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/EnumsCodegen.jrag:42 5690 */ 5691 @SuppressWarnings({"unchecked", "cast"}) 5692 public MethodDecl createEnumMethod(TypeDecl enumDecl) { 5693 Object _parameters = enumDecl; 5694 if(createEnumMethod_TypeDecl_values == null) createEnumMethod_TypeDecl_values = new java.util.HashMap(4); 5695 if(createEnumMethod_TypeDecl_values.containsKey(_parameters)) { 5696 return (MethodDecl)createEnumMethod_TypeDecl_values.get(_parameters); 5697 } 5698 ASTNode$State state = state(); 5699 int num = state.boundariesCrossed; 5700 boolean isFinal = this.is$Final(); 5701 MethodDecl createEnumMethod_TypeDecl_value = createEnumMethod_compute(enumDecl); 5702 if(isFinal && num == state().boundariesCrossed){ createEnumMethod_TypeDecl_values.put(_parameters, createEnumMethod_TypeDecl_value); } 5703 return createEnumMethod_TypeDecl_value; 5704 } 5705 /** 5706 * @apilevel internal 5707 */ 5708 private MethodDecl createEnumMethod_compute(TypeDecl enumDecl) { 5709 MethodDecl m = new MethodDecl( 5710 new Modifiers(new List().add(new Modifier("static")).add(new Modifier("final")).add(new Modifier("private"))), 5711 typeInt().arrayType().createQualifiedAccess(), 5712 "$SwitchMap$" + enumDecl.fullName().replace('.', '$'), 5713 new List(), 5714 new List(), 5715 new Opt( 5716 new Block( 5717 new List().add( 5718 new IfStmt( 5719 new EQExpr( 5720 createEnumArray(enumDecl).createBoundFieldAccess(), 5721 new NullLiteral("null") 5722 ), 5723 AssignExpr.asStmt( 5724 createEnumArray(enumDecl).createBoundFieldAccess(), 5725 new ArrayCreationExpr( 5726 new ArrayTypeWithSizeAccess( 5727 typeInt().createQualifiedAccess(), 5728 enumDecl.createQualifiedAccess().qualifiesAccess( 5729 new MethodAccess("values", new List())).qualifiesAccess( 5730 new VarAccess("length")) 5731 ), 5732 new Opt() 5733 ) 5734 ), 5735 new Opt() 5736 ) 5737 ).add( 5738 new ReturnStmt( 5739 createEnumArray(enumDecl).createBoundFieldAccess() 5740 ) 5741 ) 5742 ) 5743 ) 5744 ); 5745 // add method declaration as a body declaration 5746 getBodyDeclList().insertChild(m, 1); 5747 // trigger possible rewrites 5748 return (MethodDecl)getBodyDeclList().getChild(1); 5749 } 5750 protected java.util.Map createEnumIndex_EnumConstant_values; 5751 /** 5752 * @attribute syn 5753 * @aspect EnumsCodegen 5754 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/EnumsCodegen.jrag:86 5755 */ 5756 @SuppressWarnings({"unchecked", "cast"}) 5757 public int createEnumIndex(EnumConstant e) { 5758 Object _parameters = e; 5759 if(createEnumIndex_EnumConstant_values == null) createEnumIndex_EnumConstant_values = new java.util.HashMap(4); 5760 if(createEnumIndex_EnumConstant_values.containsKey(_parameters)) { 5761 return ((Integer)createEnumIndex_EnumConstant_values.get(_parameters)).intValue(); 5762 } 5763 ASTNode$State state = state(); 5764 int num = state.boundariesCrossed; 5765 boolean isFinal = this.is$Final(); 5766 int createEnumIndex_EnumConstant_value = createEnumIndex_compute(e); 5767 if(isFinal && num == state().boundariesCrossed){ createEnumIndex_EnumConstant_values.put(_parameters, Integer.valueOf(createEnumIndex_EnumConstant_value)); } 5768 return createEnumIndex_EnumConstant_value; 5769 } 5770 /** 5771 * @apilevel internal 5772 */ 5773 private int createEnumIndex_compute(EnumConstant e) { 5774 if(createEnumIndexMap == null) 5775 createEnumIndexMap = new HashMap(); 5776 if(!createEnumIndexMap.containsKey(e.hostType())) 5777 createEnumIndexMap.put(e.hostType(), new Integer(0)); 5778 Integer i = (Integer)createEnumIndexMap.get(e.hostType()); 5779 i = new Integer(i.intValue() + 1); 5780 createEnumIndexMap.put(e.hostType(), i); 5781 5782 MethodDecl m = createEnumMethod(e.hostType()); 5783 List list = m.getBlock().getStmtList(); 5784 list.insertChild( 5785 new TryStmt( 5786 new Block( 5787 new List().add( 5788 AssignExpr.asStmt( 5789 createEnumArray(e.hostType()).createBoundFieldAccess().qualifiesAccess( 5790 new ArrayAccess( 5791 e.createBoundFieldAccess().qualifiesAccess(new MethodAccess("ordinal", new List())) 5792 ) 5793 ), 5794 Literal.buildIntegerLiteral(i.intValue()) 5795 ) 5796 ) 5797 ), 5798 new List().add( 5799 new BasicCatch( 5800 new ParameterDeclaration( 5801 lookupType("java.lang", "NoSuchFieldError").createQualifiedAccess(), 5802 "e" 5803 ), 5804 new Block( 5805 new List() 5806 ) 5807 ) 5808 ), 5809 new Opt() 5810 ), 5811 list.getNumChild()-1 5812 ); 5813 return i.intValue(); 5814 } 5815 protected java.util.Map createEnumArray_TypeDecl_values; 5816 /** 5817 * @attribute syn 5818 * @aspect EnumsCodegen 5819 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/EnumsCodegen.jrag:129 5820 */ 5821 @SuppressWarnings({"unchecked", "cast"}) 5822 public FieldDeclaration createEnumArray(TypeDecl enumDecl) { 5823 Object _parameters = enumDecl; 5824 if(createEnumArray_TypeDecl_values == null) createEnumArray_TypeDecl_values = new java.util.HashMap(4); 5825 if(createEnumArray_TypeDecl_values.containsKey(_parameters)) { 5826 return (FieldDeclaration)createEnumArray_TypeDecl_values.get(_parameters); 5827 } 5828 ASTNode$State state = state(); 5829 int num = state.boundariesCrossed; 5830 boolean isFinal = this.is$Final(); 5831 FieldDeclaration createEnumArray_TypeDecl_value = createEnumArray_compute(enumDecl); 5832 if(isFinal && num == state().boundariesCrossed){ createEnumArray_TypeDecl_values.put(_parameters, createEnumArray_TypeDecl_value); } 5833 return createEnumArray_TypeDecl_value; 5834 } 5835 /** 5836 * @apilevel internal 5837 */ 5838 private FieldDeclaration createEnumArray_compute(TypeDecl enumDecl) { 5839 FieldDeclaration f = new FieldDeclaration( 5840 new Modifiers(new List().add(new Modifier("static")).add(new Modifier("final")).add(new Modifier("private"))), 5841 typeInt().arrayType().createQualifiedAccess(), 5842 "$SwitchMap$" + enumDecl.fullName().replace('.', '$'), 5843 new Opt() 5844 ); 5845 // add field declaration as a body declaration 5846 getBodyDeclList().insertChild(f, 0); 5847 // trigger possible rewrites 5848 return (FieldDeclaration)getBodyDeclList().getChild(0); 5849 } 5850 /** 5851 * @attribute syn 5852 * @aspect GenericsCodegen 5853 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:227 5854 */ 5855 public SimpleSet bridgeCandidates(String signature) { 5856 ASTNode$State state = state(); 5857 try { return SimpleSet.emptySet; } 5858 finally { 5859 } 5860 } 5861 /** 5862 * @apilevel internal 5863 */ 5864 protected boolean needsSignatureAttribute_computed = false; 5865 /** 5866 * @apilevel internal 5867 */ 5868 protected boolean needsSignatureAttribute_value; 5869 /** 5870 * @attribute syn 5871 * @aspect GenericsCodegen 5872 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:339 5873 */ 5874 @SuppressWarnings({"unchecked", "cast"}) 5875 public boolean needsSignatureAttribute() { 5876 if(needsSignatureAttribute_computed) { 5877 return needsSignatureAttribute_value; 5878 } 5879 ASTNode$State state = state(); 5880 int num = state.boundariesCrossed; 5881 boolean isFinal = this.is$Final(); 5882 needsSignatureAttribute_value = needsSignatureAttribute_compute(); 5883 if(isFinal && num == state().boundariesCrossed){ needsSignatureAttribute_computed = true; } 5884 return needsSignatureAttribute_value; 5885 } 5886 /** 5887 * @apilevel internal 5888 */ 5889 private boolean needsSignatureAttribute_compute() { return false; } 5890 /** 5891 * @apilevel internal 5892 */ 5893 protected boolean classSignature_computed = false; 5894 /** 5895 * @apilevel internal 5896 */ 5897 protected String classSignature_value; 5898 /** 5899 * @attribute syn 5900 * @aspect GenericsCodegen 5901 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:384 5902 */ 5903 @SuppressWarnings({"unchecked", "cast"}) 5904 public String classSignature() { 5905 if(classSignature_computed) { 5906 return classSignature_value; 5907 } 5908 ASTNode$State state = state(); 5909 int num = state.boundariesCrossed; 5910 boolean isFinal = this.is$Final(); 5911 classSignature_value = classSignature_compute(); 5912 if(isFinal && num == state().boundariesCrossed){ classSignature_computed = true; } 5913 return classSignature_value; 5914 } 5915 /** 5916 * @apilevel internal 5917 */ 5918 private String classSignature_compute() { return ""; } 5919 /** 5920 * @apilevel internal 5921 */ 5922 protected boolean fieldTypeSignature_computed = false; 5923 /** 5924 * @apilevel internal 5925 */ 5926 protected String fieldTypeSignature_value; 5927 /** 5928 * @attribute syn 5929 * @aspect GenericsCodegen 5930 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:443 5931 */ 5932 @SuppressWarnings({"unchecked", "cast"}) 5933 public String fieldTypeSignature() { 5934 if(fieldTypeSignature_computed) { 5935 return fieldTypeSignature_value; 5936 } 5937 ASTNode$State state = state(); 5938 int num = state.boundariesCrossed; 5939 boolean isFinal = this.is$Final(); 5940 fieldTypeSignature_value = fieldTypeSignature_compute(); 5941 if(isFinal && num == state().boundariesCrossed){ fieldTypeSignature_computed = true; } 5942 return fieldTypeSignature_value; 5943 } 5944 /** 5945 * @apilevel internal 5946 */ 5947 private String fieldTypeSignature_compute() { return classTypeSignature(); } 5948 /** 5949 * @apilevel internal 5950 */ 5951 protected boolean classTypeSignature_computed = false; 5952 /** 5953 * @apilevel internal 5954 */ 5955 protected String classTypeSignature_value; 5956 /** 5957 * @attribute syn 5958 * @aspect GenericsCodegen 5959 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:452 5960 */ 5961 @SuppressWarnings({"unchecked", "cast"}) 5962 public String classTypeSignature() { 5963 if(classTypeSignature_computed) { 5964 return classTypeSignature_value; 5965 } 5966 ASTNode$State state = state(); 5967 int num = state.boundariesCrossed; 5968 boolean isFinal = this.is$Final(); 5969 classTypeSignature_value = classTypeSignature_compute(); 5970 if(isFinal && num == state().boundariesCrossed){ classTypeSignature_computed = true; } 5971 return classTypeSignature_value; 5972 } 5973 /** 5974 * @apilevel internal 5975 */ 5976 private String classTypeSignature_compute() { return "L" + classTypeSignatureContents() + ";"; } 5977 /** 5978 * @attribute syn 5979 * @aspect GenericsCodegen 5980 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:458 5981 */ 5982 public String classTypeSignatureContents() { 5983 ASTNode$State state = state(); 5984 try { 5985 StringBuffer buf = new StringBuffer(); 5986 if(isTopLevelType()) { 5987 if(!packageName().equals("")) 5988 buf.append(packageName().replace('.', '/') + "/"); 5989 } 5990 else 5991 buf.append(enclosingType().classTypeSignatureContents() + "."); 5992 buf.append(name()); 5993 buf.append(typeArgumentsOpt()); 5994 return buf.toString(); 5995 } 5996 finally { 5997 } 5998 } 5999 /** 6000 * @attribute syn 6001 * @aspect GenericsCodegen 6002 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Backend/GenericsCodegen.jrag:470 6003 */ 6004 public String typeArgumentsOpt() { 6005 ASTNode$State state = state(); 6006 try { return ""; } 6007 finally { 6008 } 6009 } 6010 /** 6011 * @return true if the modifier list includes the SafeVarargs annotation 6012 * @attribute syn 6013 * @aspect SafeVarargs 6014 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/SafeVarargs.jrag:14 6015 */ 6016 public boolean hasAnnotationSafeVarargs() { 6017 ASTNode$State state = state(); 6018 try { return getModifiers().hasAnnotationSafeVarargs(); } 6019 finally { 6020 } 6021 } 6022 /** 6023 * A type is reifiable if it either refers to a non-parameterized type, 6024 * is a raw type, is a parameterized type with only unbound wildcard 6025 * parameters or is an array type with a reifiable type parameter. 6026 * 6027 * @see "JLSv3 §4.7" 6028 * @attribute syn 6029 * @aspect SafeVarargs 6030 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/SafeVarargs.jrag:106 6031 */ 6032 public boolean isReifiable() { 6033 ASTNode$State state = state(); 6034 try { return true; } 6035 finally { 6036 } 6037 } 6038 /** 6039 * An unchecked conversion occurs when converting from a 6040 * raw type G to a generic type G<T1, ..., Tn>. 6041 * @attribute syn 6042 * @aspect UncheckedConversion 6043 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/UncheckedConversion.jrag:50 6044 */ 6045 public boolean isUncheckedConversionTo(TypeDecl dest) { 6046 ASTNode$State state = state(); 6047 try { return (!dest.isRawType()) && this.isRawType(); } 6048 finally { 6049 } 6050 } 6051 /** 6052 * @apilevel internal 6053 */ 6054 protected boolean componentType_computed = false; 6055 /** 6056 * @apilevel internal 6057 */ 6058 protected TypeDecl componentType_value; 6059 /** 6060 * @attribute inh 6061 * @aspect Arrays 6062 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:21 6063 */ 6064 @SuppressWarnings({"unchecked", "cast"}) 6065 public TypeDecl componentType() { 6066 if(componentType_computed) { 6067 return componentType_value; 6068 } 6069 ASTNode$State state = state(); 6070 int num = state.boundariesCrossed; 6071 boolean isFinal = this.is$Final(); 6072 componentType_value = getParent().Define_TypeDecl_componentType(this, null); 6073 if(isFinal && num == state().boundariesCrossed){ componentType_computed = true; } 6074 return componentType_value; 6075 } 6076 /** 6077 * @attribute inh 6078 * @aspect Arrays 6079 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:50 6080 */ 6081 @SuppressWarnings({"unchecked", "cast"}) 6082 public TypeDecl typeCloneable() { 6083 ASTNode$State state = state(); 6084 TypeDecl typeCloneable_value = getParent().Define_TypeDecl_typeCloneable(this, null); 6085 return typeCloneable_value; 6086 } 6087 /** 6088 * @attribute inh 6089 * @aspect Arrays 6090 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:51 6091 */ 6092 @SuppressWarnings({"unchecked", "cast"}) 6093 public TypeDecl typeSerializable() { 6094 ASTNode$State state = state(); 6095 TypeDecl typeSerializable_value = getParent().Define_TypeDecl_typeSerializable(this, null); 6096 return typeSerializable_value; 6097 } 6098 /** 6099 * @attribute inh 6100 * @aspect ClassPath 6101 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ClassPath.jrag:31 6102 */ 6103 @SuppressWarnings({"unchecked", "cast"}) 6104 public CompilationUnit compilationUnit() { 6105 ASTNode$State state = state(); 6106 CompilationUnit compilationUnit_value = getParent().Define_CompilationUnit_compilationUnit(this, null); 6107 return compilationUnit_value; 6108 } 6109 protected java.util.Map isDAbefore_Variable_values; 6110 /** 6111 * @attribute inh 6112 * @aspect DA 6113 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:240 6114 */ 6115 @SuppressWarnings({"unchecked", "cast"}) 6116 public boolean isDAbefore(Variable v) { 6117 Object _parameters = v; 6118 if(isDAbefore_Variable_values == null) isDAbefore_Variable_values = new java.util.HashMap(4); 6119 if(isDAbefore_Variable_values.containsKey(_parameters)) { 6120 return ((Boolean)isDAbefore_Variable_values.get(_parameters)).booleanValue(); 6121 } 6122 ASTNode$State state = state(); 6123 int num = state.boundariesCrossed; 6124 boolean isFinal = this.is$Final(); 6125 boolean isDAbefore_Variable_value = getParent().Define_boolean_isDAbefore(this, null, v); 6126 if(isFinal && num == state().boundariesCrossed){ isDAbefore_Variable_values.put(_parameters, Boolean.valueOf(isDAbefore_Variable_value)); } 6127 return isDAbefore_Variable_value; 6128 } 6129 protected java.util.Map isDUbefore_Variable_values; 6130 /** 6131 * @attribute inh 6132 * @aspect DU 6133 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:705 6134 */ 6135 @SuppressWarnings({"unchecked", "cast"}) 6136 public boolean isDUbefore(Variable v) { 6137 Object _parameters = v; 6138 if(isDUbefore_Variable_values == null) isDUbefore_Variable_values = new java.util.HashMap(4); 6139 if(isDUbefore_Variable_values.containsKey(_parameters)) { 6140 return ((Boolean)isDUbefore_Variable_values.get(_parameters)).booleanValue(); 6141 } 6142 ASTNode$State state = state(); 6143 int num = state.boundariesCrossed; 6144 boolean isFinal = this.is$Final(); 6145 boolean isDUbefore_Variable_value = getParent().Define_boolean_isDUbefore(this, null, v); 6146 if(isFinal && num == state().boundariesCrossed){ isDUbefore_Variable_values.put(_parameters, Boolean.valueOf(isDUbefore_Variable_value)); } 6147 return isDUbefore_Variable_value; 6148 } 6149 /** 6150 * @apilevel internal 6151 */ 6152 protected boolean typeException_computed = false; 6153 /** 6154 * @apilevel internal 6155 */ 6156 protected TypeDecl typeException_value; 6157 /** 6158 * @attribute inh 6159 * @aspect ExceptionHandling 6160 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:14 6161 */ 6162 @SuppressWarnings({"unchecked", "cast"}) 6163 public TypeDecl typeException() { 6164 if(typeException_computed) { 6165 return typeException_value; 6166 } 6167 ASTNode$State state = state(); 6168 int num = state.boundariesCrossed; 6169 boolean isFinal = this.is$Final(); 6170 typeException_value = getParent().Define_TypeDecl_typeException(this, null); 6171 if(isFinal && num == state().boundariesCrossed){ typeException_computed = true; } 6172 return typeException_value; 6173 } 6174 /** 6175 * @apilevel internal 6176 */ 6177 protected boolean typeRuntimeException_computed = false; 6178 /** 6179 * @apilevel internal 6180 */ 6181 protected TypeDecl typeRuntimeException_value; 6182 /** 6183 * @attribute inh 6184 * @aspect ExceptionHandling 6185 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:16 6186 */ 6187 @SuppressWarnings({"unchecked", "cast"}) 6188 public TypeDecl typeRuntimeException() { 6189 if(typeRuntimeException_computed) { 6190 return typeRuntimeException_value; 6191 } 6192 ASTNode$State state = state(); 6193 int num = state.boundariesCrossed; 6194 boolean isFinal = this.is$Final(); 6195 typeRuntimeException_value = getParent().Define_TypeDecl_typeRuntimeException(this, null); 6196 if(isFinal && num == state().boundariesCrossed){ typeRuntimeException_computed = true; } 6197 return typeRuntimeException_value; 6198 } 6199 /** 6200 * @apilevel internal 6201 */ 6202 protected boolean typeError_computed = false; 6203 /** 6204 * @apilevel internal 6205 */ 6206 protected TypeDecl typeError_value; 6207 /** 6208 * @attribute inh 6209 * @aspect ExceptionHandling 6210 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/ExceptionHandling.jrag:18 6211 */ 6212 @SuppressWarnings({"unchecked", "cast"}) 6213 public TypeDecl typeError() { 6214 if(typeError_computed) { 6215 return typeError_value; 6216 } 6217 ASTNode$State state = state(); 6218 int num = state.boundariesCrossed; 6219 boolean isFinal = this.is$Final(); 6220 typeError_value = getParent().Define_TypeDecl_typeError(this, null); 6221 if(isFinal && num == state().boundariesCrossed){ typeError_computed = true; } 6222 return typeError_value; 6223 } 6224 protected java.util.Map lookupMethod_String_values; 6225 /** 6226 * @attribute inh 6227 * @aspect LookupMethod 6228 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:26 6229 */ 6230 @SuppressWarnings({"unchecked", "cast"}) 6231 public Collection lookupMethod(String name) { 6232 Object _parameters = name; 6233 if(lookupMethod_String_values == null) lookupMethod_String_values = new java.util.HashMap(4); 6234 if(lookupMethod_String_values.containsKey(_parameters)) { 6235 return (Collection)lookupMethod_String_values.get(_parameters); 6236 } 6237 ASTNode$State state = state(); 6238 int num = state.boundariesCrossed; 6239 boolean isFinal = this.is$Final(); 6240 Collection lookupMethod_String_value = getParent().Define_Collection_lookupMethod(this, null, name); 6241 if(isFinal && num == state().boundariesCrossed){ lookupMethod_String_values.put(_parameters, lookupMethod_String_value); } 6242 return lookupMethod_String_value; 6243 } 6244 /** 6245 * @attribute inh 6246 * @aspect SpecialClasses 6247 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:62 6248 */ 6249 @SuppressWarnings({"unchecked", "cast"}) 6250 public TypeDecl typeInt() { 6251 ASTNode$State state = state(); 6252 TypeDecl typeInt_value = getParent().Define_TypeDecl_typeInt(this, null); 6253 return typeInt_value; 6254 } 6255 /** 6256 * @apilevel internal 6257 */ 6258 protected boolean typeObject_computed = false; 6259 /** 6260 * @apilevel internal 6261 */ 6262 protected TypeDecl typeObject_value; 6263 /** 6264 * @attribute inh 6265 * @aspect SpecialClasses 6266 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:65 6267 */ 6268 @SuppressWarnings({"unchecked", "cast"}) 6269 public TypeDecl typeObject() { 6270 if(typeObject_computed) { 6271 return typeObject_value; 6272 } 6273 ASTNode$State state = state(); 6274 int num = state.boundariesCrossed; 6275 boolean isFinal = this.is$Final(); 6276 typeObject_value = getParent().Define_TypeDecl_typeObject(this, null); 6277 if(isFinal && num == state().boundariesCrossed){ typeObject_computed = true; } 6278 return typeObject_value; 6279 } 6280 /** 6281 * @attribute inh 6282 * @aspect LookupFullyQualifiedTypes 6283 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:98 6284 */ 6285 @SuppressWarnings({"unchecked", "cast"}) 6286 public TypeDecl lookupType(String packageName, String typeName) { 6287 ASTNode$State state = state(); 6288 TypeDecl lookupType_String_String_value = getParent().Define_TypeDecl_lookupType(this, null, packageName, typeName); 6289 return lookupType_String_String_value; 6290 } 6291 protected java.util.Map lookupType_String_values; 6292 /** 6293 * @attribute inh 6294 * @aspect TypeScopePropagation 6295 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:260 6296 */ 6297 @SuppressWarnings({"unchecked", "cast"}) 6298 public SimpleSet lookupType(String name) { 6299 Object _parameters = name; 6300 if(lookupType_String_values == null) lookupType_String_values = new java.util.HashMap(4); 6301 if(lookupType_String_values.containsKey(_parameters)) { 6302 return (SimpleSet)lookupType_String_values.get(_parameters); 6303 } 6304 ASTNode$State state = state(); 6305 int num = state.boundariesCrossed; 6306 boolean isFinal = this.is$Final(); 6307 SimpleSet lookupType_String_value = getParent().Define_SimpleSet_lookupType(this, null, name); 6308 if(isFinal && num == state().boundariesCrossed){ lookupType_String_values.put(_parameters, lookupType_String_value); } 6309 return lookupType_String_value; 6310 } 6311 protected java.util.Map lookupVariable_String_values; 6312 /** 6313 * @attribute inh 6314 * @aspect VariableScope 6315 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:14 6316 */ 6317 @SuppressWarnings({"unchecked", "cast"}) 6318 public SimpleSet lookupVariable(String name) { 6319 Object _parameters = name; 6320 if(lookupVariable_String_values == null) lookupVariable_String_values = new java.util.HashMap(4); 6321 if(lookupVariable_String_values.containsKey(_parameters)) { 6322 return (SimpleSet)lookupVariable_String_values.get(_parameters); 6323 } 6324 ASTNode$State state = state(); 6325 int num = state.boundariesCrossed; 6326 boolean isFinal = this.is$Final(); 6327 SimpleSet lookupVariable_String_value = getParent().Define_SimpleSet_lookupVariable(this, null, name); 6328 if(isFinal && num == state().boundariesCrossed){ lookupVariable_String_values.put(_parameters, lookupVariable_String_value); } 6329 return lookupVariable_String_value; 6330 } 6331 /** 6332 * @attribute inh 6333 * @aspect NameCheck 6334 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:242 6335 */ 6336 @SuppressWarnings({"unchecked", "cast"}) 6337 public boolean hasPackage(String packageName) { 6338 ASTNode$State state = state(); 6339 boolean hasPackage_String_value = getParent().Define_boolean_hasPackage(this, null, packageName); 6340 return hasPackage_String_value; 6341 } 6342 /** 6343 * @attribute inh 6344 * @aspect NameCheck 6345 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:245 6346 */ 6347 @SuppressWarnings({"unchecked", "cast"}) 6348 public ASTNode enclosingBlock() { 6349 ASTNode$State state = state(); 6350 ASTNode enclosingBlock_value = getParent().Define_ASTNode_enclosingBlock(this, null); 6351 return enclosingBlock_value; 6352 } 6353 /** 6354 * @apilevel internal 6355 */ 6356 protected boolean packageName_computed = false; 6357 /** 6358 * @apilevel internal 6359 */ 6360 protected String packageName_value; 6361 /** 6362 * @attribute inh 6363 * @aspect TypeName 6364 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/QualifiedNames.jrag:89 6365 */ 6366 @SuppressWarnings({"unchecked", "cast"}) 6367 public String packageName() { 6368 if(packageName_computed) { 6369 return packageName_value; 6370 } 6371 ASTNode$State state = state(); 6372 int num = state.boundariesCrossed; 6373 boolean isFinal = this.is$Final(); 6374 packageName_value = getParent().Define_String_packageName(this, null); 6375 if(isFinal && num == state().boundariesCrossed){ packageName_computed = true; } 6376 return packageName_value; 6377 } 6378 /** 6379 * @apilevel internal 6380 */ 6381 protected boolean isAnonymous_computed = false; 6382 /** 6383 * @apilevel internal 6384 */ 6385 protected boolean isAnonymous_value; 6386 /** 6387 * @attribute inh 6388 * @aspect TypeAnalysis 6389 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:216 6390 */ 6391 @SuppressWarnings({"unchecked", "cast"}) 6392 public boolean isAnonymous() { 6393 if(isAnonymous_computed) { 6394 return isAnonymous_value; 6395 } 6396 ASTNode$State state = state(); 6397 int num = state.boundariesCrossed; 6398 boolean isFinal = this.is$Final(); 6399 isAnonymous_value = getParent().Define_boolean_isAnonymous(this, null); 6400 if(isFinal && num == state().boundariesCrossed){ isAnonymous_computed = true; } 6401 return isAnonymous_value; 6402 } 6403 /** 6404 * @attribute inh 6405 * @aspect NestedTypes 6406 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:496 6407 */ 6408 @SuppressWarnings({"unchecked", "cast"}) 6409 public TypeDecl enclosingType() { 6410 ASTNode$State state = state(); 6411 TypeDecl enclosingType_value = getParent().Define_TypeDecl_enclosingType(this, null); 6412 return enclosingType_value; 6413 } 6414 /** 6415 * @attribute inh 6416 * @aspect NestedTypes 6417 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:512 6418 */ 6419 @SuppressWarnings({"unchecked", "cast"}) 6420 public BodyDecl enclosingBodyDecl() { 6421 ASTNode$State state = state(); 6422 BodyDecl enclosingBodyDecl_value = getParent().Define_BodyDecl_enclosingBodyDecl(this, null); 6423 return enclosingBodyDecl_value; 6424 } 6425 /** 6426 * @attribute inh 6427 * @aspect NestedTypes 6428 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:518 6429 */ 6430 @SuppressWarnings({"unchecked", "cast"}) 6431 public boolean isNestedType() { 6432 ASTNode$State state = state(); 6433 boolean isNestedType_value = getParent().Define_boolean_isNestedType(this, null); 6434 return isNestedType_value; 6435 } 6436 /** 6437 * @attribute inh 6438 * @aspect NestedTypes 6439 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:526 6440 */ 6441 @SuppressWarnings({"unchecked", "cast"}) 6442 public boolean isMemberType() { 6443 ASTNode$State state = state(); 6444 boolean isMemberType_value = getParent().Define_boolean_isMemberType(this, null); 6445 return isMemberType_value; 6446 } 6447 /** 6448 * @attribute inh 6449 * @aspect NestedTypes 6450 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:540 6451 */ 6452 @SuppressWarnings({"unchecked", "cast"}) 6453 public boolean isLocalClass() { 6454 ASTNode$State state = state(); 6455 boolean isLocalClass_value = getParent().Define_boolean_isLocalClass(this, null); 6456 return isLocalClass_value; 6457 } 6458 /** 6459 * @attribute inh 6460 * @aspect NestedTypes 6461 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:565 6462 */ 6463 @SuppressWarnings({"unchecked", "cast"}) 6464 public String hostPackage() { 6465 ASTNode$State state = state(); 6466 String hostPackage_value = getParent().Define_String_hostPackage(this, null); 6467 return hostPackage_value; 6468 } 6469 /** 6470 * @apilevel internal 6471 */ 6472 protected boolean unknownType_computed = false; 6473 /** 6474 * @apilevel internal 6475 */ 6476 protected TypeDecl unknownType_value; 6477 /** 6478 * @attribute inh 6479 * @aspect Circularity 6480 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:675 6481 */ 6482 @SuppressWarnings({"unchecked", "cast"}) 6483 public TypeDecl unknownType() { 6484 if(unknownType_computed) { 6485 return unknownType_value; 6486 } 6487 ASTNode$State state = state(); 6488 int num = state.boundariesCrossed; 6489 boolean isFinal = this.is$Final(); 6490 unknownType_value = getParent().Define_TypeDecl_unknownType(this, null); 6491 if(isFinal && num == state().boundariesCrossed){ unknownType_computed = true; } 6492 return unknownType_value; 6493 } 6494 /** 6495 * @attribute inh 6496 * @aspect TypeCheck 6497 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:402 6498 */ 6499 @SuppressWarnings({"unchecked", "cast"}) 6500 public TypeDecl typeVoid() { 6501 ASTNode$State state = state(); 6502 TypeDecl typeVoid_value = getParent().Define_TypeDecl_typeVoid(this, null); 6503 return typeVoid_value; 6504 } 6505 /** 6506 * @attribute inh 6507 * @aspect TypeCheck 6508 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:505 6509 */ 6510 @SuppressWarnings({"unchecked", "cast"}) 6511 public TypeDecl enclosingInstance() { 6512 ASTNode$State state = state(); 6513 TypeDecl enclosingInstance_value = getParent().Define_TypeDecl_enclosingInstance(this, null); 6514 return enclosingInstance_value; 6515 } 6516 /** 6517 * @apilevel internal 6518 */ 6519 protected boolean inExplicitConstructorInvocation_computed = false; 6520 /** 6521 * @apilevel internal 6522 */ 6523 protected boolean inExplicitConstructorInvocation_value; 6524 /** 6525 * @attribute inh 6526 * @aspect TypeHierarchyCheck 6527 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:127 6528 */ 6529 @SuppressWarnings({"unchecked", "cast"}) 6530 public boolean inExplicitConstructorInvocation() { 6531 if(inExplicitConstructorInvocation_computed) { 6532 return inExplicitConstructorInvocation_value; 6533 } 6534 ASTNode$State state = state(); 6535 int num = state.boundariesCrossed; 6536 boolean isFinal = this.is$Final(); 6537 inExplicitConstructorInvocation_value = getParent().Define_boolean_inExplicitConstructorInvocation(this, null); 6538 if(isFinal && num == state().boundariesCrossed){ inExplicitConstructorInvocation_computed = true; } 6539 return inExplicitConstructorInvocation_value; 6540 } 6541 /** 6542 * @apilevel internal 6543 */ 6544 protected boolean inStaticContext_computed = false; 6545 /** 6546 * @apilevel internal 6547 */ 6548 protected boolean inStaticContext_value; 6549 /** 6550 * @attribute inh 6551 * @aspect TypeHierarchyCheck 6552 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:135 6553 */ 6554 @SuppressWarnings({"unchecked", "cast"}) 6555 public boolean inStaticContext() { 6556 if(inStaticContext_computed) { 6557 return inStaticContext_value; 6558 } 6559 ASTNode$State state = state(); 6560 int num = state.boundariesCrossed; 6561 boolean isFinal = this.is$Final(); 6562 inStaticContext_value = getParent().Define_boolean_inStaticContext(this, null); 6563 if(isFinal && num == state().boundariesCrossed){ inStaticContext_computed = true; } 6564 return inStaticContext_value; 6565 } 6566 /** 6567 * @apilevel internal 6568 */ 6569 protected boolean destinationPath_computed = false; 6570 /** 6571 * @apilevel internal 6572 */ 6573 protected String destinationPath_value; 6574 /** 6575 * @attribute inh 6576 * @aspect ConstantPoolNames 6577 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/ConstantPoolNames.jrag:64 6578 */ 6579 @SuppressWarnings({"unchecked", "cast"}) 6580 public String destinationPath() { 6581 if(destinationPath_computed) { 6582 return destinationPath_value; 6583 } 6584 ASTNode$State state = state(); 6585 int num = state.boundariesCrossed; 6586 boolean isFinal = this.is$Final(); 6587 destinationPath_value = getParent().Define_String_destinationPath(this, null); 6588 if(isFinal && num == state().boundariesCrossed){ destinationPath_computed = true; } 6589 return destinationPath_value; 6590 } 6591 /** 6592 * @attribute inh 6593 * @aspect Annotations 6594 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:280 6595 */ 6596 @SuppressWarnings({"unchecked", "cast"}) 6597 public boolean withinSuppressWarnings(String s) { 6598 ASTNode$State state = state(); 6599 boolean withinSuppressWarnings_String_value = getParent().Define_boolean_withinSuppressWarnings(this, null, s); 6600 return withinSuppressWarnings_String_value; 6601 } 6602 /** 6603 * @attribute inh 6604 * @aspect Annotations 6605 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:379 6606 */ 6607 @SuppressWarnings({"unchecked", "cast"}) 6608 public boolean withinDeprecatedAnnotation() { 6609 ASTNode$State state = state(); 6610 boolean withinDeprecatedAnnotation_value = getParent().Define_boolean_withinDeprecatedAnnotation(this, null); 6611 return withinDeprecatedAnnotation_value; 6612 } 6613 /** 6614 * @attribute inh 6615 * @aspect LookupParTypeDecl 6616 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1384 6617 */ 6618 @SuppressWarnings({"unchecked", "cast"}) 6619 public TypeDecl typeWildcard() { 6620 ASTNode$State state = state(); 6621 TypeDecl typeWildcard_value = getParent().Define_TypeDecl_typeWildcard(this, null); 6622 return typeWildcard_value; 6623 } 6624 /** 6625 * @attribute inh 6626 * @aspect LookupParTypeDecl 6627 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1397 6628 */ 6629 @SuppressWarnings({"unchecked", "cast"}) 6630 public TypeDecl lookupWildcardExtends(TypeDecl typeDecl) { 6631 ASTNode$State state = state(); 6632 TypeDecl lookupWildcardExtends_TypeDecl_value = getParent().Define_TypeDecl_lookupWildcardExtends(this, null, typeDecl); 6633 return lookupWildcardExtends_TypeDecl_value; 6634 } 6635 /** 6636 * @attribute inh 6637 * @aspect LookupParTypeDecl 6638 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1410 6639 */ 6640 @SuppressWarnings({"unchecked", "cast"}) 6641 public TypeDecl lookupWildcardSuper(TypeDecl typeDecl) { 6642 ASTNode$State state = state(); 6643 TypeDecl lookupWildcardSuper_TypeDecl_value = getParent().Define_TypeDecl_lookupWildcardSuper(this, null, typeDecl); 6644 return lookupWildcardSuper_TypeDecl_value; 6645 } 6646 /** 6647 * @attribute inh 6648 * @aspect LookupParTypeDecl 6649 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1430 6650 */ 6651 @SuppressWarnings({"unchecked", "cast"}) 6652 public LUBType lookupLUBType(Collection bounds) { 6653 ASTNode$State state = state(); 6654 LUBType lookupLUBType_Collection_value = getParent().Define_LUBType_lookupLUBType(this, null, bounds); 6655 return lookupLUBType_Collection_value; 6656 } 6657 /** 6658 * @attribute inh 6659 * @aspect LookupParTypeDecl 6660 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Generics.jrag:1468 6661 */ 6662 @SuppressWarnings({"unchecked", "cast"}) 6663 public GLBType lookupGLBType(ArrayList bounds) { 6664 ASTNode$State state = state(); 6665 GLBType lookupGLBType_ArrayList_value = getParent().Define_GLBType_lookupGLBType(this, null, bounds); 6666 return lookupGLBType_ArrayList_value; 6667 } 6668 /** 6669 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Arrays.jrag:20 6670 * @apilevel internal 6671 */ 6672 public TypeDecl Define_TypeDecl_componentType(ASTNode caller, ASTNode child) { 6673 if(caller == arrayType_value){ 6674 return this; 6675 } 6676 else { return getParent().Define_TypeDecl_componentType(this, caller); 6677 } 6678 } 6679 /** 6680 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:20 6681 * @apilevel internal 6682 */ 6683 public boolean Define_boolean_isDest(ASTNode caller, ASTNode child) { 6684 if(caller == getBodyDeclListNoTransform()) { 6685 int childIndex = caller.getIndexOfChild(child); 6686 return false; 6687 } 6688 else { return getParent().Define_boolean_isDest(this, caller); 6689 } 6690 } 6691 /** 6692 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:30 6693 * @apilevel internal 6694 */ 6695 public boolean Define_boolean_isSource(ASTNode caller, ASTNode child) { 6696 if(caller == getBodyDeclListNoTransform()) { 6697 int childIndex = caller.getIndexOfChild(child); 6698 return true; 6699 } 6700 else { return getParent().Define_boolean_isSource(this, caller); 6701 } 6702 } 6703 /** 6704 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:245 6705 * @apilevel internal 6706 */ 6707 public boolean Define_boolean_isDAbefore(ASTNode caller, ASTNode child, Variable v) { 6708 if(caller == getBodyDeclListNoTransform()) { 6709 int childIndex = caller.getIndexOfChild(child); 6710 { 6711 BodyDecl b = getBodyDecl(childIndex); 6712 //if(b instanceof MethodDecl || b instanceof MemberTypeDecl) { 6713 if(!v.isInstanceVariable() && !v.isClassVariable()) { 6714 if(v.hostType() != this) 6715 return isDAbefore(v); 6716 return false; 6717 } 6718 if(b instanceof FieldDeclaration && !((FieldDeclaration)b).isStatic() && v.isClassVariable()) 6719 return true; 6720 6721 if(b instanceof MethodDecl) { 6722 return true; 6723 } 6724 if(b instanceof MemberTypeDecl && v.isBlank() && v.isFinal() && v.hostType() == this) 6725 return true; 6726 if(v.isClassVariable() || v.isInstanceVariable()) { 6727 if(v.isFinal() && v.hostType() != this && instanceOf(v.hostType())) 6728 return true; 6729 int index = childIndex - 1; 6730 if(b instanceof ConstructorDecl) 6731 index = getNumBodyDecl() - 1; 6732 6733 for(int i = index; i >= 0; i--) { 6734 b = getBodyDecl(i); 6735 if(b instanceof FieldDeclaration) { 6736 FieldDeclaration f = (FieldDeclaration)b; 6737 if((v.isClassVariable() && f.isStatic()) || (v.isInstanceVariable() && !f.isStatic())) { 6738 boolean c = f.isDAafter(v); 6739 //System.err.println("DefiniteAssignment: is " + v.name() + " DA after index " + i + ", " + f + ": " + c); 6740 return c; 6741 //return f.isDAafter(v); 6742 } 6743 } 6744 else if(b instanceof StaticInitializer && v.isClassVariable()) { 6745 StaticInitializer si = (StaticInitializer)b; 6746 return si.isDAafter(v); 6747 } 6748 else if(b instanceof InstanceInitializer && v.isInstanceVariable()) { 6749 InstanceInitializer ii = (InstanceInitializer)b; 6750 return ii.isDAafter(v); 6751 } 6752 } 6753 } 6754 return isDAbefore(v); 6755 } 6756 } 6757 else { return getParent().Define_boolean_isDAbefore(this, caller, v); 6758 } 6759 } 6760 /** 6761 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:712 6762 * @apilevel internal 6763 */ 6764 public boolean Define_boolean_isDUbefore(ASTNode caller, ASTNode child, Variable v) { 6765 if(caller == getBodyDeclListNoTransform()) { 6766 int childIndex = caller.getIndexOfChild(child); 6767 { 6768 BodyDecl b = getBodyDecl(childIndex); 6769 if(b instanceof MethodDecl || b instanceof MemberTypeDecl) { 6770 return false; 6771 } 6772 if(v.isClassVariable() || v.isInstanceVariable()) { 6773 int index = childIndex - 1; 6774 if(b instanceof ConstructorDecl) 6775 index = getNumBodyDecl() - 1; 6776 6777 for(int i = index; i >= 0; i--) { 6778 b = getBodyDecl(i); 6779 if(b instanceof FieldDeclaration) { 6780 FieldDeclaration f = (FieldDeclaration)b; 6781 //System.err.println(" working on field " + f.name() + " which is child " + i); 6782 if(f == v) 6783 return !f.hasInit(); 6784 if((v.isClassVariable() && f.isStatic()) || (v.isInstanceVariable() && !f.isStatic())) 6785 return f.isDUafter(v); 6786 //System.err.println(" field " + f.name() + " can not affect " + v.name()); 6787 } 6788 else if(b instanceof StaticInitializer && v.isClassVariable()) { 6789 StaticInitializer si = (StaticInitializer)b; 6790 //System.err.println(" working on static initializer which is child " + i); 6791 return si.isDUafter(v); 6792 } 6793 else if(b instanceof InstanceInitializer && v.isInstanceVariable()) { 6794 InstanceInitializer ii = (InstanceInitializer)b; 6795 //System.err.println(" working on instance initializer which is child " + i); 6796 return ii.isDUafter(v); 6797 } 6798 } 6799 } 6800 //System.err.println("Reached TypeDecl when searching for DU for variable"); 6801 return isDUbefore(v); 6802 } 6803 } 6804 else { return getParent().Define_boolean_isDUbefore(this, caller, v); 6805 } 6806 } 6807 /** 6808 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:16 6809 * @apilevel internal 6810 */ 6811 public Collection Define_Collection_lookupConstructor(ASTNode caller, ASTNode child) { 6812 if(caller == getBodyDeclListNoTransform()) { 6813 int childIndex = caller.getIndexOfChild(child); 6814 return constructors(); 6815 } 6816 else { return getParent().Define_Collection_lookupConstructor(this, caller); 6817 } 6818 } 6819 /** 6820 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupConstructor.jrag:20 6821 * @apilevel internal 6822 */ 6823 public Collection Define_Collection_lookupSuperConstructor(ASTNode caller, ASTNode child) { 6824 if(caller == getBodyDeclListNoTransform()) { 6825 int childIndex = caller.getIndexOfChild(child); 6826 return lookupSuperConstructor(); 6827 } 6828 else { return getParent().Define_Collection_lookupSuperConstructor(this, caller); 6829 } 6830 } 6831 /** 6832 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupMethod.jrag:34 6833 * @apilevel internal 6834 */ 6835 public Collection Define_Collection_lookupMethod(ASTNode caller, ASTNode child, String name) { 6836 if(caller == getBodyDeclListNoTransform()) { 6837 int i = caller.getIndexOfChild(child); 6838 return unqualifiedLookupMethod(name); 6839 } 6840 else { return getParent().Define_Collection_lookupMethod(this, caller, name); 6841 } 6842 } 6843 /** 6844 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupType.jrag:358 6845 * @apilevel internal 6846 */ 6847 public SimpleSet Define_SimpleSet_lookupType(ASTNode caller, ASTNode child, String name) { 6848 if(caller == getBodyDeclListNoTransform()) { 6849 int childIndex = caller.getIndexOfChild(child); 6850 { 6851 SimpleSet c = memberTypes(name); 6852 if(!c.isEmpty()) 6853 return c; 6854 if(name().equals(name)) 6855 return SimpleSet.emptySet.add(this); 6856 6857 c = lookupType(name); 6858 // 8.5.2 6859 if(isClassDecl() && isStatic() && !isTopLevelType()) { 6860 SimpleSet newSet = SimpleSet.emptySet; 6861 for(Iterator iter = c.iterator(); iter.hasNext(); ) { 6862 TypeDecl d = (TypeDecl)iter.next(); 6863 //if(d.isStatic() || d.isTopLevelType() || this.instanceOf(d.enclosingType())) { 6864 newSet = newSet.add(d); 6865 //} 6866 } 6867 c = newSet; 6868 } 6869 return c; 6870 } 6871 } 6872 else { return getParent().Define_SimpleSet_lookupType(this, caller, name); 6873 } 6874 } 6875 /** 6876 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/LookupVariable.jrag:27 6877 * @apilevel internal 6878 */ 6879 public SimpleSet Define_SimpleSet_lookupVariable(ASTNode caller, ASTNode child, String name) { 6880 if(caller == getBodyDeclListNoTransform()) { 6881 int i = caller.getIndexOfChild(child); 6882 { 6883 SimpleSet list = memberFields(name); 6884 if(!list.isEmpty()) return list; 6885 list = lookupVariable(name); 6886 if(inStaticContext() || isStatic()) 6887 list = removeInstanceVariables(list); 6888 return list; 6889 } 6890 } 6891 else { return getParent().Define_SimpleSet_lookupVariable(this, caller, name); 6892 } 6893 } 6894 /** 6895 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:301 6896 * @apilevel internal 6897 */ 6898 public boolean Define_boolean_mayBePublic(ASTNode caller, ASTNode child) { 6899 if(caller == getBodyDeclListNoTransform()) { 6900 int childIndex = caller.getIndexOfChild(child); 6901 return false; 6902 } 6903 else if(caller == getModifiersNoTransform()) { 6904 return true; 6905 } 6906 else { return getParent().Define_boolean_mayBePublic(this, caller); 6907 } 6908 } 6909 /** 6910 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:302 6911 * @apilevel internal 6912 */ 6913 public boolean Define_boolean_mayBeProtected(ASTNode caller, ASTNode child) { 6914 if(caller == getBodyDeclListNoTransform()) { 6915 int childIndex = caller.getIndexOfChild(child); 6916 return false; 6917 } 6918 else if(caller == getModifiersNoTransform()) { 6919 return true; 6920 } 6921 else { return getParent().Define_boolean_mayBeProtected(this, caller); 6922 } 6923 } 6924 /** 6925 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:303 6926 * @apilevel internal 6927 */ 6928 public boolean Define_boolean_mayBePrivate(ASTNode caller, ASTNode child) { 6929 if(caller == getBodyDeclListNoTransform()) { 6930 int childIndex = caller.getIndexOfChild(child); 6931 return false; 6932 } 6933 else if(caller == getModifiersNoTransform()) { 6934 return true; 6935 } 6936 else { return getParent().Define_boolean_mayBePrivate(this, caller); 6937 } 6938 } 6939 /** 6940 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:306 6941 * @apilevel internal 6942 */ 6943 public boolean Define_boolean_mayBeAbstract(ASTNode caller, ASTNode child) { 6944 if(caller == getBodyDeclListNoTransform()) { 6945 int childIndex = caller.getIndexOfChild(child); 6946 return false; 6947 } 6948 else if(caller == getModifiersNoTransform()) { 6949 return true; 6950 } 6951 else { return getParent().Define_boolean_mayBeAbstract(this, caller); 6952 } 6953 } 6954 /** 6955 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:304 6956 * @apilevel internal 6957 */ 6958 public boolean Define_boolean_mayBeStatic(ASTNode caller, ASTNode child) { 6959 if(caller == getBodyDeclListNoTransform()) { 6960 int childIndex = caller.getIndexOfChild(child); 6961 return false; 6962 } 6963 else if(caller == getModifiersNoTransform()) { 6964 return true; 6965 } 6966 else { return getParent().Define_boolean_mayBeStatic(this, caller); 6967 } 6968 } 6969 /** 6970 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:309 6971 * @apilevel internal 6972 */ 6973 public boolean Define_boolean_mayBeStrictfp(ASTNode caller, ASTNode child) { 6974 if(caller == getBodyDeclListNoTransform()) { 6975 int childIndex = caller.getIndexOfChild(child); 6976 return false; 6977 } 6978 else if(caller == getModifiersNoTransform()) { 6979 return true; 6980 } 6981 else { return getParent().Define_boolean_mayBeStrictfp(this, caller); 6982 } 6983 } 6984 /** 6985 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:305 6986 * @apilevel internal 6987 */ 6988 public boolean Define_boolean_mayBeFinal(ASTNode caller, ASTNode child) { 6989 if(caller == getBodyDeclListNoTransform()) { 6990 int childIndex = caller.getIndexOfChild(child); 6991 return false; 6992 } 6993 else { return getParent().Define_boolean_mayBeFinal(this, caller); 6994 } 6995 } 6996 /** 6997 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:307 6998 * @apilevel internal 6999 */ 7000 public boolean Define_boolean_mayBeVolatile(ASTNode caller, ASTNode child) { 7001 if(caller == getBodyDeclListNoTransform()) { 7002 int childIndex = caller.getIndexOfChild(child); 7003 return false; 7004 } 7005 else { return getParent().Define_boolean_mayBeVolatile(this, caller); 7006 } 7007 } 7008 /** 7009 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:308 7010 * @apilevel internal 7011 */ 7012 public boolean Define_boolean_mayBeTransient(ASTNode caller, ASTNode child) { 7013 if(caller == getBodyDeclListNoTransform()) { 7014 int childIndex = caller.getIndexOfChild(child); 7015 return false; 7016 } 7017 else { return getParent().Define_boolean_mayBeTransient(this, caller); 7018 } 7019 } 7020 /** 7021 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:310 7022 * @apilevel internal 7023 */ 7024 public boolean Define_boolean_mayBeSynchronized(ASTNode caller, ASTNode child) { 7025 if(caller == getBodyDeclListNoTransform()) { 7026 int childIndex = caller.getIndexOfChild(child); 7027 return false; 7028 } 7029 else { return getParent().Define_boolean_mayBeSynchronized(this, caller); 7030 } 7031 } 7032 /** 7033 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/Modifiers.jrag:311 7034 * @apilevel internal 7035 */ 7036 public boolean Define_boolean_mayBeNative(ASTNode caller, ASTNode child) { 7037 if(caller == getBodyDeclListNoTransform()) { 7038 int childIndex = caller.getIndexOfChild(child); 7039 return false; 7040 } 7041 else { return getParent().Define_boolean_mayBeNative(this, caller); 7042 } 7043 } 7044 /** 7045 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:297 7046 * @apilevel internal 7047 */ 7048 public VariableScope Define_VariableScope_outerScope(ASTNode caller, ASTNode child) { 7049 if(caller == getBodyDeclListNoTransform()) { 7050 int childIndex = caller.getIndexOfChild(child); 7051 return this; 7052 } 7053 else { return getParent().Define_VariableScope_outerScope(this, caller); 7054 } 7055 } 7056 /** 7057 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:369 7058 * @apilevel internal 7059 */ 7060 public boolean Define_boolean_insideLoop(ASTNode caller, ASTNode child) { 7061 if(caller == getBodyDeclListNoTransform()) { 7062 int i = caller.getIndexOfChild(child); 7063 return false; 7064 } 7065 else { return getParent().Define_boolean_insideLoop(this, caller); 7066 } 7067 } 7068 /** 7069 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:376 7070 * @apilevel internal 7071 */ 7072 public boolean Define_boolean_insideSwitch(ASTNode caller, ASTNode child) { 7073 if(caller == getBodyDeclListNoTransform()) { 7074 int i = caller.getIndexOfChild(child); 7075 return false; 7076 } 7077 else { return getParent().Define_boolean_insideSwitch(this, caller); 7078 } 7079 } 7080 /** 7081 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/SyntacticClassification.jrag:118 7082 * @apilevel internal 7083 */ 7084 public NameType Define_NameType_nameType(ASTNode caller, ASTNode child) { 7085 if(caller == getBodyDeclListNoTransform()) { 7086 int childIndex = caller.getIndexOfChild(child); 7087 return NameType.EXPRESSION_NAME; 7088 } 7089 else { return getParent().Define_NameType_nameType(this, caller); 7090 } 7091 } 7092 /** 7093 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:218 7094 * @apilevel internal 7095 */ 7096 public boolean Define_boolean_isAnonymous(ASTNode caller, ASTNode child) { 7097 if(caller == getBodyDeclListNoTransform()) { 7098 int childIndex = caller.getIndexOfChild(child); 7099 return false; 7100 } 7101 else { return getParent().Define_boolean_isAnonymous(this, caller); 7102 } 7103 } 7104 /** 7105 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:494 7106 * @apilevel internal 7107 */ 7108 public TypeDecl Define_TypeDecl_enclosingType(ASTNode caller, ASTNode child) { 7109 if(caller == getBodyDeclListNoTransform()) { 7110 int childIndex = caller.getIndexOfChild(child); 7111 return this; 7112 } 7113 else { return getParent().Define_TypeDecl_enclosingType(this, caller); 7114 } 7115 } 7116 /** 7117 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:520 7118 * @apilevel internal 7119 */ 7120 public boolean Define_boolean_isNestedType(ASTNode caller, ASTNode child) { 7121 if(caller == getBodyDeclListNoTransform()) { 7122 int childIndex = caller.getIndexOfChild(child); 7123 return true; 7124 } 7125 else { return getParent().Define_boolean_isNestedType(this, caller); 7126 } 7127 } 7128 /** 7129 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:542 7130 * @apilevel internal 7131 */ 7132 public boolean Define_boolean_isLocalClass(ASTNode caller, ASTNode child) { 7133 if(caller == getBodyDeclListNoTransform()) { 7134 int childIndex = caller.getIndexOfChild(child); 7135 return false; 7136 } 7137 else { return getParent().Define_boolean_isLocalClass(this, caller); 7138 } 7139 } 7140 /** 7141 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeAnalysis.jrag:575 7142 * @apilevel internal 7143 */ 7144 public TypeDecl Define_TypeDecl_hostType(ASTNode caller, ASTNode child) { 7145 if(caller == getModifiersNoTransform()) { 7146 return hostType(); 7147 } 7148 else if(caller == getBodyDeclListNoTransform()) { 7149 int childIndex = caller.getIndexOfChild(child); 7150 return hostType(); 7151 } 7152 else { 7153 int childIndex = this.getIndexOfChild(caller); 7154 return hostType(); 7155 } 7156 } 7157 /** 7158 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:404 7159 * @apilevel internal 7160 */ 7161 public TypeDecl Define_TypeDecl_returnType(ASTNode caller, ASTNode child) { 7162 if(caller == getBodyDeclListNoTransform()) { 7163 int childIndex = caller.getIndexOfChild(child); 7164 return typeVoid(); 7165 } 7166 else { return getParent().Define_TypeDecl_returnType(this, caller); 7167 } 7168 } 7169 /** 7170 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:509 7171 * @apilevel internal 7172 */ 7173 public TypeDecl Define_TypeDecl_enclosingInstance(ASTNode caller, ASTNode child) { 7174 if(caller == getBodyDeclListNoTransform()) { 7175 int childIndex = caller.getIndexOfChild(child); 7176 { 7177 if(getBodyDecl(childIndex) instanceof MemberTypeDecl && !((MemberTypeDecl)getBodyDecl(childIndex)).typeDecl().isInnerType()) 7178 return null; 7179 if(getBodyDecl(childIndex) instanceof ConstructorDecl) 7180 return enclosingInstance(); 7181 return this; 7182 } 7183 } 7184 else { return getParent().Define_TypeDecl_enclosingInstance(this, caller); 7185 } 7186 } 7187 /** 7188 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:12 7189 * @apilevel internal 7190 */ 7191 public String Define_String_methodHost(ASTNode caller, ASTNode child) { 7192 if(caller == getBodyDeclListNoTransform()) { 7193 int childIndex = caller.getIndexOfChild(child); 7194 return typeName(); 7195 } 7196 else { return getParent().Define_String_methodHost(this, caller); 7197 } 7198 } 7199 /** 7200 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeHierarchyCheck.jrag:138 7201 * @apilevel internal 7202 */ 7203 public boolean Define_boolean_inStaticContext(ASTNode caller, ASTNode child) { 7204 if(caller == getBodyDeclListNoTransform()) { 7205 int childIndex = caller.getIndexOfChild(child); 7206 return isStatic() || inStaticContext(); 7207 } 7208 else { return getParent().Define_boolean_inStaticContext(this, caller); 7209 } 7210 } 7211 /** 7212 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/UnreachableStatements.jrag:159 7213 * @apilevel internal 7214 */ 7215 public boolean Define_boolean_reportUnreachable(ASTNode caller, ASTNode child) { 7216 { 7217 int childIndex = this.getIndexOfChild(caller); 7218 return true; 7219 } 7220 } 7221 /** 7222 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:74 7223 * @apilevel internal 7224 */ 7225 public boolean Define_boolean_mayUseAnnotationTarget(ASTNode caller, ASTNode child, String name) { 7226 if(caller == getModifiersNoTransform()) { 7227 return name.equals("TYPE"); 7228 } 7229 else { return getParent().Define_boolean_mayUseAnnotationTarget(this, caller, name); 7230 } 7231 } 7232 /** 7233 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:271 7234 * @apilevel internal 7235 */ 7236 public boolean Define_boolean_withinSuppressWarnings(ASTNode caller, ASTNode child, String s) { 7237 if(caller == getBodyDeclListNoTransform()) { 7238 int i = caller.getIndexOfChild(child); 7239 return getBodyDecl(i).hasAnnotationSuppressWarnings(s) || hasAnnotationSuppressWarnings(s) || 7240 withinSuppressWarnings(s); 7241 } 7242 else { return getParent().Define_boolean_withinSuppressWarnings(this, caller, s); 7243 } 7244 } 7245 /** 7246 * @declaredat /home/jesper/svn/JastAddJ/Java1.5Frontend/Annotations.jrag:374 7247 * @apilevel internal 7248 */ 7249 public boolean Define_boolean_withinDeprecatedAnnotation(ASTNode caller, ASTNode child) { 7250 if(caller == getBodyDeclListNoTransform()) { 7251 int i = caller.getIndexOfChild(child); 7252 return getBodyDecl(i).isDeprecated() || isDeprecated() || withinDeprecatedAnnotation(); 7253 } 7254 else { return getParent().Define_boolean_withinDeprecatedAnnotation(this, caller); 7255 } 7256 } 7257 /** 7258 * @apilevel internal 7259 */ 7260 public ASTNode rewriteTo() { 7261 return super.rewriteTo(); 7262 } 7263 }