Changeset 3112
- Timestamp:
- 11/26/08 16:48:07 (12 months ago)
- Location:
- trunk/ProjectFortress
- Files:
-
- 14 modified
-
astgen/Fortress.ast (modified) (5 diffs)
-
src/com/sun/fortress/compiler/desugarer/ObjectExpressionVisitor.java (modified) (1 diff)
-
src/com/sun/fortress/compiler/typechecker/SubtypeCheckerJUTest.java (modified) (1 diff)
-
src/com/sun/fortress/compiler/typechecker/TypeAnalyzerJUTest.java (modified) (1 diff)
-
src/com/sun/fortress/compiler/typechecker/TypeChecker.java (modified) (1 diff)
-
src/com/sun/fortress/interpreter/env/ComponentWrapper.java (modified) (2 diffs)
-
src/com/sun/fortress/interpreter/evaluator/BuildEnvironments.java (modified) (1 diff)
-
src/com/sun/fortress/interpreter/evaluator/BuildTopLevelEnvironments.java (modified) (2 diffs)
-
src/com/sun/fortress/interpreter/rewrite/DesugarerVisitor.java (modified) (1 diff)
-
src/com/sun/fortress/nodes_util/NodeUtil.java (modified) (1 diff)
-
src/com/sun/fortress/parser/Compilation.rats (modified) (2 diffs)
-
src/com/sun/fortress/parser/preparser/PreCompilation.rats (modified) (2 diffs)
-
src/com/sun/fortress/parser_util/NameAndImportCollector.java (modified) (2 diffs)
-
src/com/sun/fortress/tools/FortressAstToConcrete.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ProjectFortress/astgen/Fortress.ast
r3111 r3112 141 141 * CompilationUnit ::= Component | Api 142 142 */ 143 abstract CompilationUnit(APIName name, List<Import> imports); 143 abstract CompilationUnit(APIName name, List<Import> imports, 144 List<Decl> decls); 144 145 /** 145 146 * component declaration … … 151 152 * end 152 153 */ 153 Component(boolean _native = false, 154 List<APIName> exports, List<Decl> decls, 155 List<_RewriteObjectExpr> objectExprs = 156 Collections.<_RewriteObjectExpr>emptyList(), 157 List<String> functionalMethodNames = 158 Collections.<String>emptyList()); 159 /* the list of object expressions is a temporary hack to allow 160 progress towards earlier rewriting and caching of ASTs. -- DRC */ 154 Component(boolean _native = false, List<APIName> exports); 161 155 /** 162 156 * API declaration … … 166 160 * end 167 161 */ 168 Api( List<Decl> decls);162 Api(); 169 163 /** 170 164 * import statement … … 343 337 VarDecl(List<LValue> lhs, Option<Expr> init); 344 338 /** 345 * Overloading specification346 */347 _RewriteFnOverloadDecl(IdOrOpName name,348 List<IdOrOpName> fns);349 /**350 339 * functional declaration in components or APIs 351 340 * Names must be unqualified. … … 384 373 Option<Id> implementsUnambiguousName = Option.<Id>none()) 385 374 implements Applicable, GenericDecl; 375 /** 376 * Overloading specification 377 */ 378 _RewriteFnOverloadDecl(IdOrOpName name, List<IdOrOpName> fns); 379 /* the list of object expressions is a temporary hack to allow 380 progress towards earlier rewriting and caching of ASTs. -- DRC */ 381 /** 382 * Lifted object expressions 383 */ 384 _RewriteObjectExprDecl(List<_RewriteObjectExpr> objectExprs); 385 /** 386 * Injected functional methods 387 */ 388 _RewriteFunctionalMethodDecl(List<String> functionalMethodNames); 386 389 /** 387 390 * dimension and unit declaration -
trunk/ProjectFortress/src/com/sun/fortress/compiler/desugarer/ObjectExpressionVisitor.java
r3107 r3112 171 171 @Override 172 172 public Node forComponentOnly(Component that, APIName name_result, 173 List<Import> imports_result, 174 List<APIName> exports_result, 175 List<Decl> decls_result, 176 List<_RewriteObjectExpr> objectExprs) { 177 // note objectExprs parameter is a temporary hack. 173 List<Import> imports_result, 174 List<Decl> decls_result, 175 List<APIName> exports_result) { 178 176 decls_result.addAll(newObjectDecls); 179 177 return super.forComponentOnly(that, name_result, 180 imports_result, exports_result, decls_result, objectExprs);178 imports_result, decls_result, exports_result); 181 179 } 182 180 -
trunk/ProjectFortress/src/com/sun/fortress/compiler/typechecker/SubtypeCheckerJUTest.java
r3096 r3112 356 356 Component ast = new Component(span, NodeFactory.makeAPIName(span, name), 357 357 Collections.<Import>emptyList(), 358 Collections.<APIName>emptyList(),359 traitDecls);358 traitDecls, 359 Collections.<APIName>emptyList()); 360 360 return new ComponentIndex(ast, 361 361 Collections.<Id, Variable>emptyMap(), -
trunk/ProjectFortress/src/com/sun/fortress/compiler/typechecker/TypeAnalyzerJUTest.java
r3109 r3112 429 429 Component ast = new Component(span, NodeFactory.makeAPIName(name), 430 430 Collections.<Import>emptyList(), 431 Collections.<APIName>emptyList(),432 traitDecls);431 traitDecls, 432 Collections.<APIName>emptyList()); 433 433 return new ComponentIndex(ast, 434 434 Collections.<Id, Variable>emptyMap(), -
trunk/ProjectFortress/src/com/sun/fortress/compiler/typechecker/TypeChecker.java
r3111 r3112 2012 2012 @Override 2013 2013 public TypeCheckerResult forComponentOnly(Component that, 2014 TypeCheckerResult name_result, 2015 List<TypeCheckerResult> imports_result, 2016 List<TypeCheckerResult> exports_result, 2017 List<TypeCheckerResult> decls_result, 2018 List<TypeCheckerResult> objectExprs 2019 ) { 2020 // note objectExprs parameter is a temporary hack. 2021 // It should be ok to ignore it below, because it is 2022 // empty until a later phase. 2023 2014 TypeCheckerResult name_result, 2015 List<TypeCheckerResult> imports_result, 2016 List<TypeCheckerResult> decls_result, 2017 List<TypeCheckerResult> exports_result) { 2024 2018 Component new_comp = 2025 2019 new Component(that.getSpan(), 2026 2020 (APIName)name_result.ast(), 2027 2021 (List<Import>)TypeCheckerResult.astFromResults(imports_result), 2022 (List<Decl>)TypeCheckerResult.astFromResults(decls_result), 2028 2023 that.is_native(), 2029 (List<APIName>)TypeCheckerResult.astFromResults(exports_result), 2030 (List<Decl>)TypeCheckerResult.astFromResults(decls_result)); 2024 (List<APIName>)TypeCheckerResult.astFromResults(exports_result)); 2031 2025 2032 2026 return TypeCheckerResult.compose(new_comp, -
trunk/ProjectFortress/src/com/sun/fortress/interpreter/env/ComponentWrapper.java
r3078 r3112 168 168 Component comp = (Component) comp_unit; 169 169 170 for (_RewriteObjectExpr oe : comp.getObjectExprs()) {170 for (_RewriteObjectExpr oe : NodeUtil.getObjectExprs( comp )) { 171 171 String name = oe.getGenSymName(); 172 172 List<StaticParam> params = oe.getStaticParams(); … … 201 201 public Set<String> getFunctionals() { 202 202 if (transformed != null) { 203 return Useful.set( transformed.getFunctionalMethodNames());203 return Useful.set(NodeUtil.getFunctionalMethodNames( transformed )); 204 204 } 205 205 return desugarer.functionals; -
trunk/ProjectFortress/src/com/sun/fortress/interpreter/evaluator/BuildEnvironments.java
r3102 r3112 170 170 } 171 171 172 173 174 175 172 protected static void doDefs(BuildEnvironments inner, List<Decl> defs) { 176 173 for (Decl def : defs) { -
trunk/ProjectFortress/src/com/sun/fortress/interpreter/evaluator/BuildTopLevelEnvironments.java
r3096 r3112 46 46 import com.sun.fortress.nodes.TraitDecl; 47 47 import com.sun.fortress.nodes._RewriteFnOverloadDecl; 48 import com.sun.fortress.nodes._RewriteObjectExprDecl; 49 import com.sun.fortress.nodes._RewriteFunctionalMethodDecl; 48 50 import com.sun.fortress.nodes_util.NodeUtil; 49 51 … … 139 141 return null; 140 142 143 } 144 145 public Boolean for_RewriteObjectExprDecl(_RewriteObjectExprDecl x) { 146 return null; 147 } 148 149 public Boolean for_RewriteFunctionalMethodDecl(_RewriteFunctionalMethodDecl x) { 150 return null; 141 151 } 142 152 -
trunk/ProjectFortress/src/com/sun/fortress/interpreter/rewrite/DesugarerVisitor.java
r3107 r3112 666 666 List<Decl> decls_result = recurOnListOfDecl(com.getDecls()); 667 667 668 decls_result.add( new _RewriteObjectExprDecl(com.getSpan(), objectExprs) ); 669 decls_result.add( new _RewriteFunctionalMethodDecl(com.getSpan(), Useful.list(functionals)) ); 670 668 671 AbstractNode nn = 669 672 new Component(com.getSpan(), 670 name_result, imports_result, com.is_native(), 671 exports_result, decls_result, 672 objectExprs, Useful.list(functionals)); 673 name_result, imports_result, decls_result, 674 com.is_native(), exports_result); 673 675 674 676 if (debug && ! suppressDebugDump) -
trunk/ProjectFortress/src/com/sun/fortress/nodes_util/NodeUtil.java
r3107 r3112 37 37 38 38 public class NodeUtil { 39 40 public static List<_RewriteObjectExpr> getObjectExprs(Component comp) { 41 for ( Decl d : comp.getDecls() ) { 42 if ( d instanceof _RewriteObjectExprDecl ) 43 return ((_RewriteObjectExprDecl)d).getObjectExprs(); 44 } 45 return new ArrayList<_RewriteObjectExpr>(); 46 } 47 48 public static List<String> getFunctionalMethodNames(Component comp) { 49 for ( Decl d : comp.getDecls() ) { 50 if ( d instanceof _RewriteFunctionalMethodDecl ) 51 return ((_RewriteFunctionalMethodDecl)d).getFunctionalMethodNames(); 52 } 53 return new ArrayList<String>(); 54 } 39 55 40 56 /* get the declared name of a component or api */ -
trunk/ProjectFortress/src/com/sun/fortress/parser/Compilation.rats
r3099 r3112 68 68 String file = span.begin.getFileName(); 69 69 APIName name = NodeFactory.makeAPINameFromPath(span, file, "\\."); 70 yyValue = new Component(span, name, a1, a 2, a3);70 yyValue = new Component(span, name, a1, a3, a2); 71 71 } 72 72 / a1:Imports w semicolon? a2:(w yyValue:AbsDecls w semicolon?)? … … 120 120 if (a5 == null) a5 = Collections.<Decl>emptyList(); 121 121 if (a1 == null) 122 yyValue = new Component(span, a2, a3, a 4, a5);122 yyValue = new Component(span, a2, a3, a5, a4); 123 123 else 124 yyValue = new Component(span, a2, a3, true, a4, a5);124 yyValue = new Component(span, a2, a3, a5, true, a4); 125 125 }; 126 126 -
trunk/ProjectFortress/src/com/sun/fortress/parser/preparser/PreCompilation.rats
r3099 r3112 62 62 String file = span.begin.getFileName(); 63 63 APIName name = NodeFactory.makeAPINameFromPath(span, file, "\\."); 64 yyValue = new Component(span, name, a1, a 2, a3);64 yyValue = new Component(span, name, a1, a3, a2); 65 65 } 66 66 / _ … … 96 96 Span span = createSpan(yyStart,yyCount); 97 97 if (a1 == null) 98 yyValue = new Component(span, a2, a3, a 4, a5);98 yyValue = new Component(span, a2, a3, a5, a4); 99 99 else 100 yyValue = new Component(span, a2, a3, true, a4, a5);100 yyValue = new Component(span, a2, a3, a5, true, a4); 101 101 }; 102 102 -
trunk/ProjectFortress/src/com/sun/fortress/parser_util/NameAndImportCollector.java
r2898 r3112 44 44 45 45 @Override 46 public List<Import> forComponentOnly(Component that, 47 List<Import> name_result, List<List<Import>> imports_result, 48 List<List<Import>> exports_result, List<List<Import>> decls_result, 49 List<List<Import>> objectExprs) { 50 // note objectExprs parameter is a temporary hack. 46 public List<Import> forComponentOnly(Component that, 47 List<Import> name_result, List<List<Import>> imports_result, 48 List<List<Import>> decls_result, 49 List<List<Import>> exports_result) { 51 50 this.namesAndImports = new NameAndImportCollection(); 52 51 this.namesAndImports.setComponentName(that.getName()); … … 54 53 55 54 return super.forComponentOnly(that, name_result, imports_result, 56 exports_result, decls_result, objectExprs);55 decls_result, exports_result); 57 56 } 58 57 -
trunk/ProjectFortress/src/com/sun/fortress/tools/FortressAstToConcrete.java
r3111 r3112 277 277 @Override public String forComponentOnly(Component that, String name_result, 278 278 List<String> imports_result, 279 List<String> exports_result,280 279 List<String> decls_result, 281 List<String> objectExprs) {280 List<String> exports_result) { 282 281 inComponent = true; 283 282 // note objectExprs parameter is a temporary hack. … … 596 595 } 597 596 597 @Override public String for_RewriteObjectExprDeclOnly(_RewriteObjectExprDecl that, 598 List<String> objExprs_result) { 599 return "(* _RewriteObjectExprDecl() *)"; 600 } 601 602 @Override public String for_RewriteFunctionalMethodDeclOnly(_RewriteFunctionalMethodDecl that) { 603 return "(* _RewriteFunctionalMethodDecl() *)"; 604 } 598 605 599 606 /****************************************/

