The `throw` statements that were recently inserted into these tests have
an observable impact on the parsing behavior: they causes the `"use
strict"` token sequence to be interpreted as a string literal instead of
a directive prolog, which in turn effects how the tests are interpreted.
Remove the new `throw` statements from these tests and rely on
previously-existing statements that serve the same purpose without
impacting program strictness.
Authored via the following command:
$ find test -type f -print0 | \
xargs -0 sed \
-i 's/^\(\s*\)negative:\s*SyntaxError\s*$/\1negative:\n\1 phase: early\n\1 type: SyntaxError/g'
Some tests involving the directive prologue are invalidated by source
text transformations that insert executable code in the beginning of the
script. Implement a `raw` flag that allows these tests to opt-out of
this transformation. Update the relevant tests to use this flag (and
remove references to globals only available when code is injected).
Update the Python runner accordingly:
- Do not run tests marked as "raw" in strict mode
- Reject invalid test configurations
Update the browser runner accordingly:
- Do not modify the script body of tests marked as "raw"