puppetlabs/puppet — pull request #2819 by hlindberg (2014-06-29 21:33:06+00:00)
Title: (PUP-2858) Remove --evaluator current option and code

This removes the effect of the --evaluator current option (a warning is raised and the value 'future' is enforced). The ability to run with the current evaluator via transformation was a crutch / escape hatch
in case the future evaluator was in bad shape. Now, we rather force that people use the future evaluator and report any issues.

By disabling the hybrid solution it is possible to remove cod. This PR changes:

* The binder now uses the future evaluator instead of always transforming
* The parser factory now only produces one kind of future evaluator (no hybrid solution)
* The EvaluatingParser and its subclass Transitional are now merged (and Transitional is removed)
* Use of Puppet[:evaluator] in logic is removed
* The Checker_3_1 and its factory are now removed (they validated that code was 3x compliant, but did not do a a complete job (the Checker_4_0 is much better, and it is now used everywhere).

It is still not possible to get rid of all transformation to 3x, mainly because of the query/collector API, and in part because of node hostname match expressions as they are a) lazily evaluated, and b) collection transforms 3x AST to another form.