Reduce the insanity that is ArrayNode/ElementNode Bleh. This patch (partially) cleans up ArrayNode/ElementNode. In the end ElementNode doesn't really need to exist, elision information could be stored on the ArrayNode. Certainly ElementNode doesn't need to have its virtual functions (evaluate or otherwise). This patch does some small cleanup. Including renaming "elision" (meaningless to most of us in this context) to "m_extraTrailingCommas" and "m_extraLeadingCommas" better describing what it actually refers to. The unneeded "opt" special-case variable is also removed. A next-pass would remove ElementNode::evaluate entirely, and just let the ArrayNode walk through the list instead of making it recursive.
Created attachment 17140 [details] improved arrayNode
Created attachment 17141 [details] even better, just remove ElementNode I went ahead and went further to the next step. :) This is my first multi-commit patch in git! I'm so proud. :)
Comment on attachment 17141 [details] even better, just remove ElementNode Did you test performance effect of this? I tried to do something similar and it was mysteriously a regression.
Comment on attachment 17141 [details] even better, just remove ElementNode This one appears broken actually. I'll post another when I'm sure it works and is perf-friendly.
I've given up on this patch. Closing.