Changes between Version 55 and Version 56 of AstRestructuring
- Timestamp:
- 12/19/08 23:16:45 (11 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AstRestructuring
v55 v56 1 1 = AST Restructuring = 2 We are in the process of restructuring our [source:trunk/ProjectFortress/astgen/Fortress.ast AST]s. This page includes a list of the guiding principles. 3 ---- 4 == To do == 5 * Do not make the number of fields unwieldy. This would detract from the conciseness of pattern matching. (Note `FnAbsDeclOrDecl` and `ObjectAbsDeclOrDecl` violate this dictum rather egregiously; not obvious if / how to solve this. Perhaps we can at least pull out the fields these share in common in some way.) 6 * [Jan] Better match up / unify `LetExpr` and other declaration-level constructs. Why is `LetExpr` done nesting-style, while local mutable variables, and variable bindings in traits, objects, and at component level are not? 7 * [Jan] Find a way to eliminate gratuitous metadata from enums. 2 We have been restructuring our [source:trunk/ProjectFortress/astgen/Fortress.ast AST]s. This page includes a list of the guiding principles. 8 3 ---- 9 4 == Possible considerations == 5 * Better match up / unify `LetExpr` and other declaration-level constructs. Why is `LetExpr` done nesting-style, while local mutable variables, and variable bindings in traits, objects, and at component level are not? 10 6 * `Juxt.multiJuxt` and `Juxt.infixJuxt` are used during type checking. Restructure them. (''After `FnRef`/`OpRef`/`_RewriteFnRef` settle down.'') 11 7 * Get rid of `_RewriteFnRef`. (''After the interpreter's rewriter is cleaned up. [source:trunk/ProjectFortress/src/com/sun/fortress/interpreter/rewrite/DesugarerVisitor.java] treats `FnRef` so special.'') … … 27 23 == Done (These should remain true.) == 28 24 === General principles === 25 * ~~Do not make the number of fields unwieldy. This would detract from the conciseness of pattern matching. (Note `FnAbsDeclOrDecl` and `ObjectAbsDeclOrDecl` violate this dictum rather egregiously; not obvious if / how to solve this. Perhaps we can at least pull out the fields these share in common in some way.)~~ done in: r3246 29 26 * ~~Remove optional fields. Instead of providing default values to the optional fields, provide static methods with the default values.~~ done in: r3186, r3187, r3189~r3193, r3198~r3200, r3202, r3203, r3210 30 27 * ~~Get rid of superclasses with one subclass (`FnDecl` etc.)~~ done in: r3077

