Error formatting macro: pagetree: java.lang.NullPointerException
Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current  |   View Page History

Early (outdated) documentation attempt here:



Notes from working with existing AST

  • Blocks
    • Inconsistent treatment of empty blocks
      • (let [x 1]) has four environments of interest: before the let form, at x's initializer, after x is 1, and after the let form. For an empty block, there is no where to get an environment with x in the locals.
    • Synthetic blocks
      • Would be a place to hang that :env
      • Could disallow special forms other than 'do from having blocks. Change (let* [x 1] 2 3) to (let* [x 1] (do 2 3))
      • let and letfn don't expose a :body-env, but try's catch does! would prefer explicit blocks nodes
    • (conj (vec statements ret)) pattern spills into client code
      • Inconsistent here too. Forcing children to vectors causes heap to fall over for cljs.core on my box
      • Should not allow lazy structures to persist between passes
  • :children key duplication
  • No root AST node type
    • Need a place to hang top-level info. File names, source data, etc.