org.extendj.ast.Expr Maven / Gradle / Ivy
/* This file was generated with JastAdd2 (http://jastadd.org) version 2.3.0 */
package org.extendj.ast;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.ArrayList;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;
import java.util.zip.*;
import java.io.*;
import org.jastadd.util.PrettyPrintable;
import org.jastadd.util.PrettyPrinter;
import org.jastadd.util.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.IOException;
import java.util.Set;
import beaver.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentSkipListMap;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
/**
* @ast node
* @declaredat /home/jesper/git/extendj/java4/grammar/Java.ast:194
* @astdecl Expr : ASTNode;
* @production Expr : {@link ASTNode};
*/
public abstract class Expr extends ASTNode implements Cloneable {
/**
* Creates a qualified expression. This will not be subject to rewriting.
* @aspect QualifiedNames
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:201
*/
public Access qualifiesAccess(Access access) {
Dot dot = new Dot(this, access);
dot.setStart(this.getStart());
dot.setEnd(access.getEnd());
return dot;
}
/**
* @aspect TypeScopePropagation
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:635
*/
public SimpleSet keepAccessibleTypes(SimpleSet types) {
SimpleSet result = emptySet();
TypeDecl hostType = hostType();
for (TypeDecl type : types) {
if ((hostType != null && type.accessibleFrom(hostType))
|| (hostType == null && type.accessibleFromPackage(hostPackage()))) {
result = result.add(type);
}
}
return result;
}
/**
* Remove fields that are not accessible when using this Expr as qualifier
* @return a set containing the accessible fields
* @aspect VariableScope
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupVariable.jrag:289
*/
public SimpleSet keepAccessibleFields(SimpleSet fields) {
SimpleSet newSet = emptySet();
for (Variable f : fields) {
if (mayAccess(f)) {
newSet = newSet.add(f);
}
}
return newSet;
}
/**
* @see "JLS $6.6.2.1"
* @return true if the expression may access the given field
* @aspect VariableScope
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupVariable.jrag:313
*/
public boolean mayAccess(Variable f) {
if (f.isPublic()) {
return true;
} else if (f.isProtected()) {
if (f.hostPackage().equals(hostPackage())) {
return true;
}
return hostType().mayAccess(this, f);
} else if (f.isPrivate()) {
return f.hostType().topLevelType() == hostType().topLevelType();
} else {
return f.hostPackage().equals(hostType().hostPackage());
}
}
/**
* Infer type arguments based on the actual arguments and result assignment type.
* @aspect GenericMethodsInference
* @declaredat /home/jesper/git/extendj/java5/frontend/GenericMethodsInference.jrag:91
*/
public Collection computeConstraints(
TypeDecl resultType,
List params,
List args,
List typeParams) {
Constraints constraints = new Constraints();
// Store type parameters.
for (TypeVariable p : typeParams) {
constraints.addTypeVariable(p);
}
// Add initial constraints.
for (int i = 0; i < args.getNumChild(); i++) {
TypeDecl A = args.getChild(i).type();
int index = i >= params.getNumChild() ? params.getNumChild() - 1 : i;
TypeDecl F = params.getChild(index).type();
if (params.getChild(index) instanceof VariableArityParameterDeclaration
&& (args.getNumChild() != params.getNumChild() || !A.isArrayDecl())) {
F = F.componentType();
}
constraints.convertibleTo(A, F);
}
if (constraints.rawAccess) {
return new ArrayList();
}
constraints.resolveEqualityConstraints();
constraints.resolveSupertypeConstraints();
if (constraints.unresolvedTypeArguments()) {
TypeDecl S = assignConvertedType();
if (S.isUnboxedPrimitive()) {
S = S.boxed();
}
TypeDecl R = resultType;
if (R.isVoid()) {
R = typeObject();
}
constraints.convertibleFrom(S, R);
// Build the last constraints by substituting type bounds using the
// already-inferred type variables.
Collection substArgs = new ArrayList();
for (TypeVariable p : typeParams) {
TypeDecl arg = constraints.constraintsMap.get(p).typeArgument;
if (arg != null) {
substArgs.add(arg);
} else {
substArgs.add(p);
}
}
Parameterization partialSubst = new Parameterization(typeParams, substArgs);
for (TypeVariable p : typeParams) {
if (p.hasTypeBound() && !p.getTypeBound(0).isTypeAccess("java.lang", "Object")) {
TypeDecl Bp = constraints.constraintsMap.get(p).typeArgument;
if (Bp == null) {
Bp = p;
}
TypeDecl Bi_sub = p.substituted(partialSubst).lowerBound();
constraints.convertibleFrom(Bi_sub, p);
constraints.convertibleTo(Bp, Bi_sub);
}
}
constraints.resolveEqualityConstraints();
constraints.resolveSupertypeConstraints();
constraints.resolveSubtypeConstraints();
}
return constraints.typeArguments();
}
/**
* @aspect MethodSignature15
* @declaredat /home/jesper/git/extendj/java5/frontend/MethodSignature.jrag:112
*/
protected SimpleSet chooseConstructor(
Collection constructors, List argList) {
SimpleSet potentiallyApplicable = emptySet();
// Select potentially applicable constructors.
for (ConstructorDecl decl : constructors) {
if (decl.potentiallyApplicable(argList) && decl.accessibleFrom(hostType())) {
if (decl.isGeneric()) {
GenericConstructorDecl gc = decl.genericDecl();
Collection typeArguments = inferTypeArguments(
gc.type(),
gc.getParameterList(),
argList,
gc.getTypeParameterList());
decl = gc.lookupParConstructorDecl(typeArguments);
}
potentiallyApplicable = potentiallyApplicable.add(decl);
}
}
// First phase.
SimpleSet maxSpecific = emptySet();
for (ConstructorDecl decl : potentiallyApplicable) {
if (decl.applicableBySubtyping(argList)) {
maxSpecific = mostSpecific(maxSpecific, decl);
}
}
// Second phase.
if (maxSpecific.isEmpty()) {
for (ConstructorDecl decl : potentiallyApplicable) {
if (decl.applicableByMethodInvocationConversion(argList)) {
maxSpecific = mostSpecific(maxSpecific, decl);
}
}
}
// Third phase.
if (maxSpecific.isEmpty()) {
for (ConstructorDecl decl : potentiallyApplicable) {
if (decl.isVariableArity() && decl.applicableVariableArity(argList)) {
maxSpecific = mostSpecific(maxSpecific, decl);
}
}
}
return maxSpecific;
}
/**
* @aspect MethodSignature15
* @declaredat /home/jesper/git/extendj/java5/frontend/MethodSignature.jrag:160
*/
protected static SimpleSet mostSpecific(
SimpleSet maxSpecific, ConstructorDecl decl) {
if (maxSpecific.isEmpty()) {
maxSpecific = maxSpecific.add(decl);
} else {
ConstructorDecl other = maxSpecific.iterator().next();
if (decl.moreSpecificThan(other)) {
maxSpecific = ASTNode.emptySet().add(decl);
} else if (!other.moreSpecificThan(decl)) {
maxSpecific = maxSpecific.add(decl);
}
}
return maxSpecific;
}
/**
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:289
*/
protected boolean needsPush() {
ASTNode n = getParent();
while (n instanceof ParExpr) {
n = n.getParent();
}
return !(n instanceof ExprStmt);
}
/**
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:458
*/
public void createAssignSimpleLoadDest(CodeGeneration gen) {
}
/**
* Duplicate top value on stack and store below destination element.
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:477
*/
public void createPushAssignmentResult(CodeGeneration gen) {
}
/**
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:500
*/
public void createAssignLoadDest(CodeGeneration gen) {
}
/**
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:1172
*/
protected void emitBooleanCondition(CodeGeneration gen) {
int end_label = -1;
int false_label = -1;
if (!isConstant()) {
false_label = gen.constantPool().newLabel();
branchFalse(gen, false_label);
}
if (canBeTrue()) {
BooleanLiteral.push(gen, true);
if (canBeFalse()) {
end_label = gen.constantPool().newLabel();
gen.GOTO(end_label);
}
}
if (false_label != -1) {
gen.addLabel(false_label);
}
if (canBeFalse()) {
BooleanLiteral.push(gen, false);
}
if (end_label != -1) {
gen.addLabel(end_label);
}
}
/**
* Generate a conditional branch statement. The branch should be taken if the
* expression evaluates to true. May in some cases not result in an actual
* branch statement if the branch would never be taken.
* @param gen code generator
* @param target target label to jump to if the condition was true
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:1231
*/
public void refined_CreateBCode_Expr_branchTrue(CodeGeneration gen, int target) {
// Branch when true.
if (isConstant()) {
if (isTrue()) {
gen.GOTO(target);
}
} else {
createBCode(gen);
gen.IFNE(target);
}
}
/**
* Generate a conditional branch statement. The branch should be taken if the
* expression evaluates to false. May in some cases not result in an actual
* branch statement if the branch would never be taken.
* @param gen code generator
* @param target target label to jump to if the condition was false
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:1342
*/
public void refined_CreateBCode_Expr_branchFalse(CodeGeneration gen, int target) {
// Branch when false.
if (isConstant()) {
if (isFalse()) {
gen.GOTO(target);
}
} else {
createBCode(gen);
gen.IFEQ(target);
}
}
/**
* @aspect CodeGeneration
* @declaredat /home/jesper/git/extendj/java4/backend/CodeGeneration.jrag:223
*/
public void emitStore(CodeGeneration gen) {
error("emitStore called with " + getClass().getName());
}
/**
* Outputs the desired operation on the operand(s) on the stack.
* @aspect CodeGeneration
* @declaredat /home/jesper/git/extendj/java4/backend/CodeGeneration.jrag:456
*/
void emitOperation(CodeGeneration gen) {
codeGenError("expression");
}
/**
* @declaredat ASTNode:1
*/
public Expr() {
super();
}
/**
* Initializes the child array to the correct size.
* Initializes List and Opt nta children.
* @apilevel internal
* @ast method
* @declaredat ASTNode:10
*/
public void init$Children() {
}
/** @apilevel low-level
* @declaredat ASTNode:13
*/
protected int numChildren() {
return 0;
}
/**
* @apilevel internal
* @declaredat ASTNode:19
*/
public boolean mayHaveRewrite() {
return false;
}
/** @apilevel internal
* @declaredat ASTNode:23
*/
public void flushAttrCache() {
super.flushAttrCache();
unassignedAfterFalse_Variable_reset();
unassignedAfterTrue_Variable_reset();
unassignedAfter_Variable_reset();
inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__reset();
}
/** @apilevel internal
* @declaredat ASTNode:31
*/
public void flushCollectionCache() {
super.flushCollectionCache();
}
/** @apilevel internal
* @declaredat ASTNode:35
*/
public Expr clone() throws CloneNotSupportedException {
Expr node = (Expr) super.clone();
return node;
}
/**
* Create a deep copy of the AST subtree at this node.
* The copy is dangling, i.e. has no parent.
* @return dangling copy of the subtree at this node
* @apilevel low-level
* @deprecated Please use treeCopy or treeCopyNoTransform instead
* @declaredat ASTNode:46
*/
@Deprecated
public abstract Expr fullCopy();
/**
* Create a deep copy of the AST subtree at this node.
* The copy is dangling, i.e. has no parent.
* @return dangling copy of the subtree at this node
* @apilevel low-level
* @declaredat ASTNode:54
*/
public abstract Expr treeCopyNoTransform();
/**
* Create a deep copy of the AST subtree at this node.
* The subtree of this node is traversed to trigger rewrites before copy.
* The copy is dangling, i.e. has no parent.
* @return dangling copy of the subtree at this node
* @apilevel low-level
* @declaredat ASTNode:62
*/
public abstract Expr treeCopy();
/**
* Generate unboxing code for conditions
* 14.9 If, 14.12 While, 14.13 Do, 14.14 For
*
* branchTrue is used to emit the condition from these constructs
* refine behavior to include unboxing of the value when needed
* @aspect AutoBoxingCodegen
* @declaredat /home/jesper/git/extendj/java5/backend/AutoBoxingCodegen.jrag:170
*/
public void branchTrue(CodeGeneration gen, int target) {
// Branch when true.
if (type().isReferenceType()) {
createBCode(gen);
type().emitUnboxingOperation(gen);
gen.IFNE(target);
} else {
refined_CreateBCode_Expr_branchTrue(gen, target);
}
}
/**
* @aspect AutoBoxingCodegen
* @declaredat /home/jesper/git/extendj/java5/backend/AutoBoxingCodegen.jrag:181
*/
public void branchFalse(CodeGeneration gen, int target) {
// Branch when false.
if (type().isReferenceType()) {
createBCode(gen);
type().emitUnboxingOperation(gen);
gen.IFEQ(target);
} else {
refined_CreateBCode_Expr_branchFalse(gen, target);
}
}
/**
* @aspect GenericsCodegen
* @declaredat /home/jesper/git/extendj/java5/backend/GenericsCodegen.jrag:124
*/
void emitAssignConvTo(CodeGeneration gen, TypeDecl type) {
// The bytecode type of this expression is the erased type, and that
// is the type that should be cast to the target type.
erasedType().emitAssignConvTo(gen, type);
}
/**
* @aspect GenericsCodegen
* @declaredat /home/jesper/git/extendj/java5/backend/GenericsCodegen.jrag:131
*/
void emitCastTo(CodeGeneration gen, TypeDecl type) {
// The bytecode type of this expression is the erased type, and that
// is the type that should be cast to the target type.
erasedType().emitCastTo(gen, type);
}
/**
* @attribute syn
* @aspect TypeAnalysis
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:296
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="TypeAnalysis", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:296")
public abstract TypeDecl type();
/**
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:35
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:35")
public boolean isTypeAccess() {
boolean isTypeAccess_value = false;
return isTypeAccess_value;
}
/**
* Tests if this is a qualified type access expression for
* the given type.
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:43
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:43")
public boolean isTypeAccess(String packageName, String type) {
boolean isTypeAccess_String_String_value = false;
return isTypeAccess_String_String_value;
}
/**
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:47
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:47")
public boolean isMethodAccess() {
boolean isMethodAccess_value = false;
return isMethodAccess_value;
}
/**
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:51
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:51")
public boolean isFieldAccess() {
boolean isFieldAccess_value = false;
return isFieldAccess_value;
}
/**
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:56
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:56")
public boolean isSuperAccess() {
boolean isSuperAccess_value = false;
return isSuperAccess_value;
}
/**
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:62
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:62")
public boolean isThisAccess() {
boolean isThisAccess_value = false;
return isThisAccess_value;
}
/**
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:68
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:68")
public boolean isPackageAccess() {
boolean isPackageAccess_value = false;
return isPackageAccess_value;
}
/**
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:72
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:72")
public boolean isArrayAccess() {
boolean isArrayAccess_value = false;
return isArrayAccess_value;
}
/**
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:76
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:76")
public boolean isClassAccess() {
boolean isClassAccess_value = false;
return isClassAccess_value;
}
/**
* @attribute syn
* @aspect AccessTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:80
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AccessTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:80")
public boolean isSuperConstructorAccess() {
boolean isSuperConstructorAccess_value = false;
return isSuperConstructorAccess_value;
}
/**
* @attribute syn
* @aspect QualifiedNames
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:177
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="QualifiedNames", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:177")
public Dot parentDot() {
Dot parentDot_value = getParent() instanceof Dot ?
(Dot) getParent() : null;
return parentDot_value;
}
/**
* @attribute syn
* @aspect QualifiedNames
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:180
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="QualifiedNames", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:180")
public boolean hasParentDot() {
boolean hasParentDot_value = parentDot() != null;
return hasParentDot_value;
}
/**
* @attribute syn
* @aspect QualifiedNames
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:182
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="QualifiedNames", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:182")
public boolean hasNextAccess() {
boolean hasNextAccess_value = isLeftChildOfDot();
return hasNextAccess_value;
}
/**
* @attribute syn
* @aspect NameResolution
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:493
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="NameResolution", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:493")
public boolean isParseName() {
boolean isParseName_value = false;
return isParseName_value;
}
/**
* Test if an expression contains an unresolved parse name.
* @attribute syn
* @aspect NameResolution
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:554
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="NameResolution", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:554")
public boolean containsParseName() {
boolean containsParseName_value = false;
return containsParseName_value;
}
/**
* @attribute syn
* @aspect LookupFullyQualifiedTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:106
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="LookupFullyQualifiedTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:106")
public boolean hasQualifiedPackage(String packageName) {
boolean hasQualifiedPackage_String_value = false;
return hasQualifiedPackage_String_value;
}
/**
* @attribute syn
* @aspect TypeScopePropagation
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:608
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="TypeScopePropagation", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:608")
public SimpleSet qualifiedLookupType(String name) {
SimpleSet qualifiedLookupType_String_value = keepAccessibleTypes(type().memberTypes(name));
return qualifiedLookupType_String_value;
}
/**
* Compute the most specific constructor in a collection.
* The constructor is invoked with the arguments specified in argList.
* The curent context (this) is used to evaluate the hostType for accessibility.
* @attribute syn
* @aspect ConstructScope
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupConstructor.jrag:65
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="ConstructScope", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupConstructor.jrag:65")
public SimpleSet mostSpecificConstructor(Collection constructors) {
{
SimpleSet maxSpecific = emptySet();
for (ConstructorDecl decl : constructors) {
if (applicableAndAccessible(decl)) {
if (maxSpecific.isEmpty()) {
maxSpecific = maxSpecific.add(decl);
} else {
ConstructorDecl other = maxSpecific.iterator().next();
if (decl.moreSpecificThan(other)) {
maxSpecific = ASTNode.emptySet().add(decl);
} else if (!other.moreSpecificThan(decl)) {
maxSpecific = maxSpecific.add(decl);
}
}
}
}
return maxSpecific;
}
}
/**
* @attribute syn
* @aspect ConstructScope
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupConstructor.jrag:85
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="ConstructScope", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupConstructor.jrag:85")
public boolean applicableAndAccessible(ConstructorDecl decl) {
boolean applicableAndAccessible_ConstructorDecl_value = false;
return applicableAndAccessible_ConstructorDecl_value;
}
/**
* @attribute syn
* @aspect NestedTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:563
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="NestedTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:563")
public Stmt enclosingStmt() {
{
ASTNode node = this;
while (node != null && !(node instanceof Stmt)) {
node = node.getParent();
}
return (Stmt) node;
}
}
/**
* @attribute syn
* @aspect TypeCheck
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeCheck.jrag:33
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="TypeCheck", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeCheck.jrag:33")
public boolean isVariable() {
boolean isVariable_value = false;
return isVariable_value;
}
/**
* @attribute syn
* @aspect Names
* @declaredat /home/jesper/git/extendj/java4/frontend/QualifiedNames.jrag:43
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="Names", declaredAt="/home/jesper/git/extendj/java4/frontend/QualifiedNames.jrag:43")
public String packageName() {
String packageName_value = "";
return packageName_value;
}
/**
* @attribute syn
* @aspect Names
* @declaredat /home/jesper/git/extendj/java4/frontend/QualifiedNames.jrag:73
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="Names", declaredAt="/home/jesper/git/extendj/java4/frontend/QualifiedNames.jrag:73")
public String typeName() {
String typeName_value = "";
return typeName_value;
}
/**
* @attribute syn
* @aspect PositiveLiterals
* @declaredat /home/jesper/git/extendj/java4/frontend/PositiveLiterals.jrag:36
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="PositiveLiterals", declaredAt="/home/jesper/git/extendj/java4/frontend/PositiveLiterals.jrag:36")
public boolean isPositive() {
boolean isPositive_value = false;
return isPositive_value;
}
/**
* @attribute syn
* @aspect ConstantExpression
* @declaredat /home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:32
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="ConstantExpression", declaredAt="/home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:32")
public Constant constant() {
{
throw new UnsupportedOperationException("ConstantExpression operation constant"
+ " not supported for type " + getClass().getName());
}
}
/**
* representableIn(T) is true if and only if the the expression is a
* compile-time constant of type byte, char, short or int, and the value
* of the expression can be represented (by an expression) in the type T
* where T must be byte, char or short.
* @attribute syn
* @aspect ConstantExpression
* @declaredat /home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:328
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="ConstantExpression", declaredAt="/home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:328")
public boolean representableIn(TypeDecl t) {
{
if (!type().isByte() && !type().isChar() && !type().isShort() && !type().isInt()) {
return false;
}
if (t.isByte()) {
return constant().intValue() >= Byte.MIN_VALUE && constant().intValue() <= Byte.MAX_VALUE;
}
if (t.isChar()) {
return constant().intValue() >= Character.MIN_VALUE
&& constant().intValue() <= Character.MAX_VALUE;
}
if (t.isShort()) {
return constant().intValue() >= Short.MIN_VALUE && constant().intValue() <= Short.MAX_VALUE;
}
if (t.isInt()) {
return constant().intValue() >= Integer.MIN_VALUE
&& constant().intValue() <= Integer.MAX_VALUE;
}
return false;
}
}
/**
* @attribute syn
* @aspect ConstantExpression
* @declaredat /home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:383
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="ConstantExpression", declaredAt="/home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:383")
public boolean isConstant() {
boolean isConstant_value = false;
return isConstant_value;
}
/**
* @attribute syn
* @aspect ConstantExpression
* @declaredat /home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:435
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="ConstantExpression", declaredAt="/home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:435")
public boolean isTrue() {
boolean isTrue_value = isConstant() && type() instanceof BooleanType && constant().booleanValue();
return isTrue_value;
}
/**
* @attribute syn
* @aspect ConstantExpression
* @declaredat /home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:438
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="ConstantExpression", declaredAt="/home/jesper/git/extendj/java4/frontend/ConstantExpression.jrag:438")
public boolean isFalse() {
boolean isFalse_value = isConstant() && type() instanceof BooleanType && !constant().booleanValue();
return isFalse_value;
}
/**
* @attribute syn
* @aspect DefiniteAssignment
* @declaredat /home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:77
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="DefiniteAssignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:77")
public Variable varDecl() {
Variable varDecl_value = null;
return varDecl_value;
}
/**
* @attribute syn
* @aspect DefiniteAssignment
* @declaredat /home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:377
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="DefiniteAssignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:377")
public boolean assignedAfterFalse(Variable v) {
boolean assignedAfterFalse_Variable_value = isTrue() || assignedAfter(v);
return assignedAfterFalse_Variable_value;
}
/**
* @attribute syn
* @aspect DefiniteAssignment
* @declaredat /home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:375
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="DefiniteAssignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:375")
public boolean assignedAfterTrue(Variable v) {
boolean assignedAfterTrue_Variable_value = isFalse() || assignedAfter(v);
return assignedAfterTrue_Variable_value;
}
/**
* @attribute syn
* @aspect DefiniteAssignment
* @declaredat /home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:268
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="DefiniteAssignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:268")
public boolean assignedAfter(Variable v) {
boolean assignedAfter_Variable_value = assignedBefore(v);
return assignedAfter_Variable_value;
}
/** @apilevel internal */
private void unassignedAfterFalse_Variable_reset() {
unassignedAfterFalse_Variable_values = null;
}
protected java.util.Map unassignedAfterFalse_Variable_values;
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN, isCircular=true)
@ASTNodeAnnotation.Source(aspect="DefiniteUnassignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:907")
public boolean unassignedAfterFalse(Variable v) {
Object _parameters = v;
if (unassignedAfterFalse_Variable_values == null) unassignedAfterFalse_Variable_values = new java.util.HashMap(4);
ASTState.CircularValue _value;
if (unassignedAfterFalse_Variable_values.containsKey(_parameters)) {
Object _cache = unassignedAfterFalse_Variable_values.get(_parameters);
if (!(_cache instanceof ASTState.CircularValue)) {
return (Boolean) _cache;
} else {
_value = (ASTState.CircularValue) _cache;
}
} else {
_value = new ASTState.CircularValue();
unassignedAfterFalse_Variable_values.put(_parameters, _value);
_value.value = true;
}
ASTState state = state();
if (!state.inCircle() || state.calledByLazyAttribute()) {
state.enterCircle();
boolean new_unassignedAfterFalse_Variable_value;
do {
_value.cycle = state.nextCycle();
new_unassignedAfterFalse_Variable_value = isTrue() || unassignedAfter(v);
if (((Boolean)_value.value) != new_unassignedAfterFalse_Variable_value) {
state.setChangeInCycle();
_value.value = new_unassignedAfterFalse_Variable_value;
}
} while (state.testAndClearChangeInCycle());
unassignedAfterFalse_Variable_values.put(_parameters, new_unassignedAfterFalse_Variable_value);
state.leaveCircle();
return new_unassignedAfterFalse_Variable_value;
} else if (_value.cycle != state.cycle()) {
_value.cycle = state.cycle();
boolean new_unassignedAfterFalse_Variable_value = isTrue() || unassignedAfter(v);
if (((Boolean)_value.value) != new_unassignedAfterFalse_Variable_value) {
state.setChangeInCycle();
_value.value = new_unassignedAfterFalse_Variable_value;
}
return new_unassignedAfterFalse_Variable_value;
} else {
return (Boolean) _value.value;
}
}
/** @apilevel internal */
private void unassignedAfterTrue_Variable_reset() {
unassignedAfterTrue_Variable_values = null;
}
protected java.util.Map unassignedAfterTrue_Variable_values;
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN, isCircular=true)
@ASTNodeAnnotation.Source(aspect="DefiniteUnassignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:905")
public boolean unassignedAfterTrue(Variable v) {
Object _parameters = v;
if (unassignedAfterTrue_Variable_values == null) unassignedAfterTrue_Variable_values = new java.util.HashMap(4);
ASTState.CircularValue _value;
if (unassignedAfterTrue_Variable_values.containsKey(_parameters)) {
Object _cache = unassignedAfterTrue_Variable_values.get(_parameters);
if (!(_cache instanceof ASTState.CircularValue)) {
return (Boolean) _cache;
} else {
_value = (ASTState.CircularValue) _cache;
}
} else {
_value = new ASTState.CircularValue();
unassignedAfterTrue_Variable_values.put(_parameters, _value);
_value.value = true;
}
ASTState state = state();
if (!state.inCircle() || state.calledByLazyAttribute()) {
state.enterCircle();
boolean new_unassignedAfterTrue_Variable_value;
do {
_value.cycle = state.nextCycle();
new_unassignedAfterTrue_Variable_value = isFalse() || unassignedAfter(v);
if (((Boolean)_value.value) != new_unassignedAfterTrue_Variable_value) {
state.setChangeInCycle();
_value.value = new_unassignedAfterTrue_Variable_value;
}
} while (state.testAndClearChangeInCycle());
unassignedAfterTrue_Variable_values.put(_parameters, new_unassignedAfterTrue_Variable_value);
state.leaveCircle();
return new_unassignedAfterTrue_Variable_value;
} else if (_value.cycle != state.cycle()) {
_value.cycle = state.cycle();
boolean new_unassignedAfterTrue_Variable_value = isFalse() || unassignedAfter(v);
if (((Boolean)_value.value) != new_unassignedAfterTrue_Variable_value) {
state.setChangeInCycle();
_value.value = new_unassignedAfterTrue_Variable_value;
}
return new_unassignedAfterTrue_Variable_value;
} else {
return (Boolean) _value.value;
}
}
/** @apilevel internal */
private void unassignedAfter_Variable_reset() {
unassignedAfter_Variable_values = null;
}
protected java.util.Map unassignedAfter_Variable_values;
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN, isCircular=true)
@ASTNodeAnnotation.Source(aspect="DefiniteUnassignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:899")
public boolean unassignedAfter(Variable v) {
Object _parameters = v;
if (unassignedAfter_Variable_values == null) unassignedAfter_Variable_values = new java.util.HashMap(4);
ASTState.CircularValue _value;
if (unassignedAfter_Variable_values.containsKey(_parameters)) {
Object _cache = unassignedAfter_Variable_values.get(_parameters);
if (!(_cache instanceof ASTState.CircularValue)) {
return (Boolean) _cache;
} else {
_value = (ASTState.CircularValue) _cache;
}
} else {
_value = new ASTState.CircularValue();
unassignedAfter_Variable_values.put(_parameters, _value);
_value.value = true;
}
ASTState state = state();
if (!state.inCircle() || state.calledByLazyAttribute()) {
state.enterCircle();
boolean new_unassignedAfter_Variable_value;
do {
_value.cycle = state.nextCycle();
new_unassignedAfter_Variable_value = unassignedBefore(v);
if (((Boolean)_value.value) != new_unassignedAfter_Variable_value) {
state.setChangeInCycle();
_value.value = new_unassignedAfter_Variable_value;
}
} while (state.testAndClearChangeInCycle());
unassignedAfter_Variable_values.put(_parameters, new_unassignedAfter_Variable_value);
state.leaveCircle();
return new_unassignedAfter_Variable_value;
} else if (_value.cycle != state.cycle()) {
_value.cycle = state.cycle();
boolean new_unassignedAfter_Variable_value = unassignedBefore(v);
if (((Boolean)_value.value) != new_unassignedAfter_Variable_value) {
state.setChangeInCycle();
_value.value = new_unassignedAfter_Variable_value;
}
return new_unassignedAfter_Variable_value;
} else {
return (Boolean) _value.value;
}
}
/**
* @attribute syn
* @aspect VariableScope
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupVariable.jrag:264
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="VariableScope", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupVariable.jrag:264")
public SimpleSet qualifiedLookupVariable(String name) {
{
if (type().accessibleFrom(hostType())) {
return keepAccessibleFields(type().memberFields(name));
}
return emptySet();
}
}
/**
* @attribute syn
* @aspect TypeHierarchyCheck
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeHierarchyCheck.jrag:47
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="TypeHierarchyCheck", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeHierarchyCheck.jrag:47")
public boolean isUnknown() {
boolean isUnknown_value = type().isUnknown();
return isUnknown_value;
}
/**
* @attribute syn
* @aspect TypeHierarchyCheck
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeHierarchyCheck.jrag:224
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="TypeHierarchyCheck", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeHierarchyCheck.jrag:224")
public boolean staticContextQualifier() {
boolean staticContextQualifier_value = false;
return staticContextQualifier_value;
}
/**
* @attribute syn
* @aspect Enums
* @declaredat /home/jesper/git/extendj/java5/frontend/Enums.jrag:649
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="Enums", declaredAt="/home/jesper/git/extendj/java5/frontend/Enums.jrag:649")
public boolean isEnumConstant() {
boolean isEnumConstant_value = false;
return isEnumConstant_value;
}
/**
* @attribute syn
* @aspect LookupParTypeDecl
* @declaredat /home/jesper/git/extendj/java5/frontend/Generics.jrag:1605
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="LookupParTypeDecl", declaredAt="/home/jesper/git/extendj/java5/frontend/Generics.jrag:1605")
public Expr erasedCopy() {
Expr erasedCopy_value = treeCopyNoTransform();
return erasedCopy_value;
}
/** @apilevel internal */
private void inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__reset() {
inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__computed = null;
inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__values = null;
}
/** @apilevel internal */
protected java.util.Map inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__values;
/** @apilevel internal */
protected java.util.Map inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__computed;
/**
* Infers type arguments for a generic method invocation.
* @attribute syn
* @aspect MethodSignature15
* @declaredat /home/jesper/git/extendj/java5/frontend/MethodSignature.jrag:452
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="MethodSignature15", declaredAt="/home/jesper/git/extendj/java5/frontend/MethodSignature.jrag:452")
public ArrayList inferTypeArguments(TypeDecl resultType, List params, List args, List typeParams) {
java.util.List _parameters = new java.util.ArrayList(4);
_parameters.add(resultType);
_parameters.add(params);
_parameters.add(args);
_parameters.add(typeParams);
if (inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__computed == null) inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__computed = new java.util.HashMap(4);
if (inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__values == null) inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__values = new java.util.HashMap(4);
ASTState state = state();
if (inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__values.containsKey(_parameters)
&& inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__computed.containsKey(_parameters)
&& (inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__computed.get(_parameters) == ASTState.NON_CYCLE || inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__computed.get(_parameters) == state().cycle())) {
return (ArrayList) inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__values.get(_parameters);
}
ArrayList inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__value = inferTypeArguments_compute(resultType, params, args, typeParams);
if (state().inCircle()) {
inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__values.put(_parameters, inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__value);
inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__computed.put(_parameters, state().cycle());
} else {
inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__values.put(_parameters, inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__value);
inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__computed.put(_parameters, ASTState.NON_CYCLE);
}
return inferTypeArguments_TypeDecl_List_ParameterDeclaration__List_Expr__List_TypeVariable__value;
}
/** @apilevel internal */
private ArrayList inferTypeArguments_compute(TypeDecl resultType, List params, List args, List typeParams) {
ArrayList typeArguments = new ArrayList();
Collection arguments = computeConstraints(
resultType,
params,
args,
typeParams);
if (arguments.isEmpty()) {
return typeArguments;
}
int i = 0;
for (TypeDecl type : arguments) {
if (type == null) {
TypeVariable v = typeParams.getChild(i);
type = v.firstBound();
} else if (type.isTypeVariable()) {
TypeVariable v = (TypeVariable) type;
// Replace the type variable if it is not defined in an outer scope.
// This is needed for handling constructor reference type inference (in Java 8).
// TODO(joqvist): is this needed also for Java 5?
if (enclosingBlock() != null) {
if (enclosingBlock().lookupType(v.name()) != v) {
type = v.firstBound();
}
} else {
if (enclosingMemberDecl().lookupType(v.name()) != v) {
type = v.firstBound();
}
}
}
typeArguments.add(type);
i += 1;
}
return typeArguments;
}
/**
* @attribute syn
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:299
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="CreateBCode", declaredAt="/home/jesper/git/extendj/java4/backend/CreateBCode.jrag:299")
public boolean needsPop() {
boolean needsPop_value = true;
return needsPop_value;
}
/**
* @attribute syn
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:312
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="CreateBCode", declaredAt="/home/jesper/git/extendj/java4/backend/CreateBCode.jrag:312")
public boolean isVarAccessWithAccessor() {
boolean isVarAccessWithAccessor_value = false;
return isVarAccessWithAccessor_value;
}
/**
* @attribute syn
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:1144
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="CreateBCode", declaredAt="/home/jesper/git/extendj/java4/backend/CreateBCode.jrag:1144")
public boolean canBeTrue() {
boolean canBeTrue_value = !isFalse();
return canBeTrue_value;
}
/**
* @attribute syn
* @aspect CreateBCode
* @declaredat /home/jesper/git/extendj/java4/backend/CreateBCode.jrag:1156
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="CreateBCode", declaredAt="/home/jesper/git/extendj/java4/backend/CreateBCode.jrag:1156")
public boolean canBeFalse() {
boolean canBeFalse_value = !isTrue();
return canBeFalse_value;
}
/**
* This finds the erased runtime type of an expression.
*
* The erased type of a field or method depends on the original
* declaration of the field or method (without generic type substitution).
* @attribute syn
* @aspect GenericsCodegen
* @declaredat /home/jesper/git/extendj/java5/backend/GenericsCodegen.jrag:144
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="GenericsCodegen", declaredAt="/home/jesper/git/extendj/java5/backend/GenericsCodegen.jrag:144")
public TypeDecl erasedType() {
TypeDecl erasedType_value = type();
return erasedType_value;
}
/**
* Finds the host type declaration of a class access.
* Call this attribute only on expressions that return true for
* isClassAccess or it may throw an error!
* @return The TypeDecl corresponding to the accesssed class
* @attribute syn
* @aspect AnnotationsCodegen
* @declaredat /home/jesper/git/extendj/java5/backend/AnnotationsCodegen.jrag:257
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.SYN)
@ASTNodeAnnotation.Source(aspect="AnnotationsCodegen", declaredAt="/home/jesper/git/extendj/java5/backend/AnnotationsCodegen.jrag:257")
public TypeDecl classAccess() {
{
throw new Error("Class access can only be computed for class access expressions");
}
}
/**
* @attribute inh
* @aspect QualifiedNames
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:86
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="QualifiedNames", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:86")
public boolean isLeftChildOfDot() {
boolean isLeftChildOfDot_value = getParent().Define_isLeftChildOfDot(this, null);
return isLeftChildOfDot_value;
}
/**
* @attribute inh
* @aspect QualifiedNames
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:101
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="QualifiedNames", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:101")
public boolean isRightChildOfDot() {
boolean isRightChildOfDot_value = getParent().Define_isRightChildOfDot(this, null);
return isRightChildOfDot_value;
}
/**
* @attribute inh
* @aspect QualifiedNames
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:118
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="QualifiedNames", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:118")
public Expr prevExpr() {
Expr prevExpr_value = getParent().Define_prevExpr(this, null);
return prevExpr_value;
}
/**
* @attribute inh
* @aspect QualifiedNames
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:142
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="QualifiedNames", declaredAt="/home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:142")
public Access nextAccess() {
Access nextAccess_value = getParent().Define_nextAccess(this, null);
return nextAccess_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:74
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:74")
public TypeDecl typeBoolean() {
TypeDecl typeBoolean_value = getParent().Define_typeBoolean(this, null);
return typeBoolean_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:75
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:75")
public TypeDecl typeByte() {
TypeDecl typeByte_value = getParent().Define_typeByte(this, null);
return typeByte_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:76
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:76")
public TypeDecl typeShort() {
TypeDecl typeShort_value = getParent().Define_typeShort(this, null);
return typeShort_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:77
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:77")
public TypeDecl typeChar() {
TypeDecl typeChar_value = getParent().Define_typeChar(this, null);
return typeChar_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:78
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:78")
public TypeDecl typeInt() {
TypeDecl typeInt_value = getParent().Define_typeInt(this, null);
return typeInt_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:79
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:79")
public TypeDecl typeLong() {
TypeDecl typeLong_value = getParent().Define_typeLong(this, null);
return typeLong_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:80
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:80")
public TypeDecl typeFloat() {
TypeDecl typeFloat_value = getParent().Define_typeFloat(this, null);
return typeFloat_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:81
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:81")
public TypeDecl typeDouble() {
TypeDecl typeDouble_value = getParent().Define_typeDouble(this, null);
return typeDouble_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:82
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:82")
public TypeDecl typeString() {
TypeDecl typeString_value = getParent().Define_typeString(this, null);
return typeString_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:83
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:83")
public TypeDecl typeVoid() {
TypeDecl typeVoid_value = getParent().Define_typeVoid(this, null);
return typeVoid_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:84
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:84")
public TypeDecl typeNull() {
TypeDecl typeNull_value = getParent().Define_typeNull(this, null);
return typeNull_value;
}
/**
* @attribute inh
* @aspect SpecialClasses
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:97
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SpecialClasses", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:97")
public TypeDecl unknownType() {
TypeDecl unknownType_value = getParent().Define_unknownType(this, null);
return unknownType_value;
}
/**
* @attribute inh
* @aspect LookupFullyQualifiedTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:109
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="LookupFullyQualifiedTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:109")
public boolean hasPackage(String packageName) {
boolean hasPackage_String_value = getParent().Define_hasPackage(this, null, packageName);
return hasPackage_String_value;
}
/**
* @attribute inh
* @aspect LookupFullyQualifiedTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:123
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="LookupFullyQualifiedTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:123")
public TypeDecl lookupType(String packageName, String typeName) {
TypeDecl lookupType_String_String_value = getParent().Define_lookupType(this, null, packageName, typeName);
return lookupType_String_String_value;
}
/**
* @attribute inh
* @aspect TypeScopePropagation
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:397
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="TypeScopePropagation", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupType.jrag:397")
public SimpleSet lookupType(String name) {
SimpleSet lookupType_String_value = getParent().Define_lookupType(this, null, name);
return lookupType_String_value;
}
/**
* @return the directly enclosing member declaration, or {@code null} if there is none.
* @attribute inh
* @aspect NameCheck
* @declaredat /home/jesper/git/extendj/java4/frontend/NameCheck.jrag:376
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="NameCheck", declaredAt="/home/jesper/git/extendj/java4/frontend/NameCheck.jrag:376")
public BodyDecl enclosingMemberDecl() {
BodyDecl enclosingMemberDecl_value = getParent().Define_enclosingMemberDecl(this, null);
return enclosingMemberDecl_value;
}
/**
* @attribute inh
* @aspect NestedTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:571
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="NestedTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:571")
public BodyDecl enclosingBodyDecl() {
BodyDecl enclosingBodyDecl_value = getParent().Define_enclosingBodyDecl(this, null);
return enclosingBodyDecl_value;
}
/**
* @attribute inh
* @aspect NestedTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:640
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="NestedTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:640")
public String hostPackage() {
String hostPackage_value = getParent().Define_hostPackage(this, null);
return hostPackage_value;
}
/**
* @attribute inh
* @aspect NestedTypes
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:657
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="NestedTypes", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:657")
public TypeDecl hostType() {
TypeDecl hostType_value = getParent().Define_hostType(this, null);
return hostType_value;
}
/**
* @attribute inh
* @aspect SyntacticClassification
* @declaredat /home/jesper/git/extendj/java4/frontend/SyntacticClassification.jrag:36
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="SyntacticClassification", declaredAt="/home/jesper/git/extendj/java4/frontend/SyntacticClassification.jrag:36")
public NameType nameType() {
NameType nameType_value = getParent().Define_nameType(this, null);
return nameType_value;
}
/**
* Find all visible methods with the given name in the local
* scope or a qualified scope.
* @attribute inh
* @aspect LookupMethod
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupMethod.jrag:111
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="LookupMethod", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupMethod.jrag:111")
public Collection lookupMethod(String name) {
Collection lookupMethod_String_value = getParent().Define_lookupMethod(this, null, name);
return lookupMethod_String_value;
}
/**
* @attribute inh
* @aspect DefiniteAssignment
* @declaredat /home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:34
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="DefiniteAssignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:34")
public boolean isDest() {
boolean isDest_value = getParent().Define_isDest(this, null);
return isDest_value;
}
/**
* @attribute inh
* @aspect DefiniteAssignment
* @declaredat /home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:44
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="DefiniteAssignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:44")
public boolean isSource() {
boolean isSource_value = getParent().Define_isSource(this, null);
return isSource_value;
}
/**
* @attribute inh
* @aspect DefiniteAssignment
* @declaredat /home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:66
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="DefiniteAssignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:66")
public boolean isIncOrDec() {
boolean isIncOrDec_value = getParent().Define_isIncOrDec(this, null);
return isIncOrDec_value;
}
/**
* @attribute inh
* @aspect DefiniteAssignment
* @declaredat /home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:266
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="DefiniteAssignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:266")
public boolean assignedBefore(Variable v) {
boolean assignedBefore_Variable_value = getParent().Define_assignedBefore(this, null, v);
return assignedBefore_Variable_value;
}
/**
* @attribute inh
* @aspect DefiniteUnassignment
* @declaredat /home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:897
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="DefiniteUnassignment", declaredAt="/home/jesper/git/extendj/java4/frontend/DefiniteAssignment.jrag:897")
public boolean unassignedBefore(Variable v) {
boolean unassignedBefore_Variable_value = getParent().Define_unassignedBefore(this, null, v);
return unassignedBefore_Variable_value;
}
/**
* @attribute inh
* @aspect VariableScope
* @declaredat /home/jesper/git/extendj/java4/frontend/LookupVariable.jrag:43
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="VariableScope", declaredAt="/home/jesper/git/extendj/java4/frontend/LookupVariable.jrag:43")
public SimpleSet lookupVariable(String name) {
SimpleSet lookupVariable_String_value = getParent().Define_lookupVariable(this, null, name);
return lookupVariable_String_value;
}
/**
* @attribute inh
* @aspect TypeHierarchyCheck
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeHierarchyCheck.jrag:33
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="TypeHierarchyCheck", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeHierarchyCheck.jrag:33")
public String methodHost() {
String methodHost_value = getParent().Define_methodHost(this, null);
return methodHost_value;
}
/**
* @attribute inh
* @aspect TypeHierarchyCheck
* @declaredat /home/jesper/git/extendj/java4/frontend/TypeHierarchyCheck.jrag:207
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="TypeHierarchyCheck", declaredAt="/home/jesper/git/extendj/java4/frontend/TypeHierarchyCheck.jrag:207")
public boolean inStaticContext() {
boolean inStaticContext_value = getParent().Define_inStaticContext(this, null);
return inStaticContext_value;
}
/**
* @attribute inh
* @aspect GenericsTypeAnalysis
* @declaredat /home/jesper/git/extendj/java5/frontend/Generics.jrag:383
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="GenericsTypeAnalysis", declaredAt="/home/jesper/git/extendj/java5/frontend/Generics.jrag:383")
public boolean inExtendsOrImplements() {
boolean inExtendsOrImplements_value = getParent().Define_inExtendsOrImplements(this, null);
return inExtendsOrImplements_value;
}
/**
* The assign converted type is used in type inference to get the
* target type of an inferred method invocation.
* @attribute inh
* @aspect GenericMethodsInference
* @declaredat /home/jesper/git/extendj/java5/frontend/GenericMethodsInference.jrag:69
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="GenericMethodsInference", declaredAt="/home/jesper/git/extendj/java5/frontend/GenericMethodsInference.jrag:69")
public TypeDecl assignConvertedType() {
TypeDecl assignConvertedType_value = getParent().Define_assignConvertedType(this, null);
return assignConvertedType_value;
}
/**
* @attribute inh
* @aspect GenericMethodsInference
* @declaredat /home/jesper/git/extendj/java5/frontend/GenericMethodsInference.jrag:86
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="GenericMethodsInference", declaredAt="/home/jesper/git/extendj/java5/frontend/GenericMethodsInference.jrag:86")
public TypeDecl typeObject() {
TypeDecl typeObject_value = getParent().Define_typeObject(this, null);
return typeObject_value;
}
/**
* @return the directly enclosing block of this statement.
* @attribute inh
* @aspect MethodSignature15
* @declaredat /home/jesper/git/extendj/java5/frontend/MethodSignature.jrag:426
*/
@ASTNodeAnnotation.Attribute(kind=ASTNodeAnnotation.Kind.INH)
@ASTNodeAnnotation.Source(aspect="MethodSignature15", declaredAt="/home/jesper/git/extendj/java5/frontend/MethodSignature.jrag:426")
public Block enclosingBlock() {
Block enclosingBlock_value = getParent().Define_enclosingBlock(this, null);
return enclosingBlock_value;
}
/**
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:86
* @apilevel internal
*/
public boolean Define_isLeftChildOfDot(ASTNode _callerNode, ASTNode _childNode) {
int childIndex = this.getIndexOfChild(_callerNode);
return false;
}
/**
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:86
* @apilevel internal
* @return {@code true} if this node has an equation for the inherited attribute isLeftChildOfDot
*/
protected boolean canDefine_isLeftChildOfDot(ASTNode _callerNode, ASTNode _childNode) {
return true;
}
/**
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:101
* @apilevel internal
*/
public boolean Define_isRightChildOfDot(ASTNode _callerNode, ASTNode _childNode) {
int childIndex = this.getIndexOfChild(_callerNode);
return false;
}
/**
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:101
* @apilevel internal
* @return {@code true} if this node has an equation for the inherited attribute isRightChildOfDot
*/
protected boolean canDefine_isRightChildOfDot(ASTNode _callerNode, ASTNode _childNode) {
return true;
}
/**
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:118
* @apilevel internal
*/
public Expr Define_prevExpr(ASTNode _callerNode, ASTNode _childNode) {
int childIndex = this.getIndexOfChild(_callerNode);
return prevExprError();
}
/**
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:118
* @apilevel internal
* @return {@code true} if this node has an equation for the inherited attribute prevExpr
*/
protected boolean canDefine_prevExpr(ASTNode _callerNode, ASTNode _childNode) {
return true;
}
/**
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:142
* @apilevel internal
*/
public Access Define_nextAccess(ASTNode _callerNode, ASTNode _childNode) {
int childIndex = this.getIndexOfChild(_callerNode);
return nextAccessError();
}
/**
* @declaredat /home/jesper/git/extendj/java4/frontend/ResolveAmbiguousNames.jrag:142
* @apilevel internal
* @return {@code true} if this node has an equation for the inherited attribute nextAccess
*/
protected boolean canDefine_nextAccess(ASTNode _callerNode, ASTNode _childNode) {
return true;
}
/** @apilevel internal */
public ASTNode rewriteTo() {
return super.rewriteTo();
}
/** @apilevel internal */
public boolean canRewrite() {
return false;
}
}