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 Case : {@link Stmt}; 015 * @ast node 016 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/java.ast:203 017 */ 018 public abstract class Case extends Stmt implements Cloneable { 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 Case clone() throws CloneNotSupportedException { 034 Case node = (Case)super.clone(); 035 node.isDAbefore_Variable_values = null; 036 node.isDAafter_Variable_values = null; 037 node.isDUafter_Variable_values = null; 038 node.label_CodeGeneration_values = null; 039 node.bind_Case_values = null; 040 node.in$Circle(false); 041 node.is$Final(false); 042 return node; 043 } 044 /** 045 * @ast method 046 * @aspect CreateBCode 047 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:1318 048 */ 049 public void createBCode(CodeGeneration gen) { 050 gen.addLabel(label(gen)); 051 } 052 /** 053 * @ast method 054 * 055 */ 056 public Case() { 057 super(); 058 059 060 } 061 /** 062 * Initializes the child array to the correct size. 063 * Initializes List and Opt nta children. 064 * @apilevel internal 065 * @ast method 066 * @ast method 067 * 068 */ 069 public void init$Children() { 070 } 071 /** 072 * @apilevel low-level 073 * @ast method 074 * 075 */ 076 protected int numChildren() { 077 return 0; 078 } 079 /** 080 * @apilevel internal 081 * @ast method 082 * 083 */ 084 public boolean mayHaveRewrite() { 085 return false; 086 } 087 /** 088 * @attribute syn 089 * @aspect NameCheck 090 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:431 091 */ 092 @SuppressWarnings({"unchecked", "cast"}) 093 public abstract boolean constValue(Case c); 094 protected java.util.Map isDAbefore_Variable_values; 095 /** 096 * @attribute syn 097 * @aspect DA 098 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:570 099 */ 100 @SuppressWarnings({"unchecked", "cast"}) 101 public boolean isDAbefore(Variable v) { 102 Object _parameters = v; 103 if(isDAbefore_Variable_values == null) isDAbefore_Variable_values = new java.util.HashMap(4); 104 if(isDAbefore_Variable_values.containsKey(_parameters)) { 105 return ((Boolean)isDAbefore_Variable_values.get(_parameters)).booleanValue(); 106 } 107 ASTNode$State state = state(); 108 int num = state.boundariesCrossed; 109 boolean isFinal = this.is$Final(); 110 boolean isDAbefore_Variable_value = isDAbefore_compute(v); 111 if(isFinal && num == state().boundariesCrossed){ isDAbefore_Variable_values.put(_parameters, Boolean.valueOf(isDAbefore_Variable_value)); } 112 return isDAbefore_Variable_value; 113 } 114 /** 115 * @apilevel internal 116 */ 117 private boolean isDAbefore_compute(Variable v) { return getParent().getParent() instanceof Block && ((Block)getParent().getParent()).isDAbefore(v) 118 && super.isDAbefore(v); } 119 protected java.util.Map isDAafter_Variable_values; 120 /** 121 * @attribute syn 122 * @aspect DA 123 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:574 124 */ 125 @SuppressWarnings({"unchecked", "cast"}) 126 public boolean isDAafter(Variable v) { 127 Object _parameters = v; 128 if(isDAafter_Variable_values == null) isDAafter_Variable_values = new java.util.HashMap(4); 129 if(isDAafter_Variable_values.containsKey(_parameters)) { 130 return ((Boolean)isDAafter_Variable_values.get(_parameters)).booleanValue(); 131 } 132 ASTNode$State state = state(); 133 int num = state.boundariesCrossed; 134 boolean isFinal = this.is$Final(); 135 boolean isDAafter_Variable_value = isDAafter_compute(v); 136 if(isFinal && num == state().boundariesCrossed){ isDAafter_Variable_values.put(_parameters, Boolean.valueOf(isDAafter_Variable_value)); } 137 return isDAafter_Variable_value; 138 } 139 /** 140 * @apilevel internal 141 */ 142 private boolean isDAafter_compute(Variable v) { return isDAbefore(v); } 143 /** 144 * @attribute syn 145 * @aspect DU 146 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:1025 147 */ 148 public boolean isDUbefore(Variable v) { 149 ASTNode$State state = state(); 150 try { return getParent().getParent() instanceof Block && ((Block)getParent().getParent()).isDUbefore(v) 151 && super.isDUbefore(v); } 152 finally { 153 } 154 } 155 protected java.util.Map isDUafter_Variable_values; 156 /** 157 * @attribute syn 158 * @aspect DU 159 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/DefiniteAssignment.jrag:1029 160 */ 161 @SuppressWarnings({"unchecked", "cast"}) 162 public boolean isDUafter(Variable v) { 163 Object _parameters = v; 164 if(isDUafter_Variable_values == null) isDUafter_Variable_values = new java.util.HashMap(4); 165 if(isDUafter_Variable_values.containsKey(_parameters)) { 166 return ((Boolean)isDUafter_Variable_values.get(_parameters)).booleanValue(); 167 } 168 ASTNode$State state = state(); 169 int num = state.boundariesCrossed; 170 boolean isFinal = this.is$Final(); 171 boolean isDUafter_Variable_value = isDUafter_compute(v); 172 if(isFinal && num == state().boundariesCrossed){ isDUafter_Variable_values.put(_parameters, Boolean.valueOf(isDUafter_Variable_value)); } 173 return isDUafter_Variable_value; 174 } 175 /** 176 * @apilevel internal 177 */ 178 private boolean isDUafter_compute(Variable v) { return isDUbefore(v); } 179 /** 180 * @attribute syn 181 * @aspect UnreachableStatements 182 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/UnreachableStatements.jrag:83 183 */ 184 public boolean reachable() { 185 ASTNode$State state = state(); 186 try { return getParent().getParent() instanceof Block && ((Block)getParent().getParent()).reachable(); } 187 finally { 188 } 189 } 190 protected java.util.Map label_CodeGeneration_values; 191 /** 192 * @attribute syn 193 * @aspect CreateBCode 194 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Backend/CreateBCode.jrag:1316 195 */ 196 @SuppressWarnings({"unchecked", "cast"}) 197 public int label(CodeGeneration gen) { 198 Object _parameters = gen; 199 if(label_CodeGeneration_values == null) label_CodeGeneration_values = new java.util.HashMap(4); 200 if(label_CodeGeneration_values.containsKey(_parameters)) { 201 return ((Integer)label_CodeGeneration_values.get(_parameters)).intValue(); 202 } 203 ASTNode$State state = state(); 204 int num = state.boundariesCrossed; 205 boolean isFinal = this.is$Final(); 206 int label_CodeGeneration_value = label_compute(gen); 207 if(isFinal && num == state().boundariesCrossed){ label_CodeGeneration_values.put(_parameters, Integer.valueOf(label_CodeGeneration_value)); } 208 return label_CodeGeneration_value; 209 } 210 /** 211 * @apilevel internal 212 */ 213 private int label_compute(CodeGeneration gen) { return hostType().constantPool().newLabel(); } 214 /** 215 * @attribute syn 216 * @aspect PreciseRethrow 217 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/PreciseRethrow.jrag:55 218 */ 219 public boolean modifiedInScope(Variable var) { 220 ASTNode$State state = state(); 221 try { return false; } 222 finally { 223 } 224 } 225 /* Type checking for case labels need not be changed as it 226 * already tests if the case labels have expressions which are 227 * assignable to the switch expression 228 * @attribute syn 229 * @aspect StringsInSwitch 230 * @declaredat /home/jesper/svn/JastAddJ/Java7Frontend/StringsInSwitch.jrag:38 231 */ 232 public boolean isDefaultCase() { 233 ASTNode$State state = state(); 234 try { return false; } 235 finally { 236 } 237 } 238 protected java.util.Map bind_Case_values; 239 /** 240 * @attribute inh 241 * @aspect NameCheck 242 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/NameCheck.jrag:417 243 */ 244 @SuppressWarnings({"unchecked", "cast"}) 245 public Case bind(Case c) { 246 Object _parameters = c; 247 if(bind_Case_values == null) bind_Case_values = new java.util.HashMap(4); 248 if(bind_Case_values.containsKey(_parameters)) { 249 return (Case)bind_Case_values.get(_parameters); 250 } 251 ASTNode$State state = state(); 252 int num = state.boundariesCrossed; 253 boolean isFinal = this.is$Final(); 254 Case bind_Case_value = getParent().Define_Case_bind(this, null, c); 255 if(isFinal && num == state().boundariesCrossed){ bind_Case_values.put(_parameters, bind_Case_value); } 256 return bind_Case_value; 257 } 258 /** 259 * @attribute inh 260 * @aspect TypeCheck 261 * @declaredat /home/jesper/svn/JastAddJ/Java1.4Frontend/TypeCheck.jrag:358 262 */ 263 @SuppressWarnings({"unchecked", "cast"}) 264 public TypeDecl switchType() { 265 ASTNode$State state = state(); 266 TypeDecl switchType_value = getParent().Define_TypeDecl_switchType(this, null); 267 return switchType_value; 268 } 269 /** 270 * @apilevel internal 271 */ 272 public ASTNode rewriteTo() { 273 return super.rewriteTo(); 274 } 275 }