//generated by abstract-syntax-gen package de.peeeq.wurstscript.ast; import java.util.*; @SuppressWarnings({"cast", "unused", "rawtypes"}) class WStatementsImpl extends WStatements { private Element parent; public Element getParent() { return parent; } public void setParent(Element parent) { if (parent != null && this.parent != null) { throw new Error("Cannot change parent of element " + this.getClass().getSimpleName() + ", as it is already used in another tree." + "Use the copy method to create a new tree or remove the tree from its old parent or set the parent to null before moving the tree. "); } this.parent = parent; } public void replaceBy(Element other) { if (parent == null) throw new RuntimeException("Node not attached to tree."); for (int i=0; i) this).set(i, (WStatement) newElement); } @Override public T match(HasReadVariables.Matcher matcher) { return matcher.case_WStatements(this); } @Override public void match(HasReadVariables.MatcherVoid matcher) { matcher.case_WStatements(this); } @Override public T match(WScope.Matcher matcher) { return matcher.case_WStatements(this); } @Override public void match(WScope.MatcherVoid matcher) { matcher.case_WStatements(this); } @Override public T match(Element.Matcher matcher) { return matcher.case_WStatements(this); } @Override public void match(Element.MatcherVoid matcher) { matcher.case_WStatements(this); } @Override public T match(ExprOrStatements.Matcher matcher) { return matcher.case_WStatements(this); } @Override public void match(ExprOrStatements.MatcherVoid matcher) { matcher.case_WStatements(this); } @Override public void accept(Visitor v) { v.visit(this); } @Override public void clearAttributes() { for (WStatement child : this) { child.clearAttributes(); } clearAttributesLocal(); } @Override public void clearAttributesLocal() { zzattr_attrReadVariables_state = 0; zzattr_attrNextScope_state = 0; zzattr_attrNameLinks_state = 0; zzattr_attrTypeNameLinks_state = 0; zzattr_attrUsedGlobalVariables_state = 0; zzattr_attrReadGlobalVariables_state = 0; } // circular = null private int zzattr_attrReadVariables_state = 0; private de.peeeq.immutablecollections.ImmutableList zzattr_attrReadVariables_cache; /** */ public de.peeeq.immutablecollections.ImmutableList attrReadVariables() { if (zzattr_attrReadVariables_state == 0) { try { zzattr_attrReadVariables_state = 1; zzattr_attrReadVariables_cache = de.peeeq.wurstscript.attributes.ReadVariables.calculate((WStatements)this); } finally { zzattr_attrReadVariables_state = 0; } zzattr_attrReadVariables_state = 2; } else if (zzattr_attrReadVariables_state == 1) { throw new CyclicDependencyError(this, "attrReadVariables"); } return zzattr_attrReadVariables_cache; } /** */ public boolean attrIsDynamicContext() { return de.peeeq.wurstscript.attributes.IsDynamicContext.calculate((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable PackageOrGlobal attrNearestPackage() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestPackage((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable NamedScope attrNearestNamedScope() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestNamedScope((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable WScope attrNearestScope() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestScope((WStatements)this); } // circular = null private int zzattr_attrNextScope_state = 0; private @org.eclipse.jdt.annotation.Nullable WScope zzattr_attrNextScope_cache; /** "returns the scope surrounding this scope"*/ public @org.eclipse.jdt.annotation.Nullable WScope attrNextScope() { if (zzattr_attrNextScope_state == 0) { try { zzattr_attrNextScope_state = 1; zzattr_attrNextScope_cache = de.peeeq.wurstscript.attributes.AttrNearest.nextScope((WStatements)this); } finally { zzattr_attrNextScope_state = 0; } zzattr_attrNextScope_state = 2; } else if (zzattr_attrNextScope_state == 1) { throw new CyclicDependencyError(this, "attrNextScope"); } return zzattr_attrNextScope_cache; } /** */ public String attrPathDescription() { return de.peeeq.wurstscript.attributes.PathDescription.get((WStatements)this); } /** */ public CompilationUnit attrCompilationUnit() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestCompilationUnit((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable ClassDef attrNearestClassDef() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestClassDef((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable ClassOrInterface attrNearestClassOrInterface() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestClassOrInterface((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable ClassOrModule attrNearestClassOrModule() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestClassOrModule((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable StructureDef attrNearestStructureDef() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestStructureDef((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable FunctionImplementation attrNearestFuncDef() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestFuncDef((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable ExprClosure attrNearestExprClosure() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestExprClosure((WStatements)this); } /** */ public @org.eclipse.jdt.annotation.Nullable ExprStatementsBlock attrNearestExprStatementsBlock() { return de.peeeq.wurstscript.attributes.AttrNearest.nearestExprStatementsBlock((WStatements)this); } /** "returns the element itself if it is a NameDef or returns the referenced NameDef if the elem is a reference or returns null otherwise "*/ public @org.eclipse.jdt.annotation.Nullable NameDef tryGetNameDef() { return de.peeeq.wurstscript.attributes.AttrNameDef.tryGetNameDef((WStatements)this); } /** */ public de.peeeq.wurstscript.parser.WPos attrSource() { return de.peeeq.wurstscript.attributes.AttrPos.getPos((WStatements)this); } /** "returns the position where errors are marked"*/ public de.peeeq.wurstscript.parser.WPos attrErrorPos() { return de.peeeq.wurstscript.attributes.AttrPos.getErrorPos((WStatements)this); } /** */ public WurstModel getModel() { return de.peeeq.wurstscript.attributes.AttrImportedPackage.getModel((WStatements)this); } /** */ public void addError(String msg) { de.peeeq.wurstscript.attributes.ErrorHandling.addError((WStatements)this, msg); } /** */ public void addWarning(String msg) { de.peeeq.wurstscript.attributes.ErrorHandling.addWarning((WStatements)this, msg); } /** */ public de.peeeq.wurstscript.attributes.ErrorHandler getErrorHandler() { return de.peeeq.wurstscript.attributes.ErrorHandling.getErrorHandler((WStatements)this); } // circular = null private int zzattr_attrNameLinks_state = 0; private com.google.common.collect.ImmutableMultimap zzattr_attrNameLinks_cache; /** "returns a map of all the names visible in this scope."*/ public com.google.common.collect.ImmutableMultimap attrNameLinks() { if (zzattr_attrNameLinks_state == 0) { try { zzattr_attrNameLinks_state = 1; zzattr_attrNameLinks_cache = de.peeeq.wurstscript.attributes.names.NameLinks.calculate((WStatements)this); } finally { zzattr_attrNameLinks_state = 0; } zzattr_attrNameLinks_state = 2; } else if (zzattr_attrNameLinks_state == 1) { throw new CyclicDependencyError(this, "attrNameLinks"); } return zzattr_attrNameLinks_cache; } // circular = null private int zzattr_attrTypeNameLinks_state = 0; private com.google.common.collect.ImmutableMultimap zzattr_attrTypeNameLinks_cache; /** "returns a map of all the names visible in this scope."*/ public com.google.common.collect.ImmutableMultimap attrTypeNameLinks() { if (zzattr_attrTypeNameLinks_state == 0) { try { zzattr_attrTypeNameLinks_state = 1; zzattr_attrTypeNameLinks_cache = de.peeeq.wurstscript.attributes.names.TypeNameLinks.calculate((WStatements)this); } finally { zzattr_attrTypeNameLinks_state = 0; } zzattr_attrTypeNameLinks_state = 2; } else if (zzattr_attrTypeNameLinks_state == 1) { throw new CyclicDependencyError(this, "attrTypeNameLinks"); } return zzattr_attrTypeNameLinks_cache; } /** */ public @org.eclipse.jdt.annotation.Nullable TypeDef lookupType(String name, boolean showErrors) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupType((WStatements)this, name, showErrors); } /** */ public de.peeeq.wurstscript.attributes.names.PackageLink lookupPackage(String name, boolean showErrors) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupPackage((WStatements)this, name, showErrors); } /** */ public de.peeeq.wurstscript.attributes.names.NameLink lookupVar(String name, boolean showErrors) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupVar((WStatements)this, name, showErrors); } /** */ public de.peeeq.wurstscript.attributes.names.NameLink lookupVarNoConfig(String name, boolean showErrors) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupVarNoConfig((WStatements)this, name, showErrors); } /** */ public de.peeeq.wurstscript.attributes.names.NameLink lookupMemberVar(de.peeeq.wurstscript.types.WurstType receiverType, String name, boolean showErrors) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupMemberVar((WStatements)this, receiverType, name, showErrors); } /** */ public com.google.common.collect.ImmutableCollection lookupFuncs(String name, boolean showErrors) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupFuncs((WStatements)this, name, showErrors); } /** */ public com.google.common.collect.ImmutableCollection lookupFuncsNoConfig(String name, boolean showErrors) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupFuncsNoConfig((WStatements)this, name, showErrors); } /** */ public com.google.common.collect.ImmutableCollection lookupMemberFuncs(de.peeeq.wurstscript.types.WurstType receiverType, String name, boolean showErrors) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupMemberFuncs((WStatements)this, receiverType, name, showErrors); } /** */ public @org.eclipse.jdt.annotation.Nullable TypeDef lookupType(String name) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupTypeShort((WStatements)this, name); } /** */ public de.peeeq.wurstscript.attributes.names.PackageLink lookupPackage(String name) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupPackageShort((WStatements)this, name); } /** */ public de.peeeq.wurstscript.attributes.names.NameLink lookupVar(String name) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupVarShort((WStatements)this, name); } /** */ public de.peeeq.wurstscript.attributes.names.NameLink lookupMemberVar(de.peeeq.wurstscript.types.WurstType receiverType, String name) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupMemberVarShort((WStatements)this, receiverType, name); } /** */ public com.google.common.collect.ImmutableCollection lookupFuncs(String name) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupFuncsShort((WStatements)this, name); } /** */ public com.google.common.collect.ImmutableCollection lookupMemberFuncs(de.peeeq.wurstscript.types.WurstType receiverType, String name) { return de.peeeq.wurstscript.attributes.names.NameResolution.lookupMemberFuncsShort((WStatements)this, receiverType, name); } // circular = de.peeeq.wurstscript.utils.Utils.emptyList private int zzattr_attrUsedGlobalVariables_state = 0; private com.google.common.collect.ImmutableList zzattr_attrUsedGlobalVariables_cache; /** */ public com.google.common.collect.ImmutableList attrUsedGlobalVariables() { if (zzattr_attrUsedGlobalVariables_state == 0) { zzattr_attrUsedGlobalVariables_state = 1; zzattr_attrUsedGlobalVariables_cache = de.peeeq.wurstscript.utils.Utils.emptyList(); while (true) { com.google.common.collect.ImmutableList r = de.peeeq.wurstscript.attributes.UsedGlobalVariables.getUsedGlobals((WStatements)this); if (zzattr_attrUsedGlobalVariables_state == 3) { if (!zzattr_attrUsedGlobalVariables_cache.equals(r)) { zzattr_attrUsedGlobalVariables_cache = r; continue; } } zzattr_attrUsedGlobalVariables_cache = r; break; } zzattr_attrUsedGlobalVariables_state = 2; } else if (zzattr_attrUsedGlobalVariables_state == 1) { zzattr_attrUsedGlobalVariables_state = 3; } return zzattr_attrUsedGlobalVariables_cache; } // circular = de.peeeq.wurstscript.utils.Utils.emptyList private int zzattr_attrReadGlobalVariables_state = 0; private com.google.common.collect.ImmutableList zzattr_attrReadGlobalVariables_cache; /** */ public com.google.common.collect.ImmutableList attrReadGlobalVariables() { if (zzattr_attrReadGlobalVariables_state == 0) { zzattr_attrReadGlobalVariables_state = 1; zzattr_attrReadGlobalVariables_cache = de.peeeq.wurstscript.utils.Utils.emptyList(); while (true) { com.google.common.collect.ImmutableList r = de.peeeq.wurstscript.attributes.UsedGlobalVariables.getReadGlobals((WStatements)this); if (zzattr_attrReadGlobalVariables_state == 3) { if (!zzattr_attrReadGlobalVariables_cache.equals(r)) { zzattr_attrReadGlobalVariables_cache = r; continue; } } zzattr_attrReadGlobalVariables_cache = r; break; } zzattr_attrReadGlobalVariables_state = 2; } else if (zzattr_attrReadGlobalVariables_state == 1) { zzattr_attrReadGlobalVariables_state = 3; } return zzattr_attrReadGlobalVariables_cache; } /** */ public com.google.common.collect.ImmutableCollection attrUsedPackages() { return de.peeeq.wurstscript.attributes.UsedPackages.usedPackages((WStatements)this); } /** */ public String description() { return de.peeeq.wurstscript.attributes.Description.description((WStatements)this); } /** */ public String descriptionHtml() { return de.peeeq.wurstscript.attributes.DescriptionHtml.description((WStatements)this); } /** */ public boolean isSubtreeOf(Element other) { return de.peeeq.wurstscript.attributes.SmallHelpers.isSubtreeOf((WStatements)this, other); } /** */ public void prettyPrint(de.peeeq.wurstscript.attributes.prettyPrint.Spacer spacer, StringBuilder sb, int indent) { de.peeeq.wurstscript.attributes.prettyPrint.PrettyPrinter.prettyPrint((WStatements)this, spacer, sb, indent); } @Override public String toString() { StringBuilder result = new StringBuilder("WStatements("); boolean first = true; for (WStatement i : this ) { if (!first) { result.append(", "); } if (result.length() > 1000) { result.append("..."); break; } result.append(i); first = false; } result.append(")"); return result.toString(); } }