Changeset 2185
- Timestamp:
- 07/05/08 03:45:31 (2 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ProjectFortress/src/com/sun/fortress/compiler/environments/TopLevelEnvGen.java
r2169 r2185 52 52 import com.sun.fortress.nodes.Id; 53 53 import com.sun.fortress.nodes.IdOrOpOrAnonymousName; 54 import com.sun.fortress.nodes.Import; 54 55 import com.sun.fortress.nodes.ImportApi; 55 56 import com.sun.fortress.nodes.AliasedAPIName; 56 57 import com.sun.fortress.nodes.ImportedNames; 57 import com.sun.fortress.nodes.NodeDepthFirstVisitor_void;58 58 import com.sun.fortress.nodes_util.NodeUtil; 59 59 import com.sun.fortress.useful.HasAt; … … 185 185 className = className + COMPONENT_ENV_SUFFIX; 186 186 187 byte[] envClass = generateForCompilationUnit(className, 187 try { 188 byte[] envClass = generateForCompilationUnit(className, 188 189 components.get(componentName), env); 189 190 compiledComponents.put(componentName, envClass); 190 191 compiledComponents.put(componentName, envClass); 192 } catch(StaticError staticError) { 193 errors.add(staticError); 194 } 191 195 } 192 196 … … 227 231 Relation<String, Integer> apiEnvHashCode = new IndexedRelation<String,Integer>(); 228 232 229 writeImportFields(c ompUnitIndex, cw, apiEnvHashCode);230 writeFields(c ompUnitIndex, cw, fValueHashCode, fTypeHashCode);233 writeImportFields(cw, compUnitIndex, apiEnvHashCode); 234 writeFields(cw, compUnitIndex, fValueHashCode, fTypeHashCode); 231 235 writeMethodInit(cw, className); 232 236 … … 245 249 } 246 250 247 private static void writeImportFields(C ompilationUnitIndex compUnitIndex,248 ClassWriter cw,Relation<String,Integer> apiEnvHashCode) {251 private static void writeImportFields(ClassWriter cw, CompilationUnitIndex compUnitIndex, 252 Relation<String,Integer> apiEnvHashCode) { 249 253 CompilationUnit comp = compUnitIndex.ast(); 250 254 final Vector<String> importedApiNames = new Vector<String>(); 251 255 252 comp.accept(new NodeDepthFirstVisitor_void() {253 @Override254 public void forImportedNamesDoFirst(ImportedNames that) {255 importedApiNames.add( NodeUtil.nameString(that.getApi()) );256 }257 258 @Override259 public void forImportApi(ImportApi that){260 for ( AliasedAPIName api : that.getApis() ){261 importedApiNames.add( NodeUtil.nameString(api.getApi()) );262 }263 }264 });256 for(Import imports : comp.getImports()) { 257 if (imports instanceof ImportApi) { 258 ImportApi importApi = (ImportApi) imports; 259 for (AliasedAPIName api : importApi.getApis()) { 260 importedApiNames.add(NodeUtil.nameString(api.getApi())); 261 } 262 } else if (imports instanceof ImportedNames) { 263 ImportedNames importNames = (ImportedNames) imports; 264 importedApiNames.add(NodeUtil.nameString(importNames.getApi())); 265 } else { 266 throw StaticError.make("Unrecognized import type in bytecode generation", imports); 267 } 268 } 265 269 266 270 for(String apiName : importedApiNames) { … … 272 276 } 273 277 274 private static void writeFields(C ompilationUnitIndex compUnitIndex,275 ClassWriter cw,Relation<String, Integer> fValueHashCode,278 private static void writeFields(ClassWriter cw, CompilationUnitIndex compUnitIndex, 279 Relation<String, Integer> fValueHashCode, 276 280 Relation<String, Integer> fTypeHashCode) { 277 281
