Also apparently don't need to repeat the deps for the test mode either.
I thought this would help but full recompilation is still 57s for me. Maybe we need to split modules up more or kill the "deriving Generic" by going to the "deriving Data"-based pretty printer? In any case, we have removed a lot of lines of boilerplate code. And you don't have TH spewing things at you in compilation.
some parts of the AST have a list structure that cannot be empty. this is now an invariant in the type system. there's a NonEmpty library on hackage, but it's small and doesn't currently seem into my grand vision of qualified importing to possibly have a lot of Data.List functionality. or maybe that's stupid. we'll see what happens. also some cleanup here and trying to minimize the "Common" modules. also pulled out WS into a module (long overdue).
Added some things to help with testing. I've used GenericPretty to display AST tree structures in debugging. Unfortunately it requires "deriving Generic" and GHC.Generics. We're already "deriving (Data, Typeable)" which seems to be similar but not as GHC-only so probably better? Have to look into. Also GenericPretty makes things too wide. I played around with an alternative src/Test/PrettyPrint.hs but gave up on it for now.. Also tested by running dump-as-id on wordpress, which now works until there's a "foreach .. :". So I guess that's next.
Summary: investigating efficiency options; currently multiple cores and using tmpfs don't seem to make much difference. ast caching saves 40-50% of run time for normal transformations (parsing-isn't-as- expensive / transformations-are-more-expensive than i thought). but i need to look more, and other ppl can too. defaults are still same behavior before this change. Test Plan: running and timing with different settings/environments Revert Plan: ok
Summary: this will become lex-pass 2.1 prob after it's tested more Reviewed By: eletuchy Test Plan: lex-pass id on codebase Revert Plan: ok
…erson Summary: we do the same for phpsh Reviewed By: srush Test Plan: no Revert Plan: ok
Summary: we use the src/codegen pre-build step to get separation of company-secret transformers and public transformers. rebooting the repo loses history but that's acceptable; we'll have it now from here on out. we also don't have to worry about registering new transformers, as src/codegen does that. Reviewed By: srush, marcel Test Plan: install public/private version and note that company-secret transformers show up iff private version Revert Plan: ok