001 /* This file was generated with JastAdd2 (http://jastadd.org) version 2.1.13-12-g880e696 */ 002 package org.extendj.ast; 003 004 import java.util.HashSet; 005 import java.io.File; 006 import java.util.Set; 007 import java.util.Collections; 008 import java.util.Collection; 009 import java.util.ArrayList; 010 import beaver.*; 011 import java.util.*; 012 import java.io.ByteArrayOutputStream; 013 import java.io.PrintStream; 014 import java.lang.reflect.InvocationTargetException; 015 import java.lang.reflect.Method; 016 import org.jastadd.util.*; 017 import java.util.zip.*; 018 import java.io.*; 019 import org.jastadd.util.PrettyPrintable; 020 import org.jastadd.util.PrettyPrinter; 021 import java.io.FileNotFoundException; 022 import java.io.BufferedInputStream; 023 import java.io.DataInputStream; 024 /** 025 * @ast node 026 * @declaredat /home/jesper/git/extendj/java4/grammar/Java.ast:97 027 * @production MemberInterfaceDecl : {@link MemberTypeDecl} ::= <span class="component">{@link InterfaceDecl}</span>; 028 029 */ 030 public class MemberInterfaceDecl extends MemberTypeDecl implements Cloneable { 031 /** 032 * @aspect Modifiers 033 * @declaredat /home/jesper/git/extendj/java4/frontend/Modifiers.jrag:225 034 */ 035 public void checkModifiers() { 036 super.checkModifiers(); 037 if (hostType().isInnerClass()) { 038 error("*** Inner classes may not declare member interfaces"); 039 } 040 } 041 /** 042 * @aspect Java4PrettyPrint 043 * @declaredat /home/jesper/git/extendj/java4/frontend/PrettyPrint.jadd:119 044 */ 045 public void prettyPrint(PrettyPrinter out) { 046 out.print(getInterfaceDecl()); 047 } 048 /** 049 * @declaredat ASTNode:1 050 */ 051 public MemberInterfaceDecl() { 052 super(); 053 } 054 /** 055 * Initializes the child array to the correct size. 056 * Initializes List and Opt nta children. 057 * @apilevel internal 058 * @ast method 059 * @declaredat ASTNode:10 060 */ 061 public void init$Children() { 062 children = new ASTNode[1]; 063 } 064 /** 065 * @declaredat ASTNode:13 066 */ 067 public MemberInterfaceDecl(InterfaceDecl p0) { 068 setChild(p0, 0); 069 } 070 /** 071 * @apilevel low-level 072 * @declaredat ASTNode:19 073 */ 074 protected int numChildren() { 075 return 1; 076 } 077 /** 078 * @apilevel internal 079 * @declaredat ASTNode:25 080 */ 081 public boolean mayHaveRewrite() { 082 return false; 083 } 084 /** 085 * @apilevel internal 086 * @declaredat ASTNode:31 087 */ 088 public void flushAttrCache() { 089 super.flushAttrCache(); 090 } 091 /** 092 * @apilevel internal 093 * @declaredat ASTNode:37 094 */ 095 public void flushCollectionCache() { 096 super.flushCollectionCache(); 097 } 098 /** 099 * @apilevel internal 100 * @declaredat ASTNode:43 101 */ 102 public void flushRewriteCache() { 103 super.flushRewriteCache(); 104 } 105 /** 106 * @apilevel internal 107 * @declaredat ASTNode:49 108 */ 109 public MemberInterfaceDecl clone() throws CloneNotSupportedException { 110 MemberInterfaceDecl node = (MemberInterfaceDecl) super.clone(); 111 return node; 112 } 113 /** 114 * @apilevel internal 115 * @declaredat ASTNode:56 116 */ 117 public MemberInterfaceDecl copy() { 118 try { 119 MemberInterfaceDecl node = (MemberInterfaceDecl) clone(); 120 node.parent = null; 121 if (children != null) { 122 node.children = (ASTNode[]) children.clone(); 123 } 124 return node; 125 } catch (CloneNotSupportedException e) { 126 throw new Error("Error: clone not supported for " + getClass().getName()); 127 } 128 } 129 /** 130 * Create a deep copy of the AST subtree at this node. 131 * The copy is dangling, i.e. has no parent. 132 * @return dangling copy of the subtree at this node 133 * @apilevel low-level 134 * @deprecated Please use treeCopy or treeCopyNoTransform instead 135 * @declaredat ASTNode:75 136 */ 137 @Deprecated 138 public MemberInterfaceDecl fullCopy() { 139 return treeCopyNoTransform(); 140 } 141 /** 142 * Create a deep copy of the AST subtree at this node. 143 * The copy is dangling, i.e. has no parent. 144 * @return dangling copy of the subtree at this node 145 * @apilevel low-level 146 * @declaredat ASTNode:85 147 */ 148 public MemberInterfaceDecl treeCopyNoTransform() { 149 MemberInterfaceDecl tree = (MemberInterfaceDecl) copy(); 150 if (children != null) { 151 for (int i = 0; i < children.length; ++i) { 152 ASTNode child = (ASTNode) children[i]; 153 if (child != null) { 154 child = child.treeCopyNoTransform(); 155 tree.setChild(child, i); 156 } 157 } 158 } 159 return tree; 160 } 161 /** 162 * Create a deep copy of the AST subtree at this node. 163 * The subtree of this node is traversed to trigger rewrites before copy. 164 * The copy is dangling, i.e. has no parent. 165 * @return dangling copy of the subtree at this node 166 * @apilevel low-level 167 * @declaredat ASTNode:105 168 */ 169 public MemberInterfaceDecl treeCopy() { 170 doFullTraversal(); 171 return treeCopyNoTransform(); 172 } 173 /** 174 * @apilevel internal 175 * @declaredat ASTNode:112 176 */ 177 protected boolean is$Equal(ASTNode node) { 178 return super.is$Equal(node); 179 } 180 /** 181 * Replaces the InterfaceDecl child. 182 * @param node The new node to replace the InterfaceDecl child. 183 * @apilevel high-level 184 */ 185 public void setInterfaceDecl(InterfaceDecl node) { 186 setChild(node, 0); 187 } 188 /** 189 * Retrieves the InterfaceDecl child. 190 * @return The current node used as the InterfaceDecl child. 191 * @apilevel high-level 192 */ 193 @ASTNodeAnnotation.Child(name="InterfaceDecl") 194 public InterfaceDecl getInterfaceDecl() { 195 return (InterfaceDecl) getChild(0); 196 } 197 /** 198 * Retrieves the InterfaceDecl child. 199 * <p><em>This method does not invoke AST transformations.</em></p> 200 * @return The current node used as the InterfaceDecl child. 201 * @apilevel low-level 202 */ 203 public InterfaceDecl getInterfaceDeclNoTransform() { 204 return (InterfaceDecl) getChildNoTransform(0); 205 } 206 /** 207 * @attribute syn 208 * @aspect TypeScopePropagation 209 * @declaredat /home/jesper/git/extendj/java4/frontend/LookupType.jrag:604 210 */ 211 @ASTNodeAnnotation.Attribute 212 public TypeDecl typeDecl() { 213 TypeDecl typeDecl_value = getInterfaceDecl(); 214 215 return typeDecl_value; 216 } 217 /** 218 * @attribute syn 219 * @aspect PreciseRethrow 220 * @declaredat /home/jesper/git/extendj/java8/frontend/EffectivelyFinal.jrag:40 221 */ 222 @ASTNodeAnnotation.Attribute 223 public boolean modifiedInScope(Variable var) { 224 boolean modifiedInScope_Variable_value = getInterfaceDecl().modifiedInScope(var); 225 226 return modifiedInScope_Variable_value; 227 } 228 /** 229 * @declaredat /home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:577 230 * @apilevel internal 231 */ 232 public boolean Define_isMemberType(ASTNode caller, ASTNode child) { 233 if (caller == getInterfaceDeclNoTransform()) { 234 // @declaredat /home/jesper/git/extendj/java4/frontend/TypeAnalysis.jrag:579 235 return true; 236 } 237 else { 238 return getParent().Define_isMemberType(this, caller); 239 } 240 } 241 protected boolean canDefine_isMemberType(ASTNode caller, ASTNode child) { 242 return true; 243 } 244 /** 245 * @apilevel internal 246 */ 247 public ASTNode rewriteTo() { 248 return super.rewriteTo(); 249 } 250 }