Ref T4334. Allows us to build tests against this so we can accomplish goals described in T4334 with greater confidence.
This allows three types of tests to be defined:
- pass: Input is expected to parse into a specific tree.
- fail-syntax: Input is expected to fail with a syntax error.
- fail-parse: Input is expected to parse the wrong tree.
The latter two test types allow us to write passing tests of broken/bad behavior while keeping it clear which tests are passing-and-good and which are passing-but-broken.