diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4b50e637e54c6c3a4de522efc59d0eb8c2db2725..a3230e9f7dffef5542863b37835384ef6d951ba4 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -70,14 +70,21 @@ Eg: Object.prototype.toString - '[object Null]' will be returned when
 'this' value is null
 
 #### negative
-**negative**: [regex]
+**negative**: [dictionary containing **phase** and **type**]
 
 This means the test is expected to throw an error of the given type.  If no error is thrown, a test failure is reported.
 
-If an error is thrown, it is implicitly converted to a string.  The second parameter is a regular expression that will be matched against this string.  If the match fails, a test failure is reported.  Thus the regular expression can match either the error name, or the message contents, or both.
+- **type**- If an error is thrown, it is implicitly converted to a string. In order for the test to pass, this value must match the name of the error constructor.
+- **phase** - Negative tests whose **phase** value is "early" must produce the specified error prior to executing code. The value "runtime" dictates that the error is expected to be produced as a result of executing the test code.
 
 For best practices on how to use the negative tag please see Handling Errors and Negative Test Cases, below.
 
+For example:
+
+    negative:
+      phase: early
+      type: ReferenceError
+
 #### es5id
 **es5id**: [es5-test-id]
 
@@ -150,12 +157,6 @@ assert.sameValue(actual, expected, message) | throw a new Test262Error instance
 assert.notSameValue(actual, unexpected, message) | throw a new Test262Error instance if the first two arguments are [the same value](http://www.ecma-international.org/ecma-262/6.0/#sec-samevalue); accepts an optional string message for use in creating the error
 assert.throws(expectedErrorConstructor, fn) | throw a new Test262Error instance if the provided function does not throw an error, or if the constructor of the value thrown does not match the provided constructor
 
-The test harness also defines the following objects:
-
-Identifier | Purpose
------------|--------
-NotEarlyError | preconstructed error object used for testing syntax and other early errors; see Syntax Error & Early Error, below
-
 ```
 /// error class
 function Test262Error(message) {
@@ -171,8 +172,6 @@ function $ERROR(message) {
 function $DONE(arg) {
 //[omitted body]
 }
-
-var NotEarlyError = new Error(...);
 ```
 
 ## Handling Errors and Negative Test Cases
@@ -181,12 +180,11 @@ Expectations for **parsing errors** should be declared using [the `negative` fro
 
 ```javascript
 /*---
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
-// This `throw` statement guarantees that no code is executed in order to
-// trigger the SyntaxError.
-throw NotEarlyError;
 var var = var;
 ```
 
diff --git a/INTERPRETING.md b/INTERPRETING.md
index da51fcee34f1113ee9548b8a9931cc4161a01558..e1f892df4ae78db3edd71ed360ee6cf070f366d0 100644
--- a/INTERPRETING.md
+++ b/INTERPRETING.md
@@ -117,20 +117,38 @@ structured as [YAML](http://yaml.org/).
 ### `negative`
 
 These tests are expected to generate an uncaught exception. The value of this
-attribute is the name of the constructor of the expected error. If a test
-configured with the `negative` attribute completes without throwing an
-exception, or if the name of the thrown exception's constructor does not match
-the specified constructor name, the test must be interpreted as "failing."
+attribute is a YAML dictonary with two keys:
+
+- `phase` - the stage of the test interpretation process that the error is
+  expected to be produced; either "early" (meaning, "prior to evaluation") or
+  "runtime" (meaning, "during evaluation"); in the case of "early", additional
+  test transformation may be required--see below
+- `type` - the name of the constructor of the expected error
+
+If a test configured with the `negative` attribute completes without throwing
+an exception, or if the name of the thrown exception's constructor does not
+match the specified constructor name, or if the error occurs at a phase that
+differs from the indicated phase, the test must be interpreted as "failing."
 
 *Example:*
 
 ```js
 /*---
-negative: ReferenceError
+negative:
+  phase: runtime
+  type: ReferenceError
 ---*/
 unresolvable;
 ```
 
+Consumers are free to assert the "early" phase as they see fit.
+
+For example, it is possible to insert a `throw` statement with a unique error
+type at the beginning of the test file. In this case, the statement should be
+inserted *after* the directive desribed in the section titled "Strict Mode"
+(where appropriate), though it must *not* be inserted for tests containing the
+"raw" flag.
+
 ### `includes`
 
 One or more files whose content must be evaluated in the test realm's global
diff --git a/harness/sta.js b/harness/sta.js
index 5a95afb1841e54ab0a099030a8194a39a0396ab0..10a6bb3fabefc0a5c8503248c211f8ae3d45fe4c 100644
--- a/harness/sta.js
+++ b/harness/sta.js
@@ -1,10 +1,6 @@
 /// Copyright (c) 2012 Ecma International.  All rights reserved. 
 /// This code is governed by the BSD license found in the LICENSE file.
 
-var NotEarlyErrorString = "NotEarlyError";
-var EarlyErrorRePat = "^((?!" + NotEarlyErrorString + ").)*$";
-var NotEarlyError = new Error(NotEarlyErrorString);
-
 function Test262Error(message) {
     this.message = message || "";
 }
diff --git a/src/dflt-params/duplicates.case b/src/dflt-params/duplicates.case
index e2a6e424d0be4895a6e11df989002defd7eb9b1d..90ae8bfb755d23c98f4c0ca0d9e0f586805eed5d 100644
--- a/src/dflt-params/duplicates.case
+++ b/src/dflt-params/duplicates.case
@@ -5,7 +5,9 @@ desc: >
   It is a Syntax Error if BoundNames of FormalParameters contains any duplicate
   elements.
 template: syntax
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
   14.1.2 Static Semantics: Early Errors
 
diff --git a/src/dflt-params/rest.case b/src/dflt-params/rest.case
index e8b7f03e35c7a4395c6c2ac98c3808948299300b..cee08eaf1291139282ee3a6597b15f4a1c666270 100644
--- a/src/dflt-params/rest.case
+++ b/src/dflt-params/rest.case
@@ -20,7 +20,9 @@ info: |
 
     ...BindingIdentifier[?Yield]
     ...BindingPattern[?Yield]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- params
diff --git a/src/dstr-assignment/array-elem-init-simple-strict.case b/src/dstr-assignment/array-elem-init-simple-strict.case
index 7158a328b8396a24e1fe9ac4fd796ae1238907d1..3db58d5504dca677d6562997c7723f85ad4364d6 100644
--- a/src/dstr-assignment/array-elem-init-simple-strict.case
+++ b/src/dstr-assignment/array-elem-init-simple-strict.case
@@ -10,7 +10,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.1
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-elem-init-yield-ident-invalid.case b/src/dstr-assignment/array-elem-init-yield-ident-invalid.case
index c67ee2c344738aba8f1735f364ca582647678faa..a92e5fc4988d506cce7709cd2c8931ec9033cc23 100644
--- a/src/dstr-assignment/array-elem-init-yield-ident-invalid.case
+++ b/src/dstr-assignment/array-elem-init-yield-ident-invalid.case
@@ -8,7 +8,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-elem-nested-array-invalid.case b/src/dstr-assignment/array-elem-nested-array-invalid.case
index 9cceb9f06f7ccddb25adcb2324e3ac55512a1ea3..c3d212df0599dbf3617908d44a554ca713633148 100644
--- a/src/dstr-assignment/array-elem-nested-array-invalid.case
+++ b/src/dstr-assignment/array-elem-nested-array-invalid.case
@@ -9,7 +9,9 @@ desc: >
     AssignmentPattern as the goal symbol.
 template: syntax
 es6id: 12.14.5.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-elem-nested-array-yield-ident-invalid.case b/src/dstr-assignment/array-elem-nested-array-yield-ident-invalid.case
index 006428417bdcf8ec3ee1b5cb3af2601eb9205cd8..67bfe434044ca7dac8327142240360e4cd23004d 100644
--- a/src/dstr-assignment/array-elem-nested-array-yield-ident-invalid.case
+++ b/src/dstr-assignment/array-elem-nested-array-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.3
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-elem-nested-obj-invalid.case b/src/dstr-assignment/array-elem-nested-obj-invalid.case
index 3bf2ec0f31c39cf9275f628afa7f2e4d6e1c7956..5b486bc48e43f86604866f27d1f612099eb1d106 100644
--- a/src/dstr-assignment/array-elem-nested-obj-invalid.case
+++ b/src/dstr-assignment/array-elem-nested-obj-invalid.case
@@ -9,7 +9,9 @@ desc: >
     AssignmentPattern as the goal symbol.
 template: syntax
 es6id: 12.14.5.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-elem-nested-obj-yield-ident-invalid.case b/src/dstr-assignment/array-elem-nested-obj-yield-ident-invalid.case
index ce9db76419f00e30a6b29eee709bace83ff8112b..d6a792c8bf3ecf6a3983ba980bc4e599b2c4b8fb 100644
--- a/src/dstr-assignment/array-elem-nested-obj-yield-ident-invalid.case
+++ b/src/dstr-assignment/array-elem-nested-obj-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.3
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-elem-target-simple-strict.case b/src/dstr-assignment/array-elem-target-simple-strict.case
index b9a8adf7703359d7b61672dffe5ec4584becf393..a06ccd75d0de4c6ec5b743d78ce1b8385003c4a4 100644
--- a/src/dstr-assignment/array-elem-target-simple-strict.case
+++ b/src/dstr-assignment/array-elem-target-simple-strict.case
@@ -10,7 +10,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.1
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-elem-target-yield-invalid.case b/src/dstr-assignment/array-elem-target-yield-invalid.case
index 0ff8247068ea9b0359e32b2bdc832fcf22dcfa2f..71270d5f45f79d7a1840303480e7f984dca66bb6 100644
--- a/src/dstr-assignment/array-elem-target-yield-invalid.case
+++ b/src/dstr-assignment/array-elem-target-yield-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-rest-before-element.case b/src/dstr-assignment/array-rest-before-element.case
index fda8d7721fb5b50b2703794cafd2124d0ff67a34..cbf87ec138ed4c2e340e9672a97eb054b088d3e0 100644
--- a/src/dstr-assignment/array-rest-before-element.case
+++ b/src/dstr-assignment/array-rest-before-element.case
@@ -7,7 +7,9 @@ desc: >
     AssignmentElementList.
 template: syntax
 es6id: 12.14.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-rest-before-elision.case b/src/dstr-assignment/array-rest-before-elision.case
index 501f9ac1e6890084a970dbd8d008a8d6ca5a876e..d97663df9f0390e9dd9519b12625922533599394 100644
--- a/src/dstr-assignment/array-rest-before-elision.case
+++ b/src/dstr-assignment/array-rest-before-elision.case
@@ -7,7 +7,9 @@ desc: >
     AssignmentElementList.
 template: syntax
 es6id: 12.14.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-rest-before-rest.case b/src/dstr-assignment/array-rest-before-rest.case
index a86de5f458c6d1b8a97c41a887272712b78989c0..304e0ab48789dc5205119af163b1e2f39803bafc 100644
--- a/src/dstr-assignment/array-rest-before-rest.case
+++ b/src/dstr-assignment/array-rest-before-rest.case
@@ -7,7 +7,9 @@ desc: >
     AssignmentElementList.
 template: syntax
 es6id: 12.14.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-rest-elision-invalid.case b/src/dstr-assignment/array-rest-elision-invalid.case
index f002f7169a3bd7af6eac0d52106f7ff865b1503d..019fa58dd5460e24949fb4acf16204a52f4d64b2 100644
--- a/src/dstr-assignment/array-rest-elision-invalid.case
+++ b/src/dstr-assignment/array-rest-elision-invalid.case
@@ -7,7 +7,9 @@ desc: >
     AssignmentRestElement in a AssignmentElementList.
 template: syntax
 es6id: 12.14.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-rest-init.case b/src/dstr-assignment/array-rest-init.case
index 02c329e2099d0166be285ebe7c87acff2a5ecaa4..aaf654fa4795380f0cd7df4dfc757f26497bdeb9 100644
--- a/src/dstr-assignment/array-rest-init.case
+++ b/src/dstr-assignment/array-rest-init.case
@@ -6,7 +6,9 @@ desc: >
     The AssignmentRestElement does not support an initializer.
 template: syntax
 es6id: 12.14.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- setup
diff --git a/src/dstr-assignment/array-rest-nested-array-invalid.case b/src/dstr-assignment/array-rest-nested-array-invalid.case
index 08eff54e22ecc2c23b5ac48c0c2ee07ff2b9f7f8..0163c4e004de6088cc477a57f90ea23a6d043ecb 100644
--- a/src/dstr-assignment/array-rest-nested-array-invalid.case
+++ b/src/dstr-assignment/array-rest-nested-array-invalid.case
@@ -9,7 +9,9 @@ desc: >
     AssignmentPattern as the goal symbol.
 template: syntax
 es6id: 12.14.5.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-rest-nested-array-yield-ident-invalid.case b/src/dstr-assignment/array-rest-nested-array-yield-ident-invalid.case
index 995a7f9ff3b8c0ceb6ca359d3ce67cbd911afefb..42c334b4066ec3bec61e8b3b5f182bc436bb3adc 100644
--- a/src/dstr-assignment/array-rest-nested-array-yield-ident-invalid.case
+++ b/src/dstr-assignment/array-rest-nested-array-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.3
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-rest-nested-obj-invalid.case b/src/dstr-assignment/array-rest-nested-obj-invalid.case
index ee38be20ea34f8735ce45c94ae7a97cc7a897a95..b393f1677d033a1e943b5bd3b970fb4bf42d1029 100644
--- a/src/dstr-assignment/array-rest-nested-obj-invalid.case
+++ b/src/dstr-assignment/array-rest-nested-obj-invalid.case
@@ -9,7 +9,9 @@ desc: >
     AssignmentPattern as the goal symbol.
 template: syntax
 es6id: 12.14.5.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-rest-nested-obj-yield-ident-invalid.case b/src/dstr-assignment/array-rest-nested-obj-yield-ident-invalid.case
index 9759c626ca410e290960103ee020cc1d3e6c6f77..7b88162a668d1999c0228152bc0211a9900a7518 100644
--- a/src/dstr-assignment/array-rest-nested-obj-yield-ident-invalid.case
+++ b/src/dstr-assignment/array-rest-nested-obj-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.3
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/array-rest-yield-ident-invalid.case b/src/dstr-assignment/array-rest-yield-ident-invalid.case
index d635a7c5a6635c917237603928a1ab303a634666..3dec86f328fbf0cf5d5bdf6823c5386a1172543f 100644
--- a/src/dstr-assignment/array-rest-yield-ident-invalid.case
+++ b/src/dstr-assignment/array-rest-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- setup
diff --git a/src/dstr-assignment/obj-id-identifier-yield-expr.case b/src/dstr-assignment/obj-id-identifier-yield-expr.case
index 8dc18230f51265a7333d1b6cf21661e276f21e0b..d188630eed100b4e9ac22cccb72827c1f9f84b71 100644
--- a/src/dstr-assignment/obj-id-identifier-yield-expr.case
+++ b/src/dstr-assignment/obj-id-identifier-yield-expr.case
@@ -9,7 +9,9 @@ template: syntax
 es6id: 12.14.5
 flags: [noStrict]
 features: [generators]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- setup
diff --git a/src/dstr-assignment/obj-id-identifier-yield-ident-invalid.case b/src/dstr-assignment/obj-id-identifier-yield-ident-invalid.case
index 83c135da48db12bf7910d00f47d14e8c208026a8..e668456de7d830c00e10b62b19f65d5838358561 100644
--- a/src/dstr-assignment/obj-id-identifier-yield-ident-invalid.case
+++ b/src/dstr-assignment/obj-id-identifier-yield-ident-invalid.case
@@ -8,7 +8,9 @@ desc: >
 template: syntax
 es6id: 12.14.5
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/obj-id-init-simple-strict.case b/src/dstr-assignment/obj-id-init-simple-strict.case
index b2faabe69914ca737d009d0b99dc0c6bcbef2eeb..c2eebf52048109d5db311aeab8ff5706e27b6a0e 100644
--- a/src/dstr-assignment/obj-id-init-simple-strict.case
+++ b/src/dstr-assignment/obj-id-init-simple-strict.case
@@ -8,7 +8,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.1
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/obj-id-init-yield-ident-invalid.case b/src/dstr-assignment/obj-id-init-yield-ident-invalid.case
index 3d8d12f933bfd6cabd5378cb91e30222fb614519..31ed69b9550b1e910a43ac89deceef21a77bc7be 100644
--- a/src/dstr-assignment/obj-id-init-yield-ident-invalid.case
+++ b/src/dstr-assignment/obj-id-init-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/obj-id-simple-strict.case b/src/dstr-assignment/obj-id-simple-strict.case
index 19e92bb6219d2447a7983179d22f8291c021bd9e..07ee74ad97fec6caae9fcb22c2cef486ae0e4d79 100644
--- a/src/dstr-assignment/obj-id-simple-strict.case
+++ b/src/dstr-assignment/obj-id-simple-strict.case
@@ -8,7 +8,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.1
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/obj-prop-elem-init-yield-ident-invalid.case b/src/dstr-assignment/obj-prop-elem-init-yield-ident-invalid.case
index 9c127af0ee7b003790ed54169d54fec5303f7a83..3209b2ae68938609dca2634bd3fafa8978688024 100644
--- a/src/dstr-assignment/obj-prop-elem-init-yield-ident-invalid.case
+++ b/src/dstr-assignment/obj-prop-elem-init-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/obj-prop-elem-target-yield-ident-invalid.case b/src/dstr-assignment/obj-prop-elem-target-yield-ident-invalid.case
index 75503db0e85cd0739a914aec8a1ec01376d21f94..5499eff41c2418df953451f90857dfb1b8b801c7 100644
--- a/src/dstr-assignment/obj-prop-elem-target-yield-ident-invalid.case
+++ b/src/dstr-assignment/obj-prop-elem-target-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/obj-prop-nested-array-invalid.case b/src/dstr-assignment/obj-prop-nested-array-invalid.case
index b4321822d347faef8031e7c3d649e043e6f4782b..e211a971560af419f52dbcdcc876d37eebd09e59 100644
--- a/src/dstr-assignment/obj-prop-nested-array-invalid.case
+++ b/src/dstr-assignment/obj-prop-nested-array-invalid.case
@@ -9,7 +9,9 @@ desc: >
     AssignmentPattern as the goal symbol.
 template: syntax
 es6id: 12.14.5.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/obj-prop-nested-array-yield-ident-invalid.case b/src/dstr-assignment/obj-prop-nested-array-yield-ident-invalid.case
index addafc3b40ecbbdf81c4724ad9c80256586fae4e..da8930471804700e1544d340b5f8e23068609a7d 100644
--- a/src/dstr-assignment/obj-prop-nested-array-yield-ident-invalid.case
+++ b/src/dstr-assignment/obj-prop-nested-array-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/obj-prop-nested-obj-invalid.case b/src/dstr-assignment/obj-prop-nested-obj-invalid.case
index 9bf46e92cd850aa849f1d363e1346f4b76a80d49..b20785934234352cbaf7530d41deafafd7511660 100644
--- a/src/dstr-assignment/obj-prop-nested-obj-invalid.case
+++ b/src/dstr-assignment/obj-prop-nested-obj-invalid.case
@@ -10,7 +10,9 @@ desc: >
     the goal symbol.
 template: syntax
 es6id: 12.14.5.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-assignment/obj-prop-nested-obj-yield-ident-invalid.case b/src/dstr-assignment/obj-prop-nested-obj-yield-ident-invalid.case
index c37458e46d2882c4fd381cc0c67e5fb13029b5b4..a6a02878eb7cc06a8c077c9ef0b4193021eb0d60 100644
--- a/src/dstr-assignment/obj-prop-nested-obj-yield-ident-invalid.case
+++ b/src/dstr-assignment/obj-prop-nested-obj-yield-ident-invalid.case
@@ -9,7 +9,9 @@ desc: >
 template: syntax
 es6id: 12.14.5.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //- elems
diff --git a/src/dstr-binding/ary-ptrn-rest-init-ary.case b/src/dstr-binding/ary-ptrn-rest-init-ary.case
index dd8cba348be2b0ebbd03057ec9dc6bb36fdfd6a8..ab359ad3f39fa6d2cc9ca1f7068ba840aad8c787 100644
--- a/src/dstr-binding/ary-ptrn-rest-init-ary.case
+++ b/src/dstr-binding/ary-ptrn-rest-init-ary.case
@@ -3,7 +3,9 @@
 /*---
 template: default
 desc: Reset element (nested array pattern) does not support initializer
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     13.3.3 Destructuring Binding Patterns
 
diff --git a/src/dstr-binding/ary-ptrn-rest-init-id.case b/src/dstr-binding/ary-ptrn-rest-init-id.case
index 91dd9d432929c63060f8da4e611c2b965451d305..e5ab514c083d079f637e7919b885a62f4fce45de 100644
--- a/src/dstr-binding/ary-ptrn-rest-init-id.case
+++ b/src/dstr-binding/ary-ptrn-rest-init-id.case
@@ -3,7 +3,9 @@
 /*---
 template: default
 desc: Reset element (identifier) does not support initializer
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     13.3.3 Destructuring Binding Patterns
 
diff --git a/src/dstr-binding/ary-ptrn-rest-init-obj.case b/src/dstr-binding/ary-ptrn-rest-init-obj.case
index cfcee7403f9e981fa1f380892af3a545a94516ab..dc3cf7437a5ef1688611ac0558c6c793cac4865e 100644
--- a/src/dstr-binding/ary-ptrn-rest-init-obj.case
+++ b/src/dstr-binding/ary-ptrn-rest-init-obj.case
@@ -3,7 +3,9 @@
 /*---
 template: default
 desc: Reset element (nested object pattern) does not support initializer
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     13.3.3 Destructuring Binding Patterns
 
diff --git a/src/dstr-binding/ary-ptrn-rest-not-final-ary.case b/src/dstr-binding/ary-ptrn-rest-not-final-ary.case
index 416826354eb8f0e62747d36d5be6256c0bc68395..c76c83d0a4bf35c6a9b74ce4bb1f5692fb61159f 100644
--- a/src/dstr-binding/ary-ptrn-rest-not-final-ary.case
+++ b/src/dstr-binding/ary-ptrn-rest-not-final-ary.case
@@ -3,7 +3,9 @@
 /*---
 template: default
 desc: Rest element (array binding pattern) may not be followed by any element
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     13.3.3 Destructuring Binding Patterns
 
diff --git a/src/dstr-binding/ary-ptrn-rest-not-final-id.case b/src/dstr-binding/ary-ptrn-rest-not-final-id.case
index 9594641608b3e95da780a8b2e2af28fb61bd39d7..962733013a22c95c9df3b758c154e473e76f2cfc 100644
--- a/src/dstr-binding/ary-ptrn-rest-not-final-id.case
+++ b/src/dstr-binding/ary-ptrn-rest-not-final-id.case
@@ -3,7 +3,9 @@
 /*---
 template: default
 desc: Rest element (identifier) may not be followed by any element
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     13.3.3 Destructuring Binding Patterns
 
diff --git a/src/dstr-binding/ary-ptrn-rest-not-final-obj.case b/src/dstr-binding/ary-ptrn-rest-not-final-obj.case
index f5ab82db4b93f9aa0bb16f5c8df4de2e442cb004..00c70507ead8b72ba85f84fca741ce92401f68a6 100644
--- a/src/dstr-binding/ary-ptrn-rest-not-final-obj.case
+++ b/src/dstr-binding/ary-ptrn-rest-not-final-obj.case
@@ -3,7 +3,9 @@
 /*---
 template: default
 desc: Rest element (object binding pattern) may not be followed by any element
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     13.3.3 Destructuring Binding Patterns
 
diff --git a/test/annexB/language/comments/multi-line-html-close.js b/test/annexB/language/comments/multi-line-html-close.js
index 22a8b173ad3f9259b439973603971fa4ab0bf205..5ddd86c57e4e1ec5e9b2c12e21c126679b17a073 100644
--- a/test/annexB/language/comments/multi-line-html-close.js
+++ b/test/annexB/language/comments/multi-line-html-close.js
@@ -17,7 +17,9 @@ info: |
 
     HTMLCloseComment ::
       WhiteSpaceSequence[opt] SingleLineDelimitedCommentSequence[opt] --> SingleLineCommentChars[opt]
-negative: Test262Error
+negative:
+  phase: runtime
+  type: Test262Error
 ---*/
 
 var counter = 0;
diff --git a/test/annexB/language/comments/single-line-html-close-asi.js b/test/annexB/language/comments/single-line-html-close-asi.js
index d689436f1f4415e3773bcd3cff7a3ba4a22a8a01..86380d824c00b67f716e149e73c6da48ba53f422 100644
--- a/test/annexB/language/comments/single-line-html-close-asi.js
+++ b/test/annexB/language/comments/single-line-html-close-asi.js
@@ -19,7 +19,9 @@ info: |
 
     HTMLCloseComment ::
       WhiteSpaceSequence[opt] SingleLineDelimitedCommentSequence[opt] --> SingleLineCommentChars[opt]
-negative: Test262Error
+negative:
+  phase: runtime
+  type: Test262Error
 ---*/
 
 var foo = [23]
diff --git a/test/annexB/language/comments/single-line-html-close.js b/test/annexB/language/comments/single-line-html-close.js
index 30668118945b7c91e3116b42ecd5a256a60d11e1..8ffc317007ae4ba1e0e2511d85ac423e4ec6fc4d 100644
--- a/test/annexB/language/comments/single-line-html-close.js
+++ b/test/annexB/language/comments/single-line-html-close.js
@@ -17,7 +17,9 @@ info: |
 
     HTMLCloseComment ::
       WhiteSpaceSequence[opt] SingleLineDelimitedCommentSequence[opt] --> SingleLineCommentChars[opt]
-negative: Test262Error
+negative:
+  phase: runtime
+  type: Test262Error
 ---*/
 
 var counter = 0;
diff --git a/test/annexB/language/comments/single-line-html-open.js b/test/annexB/language/comments/single-line-html-open.js
index ae7188a7022caffe480d1bada6e763fb6a5461fd..39bab3b4f79d97ccf7cd65560bef2bcaf46db897 100644
--- a/test/annexB/language/comments/single-line-html-open.js
+++ b/test/annexB/language/comments/single-line-html-open.js
@@ -14,7 +14,9 @@ info: |
 
     SingleLineHTMLOpenComment ::
       <!--SingleLineCommentCharsopt
-negative: Test262Error
+negative:
+  phase: runtime
+  type: Test262Error
 ---*/
 
 var counter = 0;
diff --git a/test/annexB/language/expressions/object/__proto__-duplicate.js b/test/annexB/language/expressions/object/__proto__-duplicate.js
index 1d93e263a3dfb32c106720c5dad6e2c3d8d9c325..da984718c1302a7e0631f86a207f08923bd3a24a 100644
--- a/test/annexB/language/expressions/object/__proto__-duplicate.js
+++ b/test/annexB/language/expressions/object/__proto__-duplicate.js
@@ -9,7 +9,9 @@ info: |
     any duplicate entries for "__proto__" and at least two of those entries
     were obtained from productions of the form
     PropertyDefinition : PropertyName : AssignmentExpression .
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 ({
diff --git a/test/annexB/language/expressions/template-literal/legacy-octal-escape-sequence-strict.js b/test/annexB/language/expressions/template-literal/legacy-octal-escape-sequence-strict.js
index 84c08c04c6c8e61a9c8ebc37385507883850339e..8367f5b63fc4878e8e4c8e2661a3c7a9d8a069a7 100644
--- a/test/annexB/language/expressions/template-literal/legacy-octal-escape-sequence-strict.js
+++ b/test/annexB/language/expressions/template-literal/legacy-octal-escape-sequence-strict.js
@@ -7,7 +7,9 @@ description: >
     semantics of the surrounding context.
     The SV of EscapeSequence :: HexEscapeSequence is the SV of the
     HexEscapeSequence.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/annexB/language/statements/for-in/bare-initializer.js b/test/annexB/language/statements/for-in/bare-initializer.js
index 2ef778ecb0e893a1f5db01f345e87245ef0a4b42..08f106feac0f39299db35d0dfa61b2caceaac165 100644
--- a/test/annexB/language/statements/for-in/bare-initializer.js
+++ b/test/annexB/language/statements/for-in/bare-initializer.js
@@ -4,7 +4,9 @@
 esid: sec-initializers-in-forin-statement-heads
 description: >
     for-in heads prohibit AssignmentExpressions
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var a;
 throw NotEarlyError;
diff --git a/test/annexB/language/statements/for-in/const-initializer.js b/test/annexB/language/statements/for-in/const-initializer.js
index 1f79959dc1bcc0b052090d3591d98096253783db..e58d03f3d58b19b39e55229ab977273886fcf898 100644
--- a/test/annexB/language/statements/for-in/const-initializer.js
+++ b/test/annexB/language/statements/for-in/const-initializer.js
@@ -4,7 +4,9 @@
 esid: sec-initializers-in-forin-statement-heads
 description: >
     for-in initializers with const are prohibited
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 throw NotEarlyError;
 for (const a = 0 in {});
diff --git a/test/annexB/language/statements/for-in/let-initializer.js b/test/annexB/language/statements/for-in/let-initializer.js
index f7cc4750a8f0e9ad1e80bd2fd3c30ff7ea21dba4..05d145fa841365472b293f1007ebeeb75f5445b9 100644
--- a/test/annexB/language/statements/for-in/let-initializer.js
+++ b/test/annexB/language/statements/for-in/let-initializer.js
@@ -4,7 +4,9 @@
 esid: sec-initializers-in-forin-statement-heads
 description: >
     for-in initializers with let are prohibited
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 throw NotEarlyError;
 for (let a = 0 in {});
diff --git a/test/annexB/language/statements/for-in/strict-initializer.js b/test/annexB/language/statements/for-in/strict-initializer.js
index 60f00d283577b00224220042a1daf6b325e06fc1..5ebeaffccb06b0e9bffa6d0ccc769c5340e213c6 100644
--- a/test/annexB/language/statements/for-in/strict-initializer.js
+++ b/test/annexB/language/statements/for-in/strict-initializer.js
@@ -4,7 +4,9 @@
 esid: sec-initializers-in-forin-statement-heads
 description: >
     for-in initializers in strict mode are prohibited
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 throw NotEarlyError;
diff --git a/test/annexB/language/statements/for-in/var-arraybindingpattern-initializer.js b/test/annexB/language/statements/for-in/var-arraybindingpattern-initializer.js
index 2507c745028434c3af020850ed19b7d9995fdf7a..4002d79019e70ecd50513d1acc940828d4e8eadc 100644
--- a/test/annexB/language/statements/for-in/var-arraybindingpattern-initializer.js
+++ b/test/annexB/language/statements/for-in/var-arraybindingpattern-initializer.js
@@ -4,7 +4,9 @@
 esid: sec-initializers-in-forin-statement-heads
 description: >
     for-in initializers with ArrayBindingPatterns are always prohibited
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 throw NotEarlyError;
 for (var [a] = 0 in {});
diff --git a/test/annexB/language/statements/for-in/var-objectbindingpattern-initializer.js b/test/annexB/language/statements/for-in/var-objectbindingpattern-initializer.js
index 84c14d60b8d21c6970edfa480522e0be26c8236d..0269e034d76f8517943236e3323619be57c09918 100644
--- a/test/annexB/language/statements/for-in/var-objectbindingpattern-initializer.js
+++ b/test/annexB/language/statements/for-in/var-objectbindingpattern-initializer.js
@@ -4,7 +4,9 @@
 esid: sec-initializers-in-forin-statement-heads
 description: >
     for-in initializers with ObjectBindingPattern are always prohibited
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 throw NotEarlyError;
 for (var {a} = 0 in {});
diff --git a/test/language/arguments-object/10.5-1gs.js b/test/language/arguments-object/10.5-1gs.js
index 222a4ac1d24e890afa770abd302893ddd2c9d12d..0c148e5550b8d4a963b1b346796da32305c1cace 100644
--- a/test/language/arguments-object/10.5-1gs.js
+++ b/test/language/arguments-object/10.5-1gs.js
@@ -4,11 +4,12 @@
 /*---
 es5id: 10.5-1gs
 description: Strict Mode - arguments cannot be assigned to in a strict function
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 
 function f_10_5_1_gs(){
     arguments = 7;
diff --git a/test/language/asi/S7.9.2_A1_T1.js b/test/language/asi/S7.9.2_A1_T1.js
index 5a7921e8def21a822717f697133a1d3ac9e0c868..ab0a52e98592f47d6a7926be8876167eedb24b79 100644
--- a/test/language/asi/S7.9.2_A1_T1.js
+++ b/test/language/asi/S7.9.2_A1_T1.js
@@ -5,7 +5,9 @@
 info: Check examples for automatic semicolon insertion from the Standart
 es5id: 7.9.2_A1_T1
 description: "{ 1 2 } 3 is not a valid sentence in the ECMAScript grammar"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9.2_A1_T3.js b/test/language/asi/S7.9.2_A1_T3.js
index 5cb51f5d0f05349ed717ec37dbe079d56af1f1a8..fcbdfadddcb11aa8a6440124c5550e442795dc3d 100644
--- a/test/language/asi/S7.9.2_A1_T3.js
+++ b/test/language/asi/S7.9.2_A1_T3.js
@@ -5,7 +5,9 @@
 info: Check examples for automatic semicolon insertion from the Standart
 es5id: 7.9.2_A1_T3
 description: for( a ; b \n ) is not a valid sentence in the ECMAScript grammar
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9.2_A1_T6.js b/test/language/asi/S7.9.2_A1_T6.js
index c7eeea2c76bdf49118981f7709a6491f7f4816de..84dfd59a7a0f47f766b994ed9deb5dc14fa4366b 100644
--- a/test/language/asi/S7.9.2_A1_T6.js
+++ b/test/language/asi/S7.9.2_A1_T6.js
@@ -7,7 +7,9 @@ es5id: 7.9.2_A1_T6
 description: >
     if(a>b) \n else c=d is not a valid sentence in the ECMAScript
     grammar
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A10_T2.js b/test/language/asi/S7.9_A10_T2.js
index b99ed68c4252c94b97fe3ef8f22905f1aaabb7b6..29d262a7fed565d0876017ea6c9cd739645bef3c 100644
--- a/test/language/asi/S7.9_A10_T2.js
+++ b/test/language/asi/S7.9_A10_T2.js
@@ -5,7 +5,9 @@
 info: Check {} for automatic semicolon insertion
 es5id: 7.9_A10_T2
 description: Checking if execution of "{}*1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A10_T4.js b/test/language/asi/S7.9_A10_T4.js
index bf2a59e98f004bce2aa55e7454a5cdb4d237d37d..b617f178eb9a9058f0ff5f148afb46668ef1c9a1 100644
--- a/test/language/asi/S7.9_A10_T4.js
+++ b/test/language/asi/S7.9_A10_T4.js
@@ -5,7 +5,9 @@
 info: Check {} for automatic semicolon insertion
 es5id: 7.9_A10_T4
 description: Checking if execution of "({};)*1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A10_T6.js b/test/language/asi/S7.9_A10_T6.js
index 36f462f9acfb474c2f5d7ffadaa2372edbb1e14d..a4c5c73b0d6d72a86c9e0269a0a6863d10e5d41a 100644
--- a/test/language/asi/S7.9_A10_T6.js
+++ b/test/language/asi/S7.9_A10_T6.js
@@ -5,7 +5,9 @@
 info: Check {} for automatic semicolon insertion
 es5id: 7.9_A10_T6
 description: Checking if execution of "{} \n * 1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A10_T8.js b/test/language/asi/S7.9_A10_T8.js
index c439b1599d75216adf5de59606a2144b4e7b1c9f..9486998a302b4c75a4b07704153aa3462bed3876 100644
--- a/test/language/asi/S7.9_A10_T8.js
+++ b/test/language/asi/S7.9_A10_T8.js
@@ -5,7 +5,9 @@
 info: Check {} for automatic semicolon insertion
 es5id: 7.9_A10_T8
 description: Checking if execution of "{1 2} 3" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A11_T4.js b/test/language/asi/S7.9_A11_T4.js
index 45663bcee88e9cf08f5a9a5319e34c17581cee2e..a86ca4c14e06a141dd4ffdf9a2011c13d0891f30 100644
--- a/test/language/asi/S7.9_A11_T4.js
+++ b/test/language/asi/S7.9_A11_T4.js
@@ -5,7 +5,9 @@
 info: Check If Statement for automatic semicolon insertion
 es5id: 7.9_A11_T4
 description: Checking if execution of "if (false) x = 1 else x = -1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A11_T8.js b/test/language/asi/S7.9_A11_T8.js
index 314d52781e05ad1527bc75d973dd7773de58fcb1..79924c754ca8fef80ad31b589bf5cd58c6212d83 100644
--- a/test/language/asi/S7.9_A11_T8.js
+++ b/test/language/asi/S7.9_A11_T8.js
@@ -5,7 +5,9 @@
 info: Check If Statement for automatic semicolon insertion
 es5id: 7.9_A11_T8
 description: Use if (false) {x = 1}; \n else x=-1 and check x
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A4.js b/test/language/asi/S7.9_A4.js
index 35a01435251409ba40a4a7e26388429c6a23c732..6f27db7274669124adc77904a352887d33f35b94 100644
--- a/test/language/asi/S7.9_A4.js
+++ b/test/language/asi/S7.9_A4.js
@@ -5,7 +5,9 @@
 info: Check Throw Statement for automatic semicolon insertion
 es5id: 7.9_A4
 description: Try use Throw \n Expression construction
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A5.1_T1.js b/test/language/asi/S7.9_A5.1_T1.js
index e8d2d9e7824c1bb5d5f19085cf0614dfe99c3363..94049e80e3a98190d80b3fd2e8ca072412f9447c 100644
--- a/test/language/asi/S7.9_A5.1_T1.js
+++ b/test/language/asi/S7.9_A5.1_T1.js
@@ -5,7 +5,9 @@
 info: Check Postfix Increment Operator for automatic semicolon insertion
 es5id: 7.9_A5.1_T1
 description: Try use Variable \n ++ construction
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A5.3_T1.js b/test/language/asi/S7.9_A5.3_T1.js
index 402f82b6104293e4dbd633ceb246ac9a987151c9..0fd181f3a506f21488140d5add920830e52f65c5 100644
--- a/test/language/asi/S7.9_A5.3_T1.js
+++ b/test/language/asi/S7.9_A5.3_T1.js
@@ -5,7 +5,9 @@
 info: Check Postfix Decrement Operator for automatic semicolon insertion
 es5id: 7.9_A5.3_T1
 description: Try use Variable \n -- construction
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A5.7_T1.js b/test/language/asi/S7.9_A5.7_T1.js
index 5fcce9a1d5f77e51b8047d3e1ee05f1aa42630aa..c7cf7348630637e120fc053f1f68b7a4724fab7f 100644
--- a/test/language/asi/S7.9_A5.7_T1.js
+++ b/test/language/asi/S7.9_A5.7_T1.js
@@ -11,7 +11,9 @@ info: >
 
 es5id: 7.9_A5.7_T1
 description: Try use Variable1 \n ++ \n ++ \n Variable2 construction
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 var x=0, y=0;
diff --git a/test/language/asi/S7.9_A6.2_T1.js b/test/language/asi/S7.9_A6.2_T1.js
index 7134816e22c0d76e45be78027469d574164979e5..85dfe9e1e7787f4289efb999a8fdce32ed6d3520 100644
--- a/test/language/asi/S7.9_A6.2_T1.js
+++ b/test/language/asi/S7.9_A6.2_T1.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T1
 description: For header is (semicolon \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.2_T10.js b/test/language/asi/S7.9_A6.2_T10.js
index 201d7395525b81a47f7fc351a2d0b523e06f0e1f..e5da87931dbafa9f9a4d4c2f8c5151635076c46c 100644
--- a/test/language/asi/S7.9_A6.2_T10.js
+++ b/test/language/asi/S7.9_A6.2_T10.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T10
 description: For header is (\n false \n semicolon)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.2_T2.js b/test/language/asi/S7.9_A6.2_T2.js
index 8ada9e295bef0439611f51da0fa220652e1f40ca..f7b3bad3bef7887c399b9790b7c91c1eda9756f1 100644
--- a/test/language/asi/S7.9_A6.2_T2.js
+++ b/test/language/asi/S7.9_A6.2_T2.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T2
 description: For header is (\n semicolon \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.2_T3.js b/test/language/asi/S7.9_A6.2_T3.js
index c6e8e6e478d5402b42a6e0d4abb069658d9deeb8..c4c09c6124d7221d151aa86c7b6b7f43c84f9501 100644
--- a/test/language/asi/S7.9_A6.2_T3.js
+++ b/test/language/asi/S7.9_A6.2_T3.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T3
 description: For header is (\n semicolon)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.2_T4.js b/test/language/asi/S7.9_A6.2_T4.js
index 5daf51dc7af8c3f7361ad6eff7fcd62134ab3221..8b56116a7b1f8382b053b70d26654dfc08e89e22 100644
--- a/test/language/asi/S7.9_A6.2_T4.js
+++ b/test/language/asi/S7.9_A6.2_T4.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T4
 description: For header is (\n \n semicolon)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.2_T5.js b/test/language/asi/S7.9_A6.2_T5.js
index 27ffc7c287d28dfacb86480d6faacc5169f64b24..c14db6d8824dd72805ea23bd8925178159cd9484 100644
--- a/test/language/asi/S7.9_A6.2_T5.js
+++ b/test/language/asi/S7.9_A6.2_T5.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T5
 description: For header is (false semicolon false\n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.2_T6.js b/test/language/asi/S7.9_A6.2_T6.js
index 2cb7e7b3cc781f4a83cf4c5feea0f866b5f708b5..49a7ec981d7ef82812b69b27ab34768aebf2e533 100644
--- a/test/language/asi/S7.9_A6.2_T6.js
+++ b/test/language/asi/S7.9_A6.2_T6.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T6
 description: For header is (false semicolon \n false)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.2_T7.js b/test/language/asi/S7.9_A6.2_T7.js
index 98e1c25342c4f2a751e1addbc3d50401e877649c..ecd15214e9f8681e912ad2ff4cb06310f613fe20 100644
--- a/test/language/asi/S7.9_A6.2_T7.js
+++ b/test/language/asi/S7.9_A6.2_T7.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T7
 description: For header is (false \n semicolon \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.2_T8.js b/test/language/asi/S7.9_A6.2_T8.js
index 622bcae48972e5031a7a91b00699ac926cf97052..816d79bb9fba815964df600e409ea35d0f02664f 100644
--- a/test/language/asi/S7.9_A6.2_T8.js
+++ b/test/language/asi/S7.9_A6.2_T8.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T8
 description: For header is (false \n semicolon false \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.2_T9.js b/test/language/asi/S7.9_A6.2_T9.js
index 67588f2c049bc18955ebb31850b42c20cd0b18ae..91aead6ec47c1497d33c63dc32b17b40f99d5b35 100644
--- a/test/language/asi/S7.9_A6.2_T9.js
+++ b/test/language/asi/S7.9_A6.2_T9.js
@@ -8,7 +8,9 @@ info: >
     Use one semicolon
 es5id: 7.9_A6.2_T9
 description: For header is (\n semicolon false)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.3_T1.js b/test/language/asi/S7.9_A6.3_T1.js
index 84a1e927ff634dc2f2ffa9d788298cbe74001bb7..6986f5fa4b4806566fb00b0caa3d19bfb3b271cc 100644
--- a/test/language/asi/S7.9_A6.3_T1.js
+++ b/test/language/asi/S7.9_A6.3_T1.js
@@ -8,7 +8,9 @@ info: >
     Don`t use semicolons
 es5id: 7.9_A6.3_T1
 description: For header is (\n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.3_T2.js b/test/language/asi/S7.9_A6.3_T2.js
index 73c9ae4dc26025a6a5dc7a20c4250c6d6ed4c167..432d3ba53db2649b89ad0b8c452966ad90d52625 100644
--- a/test/language/asi/S7.9_A6.3_T2.js
+++ b/test/language/asi/S7.9_A6.3_T2.js
@@ -8,7 +8,9 @@ info: >
     Don`t use semicolons
 es5id: 7.9_A6.3_T2
 description: For header is (\n \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.3_T3.js b/test/language/asi/S7.9_A6.3_T3.js
index ed7bc7c14860b6d378d19a3ec7f043981cdf273e..a6e70cf0a6f06a5320e706f3d64db698ad5d663c 100644
--- a/test/language/asi/S7.9_A6.3_T3.js
+++ b/test/language/asi/S7.9_A6.3_T3.js
@@ -8,7 +8,9 @@ info: >
     Don`t use semicolons
 es5id: 7.9_A6.3_T3
 description: For header is (\n \n \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.3_T4.js b/test/language/asi/S7.9_A6.3_T4.js
index 334cffb1c7f106836070b2244d7f70d0df63e947..d9c61bcf25e5fde1bc71cfaa17cad560e5b46de5 100644
--- a/test/language/asi/S7.9_A6.3_T4.js
+++ b/test/language/asi/S7.9_A6.3_T4.js
@@ -8,7 +8,9 @@ info: >
     Don`t use semicolons
 es5id: 7.9_A6.3_T4
 description: For header is (\n false \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.3_T5.js b/test/language/asi/S7.9_A6.3_T5.js
index da20591fff2b03f256550c7d795e5ca159468d48..ff6f333324dd0dfd9662a988129fdfd73893165c 100644
--- a/test/language/asi/S7.9_A6.3_T5.js
+++ b/test/language/asi/S7.9_A6.3_T5.js
@@ -8,7 +8,9 @@ info: >
     Don`t use semicolons
 es5id: 7.9_A6.3_T5
 description: For header is (false \n false \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.3_T6.js b/test/language/asi/S7.9_A6.3_T6.js
index a456b4907a459673728235c8dbe376fa3f52592a..661e5adb5f2600df45c7ee0f71b815ce84f6a3aa 100644
--- a/test/language/asi/S7.9_A6.3_T6.js
+++ b/test/language/asi/S7.9_A6.3_T6.js
@@ -8,7 +8,9 @@ info: >
     Don`t use semicolons
 es5id: 7.9_A6.3_T6
 description: For header is (\n false \n false \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.3_T7.js b/test/language/asi/S7.9_A6.3_T7.js
index 4289645a1c0a62e195a2639c73129fcd1f39f375..bd3f910dc1bd19b7673e75df4254555d1e34c4bb 100644
--- a/test/language/asi/S7.9_A6.3_T7.js
+++ b/test/language/asi/S7.9_A6.3_T7.js
@@ -8,7 +8,9 @@ info: >
     Don`t use semicolons
 es5id: 7.9_A6.3_T7
 description: For header is (\n false \n false \n false \n)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.4_T1.js b/test/language/asi/S7.9_A6.4_T1.js
index 1d58d7249f62b6687e73fd50f37b1532024569ff..77edb266a72e31213d737f6643bbcba2828adb3e 100644
--- a/test/language/asi/S7.9_A6.4_T1.js
+++ b/test/language/asi/S7.9_A6.4_T1.js
@@ -7,7 +7,9 @@ es5id: 7.9_A6.4_T1
 description: >
     Three semicolons. For header is (false semicolon false semicolon
     false semicolon)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A6.4_T2.js b/test/language/asi/S7.9_A6.4_T2.js
index 7eb567287c3d9080ca436361b2e5619a5b2ad0d0..18bf2db74e8237ef9eda7b5494d7c2d156c98343 100644
--- a/test/language/asi/S7.9_A6.4_T2.js
+++ b/test/language/asi/S7.9_A6.4_T2.js
@@ -7,7 +7,9 @@ es5id: 7.9_A6.4_T2
 description: >
     Three semicolons. For header is (false semicolon false two
     semicolons false)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A9_T6.js b/test/language/asi/S7.9_A9_T6.js
index 0457fe39115ed1ab829c78c111c8d29a2358f385..cfe642e4ede358404e16c5ac2a0500635079ca68 100644
--- a/test/language/asi/S7.9_A9_T6.js
+++ b/test/language/asi/S7.9_A9_T6.js
@@ -5,7 +5,9 @@
 info: Check Do-While Statement for automatic semicolon insertion
 es5id: 7.9_A9_T6
 description: Execute do \n while(false)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A9_T7.js b/test/language/asi/S7.9_A9_T7.js
index 3d2fe4aefae3204dd55201105eaf99aeab7acb44..d8c6e6591e408692b4720909fef76da5678afdff 100644
--- a/test/language/asi/S7.9_A9_T7.js
+++ b/test/language/asi/S7.9_A9_T7.js
@@ -5,7 +5,9 @@
 info: Check Do-While Statement for automatic semicolon insertion
 es5id: 7.9_A9_T7
 description: Execute do \n\n while(false)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/asi/S7.9_A9_T8.js b/test/language/asi/S7.9_A9_T8.js
index 70f5d851f56bc0dd4ac591782a1dd1504e75c380..9abe51e53f2a0dcba642c23dff93880d6a18a778 100644
--- a/test/language/asi/S7.9_A9_T8.js
+++ b/test/language/asi/S7.9_A9_T8.js
@@ -5,7 +5,9 @@
 info: Check Do-While Statement for automatic semicolon insertion
 es5id: 7.9_A9_T8
 description: Execute do {}; \n while(false)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/block-scope/syntax/for-in/disallow-initialization-assignment.js b/test/language/block-scope/syntax/for-in/disallow-initialization-assignment.js
index fd16e9dab2326c2fe4642d0ca2239fc93ae9270c..15ba525158b3c56d2c59fa0c4c0b5c146d969865 100644
--- a/test/language/block-scope/syntax/for-in/disallow-initialization-assignment.js
+++ b/test/language/block-scope/syntax/for-in/disallow-initialization-assignment.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     for declaration:
     disallow initialization assignment
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (let x = 3 in {}) { }
 
diff --git a/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-with-and-without-initializer.js b/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-with-and-without-initializer.js
index 9af2e3d43bfbec07f6e436196b066cbd7181bd2a..3d9870e38d84ee5c5e4f013db2a13a1beea7d5df 100644
--- a/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-with-and-without-initializer.js
+++ b/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-with-and-without-initializer.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     for declaration:
     disallow multiple lexical bindings, with and without initializer
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (let x = 3, y in {}) { }
 
diff --git a/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-with-initializer.js b/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-with-initializer.js
index 40b0677e63274608977d28248a5ad2e468e63000..8531acc45b67461f2a70ed1401c9b82cfe595dbf 100644
--- a/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-with-initializer.js
+++ b/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-with-initializer.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     for declaration:
     disallow multiple lexical bindings, with initializer
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (let x = 3, y = 4 in {}) { }
 
diff --git a/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-without-and-with-initializer.js b/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-without-and-with-initializer.js
index f52bd0b7652f180b8911b2c8a38cdb9a08a17017..08a8fc854fb6d28eab7e3b5a95c5d32f94f9d49b 100644
--- a/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-without-and-with-initializer.js
+++ b/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings-without-and-with-initializer.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     for declaration:
     disallow multiple lexical bindings, without and with initializer
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (let x, y = 4 in {}) { }
 
diff --git a/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings.js b/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings.js
index 505314ac14f57f7359ce8503f2f664a3cf72adad..16093ffbd58665451d15f48269f0947035382b89 100644
--- a/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings.js
+++ b/test/language/block-scope/syntax/for-in/disallow-multiple-lexical-bindings.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     for declaration:
     disallow multiple lexical bindings
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (let x, y in {}) { }
 
diff --git a/test/language/block-scope/syntax/function-declarations/in-statement-position-do-statement-while-expression.js b/test/language/block-scope/syntax/function-declarations/in-statement-position-do-statement-while-expression.js
index 30e0c2790ce32eeb1696a388139f328eea4f7439..8b1a71b40a29c38d2bc7bb7725f3ef6fcf67e654 100644
--- a/test/language/block-scope/syntax/function-declarations/in-statement-position-do-statement-while-expression.js
+++ b/test/language/block-scope/syntax/function-declarations/in-statement-position-do-statement-while-expression.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     function declarations in statement position in strict mode:
     do Statement while ( Expression )
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 do function g() {} while (false)
diff --git a/test/language/block-scope/syntax/function-declarations/in-statement-position-for-statement.js b/test/language/block-scope/syntax/function-declarations/in-statement-position-for-statement.js
index 90d994cd774a1705043f02c1399c0a7f943e5ab4..b7fbcca67d95b631dc4063589ae2d8ffe992b340 100644
--- a/test/language/block-scope/syntax/function-declarations/in-statement-position-for-statement.js
+++ b/test/language/block-scope/syntax/function-declarations/in-statement-position-for-statement.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     function declarations in statement position in strict mode:
     for ( ;;) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 for (;false;) function g() {}
diff --git a/test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement-else-statement.js b/test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement-else-statement.js
index e3e3e783bf739f209c7870150fb8ca58e1429b78..a55f7e2d4d2490ac5ba286f64eeb542348dd54ab 100644
--- a/test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement-else-statement.js
+++ b/test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement-else-statement.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     function declarations in statement position in strict mode:
     if ( Expression ) Statement else Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 if (true) {} else function g() {}
diff --git a/test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement.js b/test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement.js
index 2931bdf1a426712d8bfc6b8d5b50bc0aed6ae536..3786ff764300ad7fe8a75a135c5a07bbcb9dfcf0 100644
--- a/test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement.js
+++ b/test/language/block-scope/syntax/function-declarations/in-statement-position-if-expression-statement.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     function declarations in statement position in strict mode:
     if ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 if (true) function g() {}
diff --git a/test/language/block-scope/syntax/function-declarations/in-statement-position-while-expression-statement.js b/test/language/block-scope/syntax/function-declarations/in-statement-position-while-expression-statement.js
index 07761246a35d64575087b17ed8e0618f8cc9e475..77d07425b519d907e98b4150406114e629793982 100644
--- a/test/language/block-scope/syntax/function-declarations/in-statement-position-while-expression-statement.js
+++ b/test/language/block-scope/syntax/function-declarations/in-statement-position-while-expression-statement.js
@@ -5,7 +5,9 @@ es6id: 13.1
 description: >
     function declarations in statement position in strict mode:
     while ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 while (false) function g() {}
diff --git a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-function-declaration.js b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-function-declaration.js
index 7dc9799f86eb7216699d247efed544fef333d086..df3332bc708d5f961cc23fd1892d6e977e8f0b7e 100644
--- a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-function-declaration.js
+++ b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-function-declaration.js
@@ -5,7 +5,9 @@ es6id: B.3.3
 description: >
     redeclaration within block:
     attempt to redeclare function declaration with function declaration
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 { function f() {} function f() {} }
 
diff --git a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-let.js b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-let.js
index c21ac71261fa37e2c1b80b6b2ea1fdc0ce325ca8..e8b8a57bde70461646feb48748109c862ab4091b 100644
--- a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-let.js
+++ b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-let.js
@@ -5,6 +5,8 @@ es6id: B.3.3
 description: >
     redeclaration within block:
     attempt to redeclare function declaration with let
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 { function f() {} let f; }
diff --git a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-var.js b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-var.js
index c9d6280ef9b47fd3d83e3438e24e9db0e5c9ed6d..c64bc6fc3f9ec10175b9b8ebda69188773bdcd67 100644
--- a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-var.js
+++ b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-function-declaration-with-var.js
@@ -5,6 +5,8 @@ es6id: B.3.3
 description: >
     redeclaration within block:
     attempt to redeclare function declaration with var
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 { function f() {} var f; }
diff --git a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-var-binding-with-let.js b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-var-binding-with-let.js
index 3f83a6194315615bdb6b5ca2f8000c1b5f26e330..017f9340ea899aaffe6e8d59663dd82dd6d839f9 100644
--- a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-var-binding-with-let.js
+++ b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-var-binding-with-let.js
@@ -5,7 +5,9 @@ es6id: B.3.3
 description: >
     redeclaration within block:
     attempt to redeclare var binding with let
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 { var f; let f; }
 
diff --git a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-var-with-function-declaration.js b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-var-with-function-declaration.js
index 7b0dd1a98886d8ac34c6f8fb3eecceab2e516021..51a846665ee7d9b0872145c3dda478e072daf21e 100644
--- a/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-var-with-function-declaration.js
+++ b/test/language/block-scope/syntax/redeclaration-in-block/attempt-to-redeclare-var-with-function-declaration.js
@@ -5,7 +5,9 @@ es6id: B.3.3
 description: >
     redeclaration within block:
     attempt to redeclare var with function declaration
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 { var f; function f() {} }
 
diff --git a/test/language/comments/S7.4_A2_T2.js b/test/language/comments/S7.4_A2_T2.js
index e46e9ef731975f4c3b4b8f3ba979a96c996909f7..8ea433480cf7f406288f7f68290327847051af09 100644
--- a/test/language/comments/S7.4_A2_T2.js
+++ b/test/language/comments/S7.4_A2_T2.js
@@ -5,7 +5,9 @@
 info: Correct interpretation of multi line comments
 es5id: 7.4_A2_T2
 description: Try use /*CHECK#1/. This is not closed multi line comment
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /*CHECK#1/
diff --git a/test/language/comments/S7.4_A3.js b/test/language/comments/S7.4_A3.js
index 422bc3d9c0b5acdfa38e55d557313ccb00c3e221..63a275d4210594c0e794003faadf2fcd66628ce0 100644
--- a/test/language/comments/S7.4_A3.js
+++ b/test/language/comments/S7.4_A3.js
@@ -5,7 +5,9 @@
 info: Multi line comments cannot nest
 es5id: 7.4_A3
 description: Try use nested comments
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /*CHECK#1*/
diff --git a/test/language/comments/S7.4_A4_T1.js b/test/language/comments/S7.4_A4_T1.js
index ea6281a671779c762946ef6f5439d3d2df532494..0a003a039fcbf0e53e9e99cbd900495a78c5fd18 100644
--- a/test/language/comments/S7.4_A4_T1.js
+++ b/test/language/comments/S7.4_A4_T1.js
@@ -5,7 +5,9 @@
 info: Single and Multi line comments are used together
 es5id: 7.4_A4_T1
 description: Try use 2 close comment tags
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /*CHECK#1*/
diff --git a/test/language/comments/S7.4_A4_T4.js b/test/language/comments/S7.4_A4_T4.js
index a6913e7d02b6f5671b0f7859d982f192e4ade0e6..7c1baab729b683201ecec576dde1b8e4cf5b166b 100644
--- a/test/language/comments/S7.4_A4_T4.js
+++ b/test/language/comments/S7.4_A4_T4.js
@@ -5,7 +5,9 @@
 info: Single and Multi line comments are used together
 es5id: 7.4_A4_T4
 description: Try to open Multi line comment at the end of Single comment
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /*CHECK#1*/
diff --git a/test/language/comments/multi-line-html-close-extra.js b/test/language/comments/multi-line-html-close-extra.js
index 211127d29f2e8a32e4c4193ce2cb2caf23c35b73..23b6dc6807a64626aadc44ec8c8354802375f45f 100644
--- a/test/language/comments/multi-line-html-close-extra.js
+++ b/test/language/comments/multi-line-html-close-extra.js
@@ -15,7 +15,9 @@ info: |
 
     MultiLineComment ::
       /* FirstCommentLine[opt] LineTerminator MultiLineCommentChars[opt] * / HTMLCloseComment[opt]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /*
diff --git a/test/language/comments/single-line-html-close-without-lt.js b/test/language/comments/single-line-html-close-without-lt.js
index 770e24eec3c66b4e59b2729353980063262b006d..400689ce9da4f035567e119a11d0687390470f5e 100644
--- a/test/language/comments/single-line-html-close-without-lt.js
+++ b/test/language/comments/single-line-html-close-without-lt.js
@@ -14,7 +14,9 @@ info: |
 
     HTMLCloseComment ::
       WhiteSpaceSequence[opt] SingleLineDelimitedCommentSequence[opt] --> SingleLineCommentChars[opt]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 ;-->
diff --git a/test/language/directive-prologue/10.1.1-2gs.js b/test/language/directive-prologue/10.1.1-2gs.js
index 057858a6b0bc9c52b8f03baa59e894208b105f59..c503c48619ea4cec37b20e48740eceb109b83e8a 100644
--- a/test/language/directive-prologue/10.1.1-2gs.js
+++ b/test/language/directive-prologue/10.1.1-2gs.js
@@ -6,7 +6,9 @@ es5id: 10.1.1-2gs
 description: >
     Strict Mode - Use Strict Directive Prologue is ''use strict''
     which lost the last character ';'
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [raw]
 ---*/
 
diff --git a/test/language/directive-prologue/10.1.1-5gs.js b/test/language/directive-prologue/10.1.1-5gs.js
index 12904b99a5e82aa53ca01103f3b661bf0318ca0b..d77ac7706ca17daa550ac7389e99f0f2afc4fa8d 100644
--- a/test/language/directive-prologue/10.1.1-5gs.js
+++ b/test/language/directive-prologue/10.1.1-5gs.js
@@ -6,7 +6,9 @@ es5id: 10.1.1-5gs
 description: >
     Strict Mode - Use Strict Directive Prologue is ''use strict';'
     which appears at the start of the code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [raw]
 ---*/
 
diff --git a/test/language/directive-prologue/10.1.1-8gs.js b/test/language/directive-prologue/10.1.1-8gs.js
index b64b5126d48933a4a86452fea9206669fd3422eb..9a298adf020a22c4766b894105cd2f5afe539054 100644
--- a/test/language/directive-prologue/10.1.1-8gs.js
+++ b/test/language/directive-prologue/10.1.1-8gs.js
@@ -6,11 +6,12 @@ es5id: 10.1.1-8gs
 description: >
     Strict Mode - Use Strict Directive Prologue is ''use strict';'
     which appears twice in the code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [raw]
 ---*/
 
 "use strict";
 "use strict";
-throw NotEarlyError;
 var public = 1;
diff --git a/test/language/directive-prologue/14.1-4gs.js b/test/language/directive-prologue/14.1-4gs.js
index 13c9674c75b4153907d949dfa5ea0a6e9484a229..d0069a3df21266701eb592186b9c8cb8a00e0b9e 100644
--- a/test/language/directive-prologue/14.1-4gs.js
+++ b/test/language/directive-prologue/14.1-4gs.js
@@ -6,7 +6,9 @@ es5id: 14.1-4gs
 description: >
     StrictMode - a Use Strict Directive followed by a strict mode
     violation
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [raw]
 ---*/
 
diff --git a/test/language/directive-prologue/14.1-5gs.js b/test/language/directive-prologue/14.1-5gs.js
index 83f8df0d10e4a0c66a1fb13e2d91049247f50643..9a8308e9758b1026e88e6cfdb922e1adfb652bc1 100644
--- a/test/language/directive-prologue/14.1-5gs.js
+++ b/test/language/directive-prologue/14.1-5gs.js
@@ -6,7 +6,9 @@ es5id: 14.1-5gs
 description: >
     StrictMode - a Use Strict Directive embedded in a directive
     prologue followed by a strict mode violation
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [raw]
 ---*/
 
diff --git a/test/language/eval-code/direct/parse-failure-2.js b/test/language/eval-code/direct/parse-failure-2.js
index 54716deafa3ed3d8959352f07ede57ad51dcf2d8..51c361873052625858319bae83cbbc8ac5867c41 100644
--- a/test/language/eval-code/direct/parse-failure-2.js
+++ b/test/language/eval-code/direct/parse-failure-2.js
@@ -5,9 +5,9 @@
 info: If the parse fails, throw a SyntaxError exception (but see also clause 16)
 es5id: 15.1.2.1_A2_T2
 description: Checking if execution of "eval("x = 1; x\u000A++")" fails
-negative: SyntaxError
 ---*/
 
-//CHECK#1
 var x;
-eval("x = 1; x\u000A++");
+assert.throws(SyntaxError, function() {
+  eval("x = 1; x\u000A++");
+});
diff --git a/test/language/eval-code/direct/var-env-global-lex-non-strict.js b/test/language/eval-code/direct/var-env-global-lex-non-strict.js
index 364d4c5d5967068e814a3445de368bb82ccb011c..5b87d9ed55a87ba6cd760960cfab1550404448ce 100644
--- a/test/language/eval-code/direct/var-env-global-lex-non-strict.js
+++ b/test/language/eval-code/direct/var-env-global-lex-non-strict.js
@@ -13,7 +13,9 @@ info: |
              2. NOTE: eval will not create a global var declaration that would
                 be shadowed by a global lexical declaration.
        [...]
-negative: SyntaxError
+negative:
+  phase: runtime
+  type: SyntaxError
 flags: [noStrict]
 features: [let]
 ---*/
diff --git a/test/language/eval-code/indirect/parse-failure-2.js b/test/language/eval-code/indirect/parse-failure-2.js
index d04397fa833ab427b1fcb323b1393f61985e0b1e..e15f39dce5924b68e5b637b33dcf4fb7ee721df3 100644
--- a/test/language/eval-code/indirect/parse-failure-2.js
+++ b/test/language/eval-code/indirect/parse-failure-2.js
@@ -5,7 +5,9 @@ info: If the parse fails, throw a SyntaxError exception (but see also clause 16)
 esid: sec-performeval
 es5id: 15.1.2.1_A2_T2
 description: Checking if execution of "(0,eval)("x = 1; x\u000A++")" fails
-negative: SyntaxError
+negative:
+  phase: runtime
+  type: SyntaxError
 ---*/
 
 var x;
diff --git a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-ary.js b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-ary.js
index bb142af3bd01e2ae5122b2e1b168605e8565a41c..25c8f860ed8d16610fc418a656941c9f656a4e83 100644
--- a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-id.js b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-id.js
index 0fcfd27a2e0d9d91076563f839c050097119bc7d..79cdb95426a9e27c5add542027f04be5100e7365 100644
--- a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-obj.js b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-obj.js
index 37ff29b22fb10064c6452bd53c7dacdcd37a5cb4..507cc9d191da48d2760424706572e3bb5b2be559 100644
--- a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-ary.js
index 2d24128c7ef308eed496904ddaa7c3515b827007..58949583e608ff4e4c9f34d064c372c2871f04f5 100644
--- a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-id.js b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-id.js
index 26e2e06ebddaff4b5276a3353705731f074bb234..fb5885db9a93784d509064fb1a96f6550bbb7865 100644
--- a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-obj.js
index 7df64255b10d7bac78b80aab86b375501b1d35ea..fb80f47de0c6464e75115502b20e24abd98ea4d0 100644
--- a/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/arrow-function/dstr-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-ary.js b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-ary.js
index f29bdba84e43dfda057a5119f7ae00839046f385..55883e08232176af9a6aeffae22a1a8b9abdffc5 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-id.js b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-id.js
index eb7e99091c304a84e17be210f9670718f232a820..5dbafff120bc4dfd4a554d851e8b92bcd108745d 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-obj.js b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-obj.js
index 1b0a57bcc5ef49907f0221c21bdbb42fe7389f20..d0f6e583a247c3f1ea7a3856445c76df0f81a470 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-ary.js
index d3a812c951d3d006ede0ff85b73efe940dbdf022..b941b00e94b4446c748547421e95a49b825d1320 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-id.js b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-id.js
index 2fb75b7f7733dd66e6624065e4d0e3c672fa8af0..9ecf585ae65c08c1bfe4daaf1c624ada087daf8d 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-obj.js
index 8b16b1f347cca6bf7de7a2aef17b5a7d628a2d7e..6a1d0ac429eaba5a76d45544af3f65e3d8e26eb3 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/param-dflt-yield-expr.js b/test/language/expressions/arrow-function/param-dflt-yield-expr.js
index 20e6786187cbc9d7884a0da0e708cad753a7cd77..b7a1af16754c3d5488ab1a2113cff97595e35783 100644
--- a/test/language/expressions/arrow-function/param-dflt-yield-expr.js
+++ b/test/language/expressions/arrow-function/param-dflt-yield-expr.js
@@ -16,7 +16,9 @@ info: |
 
   - It is a Syntax Error if ArrowParameters Contains YieldExpression is true. 
 features: [generators, default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function *g() {
diff --git a/test/language/expressions/arrow-function/param-dflt-yield-id-non-strict.js b/test/language/expressions/arrow-function/param-dflt-yield-id-non-strict.js
index 90ce97b2a76794d5cd147295d601f6179e84ffb2..ee32a554923225d2cfac7ef8bb40af31ab95b711 100644
--- a/test/language/expressions/arrow-function/param-dflt-yield-id-non-strict.js
+++ b/test/language/expressions/arrow-function/param-dflt-yield-id-non-strict.js
@@ -12,7 +12,9 @@ info: |
     ArrowParameters[?Yield] [no LineTerminator here] => ConciseBody[?In]
 features: [default-parameters]
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var yield = 23;
diff --git a/test/language/expressions/arrow-function/param-dflt-yield-id-strict.js b/test/language/expressions/arrow-function/param-dflt-yield-id-strict.js
index 0e84b4b3fd428e9b49ce17ca6a06e846d8bb8016..99a4a4c5ed0a08630024a54a39a46ad542a3eb78 100644
--- a/test/language/expressions/arrow-function/param-dflt-yield-id-strict.js
+++ b/test/language/expressions/arrow-function/param-dflt-yield-id-strict.js
@@ -11,7 +11,9 @@ info: |
     ArrowParameters[?Yield] [no LineTerminator here] => ConciseBody[?In]
 features: [default-parameters]
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (x = yield) => {};
diff --git a/test/language/expressions/arrow-function/params-dflt-duplicates.js b/test/language/expressions/arrow-function/params-dflt-duplicates.js
index 8b338f7e4223b36afc03f35c6d3e0583f97efbfd..ce0db0a383538a448e9005f7db1ff8eb99260dbc 100644
--- a/test/language/expressions/arrow-function/params-dflt-duplicates.js
+++ b/test/language/expressions/arrow-function/params-dflt-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/params-dflt-rest.js b/test/language/expressions/arrow-function/params-dflt-rest.js
index 5981599564525d7fe59a8926fd4415a824f81b48..3841c85a897136a964072499e14ffbb0e419df06 100644
--- a/test/language/expressions/arrow-function/params-dflt-rest.js
+++ b/test/language/expressions/arrow-function/params-dflt-rest.js
@@ -7,7 +7,9 @@ esid: sec-arrow-function-definitions-runtime-semantics-evaluation
 es6id: 14.2.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ArrowFunction : ArrowParameters => ConciseBody
 
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier-futurereservedword.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier-futurereservedword.js
index cbbac94aaee27c27224da8b14b3fa3eec68592a6..341fc6682d49e74cbf6f365fab8b449e208f23ee 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier-futurereservedword.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier-futurereservedword.js
@@ -15,6 +15,8 @@ description: >
 
     ReservedWord : FutureReservedWord
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = enum => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier-strict-futurereservedword.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier-strict-futurereservedword.js
index e0a3e0532715c4430a87189730cc896cafb4e480..626ecc65dc75cea1abea6a8c8339fc5c766da0bf 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier-strict-futurereservedword.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier-strict-futurereservedword.js
@@ -17,7 +17,9 @@ description: >
 
     Strict Mode
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 var af = package => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier.js
index 4833155bf02f8b791ebe09cf5251da8634cf58a3..6361fc7cf4604f303d2eb3aefdaf127a1958f2c2 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-identifier.js
@@ -15,6 +15,8 @@ description: >
 
     ReservedWord : Keyword
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = switch => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-arguments.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-arguments.js
index 41185ef6ebcc66139fd60406f79452a8ee841e33..64df5df6ec21f819cf956489914fe45444c4e271 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-arguments.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-arguments.js
@@ -9,7 +9,9 @@ description: >
 
     No parameter named "arguments"
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 var af = arguments => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-eval.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-eval.js
index bd4662e33b83af6b808225d5baa7a10d8681809b..157a409b1dc552338ec978aea57c602dcbdf4b0f 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-eval.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-eval.js
@@ -10,7 +10,9 @@ description: >
 
     No parameter named "eval"
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 var af = eval => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-yield.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-yield.js
index 98154b7b0fd71a5f383e7b4d05f07e2efe911a91..fbaa2dfe1ff9802db337df4082b8f30df8730934 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-yield.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-no-yield.js
@@ -10,7 +10,9 @@ description: >
 
     No parameter named "yield"
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 var af = yield => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-rest.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-rest.js
index 2deba68f533a54a6abba67504e7d4c09227894dd..403ec4cccff6584059680991df641509ce3514aa 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-rest.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-bindingidentifier-rest.js
@@ -7,6 +7,8 @@ description: >
 
     Includes ...rest
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = ...x => x;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-arguments.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-arguments.js
index a956a4c133f5543d4a22f857f15eb0b5388e74b3..ace6c9a7deca9320c6f0e4a12b0926b351e9a5d8 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-arguments.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-arguments.js
@@ -14,7 +14,9 @@ description: >
 
     No parameters named "arguments"
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 var af = (arguments) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-1.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-1.js
index 25507d52bbeb3092d587392a03294083a8ef194f..2cdb597dd3079833acb54251dd9eec8cdf502235 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-1.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-1.js
@@ -16,6 +16,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = (x, [x]) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-2.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-2.js
index f14fd4adae368cc8c4466bec855f314d7f18dc45..8c3258539b7a68e896a07d46648b5c57d65d7c16 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-2.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-2.js
@@ -16,6 +16,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = ([x, x]) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-3.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-3.js
index 62cd34fbc45d20cef6d99d615af8936161563e89..a3b0b7160ce28576011975cae782f10ca2ef43b6 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-3.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-array-3.js
@@ -18,6 +18,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = ([x], ...x) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-1.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-1.js
index 726529fb3e549ef7087df32cd5d6fd6701a66560..540fd0488e830ba9bea20f4410a2656d086fd725 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-1.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-1.js
@@ -16,6 +16,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = (x, {x}) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-2.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-2.js
index 87ea21470912b21f9465eba14fd16b34b6fa804b..3c0e2983435f1e8ddaae96111f8cfc184b8e474e 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-2.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-2.js
@@ -18,6 +18,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = (x, {y: x}) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-3.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-3.js
index 9da505ef407ff0e4f4a597e51c87f51bafea06f1..eb058efe22690974113ad30399ab26a50d5f2b10 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-3.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-3.js
@@ -18,6 +18,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = ({x}, {y: x}) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-4.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-4.js
index fd05542d15df56fb9cfa1efcb1d1fcea74838d73..3b3151c6073063a5b69b0727fcaf6cbbde22ab2e 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-4.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-4.js
@@ -20,6 +20,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = ({x}, ...x) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-5.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-5.js
index b547b6cb3ff0eb573e7f953421b35470db18d526..eb45aee893446fedcfc6477d82ca9119b6ff7024 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-5.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-5.js
@@ -20,6 +20,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = ({y: x}, ...x) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-6.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-6.js
index d16d4d033f00d1b6d618fee1572e8f53a71d82a8..e39c273a096b7d24692a7ae4f6afe73009e49b29 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-6.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-binding-object-6.js
@@ -18,6 +18,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = ({y: x, x}) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-rest.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-rest.js
index 368c8e9e0142f42a1c9f916be7965d735a1bd84e..5d36abb1f86cfa66cb8886392837b43ce16401fa 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-rest.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates-rest.js
@@ -14,6 +14,8 @@ description: >
 
     No duplicates, rest
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = (x, ...x) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates.js
index 56e1cb3a4a648591f2c0f250b565ce4b27d75dcb..e4e7a82c895209514eedc5662f6d20a0d64d3f32 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-duplicates.js
@@ -14,6 +14,8 @@ description: >
 
     No duplicates
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = (x, x) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-eval.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-eval.js
index d38f6acc8d18c09361f9dc511b1da6166d761a5c..70bb0782e2a00f2b6e55df89c05428c114d9407a 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-eval.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-eval.js
@@ -14,7 +14,9 @@ description: >
 
     No parameters named "eval"
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 var af = (eval) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-yield.js b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-yield.js
index 4152b370729cb98ea5ee93e19df266ff6ed6a210..1511a903b2bb45bca904f872e8fec1fb4ebc7f1a 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-yield.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/arrowparameters-cover-no-yield.js
@@ -9,7 +9,9 @@ description: >
 
     No parameter named "yield"
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 var af = (yield) => 1;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters-expression-body.js b/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters-expression-body.js
index c3321ec5f1327312700c70c0c2df8ff040dea6eb..6a836f6027430194b497f9087b5cf85b4b9c7425 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters-expression-body.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters-expression-body.js
@@ -6,7 +6,9 @@ description: >
     ArrowFunction[In, Yield] :
       ArrowParameters[?Yield] [no LineTerminator here] => ConciseBody[?In]
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = x
 => x;
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters.js b/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters.js
index 27c3d9c70fb3e0f4b813116069abebc4ea4003f8..299198226d0191df0a339f28d0172c879541b788 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid-parenless-parameters.js
@@ -8,7 +8,9 @@ description: >
 
     No parens around ArrowParameters
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = x
 => {};
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid.js b/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid.js
index e7bc0458a47a93bd1e834e1da1c89d3724d49c19..d448e0ff6ecb5737ef3fa67d87bfee8431888d40 100644
--- a/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/asi-restriction-invalid.js
@@ -5,7 +5,9 @@ es6id: 14.2
 description: >
     ArrowFunction[In, Yield] :
       ArrowParameters[?Yield] [no LineTerminator here] => ConciseBody[?In]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var af = ()
 => {};
diff --git a/test/language/expressions/arrow-function/syntax/early-errors/use-strict-with-non-simple-param.js b/test/language/expressions/arrow-function/syntax/early-errors/use-strict-with-non-simple-param.js
index b7b5d06bf635c8be0f91d6a50f70a23089da947f..496bdbef0d09d6035fdec7e3d0f23286d9a9a2e4 100755
--- a/test/language/expressions/arrow-function/syntax/early-errors/use-strict-with-non-simple-param.js
+++ b/test/language/expressions/arrow-function/syntax/early-errors/use-strict-with-non-simple-param.js
@@ -9,7 +9,9 @@ info: >
   Static Semantics: Early Errors
 
   It is a Syntax Error if ContainsUseStrict of ConciseBody is true and IsSimpleParameterList of ArrowParameters is false.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var f = (a = 0) => {
diff --git a/test/language/expressions/assignment/dstr-array-elem-init-simple-strict.js b/test/language/expressions/assignment/dstr-array-elem-init-simple-strict.js
index 6e76aa791bccf554af8848437778697c2d882d55..fc664f20256f76636c5777ac93a8f4a8a42f1926 100644
--- a/test/language/expressions/assignment/dstr-array-elem-init-simple-strict.js
+++ b/test/language/expressions/assignment/dstr-array-elem-init-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-elem-init-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-array-elem-init-yield-ident-invalid.js
index d1720c3c7e3e024a6c6620866fb911b340489764..b0946d2369559e455d12ee2993d7da7c8d40631c 100644
--- a/test/language/expressions/assignment/dstr-array-elem-init-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-elem-init-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-elem-nested-array-invalid.js b/test/language/expressions/assignment/dstr-array-elem-nested-array-invalid.js
index bc332cc21fcf9b2f9603e4ea13602bbc91555680..b99fc7e01214c4172b6bc4038e309ed410e913d2 100644
--- a/test/language/expressions/assignment/dstr-array-elem-nested-array-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-elem-nested-array-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-elem-nested-array-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-array-elem-nested-array-yield-ident-invalid.js
index a1d282f4ed8def44a8f2e79742ac2326a4a6cac3..eafc337699a8c3a9c1c13ebbc56762ed5d96c4e5 100644
--- a/test/language/expressions/assignment/dstr-array-elem-nested-array-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-elem-nested-array-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-elem-nested-obj-invalid.js b/test/language/expressions/assignment/dstr-array-elem-nested-obj-invalid.js
index 1f4c1b21307454b1519e0f000b1e001d2c03ed34..064feceaef3047e5ed45f8d752a7dba363bba6a9 100644
--- a/test/language/expressions/assignment/dstr-array-elem-nested-obj-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-elem-nested-obj-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-elem-nested-obj-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-array-elem-nested-obj-yield-ident-invalid.js
index 697a59cebbd745f15afd46db95b579465984b940..32d002aef08496fd6b20d6419da43ec962d6eaf1 100644
--- a/test/language/expressions/assignment/dstr-array-elem-nested-obj-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-elem-nested-obj-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-elem-target-simple-strict.js b/test/language/expressions/assignment/dstr-array-elem-target-simple-strict.js
index 6f52f990cc958af5330f8f92d3d7e8c37541e643..54b621bf3a9593c6549976b7fe984cd8b81e051c 100644
--- a/test/language/expressions/assignment/dstr-array-elem-target-simple-strict.js
+++ b/test/language/expressions/assignment/dstr-array-elem-target-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-elem-target-yield-invalid.js b/test/language/expressions/assignment/dstr-array-elem-target-yield-invalid.js
index 59c9a950d133c33ee60366ced6fa5d3331446f22..198c1966eef2e798c035669349812db365ace6fc 100644
--- a/test/language/expressions/assignment/dstr-array-elem-target-yield-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-elem-target-yield-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-before-element.js b/test/language/expressions/assignment/dstr-array-rest-before-element.js
index 2e564cdb58e5aaee9157a60083fc11da70fc2df4..c2436e6f6203e5bf0c766bfc5cf9a977cd36563d 100644
--- a/test/language/expressions/assignment/dstr-array-rest-before-element.js
+++ b/test/language/expressions/assignment/dstr-array-rest-before-element.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-before-elision.js b/test/language/expressions/assignment/dstr-array-rest-before-elision.js
index 64ff235d75fcbee821910fc8f66090b95210fc32..5fc21593c53a8e88f18aa17151b10aa681db24e8 100644
--- a/test/language/expressions/assignment/dstr-array-rest-before-elision.js
+++ b/test/language/expressions/assignment/dstr-array-rest-before-elision.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-before-rest.js b/test/language/expressions/assignment/dstr-array-rest-before-rest.js
index 6e71a160dc83644a6f7e3a3b89427ed8e0a3ed17..b72faab1721d224ebdc768d716e717ca9c82ce44 100644
--- a/test/language/expressions/assignment/dstr-array-rest-before-rest.js
+++ b/test/language/expressions/assignment/dstr-array-rest-before-rest.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-elision-invalid.js b/test/language/expressions/assignment/dstr-array-rest-elision-invalid.js
index e21fba847b683bae0ec29da96d0451117589cc95..e486207518fb94af63005fb50f3e3ef76b154a79 100644
--- a/test/language/expressions/assignment/dstr-array-rest-elision-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-rest-elision-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-init.js b/test/language/expressions/assignment/dstr-array-rest-init.js
index c5060f00710f1636b0a630876fb44b7fe587a412..8bf56b8cf34f49333a0347cdcb520065fd0be1e4 100644
--- a/test/language/expressions/assignment/dstr-array-rest-init.js
+++ b/test/language/expressions/assignment/dstr-array-rest-init.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-nested-array-invalid.js b/test/language/expressions/assignment/dstr-array-rest-nested-array-invalid.js
index 76218cb566f5685efcadffbced0b998b154a5188..f061c4721a27d1e0eec4857555ddc9a1b565f66f 100644
--- a/test/language/expressions/assignment/dstr-array-rest-nested-array-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-rest-nested-array-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-nested-array-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-array-rest-nested-array-yield-ident-invalid.js
index 26da6af702e6c017756374bbec6d670212f451a2..5a7e91b2b39d478f43f0de88718a6dd23d55d8d3 100644
--- a/test/language/expressions/assignment/dstr-array-rest-nested-array-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-rest-nested-array-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-nested-obj-invalid.js b/test/language/expressions/assignment/dstr-array-rest-nested-obj-invalid.js
index 7398cf2fa892b51fbe3db9f06ea072ffd908cb16..07e4616b0c1c72f37a8b8f9cd09837f46d0999bf 100644
--- a/test/language/expressions/assignment/dstr-array-rest-nested-obj-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-rest-nested-obj-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-nested-obj-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-array-rest-nested-obj-yield-ident-invalid.js
index d89d68fe2bf2b991723b260ac3ec17092bc96c3a..14a64275adbdfbe9b880952c159d4d999ec9ee3c 100644
--- a/test/language/expressions/assignment/dstr-array-rest-nested-obj-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-rest-nested-obj-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-array-rest-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-array-rest-yield-ident-invalid.js
index ced6e4a006883ba4af2ee54ba23ce6ba5d648f96..c33b16f84befa722946c8ecb818e62c80ef710c0 100644
--- a/test/language/expressions/assignment/dstr-array-rest-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-array-rest-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-id-identifier-yield-expr.js b/test/language/expressions/assignment/dstr-obj-id-identifier-yield-expr.js
index ba6f300be587da23775557ed5b30e1b346ed1e2f..d863aefde4d5b9dd098627734c7dc21447c31019 100644
--- a/test/language/expressions/assignment/dstr-obj-id-identifier-yield-expr.js
+++ b/test/language/expressions/assignment/dstr-obj-id-identifier-yield-expr.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [generators, destructuring-binding]
 flags: [generated, noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-id-identifier-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-obj-id-identifier-yield-ident-invalid.js
index 2f322d4a2fc58029c28e7bed31afa8b9626f2b40..a1ca1be5bbacb38e58f479ba1393c56ac6e86da8 100644
--- a/test/language/expressions/assignment/dstr-obj-id-identifier-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-obj-id-identifier-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-id-init-simple-strict.js b/test/language/expressions/assignment/dstr-obj-id-init-simple-strict.js
index 6d8cf05b5c4b551513d26e20ffc4d4b40131e904..60f87ed08b705085192f9b3960f7efe3bdda976f 100644
--- a/test/language/expressions/assignment/dstr-obj-id-init-simple-strict.js
+++ b/test/language/expressions/assignment/dstr-obj-id-init-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-id-init-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-obj-id-init-yield-ident-invalid.js
index 554ab7b1989ef9abbe7c91916468bdd64a0b8dd3..d1f2eeb95c6b7be40d3cc02bec2201c38f4565ec 100644
--- a/test/language/expressions/assignment/dstr-obj-id-init-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-obj-id-init-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-id-simple-strict.js b/test/language/expressions/assignment/dstr-obj-id-simple-strict.js
index 9dc0badeca48756852d6732cd872b0e9d90acf97..a1c5e4e90d7be1ded41270358c076ab1c0c3b307 100644
--- a/test/language/expressions/assignment/dstr-obj-id-simple-strict.js
+++ b/test/language/expressions/assignment/dstr-obj-id-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-prop-elem-init-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-obj-prop-elem-init-yield-ident-invalid.js
index c4aa2269977d6b0f72d827a8a1bbab56578526c3..530230794a0d76411025fb7f36e4b9d80f677688 100644
--- a/test/language/expressions/assignment/dstr-obj-prop-elem-init-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-obj-prop-elem-init-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-prop-elem-target-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-obj-prop-elem-target-yield-ident-invalid.js
index 8651add4de9030303f3c3627dfd841d5687aeb7b..b79c3aed73973f50cc128d9217639b9debeadb96 100644
--- a/test/language/expressions/assignment/dstr-obj-prop-elem-target-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-obj-prop-elem-target-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-prop-nested-array-invalid.js b/test/language/expressions/assignment/dstr-obj-prop-nested-array-invalid.js
index 823daca3e598fed7c32cd4c81c8dde7f8271355e..b21a9fd3942a3da156af6a779f357227c1bf18a1 100644
--- a/test/language/expressions/assignment/dstr-obj-prop-nested-array-invalid.js
+++ b/test/language/expressions/assignment/dstr-obj-prop-nested-array-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-prop-nested-array-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-obj-prop-nested-array-yield-ident-invalid.js
index 71fac25e20bc177f7b7ca927c8322289aad0390a..cebe9165ffcf70dfff4513a204416d68b5591255 100644
--- a/test/language/expressions/assignment/dstr-obj-prop-nested-array-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-obj-prop-nested-array-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-prop-nested-obj-invalid.js b/test/language/expressions/assignment/dstr-obj-prop-nested-obj-invalid.js
index 59ee0a3f82a5ff125a82e3356b8e0f0c70fa63e4..2b663251e4b01115841ee2b6a8011ea97c252a0b 100644
--- a/test/language/expressions/assignment/dstr-obj-prop-nested-obj-invalid.js
+++ b/test/language/expressions/assignment/dstr-obj-prop-nested-obj-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/dstr-obj-prop-nested-obj-yield-ident-invalid.js b/test/language/expressions/assignment/dstr-obj-prop-nested-obj-yield-ident-invalid.js
index 166e8ded730d5b4274d2ef999718e14b309649bf..f6dac7ea3c7a4256db23cd6646f6f0f98f1f6864 100644
--- a/test/language/expressions/assignment/dstr-obj-prop-nested-obj-yield-ident-invalid.js
+++ b/test/language/expressions/assignment/dstr-obj-prop-nested-obj-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/expressions/assignment/non-simple-target.js b/test/language/expressions/assignment/non-simple-target.js
index d588b862b28282ee227b916869d3e589f8afcf05..1d4d587815a2490a5aeabe21e33d6aff6e9f2170 100644
--- a/test/language/expressions/assignment/non-simple-target.js
+++ b/test/language/expressions/assignment/non-simple-target.js
@@ -8,7 +8,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 = 1;
diff --git a/test/language/expressions/assignment/target-cover-newtarget.js b/test/language/expressions/assignment/target-cover-newtarget.js
index 2442cac6e95f51e8b68754801c6aef03523a240d..901ec3c40d12aaf78f48a660b674e176a5eed793 100644
--- a/test/language/expressions/assignment/target-cover-newtarget.js
+++ b/test/language/expressions/assignment/target-cover-newtarget.js
@@ -18,7 +18,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/assignment/target-cover-yieldexpr.js b/test/language/expressions/assignment/target-cover-yieldexpr.js
index 0cfad36ebc1390c343351c58d9d5583fba05e5ae..c0fe2e29b6e89811fa727279b9a4e3ff1a1410b2 100644
--- a/test/language/expressions/assignment/target-cover-yieldexpr.js
+++ b/test/language/expressions/assignment/target-cover-yieldexpr.js
@@ -21,7 +21,9 @@ info: |
 
   1. Return false.
 features: [generators]
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function* g() {
diff --git a/test/language/expressions/assignment/target-newtarget.js b/test/language/expressions/assignment/target-newtarget.js
index b4ebd6b5967d75f3df4ce0b4fdfdfaac90e9546d..d0eeeda0601bde027ab771087e61b08ec271425e 100644
--- a/test/language/expressions/assignment/target-newtarget.js
+++ b/test/language/expressions/assignment/target-newtarget.js
@@ -18,7 +18,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-NSPL-with-USD.js b/test/language/expressions/async-arrow-function/early-errors-arrow-NSPL-with-USD.js
index c96c4c77a3deb4f97097aecb5531d283666ee967..4b57ba77d43816871263b8de639dbf362a687e3c 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-NSPL-with-USD.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-NSPL-with-USD.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is *true* and IsSimpleParameterList of ArrowParameters is *false*.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async (x = 1) => {"use strict"}
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-arguments-in-formal-parameters.js b/test/language/expressions/async-arrow-function/early-errors-arrow-arguments-in-formal-parameters.js
index c3b0163991088f815896dde0da9a93a7107df213..321c8b87adf356df7bd9f278bb4bf75a9c3c1357 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-arguments-in-formal-parameters.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-arguments-in-formal-parameters.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains arguments
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals-default.js b/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals-default.js
index b33839ad419e0087a0d5cf51b1aa1513e59ccf93..6b6212b393d4487ea85d15d281d7b18518ddd096 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals-default.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals-default.js
@@ -5,6 +5,8 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters' default expressions contains await
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 async(x = await) => {  }
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals.js b/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals.js
index 36ad10600fd6038b27b58d2bf7d112d87f800376..00b2f8dc222dbf712ed991e6f26994e1b65501d8 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-await-in-formals.js
@@ -5,6 +5,8 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains await
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 async(await) => {  }
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-call.js b/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-call.js
index 5c1fb0a8f5eacd70dbba4af71c76b8b2a2a2b870..2d1ad483fa4681342f47e8d390ace70b07e1dd34 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-call.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if AsyncFunctionBody contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async(foo) => { super() };
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-property.js b/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-property.js
index 35e8eaad12c05e13db05d87b449eb8d05d4a5b22..b6240d01c6d8c602477dff0bb279d94de88eea88 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-property.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-body-contains-super-property.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if AsyncFunctionBody contains SuperProperty is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async(foo) => { super.prop };
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js b/test/language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js
index 280162b188ca3f946e1ca5d874f4c7b645eca174..075f705907845758c781b4f96ab2e50cf4cf3c50 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-duplicate-parameters.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   If strict mode, early error rules for StrictFormalParameters are applied
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-eval-in-formal-parameters.js b/test/language/expressions/async-arrow-function/early-errors-arrow-eval-in-formal-parameters.js
index 595d3ee0210aa33dd2185f01f0632a2821b4f4da..1176445645930b74912c399daa14c33a0c8e9aa5 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-eval-in-formal-parameters.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-eval-in-formal-parameters.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-formals-body-duplicate.js b/test/language/expressions/async-arrow-function/early-errors-arrow-formals-body-duplicate.js
index 97c6201d4fcb98448d5cc0e159670c796a92f4eb..bfebf8e19767573b7ed16f7a6ee079640c3836df 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-formals-body-duplicate.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-formals-body-duplicate.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if BoundNames of FormalParameters also occurs in the LexicallyDeclaredNames of AsyncFunctionBody
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async(bar) => { let bar; }
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-call.js b/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-call.js
index 73f67feb499e76c60137eef753c2a357f87ee0ba..6c22da809df069834eb6bc35dd207f7f012a9587 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-call.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if FormalParameters contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async(foo = super()) => {}
diff --git a/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-property.js b/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-property.js
index 8e14b1e61b461053d372aab53900420ca761c931..f58498259f3fa11b68828fe3fbd6942214592c95 100644
--- a/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-property.js
+++ b/test/language/expressions/async-arrow-function/early-errors-arrow-formals-contains-super-property.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if FormalParameters contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async (foo = super.foo) => { }
diff --git a/test/language/expressions/async-function/early-errors-expression-NSPL-with-USD.js b/test/language/expressions/async-function/early-errors-expression-NSPL-with-USD.js
index e52af62cf7475fe18a35a2f41e8b1e2ac21cff2a..b852875b2467ea3af75f4f0f719b990ba8196e2c 100644
--- a/test/language/expressions/async-function/early-errors-expression-NSPL-with-USD.js
+++ b/test/language/expressions/async-function/early-errors-expression-NSPL-with-USD.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is *true* and IsSimpleParameterList of ArrowParameters is *false*.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (async function (x = 1) {"use strict"})
diff --git a/test/language/expressions/async-function/early-errors-expression-binding-identifier-arguments.js b/test/language/expressions/async-function/early-errors-expression-binding-identifier-arguments.js
index 87b3ba9f1d070fe4bacc36ff307b8b3c22c419a0..96b813f3ad0d7029ac9c408e547da2d0949ee7a7 100644
--- a/test/language/expressions/async-function/early-errors-expression-binding-identifier-arguments.js
+++ b/test/language/expressions/async-function/early-errors-expression-binding-identifier-arguments.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   If the source code matching this production is strict code, it is a Syntax Error if BindingIdentifier is the IdentifierName arguments. 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 (async function arguments () {  })
diff --git a/test/language/expressions/async-function/early-errors-expression-binding-identifier-eval.js b/test/language/expressions/async-function/early-errors-expression-binding-identifier-eval.js
index 16050d5b85eb0946317dde890f1cffdd84da09e2..cf6a0a18b635fdcd0b4213e4386b7e3de1ab1cd6 100644
--- a/test/language/expressions/async-function/early-errors-expression-binding-identifier-eval.js
+++ b/test/language/expressions/async-function/early-errors-expression-binding-identifier-eval.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   If the source code matching this production is strict code, it is a Syntax Error if BindingIdentifier is the IdentifierName eval. 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 (async function eval () { })
diff --git a/test/language/expressions/async-function/early-errors-expression-body-contains-super-call.js b/test/language/expressions/async-function/early-errors-expression-body-contains-super-call.js
index e27fb987b48d6079eb694c52b9785281026e29ba..37d6f6ad86b23bd9622a35b4140529d89afb7a49 100644
--- a/test/language/expressions/async-function/early-errors-expression-body-contains-super-call.js
+++ b/test/language/expressions/async-function/early-errors-expression-body-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if AsyncFunctionBody contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (async function foo (foo) { super() })
diff --git a/test/language/expressions/async-function/early-errors-expression-body-contains-super-property.js b/test/language/expressions/async-function/early-errors-expression-body-contains-super-property.js
index 3539109e20e38582d97f4f8d682405bc4570766d..703fe37e753a276465720880c34a3b4efaf3f086 100644
--- a/test/language/expressions/async-function/early-errors-expression-body-contains-super-property.js
+++ b/test/language/expressions/async-function/early-errors-expression-body-contains-super-property.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if AsyncFunctionBody contains SuperProperty is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (async function foo (foo) { super.prop });
diff --git a/test/language/expressions/async-function/early-errors-expression-eval-in-formal-parameters.js b/test/language/expressions/async-function/early-errors-expression-eval-in-formal-parameters.js
index 972b30863f757dd35fb3b5dce65964d744cbd707..08c537aa2e20c1be08c62a775809a585321feb25 100644
--- a/test/language/expressions/async-function/early-errors-expression-eval-in-formal-parameters.js
+++ b/test/language/expressions/async-function/early-errors-expression-eval-in-formal-parameters.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains eval in strict mode
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/expressions/async-function/early-errors-expression-formals-body-duplicate.js b/test/language/expressions/async-function/early-errors-expression-formals-body-duplicate.js
index 8414ce634ff56701771b7776a731aa5ca2bd42d6..7b05290946201dec66c79fe7a6cc026998bd422f 100644
--- a/test/language/expressions/async-function/early-errors-expression-formals-body-duplicate.js
+++ b/test/language/expressions/async-function/early-errors-expression-formals-body-duplicate.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if BoundNames of FormalParameters also occurs in the LexicallyDeclaredNames of AsyncFunctionBody
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (async function foo (bar) { let bar; });
diff --git a/test/language/expressions/async-function/early-errors-expression-formals-contains-super-call.js b/test/language/expressions/async-function/early-errors-expression-formals-contains-super-call.js
index 6997deb7d8e360b9f59161c9a0cbb8b6938ccdfb..411154538d667d19e9b27f27ce6d3527aa3afdab 100644
--- a/test/language/expressions/async-function/early-errors-expression-formals-contains-super-call.js
+++ b/test/language/expressions/async-function/early-errors-expression-formals-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if FormalParameters contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (async function foo (foo = super()) { var bar; });
diff --git a/test/language/expressions/async-function/early-errors-expression-formals-contains-super-property.js b/test/language/expressions/async-function/early-errors-expression-formals-contains-super-property.js
index 04110a5aa46fc7177bb411ddfec80b709049e59a..8db0175b607b83adc73f6c4cb3f876ac74967a86 100644
--- a/test/language/expressions/async-function/early-errors-expression-formals-contains-super-property.js
+++ b/test/language/expressions/async-function/early-errors-expression-formals-contains-super-property.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if FormalParameters contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (async function foo (foo = super.foo) { var bar; });
diff --git a/test/language/expressions/async-function/early-errors-expression-not-simple-assignment-target.js b/test/language/expressions/async-function/early-errors-expression-not-simple-assignment-target.js
index 49555f399b5db4fd364fbdbcbb966b03bb2a5bf9..d27968f291aaacf2614b5ee10e6c79d5584f9c21 100644
--- a/test/language/expressions/async-function/early-errors-expression-not-simple-assignment-target.js
+++ b/test/language/expressions/async-function/early-errors-expression-not-simple-assignment-target.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   Async function expressions are not a simple assignment target.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 (async function foo() { } = 1)
diff --git a/test/language/expressions/await/await-BindingIdentifier-nested.js b/test/language/expressions/await/await-BindingIdentifier-nested.js
index a4813b607b0882b5a6b1f602558a3c90d41269ad..39f239d2bafef80fd01d5d5c6e55c0915f785b5a 100644
--- a/test/language/expressions/await/await-BindingIdentifier-nested.js
+++ b/test/language/expressions/await/await-BindingIdentifier-nested.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   Await is not allowed as an identifier in functions nested in async functions
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async function foo() {
diff --git a/test/language/expressions/await/early-errors-await-not-simple-assignment-target.js b/test/language/expressions/await/early-errors-await-not-simple-assignment-target.js
index 4560ff966574e0c75c6fd2c03c367c40f8b7489d..8999e40f28204fbf40c7f86d21232757532f80cf 100644
--- a/test/language/expressions/await/early-errors-await-not-simple-assignment-target.js
+++ b/test/language/expressions/await/early-errors-await-not-simple-assignment-target.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   await is not a simple assignment target and cannot be assigned to.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 async function foo() {
diff --git a/test/language/expressions/await/no-operand.js b/test/language/expressions/await/no-operand.js
index 88705df7927cd69f14143e471498b06f06b9e950..8b44ebcf33df1c0559adba09254bafd3270d4255 100644
--- a/test/language/expressions/await/no-operand.js
+++ b/test/language/expressions/await/no-operand.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   await requries an operand.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async function foo() {
diff --git a/test/language/expressions/call/S11.2.4_A1.3_T1.js b/test/language/expressions/call/S11.2.4_A1.3_T1.js
index e97e6edd0e960f73bbf1c3e505d7b544503904c0..ef953e362583216caa782c85bae8892df1e1798c 100644
--- a/test/language/expressions/call/S11.2.4_A1.3_T1.js
+++ b/test/language/expressions/call/S11.2.4_A1.3_T1.js
@@ -7,7 +7,9 @@ info: >
     syntax
 es5id: 11.2.4_A1.3_T1
 description: incorrect syntax
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function f_arg() {
diff --git a/test/language/expressions/call/trailing-comma.js b/test/language/expressions/call/trailing-comma.js
index 0911bfe996266135090ac33b29f351f6af8e50fb..4143e77aea0848280ed5c67232d8296585221943 100644
--- a/test/language/expressions/call/trailing-comma.js
+++ b/test/language/expressions/call/trailing-comma.js
@@ -6,7 +6,9 @@ description: >
   in a call expression.
 info: http://jeffmo.github.io/es-trailing-function-commas/
 author: Jeff Morrison <lbljeffmo@gmail.com>
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function foo() {}
diff --git a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-ary.js b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-ary.js
index 587f427b5d2a3d01043f1206942402969b6d5b06..e75b7379b58767a6fd00695e42fe07ac309f31af 100644
--- a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-id.js b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-id.js
index 64597cafaa6fc4910624073c86c3b54fe49bf75b..b982540b391d779dbd339866eb1388d1b7b5b26b 100644
--- a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-obj.js b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-obj.js
index c466ea95ebb436288d68d910f2fa3d9edd964ba1..a04c085da5f3dd3dd849a40a7c28f2af645ec98d 100644
--- a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js
index faffc422d46856b9b32e20ef3e7f5277e48eb81d..ac4bcf3f5386bfa8d4a85c13bdaf749c19623d8c 100644
--- a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-id.js b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-id.js
index 0f972a095b74d9fbcbd2383803a8f7ccbc487fbc..255808043b148b4e1df6ad6bff158d5c61ccb479 100644
--- a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js
index 5f37a9ed4b3de723582704bfc78e7f49f2fcd6e0..88fbf60c5fc917c4d31872907d3870ae649ef86b 100644
--- a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js
index 23151498618daad07f44206dcfbc69153779f7ce..0680c9bcabec1d721f97936f8f7916d99b8d0fce 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js
index f83d0e588b29fd0a09d35116bb60e78461910d70..34c4634c58fdce9ddf76d9a6962b0dfd23f8363e 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js
index 55ccba416a121cf8a2b40637a635443a69b91180..418a44e04bf3dcf0abc948a351ea91de357f1b21 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
index 80070d8f032c490962ef741256f0607f0b06cd56..b919070702b2677b04ed3fecb7f9a82ed4ed362b 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
index da97778617261cbbaa13997a3d86925d9ea7e391..1300296af89e1547aba4447db6d0fed1651e8e33 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
index f567a2a9130ef97f437f590873137d6efc488a16..6b199e6322dc150037fca3551c99fac35f3521fa 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-ary.js b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-ary.js
index bf91de2a765665adff073bde427c08c2aec35180..12a98fb2bcdbc62492e7af40f72d82a6aa775ba2 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-id.js b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-id.js
index 341b252d8966e02614fd7dfb912b9800dde833da..9034695169a204a4e106ee82397176831eac3e22 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-obj.js b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-obj.js
index fb0d0c28761210fb2e87310556750baa571c343f..1642e8e1be86f9b99eae913020d62ae006eb403f 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-ary.js
index 8df96effec08a1d3c4068fb4d47458fd86c5142c..3ff0eae2c6b8f2352ab9dc077831ec9f1e75c7f0 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-id.js b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-id.js
index 8c3cf816abebd0b8e0e5498d7908e22329a61e13..3e64be67ef9bd6f2ff05e3a34b964fbfdc895b2d 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-obj.js
index bef43f26397776b8b1a3172df71babc70b2bd987..58bb0971debc9e953556a726b588d2259cf76dee 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
index 4a391cacce294affaac16f913f4bb0ff344d250e..7022fc734b41de2f03791e1a8dd2cde0d0a4817b 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-id.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
index dbc1fc0a0cf0cc6e173df6892af664d261ada6b8..82a5041a4b530a67c4b3d35386a5c5b6c6a2d7a0 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
index 671fd4247f67d059742e18e3f2ed31fda277e62e..8304642784674bfbb599918c6c0542ae135d80b8 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
index a902340322997b67e5bbfe3eae496248519ea096..ef8235990bef098328ac294bbba3ce37162e3946 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
index b709bb2404a456cdb150f546a186a91f7ec6b8b2..156163cae1c0b47a507166997abc885eab84993b 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
index 07add9b7ee7d8348baf3b1eb38916e70df49192d..7f8b493fd1418da089c8049251142c9eb4d08dd7 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-ary.js b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-ary.js
index 54de5b38e47f64d0b4a293747d8e9b49356bf549..8ee996d40b0b830c44e601c8a3daf9d036f32134 100644
--- a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-id.js b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-id.js
index 64eb0078b19bc7a7f778cb94cd8dce4b704e2c8b..e0dddb61fddd7a9a44200dc1953c586615052e9a 100644
--- a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-obj.js b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-obj.js
index 2b9d683364e68a3e46ad2be46b10f6aec0e9550b..1389a0ef64ef6ffc758221bd006ad9bee362443b 100644
--- a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-ary.js
index aea6c7fcbf19ae5170593d0ae3111e3f937bb47b..acf7d13e874d3777e144e342fbe0bd86d5819cb1 100644
--- a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-id.js b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-id.js
index 2d4b733535e778322ca9e146cc491e5e24e578ff..8a301e5c963d629904488783bc9f8a5f86374034 100644
--- a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-obj.js
index de80c94f87e485525014c6768e33b22a2e9030eb..25f371fa89da1ee317b8be68d965ab330d7a8cde 100644
--- a/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/class/dstr-meth-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-ary.js b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-ary.js
index 4f293e0afa3f76e19b44e90d0c328ad5184d044a..6de31dc1423835e40b5458492f6a6df41231d987 100644
--- a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-id.js b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-id.js
index 341bdf9f092259f6eb839db09f5b655d7c954d04..536da9906113b971cd5606aa8ce5950acfaf159d 100644
--- a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-obj.js b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-obj.js
index 73c2d5a26adf58683c6808ce21f42001490c0d41..54f62469c9531e18984b61e1824df4aa32ca73c1 100644
--- a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js
index f29a418331f023e63457ea7571bb7c635fd50530..ef763ba48cd8429f02fd4c30afc41f81182ce778 100644
--- a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js
index 4fc4c49e5d981e1e9a098bc182a32b364998f7fb..c94551e738321365183a4648d7a541d997dd1e84 100644
--- a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js
index dd5042369342e2f56d2ed96e676f2d0d43667926..c920be3b386e3934dbb29f9afffb6569ea01d31e 100644
--- a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-ary.js b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-ary.js
index 82262d71e85ff3c84b7cd3e240f0df53c7ddc34c..7993725c33b0b494476b67da1ede7721915408bf 100644
--- a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-id.js b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-id.js
index 0377412b80cceee956cf72ceb315f59ef1ed40cd..18ae693449a2e067760f18de7fb53e0f6410caa5 100644
--- a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-obj.js b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-obj.js
index d59ccef5a328c88debd6b52f9f3695e2d4889393..f4348c3cbe185bda0a6a1f36c5c8467a38c31045 100644
--- a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-ary.js
index 1d25c1d4f0459f432111812c685213cf371a69b4..e1d6dc6f13b45a8949071e12414bede8f330a5eb 100644
--- a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-id.js b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-id.js
index 7210664acb653d9d11d0ac9af2c99ca8f4ab8a75..3361cc93e8e165ee80937c549a1c494ef7546afa 100644
--- a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-obj.js
index ef3407f4a0b9b9728bf5ff9da5bddb87cc972466..a544ca28f384157322fe6f8670815b549baf00d6 100644
--- a/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/class/dstr-meth-static-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-ary.js b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-ary.js
index f0c231c163118df1e9de5a95265f7272bc5f52f0..abdad235f9c74744b6b2c2d4c264f1295e19c9b1 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-id.js b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-id.js
index a415405973254b2526617205093e1fa3e2eea945..b825e169ee5acb7a69e2cbda0d5af5349c6a71c8 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-obj.js b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-obj.js
index f2a41ee68871a6fed7008d746d9c1d9a511e93a3..aeecaf24ba4dfb26790eb7934b03c5fc846d02d0 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
index 0c60477e8b716a7d08cd881db7361084cb698371..99bd87df6c87f38274837858f6ed66878fa7bb37 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-id.js b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-id.js
index be3b2675e3738cd7a540a3afe7d1e728efd7cc55..3cd152e0e71395c42c25ebc05e213516e90a222b 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
index 9405e2430ee4aaf96b0814b3cf2607c2a3a2018b..a986e21c1216c305eaa5344069f5df15a4b61e37 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/gen-method-param-dflt-yield.js b/test/language/expressions/class/gen-method-param-dflt-yield.js
index da350ddbba0f55d6f00d0c00a6fd48ee7cd00ff1..405665e7fd0e770defec214b55e1a82ce6f4f293 100644
--- a/test/language/expressions/class/gen-method-param-dflt-yield.js
+++ b/test/language/expressions/class/gen-method-param-dflt-yield.js
@@ -15,7 +15,9 @@ info: |
   function because any expressions that are part of FormalParameters are
   evaluated before the resulting generator object is in a resumable state.
 features: [generators, default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, class {
diff --git a/test/language/expressions/class/getter-param-dflt.js b/test/language/expressions/class/getter-param-dflt.js
index a6cbb974ecb219d1795daf1cc069d32a690aa586..32066aa010f66d5cfed2d9baf6a182d6aefae5d1 100644
--- a/test/language/expressions/class/getter-param-dflt.js
+++ b/test/language/expressions/class/getter-param-dflt.js
@@ -13,7 +13,9 @@ info: |
 
     get PropertyName[?Yield] ( ) { FunctionBody }
 features: [default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, class { get a(param = null) {} };
diff --git a/test/language/expressions/class/method-param-dflt-yield.js b/test/language/expressions/class/method-param-dflt-yield.js
index 378e0e02f024d0255377372419344382692ea7ee..5f30e4f3c75f147c449b646e9f5c582637356d2c 100644
--- a/test/language/expressions/class/method-param-dflt-yield.js
+++ b/test/language/expressions/class/method-param-dflt-yield.js
@@ -10,7 +10,9 @@ info: |
 
     PropertyName[?Yield] ( StrictFormalParameters ) { FunctionBody }
 features: [generators, default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, class {
diff --git a/test/language/expressions/class/params-dflt-gen-meth-duplicates.js b/test/language/expressions/class/params-dflt-gen-meth-duplicates.js
index 64e8a6de6774ec53975663e3a35ffab5b86ea1b0..2dd2f8db6ad1ddcfdd4c3aabcdc3b921f75bbc8e 100644
--- a/test/language/expressions/class/params-dflt-gen-meth-duplicates.js
+++ b/test/language/expressions/class/params-dflt-gen-meth-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/params-dflt-gen-meth-rest.js b/test/language/expressions/class/params-dflt-gen-meth-rest.js
index 3047f2288f8e4c164345046af56ac4a452ebd642..4c9c3cb934068d67a4719297e3f3560354f42898 100644
--- a/test/language/expressions/class/params-dflt-gen-meth-rest.js
+++ b/test/language/expressions/class/params-dflt-gen-meth-rest.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/params-dflt-gen-meth-static-duplicates.js b/test/language/expressions/class/params-dflt-gen-meth-static-duplicates.js
index eb5663a6b3109f9afa3f50d63ad6233267ae2b3d..e155b13920f35f149e293cf8c43ebeb2f80df1c3 100644
--- a/test/language/expressions/class/params-dflt-gen-meth-static-duplicates.js
+++ b/test/language/expressions/class/params-dflt-gen-meth-static-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/params-dflt-gen-meth-static-rest.js b/test/language/expressions/class/params-dflt-gen-meth-static-rest.js
index 92a5a6fffdc8aab7e7a8463041a341cb4101ad67..17eb3972ae6e6e77ca98b5903c7831febc743eef 100644
--- a/test/language/expressions/class/params-dflt-gen-meth-static-rest.js
+++ b/test/language/expressions/class/params-dflt-gen-meth-static-rest.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/params-dflt-meth-duplicates.js b/test/language/expressions/class/params-dflt-meth-duplicates.js
index d7f7bf30ce2eb4bb1f2429d64a7a9d84f632211d..244127346995c0d400915b9ee68baa45573aa8d1 100644
--- a/test/language/expressions/class/params-dflt-meth-duplicates.js
+++ b/test/language/expressions/class/params-dflt-meth-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/params-dflt-meth-rest.js b/test/language/expressions/class/params-dflt-meth-rest.js
index 20e2a79ec313e87b13849e0c169d0695b3a54f42..0fd41bf30ec4fdad14fa435f2956942d4a1a8388 100644
--- a/test/language/expressions/class/params-dflt-meth-rest.js
+++ b/test/language/expressions/class/params-dflt-meth-rest.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/params-dflt-meth-static-duplicates.js b/test/language/expressions/class/params-dflt-meth-static-duplicates.js
index 6d68a6a0538221399df64b645e856aad29ff6dda..a5038f7b1f3709bf18e22f7fbedd0c786e6c50e1 100644
--- a/test/language/expressions/class/params-dflt-meth-static-duplicates.js
+++ b/test/language/expressions/class/params-dflt-meth-static-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/params-dflt-meth-static-rest.js b/test/language/expressions/class/params-dflt-meth-static-rest.js
index 1772004b570e0771483ac04faf6b39671832192a..5102cbc83a108d83be87cddcf57c52030c078a3b 100644
--- a/test/language/expressions/class/params-dflt-meth-static-rest.js
+++ b/test/language/expressions/class/params-dflt-meth-static-rest.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassExpression : class BindingIdentifieropt ClassTail
 
diff --git a/test/language/expressions/class/static-gen-method-param-dflt-yield.js b/test/language/expressions/class/static-gen-method-param-dflt-yield.js
index c24810c3bb6ba945a5c64e286671eaee9287a7dc..8158dcdeee476104739155b20442ec59fb469d85 100644
--- a/test/language/expressions/class/static-gen-method-param-dflt-yield.js
+++ b/test/language/expressions/class/static-gen-method-param-dflt-yield.js
@@ -15,7 +15,9 @@ info: |
   function because any expressions that are part of FormalParameters are
   evaluated before the resulting generator object is in a resumable state.
 features: [generators, default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, class {
diff --git a/test/language/expressions/class/static-method-param-dflt-yield.js b/test/language/expressions/class/static-method-param-dflt-yield.js
index a6b6d16acd9e2dabaad039107b6a66bf5f253d4f..f8153fd21e741597c45b9260de5d3299db8284ae 100644
--- a/test/language/expressions/class/static-method-param-dflt-yield.js
+++ b/test/language/expressions/class/static-method-param-dflt-yield.js
@@ -10,7 +10,9 @@ info: |
 
     PropertyName[?Yield] ( StrictFormalParameters ) { FunctionBody }
 features: [generators, default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, class {
diff --git a/test/language/expressions/compound-assignment/11.13.2-6-1gs.js b/test/language/expressions/compound-assignment/11.13.2-6-1gs.js
index 0ffe2294d4e9abe8936cced4af3ba279193d8d3c..bc039a556e71a1f77c1e545a38430565d29fe369 100644
--- a/test/language/expressions/compound-assignment/11.13.2-6-1gs.js
+++ b/test/language/expressions/compound-assignment/11.13.2-6-1gs.js
@@ -6,7 +6,9 @@ es5id: 11.13.2-6-1gs
 description: >
     Strict Mode - SyntaxError is throw if the identifier eval appears
     as the LeftHandSideExpression of a Compound Assignment operator(*=)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/expressions/compound-assignment/add-non-simple.js b/test/language/expressions/compound-assignment/add-non-simple.js
index c3d8922de17965a245e7a0e3a8d0de6a7670ea97..74449b83a4d4d485ed539fad7e6cb98425cc2196 100644
--- a/test/language/expressions/compound-assignment/add-non-simple.js
+++ b/test/language/expressions/compound-assignment/add-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound addition assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 += 1;
diff --git a/test/language/expressions/compound-assignment/btws-and-non-simple.js b/test/language/expressions/compound-assignment/btws-and-non-simple.js
index 2947bf4e59bff675cf101b49781a60b93591063e..2b8a26c780ccfd98401e5210ea95c9cc614923be 100644
--- a/test/language/expressions/compound-assignment/btws-and-non-simple.js
+++ b/test/language/expressions/compound-assignment/btws-and-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound "bitwise and" assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 &= 1;
diff --git a/test/language/expressions/compound-assignment/btws-or-non-simple.js b/test/language/expressions/compound-assignment/btws-or-non-simple.js
index 956a457ed14912ee71ed79547ff867aa748dad9e..ed0ec79100dec209a508e00f066955e9918841c5 100644
--- a/test/language/expressions/compound-assignment/btws-or-non-simple.js
+++ b/test/language/expressions/compound-assignment/btws-or-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound "bitwise or" assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 |= 1;
diff --git a/test/language/expressions/compound-assignment/btws-xor-non-simple.js b/test/language/expressions/compound-assignment/btws-xor-non-simple.js
index 63515dd5df9031b4e045dd586be345f4f4462e6d..0a5e66d309fd917ca3753dd75094f3223a50084e 100644
--- a/test/language/expressions/compound-assignment/btws-xor-non-simple.js
+++ b/test/language/expressions/compound-assignment/btws-xor-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound "bitwise xor" assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 ^= 1;
diff --git a/test/language/expressions/compound-assignment/div-non-simple.js b/test/language/expressions/compound-assignment/div-non-simple.js
index 03734dde946f9ef578c4cf2f78f5f76ea73cea53..ab79ac49ddcfc4bd0744d502ecc846f20b80b166 100644
--- a/test/language/expressions/compound-assignment/div-non-simple.js
+++ b/test/language/expressions/compound-assignment/div-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound division assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 /= 1;
diff --git a/test/language/expressions/compound-assignment/left-shift-non-simple.js b/test/language/expressions/compound-assignment/left-shift-non-simple.js
index 61a4d91e5596d07c4a118d578a5d0eb0bbb0201c..bee24c468aa681b2efff7e72c6efffb511affe2e 100644
--- a/test/language/expressions/compound-assignment/left-shift-non-simple.js
+++ b/test/language/expressions/compound-assignment/left-shift-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound "left shift" assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 <<= 1;
diff --git a/test/language/expressions/compound-assignment/mod-div-non-simple.js b/test/language/expressions/compound-assignment/mod-div-non-simple.js
index 2ff9777f8c5cafa0b581cac0dfa09d226754424a..18e87b1176fc1f56deefdd4d11cbb5b190943309 100644
--- a/test/language/expressions/compound-assignment/mod-div-non-simple.js
+++ b/test/language/expressions/compound-assignment/mod-div-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound "modular division" assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 %= 1;
diff --git a/test/language/expressions/compound-assignment/mult-non-simple.js b/test/language/expressions/compound-assignment/mult-non-simple.js
index bf08e411824a2a6ae425c0e163c8f9afface26d4..6d4d3d2bf6d04c3b9d0f839bd3c6a39a61559a33 100644
--- a/test/language/expressions/compound-assignment/mult-non-simple.js
+++ b/test/language/expressions/compound-assignment/mult-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound multiplication assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 *= 1;
diff --git a/test/language/expressions/compound-assignment/right-shift-non-simple.js b/test/language/expressions/compound-assignment/right-shift-non-simple.js
index 941d3319e2940486db856498e8c1118a9ba54fa6..66497a6d71e79f26ab2de44d1994e04212ecb7cf 100644
--- a/test/language/expressions/compound-assignment/right-shift-non-simple.js
+++ b/test/language/expressions/compound-assignment/right-shift-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound "right shift" assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 >>= 1;
diff --git a/test/language/expressions/compound-assignment/subtract-non-simple.js b/test/language/expressions/compound-assignment/subtract-non-simple.js
index 8c1f95b7bfb2182cd70f0049a273de082ba16b23..8b5ef1d98866b471ade3c889d4aaafbafcb7c34a 100644
--- a/test/language/expressions/compound-assignment/subtract-non-simple.js
+++ b/test/language/expressions/compound-assignment/subtract-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound subtraction assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 -= 1;
diff --git a/test/language/expressions/compound-assignment/u-right-shift-non-simple.js b/test/language/expressions/compound-assignment/u-right-shift-non-simple.js
index 0114e770115964973979635405856458c488f788..7f0bf5156564e70af7f58fbbafb9f6474935ed9f 100644
--- a/test/language/expressions/compound-assignment/u-right-shift-non-simple.js
+++ b/test/language/expressions/compound-assignment/u-right-shift-non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.14.1
 description: Compound "unsigned right shift" assignment with non-simple target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1 >>>= 1;
diff --git a/test/language/expressions/conditional/in-branch-2.js b/test/language/expressions/conditional/in-branch-2.js
index a66b18feef54b977600b960a750ecaf02bda1e0f..f5524ffd8909d24770bbbed27638457d47e0353e 100644
--- a/test/language/expressions/conditional/in-branch-2.js
+++ b/test/language/expressions/conditional/in-branch-2.js
@@ -12,7 +12,9 @@ info: |
   ConditionalExpression[In, Yield] :
     LogicalORExpression[?In, ?Yield]
     LogicalORExpression[?In, ?Yield] ? AssignmentExpression[+In, ?Yield] : AssignmentExpression[?In, ?Yield]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (true ? 0 : 0 in {}; false; ) ;
diff --git a/test/language/expressions/conditional/in-condition.js b/test/language/expressions/conditional/in-condition.js
index c393fc1fde7b0ead90dcb967ebdc41f408e48483..43fb78e3c221e6f4399c6ae2ecac55cf89096950 100644
--- a/test/language/expressions/conditional/in-condition.js
+++ b/test/language/expressions/conditional/in-condition.js
@@ -12,7 +12,9 @@ info: |
   ConditionalExpression[In, Yield] :
     LogicalORExpression[?In, ?Yield]
     LogicalORExpression[?In, ?Yield] ? AssignmentExpression[+In, ?Yield] : AssignmentExpression[?In, ?Yield]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ('' in {} ? 0 : 0; false; ) ;
diff --git a/test/language/expressions/delete/11.4.1-5-a-5gs.js b/test/language/expressions/delete/11.4.1-5-a-5gs.js
index 6596c92d59c35f1086b60640d1089ede966bc982..47c379e4800abe1fc00ba0e1b026cf54b35444d5 100644
--- a/test/language/expressions/delete/11.4.1-5-a-5gs.js
+++ b/test/language/expressions/delete/11.4.1-5-a-5gs.js
@@ -6,10 +6,11 @@ es5id: 11.4.1-5-a-5gs
 description: >
     Strict Mode - SyntaxError is thrown when deleting a variable which
     is primitive type(boolean)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
 var _11_4_1_5 = 7;
-throw NotEarlyError;
 delete _11_4_1_5;
diff --git a/test/language/expressions/exponentiation/exp-operator-syntax-error-bitnot-unary-expression-base.js b/test/language/expressions/exponentiation/exp-operator-syntax-error-bitnot-unary-expression-base.js
index 8c45aa11358d48c2d35396ce9a6346382170328a..868beda4774bd899ec58f5d3866b539581f20c8e 100644
--- a/test/language/expressions/exponentiation/exp-operator-syntax-error-bitnot-unary-expression-base.js
+++ b/test/language/expressions/exponentiation/exp-operator-syntax-error-bitnot-unary-expression-base.js
@@ -15,6 +15,8 @@ info: >
     `~` UnaryExpression
     ...
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 ~3 ** 2;
diff --git a/test/language/expressions/exponentiation/exp-operator-syntax-error-delete-unary-expression-base.js b/test/language/expressions/exponentiation/exp-operator-syntax-error-delete-unary-expression-base.js
index 34ef6a0b62636a7cc1323f34712a0183d944e058..2bced284fbe596c4ea86e6cb915cb42e9e7c7315 100644
--- a/test/language/expressions/exponentiation/exp-operator-syntax-error-delete-unary-expression-base.js
+++ b/test/language/expressions/exponentiation/exp-operator-syntax-error-delete-unary-expression-base.js
@@ -15,6 +15,8 @@ info: >
     `delete` UnaryExpression
     ...
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 delete o.p ** 2;
diff --git a/test/language/expressions/exponentiation/exp-operator-syntax-error-logical-not-unary-expression-base.js b/test/language/expressions/exponentiation/exp-operator-syntax-error-logical-not-unary-expression-base.js
index 0b5b1ed3f7e25bdebd7f57f877e886772f05c107..8a1ee43c3bdbc0a8bdd09c4dde8a139a2f669187 100644
--- a/test/language/expressions/exponentiation/exp-operator-syntax-error-logical-not-unary-expression-base.js
+++ b/test/language/expressions/exponentiation/exp-operator-syntax-error-logical-not-unary-expression-base.js
@@ -15,6 +15,8 @@ info: >
     `!` UnaryExpression
     ...
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 !1 ** 2;
diff --git a/test/language/expressions/exponentiation/exp-operator-syntax-error-negate-unary-expression-base.js b/test/language/expressions/exponentiation/exp-operator-syntax-error-negate-unary-expression-base.js
index 3cfef2fba70dd8dfbb375c2726b536bce94b066b..c735ec9013442e508b80666651f71f181ba8c765 100644
--- a/test/language/expressions/exponentiation/exp-operator-syntax-error-negate-unary-expression-base.js
+++ b/test/language/expressions/exponentiation/exp-operator-syntax-error-negate-unary-expression-base.js
@@ -15,6 +15,8 @@ info: >
     `-` UnaryExpression
     ...
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 -3 ** 2;
diff --git a/test/language/expressions/exponentiation/exp-operator-syntax-error-plus-unary-expression-base.js b/test/language/expressions/exponentiation/exp-operator-syntax-error-plus-unary-expression-base.js
index 71762aecc9ac17de634f765da633b0d64b1e824d..beeace9558c0770c5d8caf99672bed3cabaed391 100644
--- a/test/language/expressions/exponentiation/exp-operator-syntax-error-plus-unary-expression-base.js
+++ b/test/language/expressions/exponentiation/exp-operator-syntax-error-plus-unary-expression-base.js
@@ -15,6 +15,8 @@ info: >
     `+` UnaryExpression
     ...
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 +1 ** 2;
diff --git a/test/language/expressions/exponentiation/exp-operator-syntax-error-typeof-unary-expression-base.js b/test/language/expressions/exponentiation/exp-operator-syntax-error-typeof-unary-expression-base.js
index a83b657e2f84e48d7d90c659927c72e059ac4c9a..bad4c9bb2379b517148b4eb9edfe9e652c7aa84c 100644
--- a/test/language/expressions/exponentiation/exp-operator-syntax-error-typeof-unary-expression-base.js
+++ b/test/language/expressions/exponentiation/exp-operator-syntax-error-typeof-unary-expression-base.js
@@ -15,6 +15,8 @@ info: >
     `typeof` UnaryExpression
     ...
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 typeof 1 ** 2;
diff --git a/test/language/expressions/exponentiation/exp-operator-syntax-error-void-unary-expression-base.js b/test/language/expressions/exponentiation/exp-operator-syntax-error-void-unary-expression-base.js
index 8b8b85ca0274e822a238a4e27aaf4a1e28152b5f..e0ec9cea1984b1017ee028b031f5b91f185fd986 100644
--- a/test/language/expressions/exponentiation/exp-operator-syntax-error-void-unary-expression-base.js
+++ b/test/language/expressions/exponentiation/exp-operator-syntax-error-void-unary-expression-base.js
@@ -15,6 +15,8 @@ info: >
     `void` UnaryExpression
     ...
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 void 1 ** 2;
diff --git a/test/language/expressions/function/dstr-ary-ptrn-rest-init-ary.js b/test/language/expressions/function/dstr-ary-ptrn-rest-init-ary.js
index ccb93a07dab10509002749fa34f9d49e6594b2ef..c0c12a472b4f618b782271c4e65162e2a3baa95d 100644
--- a/test/language/expressions/function/dstr-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/function/dstr-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-ary-ptrn-rest-init-id.js b/test/language/expressions/function/dstr-ary-ptrn-rest-init-id.js
index bbc5eaebc6e2ab0f90b654231f906039387911ff..06aaa00b992b5251c4e1ea675a61b4d23f5c0574 100644
--- a/test/language/expressions/function/dstr-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/function/dstr-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-ary-ptrn-rest-init-obj.js b/test/language/expressions/function/dstr-ary-ptrn-rest-init-obj.js
index f611f5a1a3134ff98fa171f25a1c44d2bf6eadaa..21825d4619fe95b5b87165985526ff81484b7e08 100644
--- a/test/language/expressions/function/dstr-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/function/dstr-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-ary.js
index 46877109ec08ec69e03fec2ab24bb153bb0f957a..d56004567ffc68507d7ed0672db2036c3e5414ca 100644
--- a/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-id.js b/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-id.js
index 698d5ae84d9428b8bbd462f691f8406aaf286ca2..567eba245b52df798a5568e5f56a8baa2f9fb461 100644
--- a/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-obj.js
index 107c4cc33e0ff17019d1bffa10ac386625eb9773..abd88c6d0176e2b89e5a4ec3c756669c08f60a63 100644
--- a/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/function/dstr-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-ary.js b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-ary.js
index e2535ee958e8fbd0e450b195c8ddb9e8c6a6b619..1ce295cda6cce75be4f134de8ea44de296711fbd 100644
--- a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-id.js b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-id.js
index 3f913f8821c849e5fc195f3100060bb9568719d3..8159da8045b2275d8fa018508649a5ac592e3abc 100644
--- a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-obj.js b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-obj.js
index 7b9879f06196ebf1eaf9fb9fa469a3e5c37e8628..048c15ad448b1fc012965046b4392c424330b0d9 100644
--- a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-ary.js
index 51e0acb07e7a58c0cebe2241a1a5be74c6d1ee97..903face9b6eeafb4a5fec9f3b0feab696bef662b 100644
--- a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-id.js b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-id.js
index 8f448f18ae37d2ab01e4258292ac87dc70d068c5..a441fb78c032f1a2fa8f53428e7198d59a2ed43d 100644
--- a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-obj.js
index 957dc771d544a8cc421461af7b99068a8882f7f4..a12449d2f083bf571a2acf4d0bce4008dfb2a40b 100644
--- a/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/function/dstr-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/early-body-super-call.js b/test/language/expressions/function/early-body-super-call.js
index 8b31bb32f4fec9f4324121b077dcbd54cb04debc..21495d0f031a9d31953ac4ca38c23a68f3c68c8b 100644
--- a/test/language/expressions/function/early-body-super-call.js
+++ b/test/language/expressions/function/early-body-super-call.js
@@ -6,7 +6,9 @@ es6id: 14.1.2
 description: Body may not contain a "super" call
 info: >
   It is a Syntax Error if FunctionBody Contains SuperCall is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, function() {
diff --git a/test/language/expressions/function/early-body-super-prop.js b/test/language/expressions/function/early-body-super-prop.js
index 05e2f4b82883f145613b2a61f8bab818fa7db2d8..3e6f58af548d467280acbf10c9d8a6d0608ba051 100644
--- a/test/language/expressions/function/early-body-super-prop.js
+++ b/test/language/expressions/function/early-body-super-prop.js
@@ -6,7 +6,9 @@ es6id: 14.1.2
 description: Body may not contain a "super" property reference
 info: >
   It is a Syntax Error if FunctionBody Contains SuperProperty is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, function() {
diff --git a/test/language/expressions/function/early-params-super-call.js b/test/language/expressions/function/early-params-super-call.js
index 6cac1bc103149726715f7381b582df90f8720bc2..0b58ae50a4d5953f12ae85b0dc532c79c62785d8 100644
--- a/test/language/expressions/function/early-params-super-call.js
+++ b/test/language/expressions/function/early-params-super-call.js
@@ -6,7 +6,9 @@ es6id: 14.1.2
 description: Parameters may not contain a "super" call
 info: >
   It is a Syntax Error if FormalParameters Contains SuperProperty is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, function(x = super()) {};
diff --git a/test/language/expressions/function/early-params-super-prop.js b/test/language/expressions/function/early-params-super-prop.js
index 8ae2945d7dbfd069caded51af4bcdb1f5ded90ef..cd91cc412ea551ea794c6696a710a93cc4fb718f 100644
--- a/test/language/expressions/function/early-params-super-prop.js
+++ b/test/language/expressions/function/early-params-super-prop.js
@@ -6,7 +6,9 @@ es6id: 14.1.2
 description: Parameters may not contain a "super" property reference
 info: >
   It is a Syntax Error if FunctionBody Contains SuperProperty is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, function(x = super.x) {};
diff --git a/test/language/expressions/function/param-dflt-yield-strict.js b/test/language/expressions/function/param-dflt-yield-strict.js
index 875973f963ed89ed155e70d5a93a778237d5f2bc..7403292368af44add62f6186292c0026d27007d8 100644
--- a/test/language/expressions/function/param-dflt-yield-strict.js
+++ b/test/language/expressions/function/param-dflt-yield-strict.js
@@ -11,7 +11,9 @@ info: |
     function BindingIdentifieropt ( FormalParameters ) { FunctionBody }
 features: [generators, default-parameters]
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function *g() {
diff --git a/test/language/expressions/function/params-dflt-duplicates.js b/test/language/expressions/function/params-dflt-duplicates.js
index 2d98b532f7d612afecf8b5f481d080fa653c1957..e2666ef2626da4a14d888d5c556ec77930a7cff7 100644
--- a/test/language/expressions/function/params-dflt-duplicates.js
+++ b/test/language/expressions/function/params-dflt-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/params-dflt-rest.js b/test/language/expressions/function/params-dflt-rest.js
index 9c837d7eca71b648980350d64bbb5514793c5fd6..85d80a6243afe5326c4fa61f112b234b187da143 100644
--- a/test/language/expressions/function/params-dflt-rest.js
+++ b/test/language/expressions/function/params-dflt-rest.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-evaluation
 es6id: 14.1.20
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionExpression : function ( FormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/function/use-strict-with-non-simple-param.js b/test/language/expressions/function/use-strict-with-non-simple-param.js
index facf58bd5da4b9a0171671d4e5d4361103d3b967..2a9614b3987293421c6df0a6945612c9e149fcc9 100755
--- a/test/language/expressions/function/use-strict-with-non-simple-param.js
+++ b/test/language/expressions/function/use-strict-with-non-simple-param.js
@@ -9,7 +9,9 @@ info: >
   Static Semantics: Early Errors
 
   It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var f = function(a = 0) {
diff --git a/test/language/expressions/generators/dstr-ary-ptrn-rest-init-ary.js b/test/language/expressions/generators/dstr-ary-ptrn-rest-init-ary.js
index e7e18fa57bc491d5d3d800ca2350811343dd7a41..1289621c941d799bf7bd4b961faa241012c2eb02 100644
--- a/test/language/expressions/generators/dstr-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/generators/dstr-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-ary-ptrn-rest-init-id.js b/test/language/expressions/generators/dstr-ary-ptrn-rest-init-id.js
index e9862c19edef8f06606e78dca092d64d5af644a6..5d7725ba1558b9be09f1c6696511f908e9b8b288 100644
--- a/test/language/expressions/generators/dstr-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/generators/dstr-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-ary-ptrn-rest-init-obj.js b/test/language/expressions/generators/dstr-ary-ptrn-rest-init-obj.js
index d1a7e12b5a5a462b3275c22672782362bd5a1645..1051b82e80e2a2f353d58c357e60f6bff2d2a9f4 100644
--- a/test/language/expressions/generators/dstr-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/generators/dstr-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-ary.js
index b639ce36170eaf6502e7ccc6ab12471b429158a4..ca32c145222d9948df49d85bb0cd70734ea87e01 100644
--- a/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-id.js b/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-id.js
index 491f27ec8a6451f8a80f7d0c348800f32040ce0e..7390832dd695966de5a8fc1e89d7036874803ecd 100644
--- a/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-obj.js
index be3207a344fa76d6e3a6b695adfc7d53c3ce89f7..76692ec2443ded8f58fd1ec3cd9fe317abd99a1d 100644
--- a/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/generators/dstr-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-ary.js b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-ary.js
index 820d7a0f69cb92067f0e0fd254e520c24efee655..09509cdff500d1a6b65645ef407533e0e1cbc51e 100644
--- a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-id.js b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-id.js
index 9c5eada2b5dea1c5104b4697e7a1beffdf754624..6c37964d48a3f5ce492bc283619618718e01c0d7 100644
--- a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-obj.js b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-obj.js
index 66e9c0440d0780624f3ea0e692f1350b99619a74..9bdede978ec5cb69f2fff20a31e1f6de2ec98a51 100644
--- a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-ary.js
index 94c31adaad238a7cfa110a434bed6538a8d340e6..bbee189fe4b885d7612deff56db01178cdd9da08 100644
--- a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-id.js b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-id.js
index 2b0bb88a009af55c11ddeab7034b9f25329a0682..cbc265d71b47ba724e5df68efbd0182d42563908 100644
--- a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-obj.js
index d7410ed621a295043c08639f1849cc1c6d17aca7..f27011345e43608197f0895b46e4864a8232ae47 100644
--- a/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/generators/dstr-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/param-dflt-yield.js b/test/language/expressions/generators/param-dflt-yield.js
index 98952a297412e4e5388caf2017a321f434e57c16..7b197f737da8eaad3cd802ddf3bce3f74844f8f7 100644
--- a/test/language/expressions/generators/param-dflt-yield.js
+++ b/test/language/expressions/generators/param-dflt-yield.js
@@ -15,7 +15,9 @@ info: |
   function because any expressions that are part of FormalParameters are
   evaluated before the resulting generator object is in a resumable state.
 features: [default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, function*(x = yield) {};
diff --git a/test/language/expressions/generators/params-dflt-duplicates.js b/test/language/expressions/generators/params-dflt-duplicates.js
index e3f678e6de0cd769f794de733461a17d1116277c..ec59c68f5dd3441f00b819aad45adc3a4755fcf9 100644
--- a/test/language/expressions/generators/params-dflt-duplicates.js
+++ b/test/language/expressions/generators/params-dflt-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/params-dflt-rest.js b/test/language/expressions/generators/params-dflt-rest.js
index 132b5c3ca775e21a82e4fb84ad6b0b3f0689cb30..e428dc2252ac654104ea6df8632111dc9e5f40da 100644
--- a/test/language/expressions/generators/params-dflt-rest.js
+++ b/test/language/expressions/generators/params-dflt-rest.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-evaluation
 es6id: 14.4.14
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorExpression : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/expressions/generators/use-strict-with-non-simple-param.js b/test/language/expressions/generators/use-strict-with-non-simple-param.js
index f6fdefd3beb1277f08e1b41820db02215e2dcfd8..7d5d29a8ca62d973b9b3c8a66965e322f8aad156 100755
--- a/test/language/expressions/generators/use-strict-with-non-simple-param.js
+++ b/test/language/expressions/generators/use-strict-with-non-simple-param.js
@@ -9,7 +9,9 @@ info: >
   Static Semantics: Early Errors
 
   It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and IsSimpleParameterList of FormalParameters is false.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var f = function*(a = 0) {
diff --git a/test/language/expressions/generators/yield-as-binding-identifier.js b/test/language/expressions/generators/yield-as-binding-identifier.js
index ed9abdc800d64bfb64624cbb42662244aa8dfce6..d90c5945efe1521e8b30bdacbb3223e4e02ca892 100644
--- a/test/language/expressions/generators/yield-as-binding-identifier.js
+++ b/test/language/expressions/generators/yield-as-binding-identifier.js
@@ -6,7 +6,9 @@
       `yield` is a reserved keyword within generator function bodies and may
       not be used as a binding identifier.
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var g = function*() {
diff --git a/test/language/expressions/generators/yield-as-generator-expression-binding-identifier.js b/test/language/expressions/generators/yield-as-generator-expression-binding-identifier.js
index dc0b188e2171fb6c1aed7edd2f69938a08eee1d6..dd7a81201d677866134826e6254fa4bc90511fc9 100644
--- a/test/language/expressions/generators/yield-as-generator-expression-binding-identifier.js
+++ b/test/language/expressions/generators/yield-as-generator-expression-binding-identifier.js
@@ -6,7 +6,9 @@
       `yield` is not a valid BindingIdentifier for GeneratorExpressions.
   es6id: 12.1.1
   flags: [noStrict]
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var g = function* yield() {};
diff --git a/test/language/expressions/generators/yield-as-label.js b/test/language/expressions/generators/yield-as-label.js
index ffc9d4c75abc415342e040a0d64e67cad72ea28c..2d95446bf42a3b56aa66452b406036136c5c4a29 100644
--- a/test/language/expressions/generators/yield-as-label.js
+++ b/test/language/expressions/generators/yield-as-label.js
@@ -6,7 +6,9 @@
       `yield` is a reserved keyword within generator function bodies and may
       not be used as a label.
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var g = function*() {
diff --git a/test/language/expressions/generators/yield-as-logical-or-expression.js b/test/language/expressions/generators/yield-as-logical-or-expression.js
index 1c4264d26eaceedb257189e250a1e41d8f869315..88b70f7ba308524199576251f10e43d6bc7c6eb6 100644
--- a/test/language/expressions/generators/yield-as-logical-or-expression.js
+++ b/test/language/expressions/generators/yield-as-logical-or-expression.js
@@ -5,7 +5,9 @@
   description: >
       `yield` expressions are not LogicalOrExpressions.
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 
diff --git a/test/language/expressions/generators/yield-as-parameter.js b/test/language/expressions/generators/yield-as-parameter.js
index 8c05503db715123874aa6fce75d9ff6af126c266..d3cc877a86960d0312777fbd3ba315ade962d012 100644
--- a/test/language/expressions/generators/yield-as-parameter.js
+++ b/test/language/expressions/generators/yield-as-parameter.js
@@ -6,7 +6,9 @@
       `yield` is a reserved keyword within generator function bodies and may
       not be used as the binding identifier of a parameter.
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var g = function*(yield) {};
diff --git a/test/language/expressions/generators/yield-star-after-newline.js b/test/language/expressions/generators/yield-star-after-newline.js
index 8d407be32683775ff26f6498010afacbf2bce978..a54561a22808f94ca825e07bc98574244ff6c9c8 100644
--- a/test/language/expressions/generators/yield-star-after-newline.js
+++ b/test/language/expressions/generators/yield-star-after-newline.js
@@ -5,7 +5,9 @@
   description: >
       A newline may not precede the `*` token in a `yield` expression.
   es6id: 14.4
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var g = function*() {
diff --git a/test/language/expressions/generators/yield-weak-binding.js b/test/language/expressions/generators/yield-weak-binding.js
index b61a23b3a13a391dcaa9910ad9061069bb2fe2d7..edc3e8a6bbf9578f3aa17c9794cc4b2b5412a6ea 100644
--- a/test/language/expressions/generators/yield-weak-binding.js
+++ b/test/language/expressions/generators/yield-weak-binding.js
@@ -5,7 +5,9 @@
   description: >
       `yield` expressions bind weakly
   es6id: 14.4
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var g = function*() { yield 3 + yield 4; };
diff --git a/test/language/expressions/object/11.1.5-1gs.js b/test/language/expressions/object/11.1.5-1gs.js
index 2736cf7e55703043c6cd179926d2b385e6b979eb..3ce097d926836b8ff81fb53877c69a098e5fce9d 100644
--- a/test/language/expressions/object/11.1.5-1gs.js
+++ b/test/language/expressions/object/11.1.5-1gs.js
@@ -7,9 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown when 'eval' occurs as the
     Identifier in a PropertySetParameterList of a PropertyAssignment
     that is contained in strict code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 var obj = { set _11_1_5_1_fun(eval) {}};
diff --git a/test/language/expressions/object/cover-initialized-name.js b/test/language/expressions/object/cover-initialized-name.js
index 0f4291268e4a1b2e58e050cfa9ba124e809ad64c..9510a9918f1e49347c013ca9227e3594bff8e47c 100644
--- a/test/language/expressions/object/cover-initialized-name.js
+++ b/test/language/expressions/object/cover-initialized-name.js
@@ -22,7 +22,9 @@ info: |
   CoverInitializedName[Yield]:
 
     IdentifierReference[?Yield] Initializer[+In, ?Yield]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 ({ a = 1 });
diff --git a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-ary.js b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-ary.js
index 40ae01fde561f9ce59986c9fd6176537f320a0fe..8cc795167cae8ebfe539f06b6aabed6d386738ef 100644
--- a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-id.js b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-id.js
index bf51ed72cad293f1489a11136141a45e04c74173..8ff51f4b4b4e91a235cb106c39353ce3e0747c6d 100644
--- a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-obj.js b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-obj.js
index a4fa2453042a3994ce9a0a86664837e729ebd67f..bddc0cc97111c314a31e759442335e419208235f 100644
--- a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js
index 4740c9b424555d3b0d56a86dbdd7e1cfc83fc35d..c996abb54c92f6191a8e76fc129aab474a5a60a7 100644
--- a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-id.js b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-id.js
index e26f893221199e3fdc359f5ef5e58cb7319e8b7f..886bc24110fb2bdbde7a5bb1a349114b51fdf543 100644
--- a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js
index 2bdd01a591a7c6412eeb13b5a486e00c458ff006..6019d38f970fe7071d432d726800d12addfa4a0a 100644
--- a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js
index fc64797f94f1eecdc09710b6fabdce328742acc7..6bbc29a19bdd0134107b07c78d385285e387c5bc 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js
index ef7048267e13d19209822fdf9c07614bb61871f5..edc58eef5410b7215678940fae049af55aaa6b03 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js
index 14875b74285fc1d8a5a587ac272ee7ffe96091c9..c9879cfea7508aa3a2814491798dfdab4a8cba72 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
index 0901fdc1cec79d0e70dba56ec7d842795b0e9101..8f2f0906f8c1c1bd717729ed95b7c397fed97c15 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
index bbe133b41c43be81bf7f612262adc58c63d6cd57..63723cc0fd36d381955e6f2caedc97662b89a85b 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
index 0ba6470e0e6fef5a0eb5585f4dd72bb2b6f8cc4d..c57035b1527103f5a37e8c353b99b58e138fe9bc 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-ary.js b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-ary.js
index 95fbd4f758d831d2eab6143b834a7771408cd72c..16492a2511982151a0e5554dc563b76e1d550a52 100644
--- a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-id.js b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-id.js
index 992b5f68d51ff725a0b8324a582041b1ad93f858..c027c4223d9d262962aae34bd04c8241735c56f3 100644
--- a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-obj.js b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-obj.js
index 5aef422ff2951f153c48a01b416068c7fae19ebd..50b6cf000f233d3907ed7a579b24a5db749d1e59 100644
--- a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-ary.js
index dd6bd66ea9b1f9cbff16a496b8eced74b7fb5052..90691cb3a00a0feb197ce04814282d8af5c54630 100644
--- a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-id.js b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-id.js
index 3621353f4be541e24625d2297165cc758d75b7ee..4e10585cb2f476d2fa53a34a8c2e5b88ed0f2208 100644
--- a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-obj.js
index 2c8d69e029115e73384f8fa6f66814015b7cd161..822c61dc2d194b2c6de8c4c7ef1bf8782bf4bb03 100644
--- a/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/object/dstr-meth-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-ary.js b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-ary.js
index 9e929a4f9f87c44f9a41f91730f028f14b7daeb6..c842e9c49a9853efbd59404153c7f32dc3421710 100644
--- a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-id.js b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-id.js
index 56edab5975d9136bee748f55d8ed990c782f9c02..ceef98da11c709597b50268b5e6db563d7fa18dc 100644
--- a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-obj.js b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-obj.js
index 21c0c228440cfdfe972cbc0f5df837ce3ef70c07..65bdbf938becc23d7c141bc38522664fc08bccbf 100644
--- a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js
index a52f4769a9ed4ad76e5e87d993e59390949666fc..3806163d2cae0df59d36c171af316e312d3ca17c 100644
--- a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js
index 5fe8826d5ec53bdcb5f1370c46c0b73aefe039ae..6bdf91f61ea82a0480a102e30730ba7146a86c14 100644
--- a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js
index 6dc54a3411782f375fa5d193ebc336b4f79ab9ef..f201b2fb4061f797f6d8652202c318dd818f5ac3 100644
--- a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/getter-param-dflt.js b/test/language/expressions/object/getter-param-dflt.js
index 12d1a159a4cac5ef081018127cdc85038f5c3e33..0b2ad2bf1ccbdfdf931350d6ed21d013513912b2 100644
--- a/test/language/expressions/object/getter-param-dflt.js
+++ b/test/language/expressions/object/getter-param-dflt.js
@@ -13,7 +13,9 @@ info: |
 
     get PropertyName[?Yield] ( ) { FunctionBody }
 features: [default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0, { get a(param = null) {} };
diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-NSPL-with-USD.js b/test/language/expressions/object/method-definition/early-errors-object-method-NSPL-with-USD.js
index 1f88b5662cbb307eae039b9a75f7ff4e02ad649d..998971ed007967112f0f439b80fea86e54a0c981 100644
--- a/test/language/expressions/object/method-definition/early-errors-object-method-NSPL-with-USD.js
+++ b/test/language/expressions/object/method-definition/early-errors-object-method-NSPL-with-USD.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is *true* and IsSimpleParameterList of ArrowParameters is *false*.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 ({
   foo(x = 1) {"use strict"}
diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js b/test/language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js
index 049113d84d5402a3bbd9297a8bb4a2e197da25b9..4d67144a28f9b259705885b51acf4115de173e34 100644
--- a/test/language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js
+++ b/test/language/expressions/object/method-definition/early-errors-object-method-arguments-in-formal-parameters.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains arguments
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 !{
diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals-default.js b/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals-default.js
index 68c37c0b028f646c58283dea37cc5683ea248e54..8b6dc5ebff34f59cf652751fa1d9d9a27b19e6f4 100644
--- a/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals-default.js
+++ b/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals-default.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters' default expressions contains await
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 !{
   async foo (x = await) {  }
diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals.js b/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals.js
index b390fd2a93646dcb6e744843e877045821acc597..c606a9a4499191a9d1a06ca66f0129b5c6313e3e 100644
--- a/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals.js
+++ b/test/language/expressions/object/method-definition/early-errors-object-method-await-in-formals.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains await
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 !{
   async foo (await) {  }
diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js b/test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js
index 3eda7715238f572e0c27f774abce351bca425f12..8f8852146ca894679feac6f0e41f63a7551a3ee2 100644
--- a/test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js
+++ b/test/language/expressions/object/method-definition/early-errors-object-method-body-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if AsyncFunctionBody contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 !{
   async foo () { super() }
diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js b/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js
index 9282c45e6aff39742d581c11928d666a2e8a2386..aee8ea55e851fe800329bf82e8ee5d18d6db9335 100644
--- a/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js
+++ b/test/language/expressions/object/method-definition/early-errors-object-method-duplicate-parameters.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   Early error rules for StrictFormalParameters are applied
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 !{
   async foo(a, a) { }
diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js b/test/language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js
index 9eb6231406fd426f552fcc582ea666414778fa92..b80ee27ac1c8d0fe9cc98136bc311dcdaf843033 100644
--- a/test/language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js
+++ b/test/language/expressions/object/method-definition/early-errors-object-method-eval-in-formal-parameters.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains eval in strict mode
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 !{
diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-formals-body-duplicate.js b/test/language/expressions/object/method-definition/early-errors-object-method-formals-body-duplicate.js
index d8697085fd2bc8c1b591dd6f6c98241d3975221b..62bc0144e40c363a0d11edf4f12ec65dedcfc51c 100644
--- a/test/language/expressions/object/method-definition/early-errors-object-method-formals-body-duplicate.js
+++ b/test/language/expressions/object/method-definition/early-errors-object-method-formals-body-duplicate.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if BoundNames of FormalParameters also occurs in the LexicallyDeclaredNames of AsyncFunctionBody
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 !{
diff --git a/test/language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js b/test/language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js
index b46d1ea4b5a2013f497f1875aa6084192fd47930..b3b50267ad22d004476121fec88a4faeaf2870cd 100644
--- a/test/language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js
+++ b/test/language/expressions/object/method-definition/early-errors-object-method-formals-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if FormalParameters contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 !{
   async foo(foo = super()) { }
diff --git a/test/language/expressions/object/method-definition/generator-param-id-yield.js b/test/language/expressions/object/method-definition/generator-param-id-yield.js
index ac5e6786980a1d09d78e0ba56a02e2f4ac69a692..0940b3b2d6abc3829fefa6909af78ea4758052fc 100644
--- a/test/language/expressions/object/method-definition/generator-param-id-yield.js
+++ b/test/language/expressions/object/method-definition/generator-param-id-yield.js
@@ -8,7 +8,9 @@ description: >
 es6id: 14.4
 features: [generators]
 flags: [noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 ({
diff --git a/test/language/expressions/object/method-definition/generator-param-init-yield.js b/test/language/expressions/object/method-definition/generator-param-init-yield.js
index d09bc6d88dcb9cd1aab96e1bb72280205f7f3087..6be615849663faddf289bd927957ca613a91f9aa 100644
--- a/test/language/expressions/object/method-definition/generator-param-init-yield.js
+++ b/test/language/expressions/object/method-definition/generator-param-init-yield.js
@@ -8,7 +8,9 @@ description: >
 es6id: 14.4
 features: [generators]
 flags: [noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (function*() {
diff --git a/test/language/expressions/object/method-definition/generator-param-redecl-const.js b/test/language/expressions/object/method-definition/generator-param-redecl-const.js
index 8f1969cab3b40bcc5579e47076547f662e7d002e..3e35fe08ee89322399b37de684ec1915f3ac31d7 100644
--- a/test/language/expressions/object/method-definition/generator-param-redecl-const.js
+++ b/test/language/expressions/object/method-definition/generator-param-redecl-const.js
@@ -9,7 +9,9 @@ features: [generators]
 es6id: 14.4.1
 author: Sam Mikes
 description: GeneratorMethod error with lexical shadowing
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/generator-param-redecl-let.js b/test/language/expressions/object/method-definition/generator-param-redecl-let.js
index 0646eccd4a606021eb70283e838c1729cfc185b4..ccce54ca69b2a07f6af2a9a01f57564d18c8451d 100644
--- a/test/language/expressions/object/method-definition/generator-param-redecl-let.js
+++ b/test/language/expressions/object/method-definition/generator-param-redecl-let.js
@@ -9,7 +9,9 @@ features: [generators]
 es6id: 14.4.1
 author: Sam Mikes
 description: GeneratorMethod error with lexical shadowing
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/generator-super-call-body.js b/test/language/expressions/object/method-definition/generator-super-call-body.js
index 6dfa31f7fd7e696bf21800e10ee29ce9a9cdc58e..d53ce77077ea4ecc235ca5b6977fa3ace08de13f 100644
--- a/test/language/expressions/object/method-definition/generator-super-call-body.js
+++ b/test/language/expressions/object/method-definition/generator-super-call-body.js
@@ -9,7 +9,9 @@ features: [generators]
 es6id: 14.4.1
 author: Sam Mikes
 description: GeneratorMethod error if HasDirectSuper in body
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/generator-super-call-param.js b/test/language/expressions/object/method-definition/generator-super-call-param.js
index bfbd2fb8ad3420e1caeaa22831f0381910b034dc..3d3faa0deefec8d365e5aae64736ac848731be7a 100644
--- a/test/language/expressions/object/method-definition/generator-super-call-param.js
+++ b/test/language/expressions/object/method-definition/generator-super-call-param.js
@@ -9,7 +9,9 @@ features: [generators]
 es6id: 14.4.1
 author: Sam Mikes
 description: GeneratorMethod error if HasDirectSuper in args
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/generator-use-strict-with-non-simple-param.js b/test/language/expressions/object/method-definition/generator-use-strict-with-non-simple-param.js
index 2bb13df664b7d9c0e0564dbd4ea8c9ffeb9748d7..84ee6745446f942c1bd78a4b91868fd274fcff93 100755
--- a/test/language/expressions/object/method-definition/generator-use-strict-with-non-simple-param.js
+++ b/test/language/expressions/object/method-definition/generator-use-strict-with-non-simple-param.js
@@ -9,7 +9,9 @@ info: >
   Static Semantics: Early Errors
 
   It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and IsSimpleParameterList of StrictFormalParameters is false.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var o = {
diff --git a/test/language/expressions/object/method-definition/name-param-redecl.js b/test/language/expressions/object/method-definition/name-param-redecl.js
index d435a450b59702b5fd37045af1b871730eee7a71..ec216791284bca46c5560117a13e13b03a6bf902 100644
--- a/test/language/expressions/object/method-definition/name-param-redecl.js
+++ b/test/language/expressions/object/method-definition/name-param-redecl.js
@@ -7,7 +7,9 @@ description: >
     StrictFormalParameters also occurs in the LexicallyDeclaredNames of
     FunctionBody.
 es6id: 14.3.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/name-super-call-body.js b/test/language/expressions/object/method-definition/name-super-call-body.js
index 5334201b91487fad0742e062e07319cbc2717a69..395a8c12acc399c2f2ba6a123c99364901fe0c3d 100644
--- a/test/language/expressions/object/method-definition/name-super-call-body.js
+++ b/test/language/expressions/object/method-definition/name-super-call-body.js
@@ -5,7 +5,9 @@
 description: >
     It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
 es6id: 12.2.5.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 ({
diff --git a/test/language/expressions/object/method-definition/name-super-call-param.js b/test/language/expressions/object/method-definition/name-super-call-param.js
index cf96e2f4b0de98031855bf6e63704bb82ac9c04c..5648a35bf78534cee8d9e8af5b1e4b5b835244a0 100644
--- a/test/language/expressions/object/method-definition/name-super-call-param.js
+++ b/test/language/expressions/object/method-definition/name-super-call-param.js
@@ -5,7 +5,9 @@
 description: >
     It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
 es6id: 12.2.5.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 ({
diff --git a/test/language/expressions/object/method-definition/params-dflt-gen-meth-duplicates.js b/test/language/expressions/object/method-definition/params-dflt-gen-meth-duplicates.js
index 254363d98b468e7586300c055af3faf185a2e1b9..13d821d23e331eb3e565c1563529366d370a7bc0 100644
--- a/test/language/expressions/object/method-definition/params-dflt-gen-meth-duplicates.js
+++ b/test/language/expressions/object/method-definition/params-dflt-gen-meth-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/method-definition/params-dflt-gen-meth-rest.js b/test/language/expressions/object/method-definition/params-dflt-gen-meth-rest.js
index 6e313f186e3fe8c9f15df15e87e17335547c8538..f08a5258e76b7bc656458ac44e86b6221bbadf5d 100644
--- a/test/language/expressions/object/method-definition/params-dflt-gen-meth-rest.js
+++ b/test/language/expressions/object/method-definition/params-dflt-gen-meth-rest.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-propertydefinitioneva
 es6id: 14.4.13
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorMethod :
         * PropertyName ( StrictFormalParameters ) { GeneratorBody }
diff --git a/test/language/expressions/object/method-definition/params-dflt-meth-duplicates.js b/test/language/expressions/object/method-definition/params-dflt-meth-duplicates.js
index 3f996e27d31842df396f37fc707bd2f167b12a17..49a569030a2ea9bdec668d6aa4abe3af6cc7bcdb 100644
--- a/test/language/expressions/object/method-definition/params-dflt-meth-duplicates.js
+++ b/test/language/expressions/object/method-definition/params-dflt-meth-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/method-definition/params-dflt-meth-rest.js b/test/language/expressions/object/method-definition/params-dflt-meth-rest.js
index 258dabf5874fb8024cefe98b56881b0195c7c994..0fbbe6aa73f3f0b2a6fec9624b7cbd688846d358 100644
--- a/test/language/expressions/object/method-definition/params-dflt-meth-rest.js
+++ b/test/language/expressions/object/method-definition/params-dflt-meth-rest.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-definemethod
 es6id: 14.3.8
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     MethodDefinition : PropertyName ( StrictFormalParameters ) { FunctionBody }
 
diff --git a/test/language/expressions/object/method-definition/params-trailing-comma-rest.js b/test/language/expressions/object/method-definition/params-trailing-comma-rest.js
index db4d00e2b8db7268a61dd0ec0fd2cfffc39c6ae4..8c62102420feb8cad49d0f07814caaabd9318cba 100644
--- a/test/language/expressions/object/method-definition/params-trailing-comma-rest.js
+++ b/test/language/expressions/object/method-definition/params-trailing-comma-rest.js
@@ -6,7 +6,9 @@ description: >
   object method parameter lists.
 info: http://jeffmo.github.io/es-trailing-function-commas/
 author: Jeff Morrison <lbljeffmo@gmail.com>
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 ({
   m(...[],) {}
diff --git a/test/language/expressions/object/method-definition/setter-use-strict-with-non-simple-param.js b/test/language/expressions/object/method-definition/setter-use-strict-with-non-simple-param.js
index cb95f17a29fa30b363b52bcead607ae562653b5d..dda7de9147f01b38681e2793fbd013a47f382ed9 100755
--- a/test/language/expressions/object/method-definition/setter-use-strict-with-non-simple-param.js
+++ b/test/language/expressions/object/method-definition/setter-use-strict-with-non-simple-param.js
@@ -9,7 +9,9 @@ info: >
   Static Semantics: Early Errors
 
   It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of PropertySetParameterList is false.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var o = {
diff --git a/test/language/expressions/object/method-definition/use-strict-with-non-simple-param.js b/test/language/expressions/object/method-definition/use-strict-with-non-simple-param.js
index 17b9ed9cb5f670bc5ba5e2650b9b77b2c456cab7..953ed8c42a977d6367f7da5961cedc422451d56a 100755
--- a/test/language/expressions/object/method-definition/use-strict-with-non-simple-param.js
+++ b/test/language/expressions/object/method-definition/use-strict-with-non-simple-param.js
@@ -9,7 +9,9 @@ info: >
   Static Semantics: Early Errors
 
    It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of StrictFormalParameters is false.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var o = {
diff --git a/test/language/expressions/object/method-definition/yield-as-binding-identifier.js b/test/language/expressions/object/method-definition/yield-as-binding-identifier.js
index c3199ecc6006c19e924156de141618fe12e11294..20310e2e59d6ab68c864e9099ad1b25691192b18 100644
--- a/test/language/expressions/object/method-definition/yield-as-binding-identifier.js
+++ b/test/language/expressions/object/method-definition/yield-as-binding-identifier.js
@@ -7,7 +7,9 @@
       not be used as a binding identifier.
   features: [generators]
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/yield-as-label.js b/test/language/expressions/object/method-definition/yield-as-label.js
index 7bfc52d6018395f2f49c5584dcfefcfa19597dc7..6a9f15f16fc7e2ffa9d025807bfd14c8cf03eb85 100644
--- a/test/language/expressions/object/method-definition/yield-as-label.js
+++ b/test/language/expressions/object/method-definition/yield-as-label.js
@@ -7,7 +7,9 @@
       not be used as a label.
   features: [generators]
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/yield-as-logical-or-expression.js b/test/language/expressions/object/method-definition/yield-as-logical-or-expression.js
index 922ca27a0ef6e9bc8310976c154fb2555c72d0e6..017cc5e92285eca24603fee8b4b34dedf5130b3f 100644
--- a/test/language/expressions/object/method-definition/yield-as-logical-or-expression.js
+++ b/test/language/expressions/object/method-definition/yield-as-logical-or-expression.js
@@ -6,7 +6,9 @@
       `yield` expressions are not LogicalOrExpressions.
   features: [generators]
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/yield-as-parameter.js b/test/language/expressions/object/method-definition/yield-as-parameter.js
index a5edb6c440b3d9599e4e2a2939c2334cca0fe257..1e297a5befd2720efbf0b2cddf3502caf785002e 100644
--- a/test/language/expressions/object/method-definition/yield-as-parameter.js
+++ b/test/language/expressions/object/method-definition/yield-as-parameter.js
@@ -7,7 +7,9 @@
       not be used as the binding identifier of a parameter.
   features: [generators]
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/yield-star-after-newline.js b/test/language/expressions/object/method-definition/yield-star-after-newline.js
index 820a60d2f887b6c615be10669058852d15a09ca2..92a79b20939b91a4ab9c18bafcd863d216a71be8 100644
--- a/test/language/expressions/object/method-definition/yield-star-after-newline.js
+++ b/test/language/expressions/object/method-definition/yield-star-after-newline.js
@@ -6,7 +6,9 @@
       A newline may not precede the `*` token in a `yield` expression.
   features: [generators]
   es6id: 14.4
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var obj = {
diff --git a/test/language/expressions/object/method-definition/yield-weak-binding.js b/test/language/expressions/object/method-definition/yield-weak-binding.js
index 6e40c6684d573a6b841c30a706f94fba8cddde16..24f5aaa35d30ec164e35f3b66a34063b68351b8c 100644
--- a/test/language/expressions/object/method-definition/yield-weak-binding.js
+++ b/test/language/expressions/object/method-definition/yield-weak-binding.js
@@ -6,7 +6,9 @@
       `yield` expressions bind weakly
   features: [generators]
   es6id: 14.4
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var obj = {
diff --git a/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T1.js b/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T1.js
index 226042ee9d82efaf6ae6e941e0468871375339b3..457afcd321e044751f9416022a03f886dba0139e 100644
--- a/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T1.js
+++ b/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T1.js
@@ -5,8 +5,8 @@
 info: Line Terminator between LeftHandSideExpression and "--" is not allowed
 es5id: 11.3.2_A1.1_T1
 description: Checking Line Feed
-negative: SyntaxError
 ---*/
 
-//CHECK#1
-eval("var x = 1; x\u000A--");
+assert.throws(SyntaxError, function() {
+  eval("var x = 1; x\u000A--");
+});
diff --git a/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T2.js b/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T2.js
index 5f9564515efc9651df6cf351d825d1cee5b80d4f..c34cb927b247327239dcae3f3fa4c843e8340043 100644
--- a/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T2.js
+++ b/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T2.js
@@ -5,8 +5,8 @@
 info: Line Terminator between LeftHandSideExpression and "--" is not allowed
 es5id: 11.3.2_A1.1_T2
 description: Checking Carriage Return
-negative: SyntaxError
 ---*/
 
-//CHECK#1
-eval("var x = 1; x\u000D--");
+assert.throws(SyntaxError, function() {
+  eval("var x = 1; x\u000D--");
+});
diff --git a/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T3.js b/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T3.js
index e691a9a9a0aa202d4d33e23657f34f5f4e7efc2b..6ea38029abb40be635dd81a86cd529b77267fb3a 100644
--- a/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T3.js
+++ b/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T3.js
@@ -5,8 +5,8 @@
 info: Line Terminator between LeftHandSideExpression and "--" is not allowed
 es5id: 11.3.2_A1.1_T3
 description: Checking Page separator
-negative: SyntaxError
 ---*/
 
-//CHECK#1
-eval("var x = 1; x\u2028--");
+assert.throws(SyntaxError, function() {
+  eval("var x = 1; x\u2028--");
+});
diff --git a/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T4.js b/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T4.js
index 9dcac1ee08e610377d11e27d648fd1fa22db2d0b..e83bfb49fba9e76a3583e1a50a35d27fab370a19 100644
--- a/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T4.js
+++ b/test/language/expressions/postfix-decrement/S11.3.2_A1.1_T4.js
@@ -5,8 +5,8 @@
 info: Line Terminator between LeftHandSideExpression and "--" is not allowed
 es5id: 11.3.2_A1.1_T4
 description: Checking Line separator
-negative: SyntaxError
 ---*/
 
-//CHECK#1
-eval("var x = 1; x\u2029--");
+assert.throws(SyntaxError, function() {
+  eval("var x = 1; x\u2029--");
+});
diff --git a/test/language/expressions/postfix-decrement/non-simple.js b/test/language/expressions/postfix-decrement/non-simple.js
index 3387ae66661eb03b4e69858f47252528ff53faae..0b0a4c00260922bf479b7ded81e69a82a23e9ac2 100644
--- a/test/language/expressions/postfix-decrement/non-simple.js
+++ b/test/language/expressions/postfix-decrement/non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.4.1
 description: Applied to a non-simple assignment target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1--;
diff --git a/test/language/expressions/postfix-decrement/target-cover-newtarget.js b/test/language/expressions/postfix-decrement/target-cover-newtarget.js
index 55e3789d408103768e9fb01a08f15182bce2d693..addf7402410218110de8ea02d92d032490638415 100644
--- a/test/language/expressions/postfix-decrement/target-cover-newtarget.js
+++ b/test/language/expressions/postfix-decrement/target-cover-newtarget.js
@@ -19,7 +19,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/postfix-decrement/target-cover-yieldexpr.js b/test/language/expressions/postfix-decrement/target-cover-yieldexpr.js
index 4d7448ae89834f6e791cccde625f22fe2e21f49b..ac7fc2020693f018c3a7d897573a8c4efd600752 100644
--- a/test/language/expressions/postfix-decrement/target-cover-yieldexpr.js
+++ b/test/language/expressions/postfix-decrement/target-cover-yieldexpr.js
@@ -22,7 +22,9 @@ info: |
 
   1. Return false.
 features: [generators]
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function* g() {
diff --git a/test/language/expressions/postfix-decrement/target-newtarget.js b/test/language/expressions/postfix-decrement/target-newtarget.js
index bddee29f1ed2b259b6905bd7088e5a31cce319e1..d2a43e5192ac8ed3d63cd32dd90f95252c4b3c3f 100644
--- a/test/language/expressions/postfix-decrement/target-newtarget.js
+++ b/test/language/expressions/postfix-decrement/target-newtarget.js
@@ -19,7 +19,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/postfix-increment/11.3.1-2-1gs.js b/test/language/expressions/postfix-increment/11.3.1-2-1gs.js
index f79ce4d42187f8c38235b80ea301fb60832182af..bbe5b5523b9bc2643537befc602e5ebe7922b2a9 100644
--- a/test/language/expressions/postfix-increment/11.3.1-2-1gs.js
+++ b/test/language/expressions/postfix-increment/11.3.1-2-1gs.js
@@ -6,9 +6,10 @@ es5id: 11.3.1-2-1gs
 description: >
     Strict Mode - SyntaxError is throw if the identifier arguments
     appear as a PostfixExpression(arguments++)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 arguments++;
diff --git a/test/language/expressions/postfix-increment/S11.3.1_A1.1_T1.js b/test/language/expressions/postfix-increment/S11.3.1_A1.1_T1.js
index 3e678b5ed253745d8f679967127978dd3f446627..9800f7c545a181ab75c9a05e01f851498198b798 100644
--- a/test/language/expressions/postfix-increment/S11.3.1_A1.1_T1.js
+++ b/test/language/expressions/postfix-increment/S11.3.1_A1.1_T1.js
@@ -5,8 +5,8 @@
 info: Line Terminator between LeftHandSideExpression and "++" is not allowed
 es5id: 11.3.1_A1.1_T1
 description: Checking Line Feed
-negative: SyntaxError
 ---*/
 
-//CHECK#1
-eval("var x = 1; x\u000A++");
+assert.throws(SyntaxError, function() {
+  eval("var x = 1; x\u000A++");
+});
diff --git a/test/language/expressions/postfix-increment/S11.3.1_A1.1_T2.js b/test/language/expressions/postfix-increment/S11.3.1_A1.1_T2.js
index 296ea00009a5db848f192f712b160c164caf02be..58dac29479878369681506822a9707de0118da46 100644
--- a/test/language/expressions/postfix-increment/S11.3.1_A1.1_T2.js
+++ b/test/language/expressions/postfix-increment/S11.3.1_A1.1_T2.js
@@ -5,8 +5,8 @@
 info: Line Terminator between LeftHandSideExpression and "++" is not allowed
 es5id: 11.3.1_A1.1_T2
 description: Carriage Return
-negative: SyntaxError
 ---*/
 
-//CHECK#1
-eval("var x = 1; x\u000D++");
+assert.throws(SyntaxError, function() {
+  eval("var x = 1; x\u000D++");
+});
diff --git a/test/language/expressions/postfix-increment/S11.3.1_A1.1_T3.js b/test/language/expressions/postfix-increment/S11.3.1_A1.1_T3.js
index d6a51bd559de62c0820bcd42229ebe0a18c81306..01eb9226159f1f46ae1eeee4042932c5bd93bcc9 100644
--- a/test/language/expressions/postfix-increment/S11.3.1_A1.1_T3.js
+++ b/test/language/expressions/postfix-increment/S11.3.1_A1.1_T3.js
@@ -5,8 +5,8 @@
 info: Line Terminator between LeftHandSideExpression and "++" is not allowed
 es5id: 11.3.1_A1.1_T3
 description: Checking Line Seprator
-negative: SyntaxError
 ---*/
 
-//CHECK#1
-eval("var x = 1; x\u2028++");
+assert.throws(SyntaxError, function() {
+  eval("var x = 1; x\u2028++");
+});
diff --git a/test/language/expressions/postfix-increment/S11.3.1_A1.1_T4.js b/test/language/expressions/postfix-increment/S11.3.1_A1.1_T4.js
index 8afd23013d513a6070deedfa016f40184fad4565..3e5727708f002e34891d3fb0d136be6cc954c3c7 100644
--- a/test/language/expressions/postfix-increment/S11.3.1_A1.1_T4.js
+++ b/test/language/expressions/postfix-increment/S11.3.1_A1.1_T4.js
@@ -5,8 +5,8 @@
 info: Line Terminator between LeftHandSideExpression and "++" is not allowed
 es5id: 11.3.1_A1.1_T4
 description: Checking Paragraph separator
-negative: SyntaxError
 ---*/
 
-//CHECK#1
-eval("var x = 1; x\u2029++");
+assert.throws(SyntaxError, function() {
+  eval("var x = 1; x\u2029++");
+});
diff --git a/test/language/expressions/postfix-increment/non-simple.js b/test/language/expressions/postfix-increment/non-simple.js
index 5d90aed8c7296472b251815ba3e1ae98bb0423c8..b16792df6d9da8e0204a999e668f430fe9b66b87 100644
--- a/test/language/expressions/postfix-increment/non-simple.js
+++ b/test/language/expressions/postfix-increment/non-simple.js
@@ -7,7 +7,9 @@ info: >
     LeftHandSideExpression is false.
 es6id: 12.4.1
 description: Applied to a non-simple assignment target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1++;
diff --git a/test/language/expressions/postfix-increment/target-cover-newtarget.js b/test/language/expressions/postfix-increment/target-cover-newtarget.js
index 7168110cf022295446d271b216ea74863ebfd0bb..a2260b38236b9f7d11049114c594acda13aae8c8 100644
--- a/test/language/expressions/postfix-increment/target-cover-newtarget.js
+++ b/test/language/expressions/postfix-increment/target-cover-newtarget.js
@@ -19,7 +19,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/postfix-increment/target-cover-yieldexpr.js b/test/language/expressions/postfix-increment/target-cover-yieldexpr.js
index 3fdc200d01cbe8cec1ea9586245cce08258e39dd..86c2497a18aaa5c8e685ad844818c2be970e6aed 100644
--- a/test/language/expressions/postfix-increment/target-cover-yieldexpr.js
+++ b/test/language/expressions/postfix-increment/target-cover-yieldexpr.js
@@ -22,7 +22,9 @@ info: |
 
   1. Return false.
 features: [generators]
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function* g() {
diff --git a/test/language/expressions/postfix-increment/target-newtarget.js b/test/language/expressions/postfix-increment/target-newtarget.js
index 1cc7a2d226285348c7247ba99f65dda2fa997b69..86d2b5c0c2021b1cc6582230e1bde9f3151293f4 100644
--- a/test/language/expressions/postfix-increment/target-newtarget.js
+++ b/test/language/expressions/postfix-increment/target-newtarget.js
@@ -19,7 +19,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/prefix-decrement/11.4.5-2-2gs.js b/test/language/expressions/prefix-decrement/11.4.5-2-2gs.js
index 0f4e15936a52f7d3996e740c9a2636cf852ac3cd..a1e105b55c4fb99a35ff140c4220365fcfc3df8a 100644
--- a/test/language/expressions/prefix-decrement/11.4.5-2-2gs.js
+++ b/test/language/expressions/prefix-decrement/11.4.5-2-2gs.js
@@ -6,9 +6,10 @@ es5id: 11.4.5-2-2gs
 description: >
     Strict Mode - SyntaxError is throw if the UnaryExpression operated
     upon by a Prefix Decrement operator(--arguments)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 --arguments;
diff --git a/test/language/expressions/prefix-decrement/non-simple.js b/test/language/expressions/prefix-decrement/non-simple.js
index b7a805a3b4dec9f75299762ea974043d2d84db48..2315bdb399b0d7c9c2153bff6b46d6e2f63e46db 100644
--- a/test/language/expressions/prefix-decrement/non-simple.js
+++ b/test/language/expressions/prefix-decrement/non-simple.js
@@ -7,7 +7,9 @@ info: >
     UnaryExpression is false.
 es5id: 12.5.1
 description: Applied to a non-simple assignment target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 --1;
diff --git a/test/language/expressions/prefix-decrement/target-cover-newtarget.js b/test/language/expressions/prefix-decrement/target-cover-newtarget.js
index 3037aca67abd2c3ad92078eeda2b27b274597ad3..15fc4ef1c677562724bd7b82c1898285f80fb116 100644
--- a/test/language/expressions/prefix-decrement/target-cover-newtarget.js
+++ b/test/language/expressions/prefix-decrement/target-cover-newtarget.js
@@ -19,7 +19,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/prefix-decrement/target-cover-yieldexpr.js b/test/language/expressions/prefix-decrement/target-cover-yieldexpr.js
index fbf6cbb2ccbe161da37d134fb3414397ce64ea96..a3ad214d55f2eacaa0527f8213aade21d6b8541a 100644
--- a/test/language/expressions/prefix-decrement/target-cover-yieldexpr.js
+++ b/test/language/expressions/prefix-decrement/target-cover-yieldexpr.js
@@ -22,7 +22,9 @@ info: |
 
   1. Return false.
 features: [generators]
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function* g() {
diff --git a/test/language/expressions/prefix-decrement/target-newtarget.js b/test/language/expressions/prefix-decrement/target-newtarget.js
index 4f8d1ecbef5eedd6f207666f39f05f30114087c4..e25ff8d75776b9c65dda3be73341f273a54e2726 100644
--- a/test/language/expressions/prefix-decrement/target-newtarget.js
+++ b/test/language/expressions/prefix-decrement/target-newtarget.js
@@ -19,7 +19,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/prefix-increment/non-simple.js b/test/language/expressions/prefix-increment/non-simple.js
index 42249e0536e5b954d21cae7c04bd3ec6f57faa43..59755b52180d66a4a8b32d5506f7557d3a38cf9f 100644
--- a/test/language/expressions/prefix-increment/non-simple.js
+++ b/test/language/expressions/prefix-increment/non-simple.js
@@ -7,7 +7,9 @@ info: >
    UnaryExpression is false.
 es6id: 12.5.1
 description: Applied to a non-simple assignment target
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 ++1;
diff --git a/test/language/expressions/prefix-increment/target-cover-newtarget.js b/test/language/expressions/prefix-increment/target-cover-newtarget.js
index 113b4a2074a28df482e0c41c08eeef967c02acea..8706d68c5ae9a556bbdfada0ba3cadc016e972a3 100644
--- a/test/language/expressions/prefix-increment/target-cover-newtarget.js
+++ b/test/language/expressions/prefix-increment/target-cover-newtarget.js
@@ -19,7 +19,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/prefix-increment/target-cover-yieldexpr.js b/test/language/expressions/prefix-increment/target-cover-yieldexpr.js
index 10ee8602e117f483defc0be2f2bc6fab966a579e..adc39d90bd69712ae5491afe4fa070a2dc567414 100644
--- a/test/language/expressions/prefix-increment/target-cover-yieldexpr.js
+++ b/test/language/expressions/prefix-increment/target-cover-yieldexpr.js
@@ -22,7 +22,9 @@ info: |
 
   1. Return false.
 features: [generators]
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function* g() {
diff --git a/test/language/expressions/prefix-increment/target-newtarget.js b/test/language/expressions/prefix-increment/target-newtarget.js
index 928f32b8c9f0ec34b585495399f1abfcc29a4a5a..a8bc7ed3b5c0a3053ac302dd7129bccf38db98cc 100644
--- a/test/language/expressions/prefix-increment/target-newtarget.js
+++ b/test/language/expressions/prefix-increment/target-newtarget.js
@@ -19,7 +19,9 @@ info: |
   new.target
 
   1. Return false.
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 function f() {
diff --git a/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-1.js b/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-1.js
index c645e965419e1445a133784e4b9805b34230079a..6733e62341df25395c0b4e11ce8e5de0dfba6575 100644
--- a/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-1.js
+++ b/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-1.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid hexidecimal character escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\x0`;
diff --git a/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-2.js b/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-2.js
index f32dea9c114ce0a9097564e69b94d41b1fd0dce5..a3636f28803214ed237355070442b14cfb20ad04 100644
--- a/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-2.js
+++ b/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-2.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid hexidecimal character escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\x0G`;
diff --git a/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-3.js b/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-3.js
index 04e03b16032ec968b324d602d80083765d7e8fe1..f93f16b7d7a7c222004ef79c0b24f61b7e837176 100644
--- a/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-3.js
+++ b/test/language/expressions/template-literal/invalid-hexidecimal-character-escape-sequence-truncated-3.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid hexidecimal character escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\xG`;
diff --git a/test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js b/test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js
index 806bf337d5f3b31e5969d740a812ed1f2bcc1605..fff2144f3095d63c35b0e6e05023d3e4d65149fc 100644
--- a/test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js
+++ b/test/language/expressions/template-literal/invalid-legacy-octal-escape-sequence.js
@@ -6,7 +6,9 @@ description: Invalid octal escape sequence
 info: >
     TemplateCharacter (11.8.6) must not be extended to include
     LegacyOctalEscapeSequence as defined in B.1.2.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\00`;
diff --git a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-1.js b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-1.js
index 053ead07345950ec086be0b0fa602f5c32cb1f69..efef7363555d16934d160fbab1c243884d3225a0 100644
--- a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-1.js
+++ b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-1.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid unicode escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\u0`;
diff --git a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-2.js b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-2.js
index 6c9e72a94812518dae95ce25fae3ce16297e73e6..762811de37d4fe6005a6f61f736371519cf70d0f 100644
--- a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-2.js
+++ b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-2.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid unicode escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\u0g`;
diff --git a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-3.js b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-3.js
index 21c6ec6121c0d1eda2e8f5d63220d2aa0dafb527..17fd6db0fad838ab5624ccbc98a6c23e4850dce0 100644
--- a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-3.js
+++ b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-3.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid unicode escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\u00g`;
diff --git a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-4.js b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-4.js
index 028a77b27d44077ecf577e5d3ca1e3e50dcdc11b..0f3075a646350054700aea8279d93271430c9967 100644
--- a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-4.js
+++ b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-4.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid unicode escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\u000g`;
diff --git a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-5.js b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-5.js
index 13d896b50985702e27462615e8a39630a6d3cf91..2f8c933070082bfb75e8416da598df0b92909732 100644
--- a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-5.js
+++ b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-5.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid unicode escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\u{g`;
diff --git a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-6.js b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-6.js
index 12c4b99d9e59b426d7adbf3059fe64c9e8b34795..86749a222be283af07a8ba2238a76887a07cf238 100644
--- a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-6.js
+++ b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-6.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid unicode escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\u{0`;
diff --git a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-7.js b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-7.js
index a8f56fb194740d564147fb8b19a5dba137824377..e7269d8eef76f86b022e71d860faf75eace54d1e 100644
--- a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-7.js
+++ b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-7.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid unicode escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\u{10FFFFF}`;
diff --git a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-8.js b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-8.js
index fa2d458b91391a7b30fddfe682b02f18465fc0df..056a659991da70e2f774da41bce09e97c2d53e9d 100644
--- a/test/language/expressions/template-literal/invalid-unicode-escape-sequence-8.js
+++ b/test/language/expressions/template-literal/invalid-unicode-escape-sequence-8.js
@@ -3,7 +3,9 @@
 /*---
 esid: sec-template-literal-lexical-components
 description: Invalid unicode escape sequence
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 `\u{10FFFFF}${'inner'}right`;
diff --git a/test/language/expressions/this/11.1.1-1gs.js b/test/language/expressions/this/11.1.1-1gs.js
index 63ad2319ef6af99a1c4f50b11c17c29e6727bf92..569fc6139ab9c29d86f63ac19e73fc69ff9fe370 100644
--- a/test/language/expressions/this/11.1.1-1gs.js
+++ b/test/language/expressions/this/11.1.1-1gs.js
@@ -8,6 +8,5 @@ flags: [onlyStrict]
 ---*/
 
 "use strict";
-if (this===undefined) {
-    throw NotEarlyError;
-}
+
+assert.notSameValue(this, undefined);
diff --git a/test/language/expressions/this/S11.1.1_A1.js b/test/language/expressions/this/S11.1.1_A1.js
index 922253a16735425e36d8fec6138ef2dbcac69608..a72c45ba2e7110a3ea54ec7ff134b47a2c946f8f 100644
--- a/test/language/expressions/this/S11.1.1_A1.js
+++ b/test/language/expressions/this/S11.1.1_A1.js
@@ -5,7 +5,9 @@
 info: The "this" is reserved word
 es5id: 11.1.1_A1
 description: Checking if execution of "this=1" fails
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 this = 1;
diff --git a/test/language/expressions/yield/invalid-left-hand-side.js b/test/language/expressions/yield/invalid-left-hand-side.js
index e5d000a9146c91205a610194ac4ef2a4f529c98e..c4b7d5bd11db82af363bab3462a4120c60021b09 100644
--- a/test/language/expressions/yield/invalid-left-hand-side.js
+++ b/test/language/expressions/yield/invalid-left-hand-side.js
@@ -16,7 +16,9 @@ info: |
     NewExpression[?Yield]
     CallExpression[?Yield]
 features: [generators]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function* g() {
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.10.js b/test/language/future-reserved-words/S7.6.1.2_A1.10.js
index 183fd9909030c77b934339d70d986037d337ae76..be6f1006f762476eaa1c63df80dfe87d68843e55 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.10.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.10.js
@@ -5,7 +5,9 @@
 info: The "export" token can not be used as identifier
 es5id: 7.6.1.2_A1.10
 description: Checking if execution of "export=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var export = 1;
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.11.js b/test/language/future-reserved-words/S7.6.1.2_A1.11.js
index 5d5d6237c434e66775e7b3479ba99631a81e96c4..d9bdd2f4e3802132343a1e008f9bab9ce72ca91b 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.11.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.11.js
@@ -5,7 +5,9 @@
 info: The "extends" token can not be used as identifier
 es5id: 7.6.1.2_A1.11
 description: Checking if execution of "extends=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var extends = 1;
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.15.js b/test/language/future-reserved-words/S7.6.1.2_A1.15.js
index 582896c26e5646b778215957e641859b6d41829d..7c0fce200fa4ee4d85ff7dc161c12061d696b8be 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.15.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.15.js
@@ -5,7 +5,9 @@
 info: The "implements" token can not be used as identifier in strict code
 es5id: 7.6.1.2_A1.15
 description: Checking if execution of "implements=1" fails in strict code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.16.js b/test/language/future-reserved-words/S7.6.1.2_A1.16.js
index b7c078dd63468fd3ae99549f216a6e5183bacc6e..da5cd8ad533f45e34c8b09b079972d5141433134 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.16.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.16.js
@@ -5,7 +5,9 @@
 info: The "import" token can not be used as identifier
 es5id: 7.6.1.2_A1.16
 description: Checking if execution of "import=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var import = 1;
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.18.js b/test/language/future-reserved-words/S7.6.1.2_A1.18.js
index 5d99af8bebe5a8a6610b3ab05cafcc5933ebd7b4..c9d887644028139b225637abb0d7febfe328d396 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.18.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.18.js
@@ -5,7 +5,9 @@
 info: The "interface" token can not be used as identifier in strict code
 es5id: 7.6.1.2_A1.18
 description: Checking if execution of "interface = 1" fails in  strict code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.21.js b/test/language/future-reserved-words/S7.6.1.2_A1.21.js
index 9567f9675c5fdbded9a65513907195cffc0486a3..deacbfd3aa89b3549ab278d8e49b31ddb18faf9e 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.21.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.21.js
@@ -5,7 +5,9 @@
 info: The "package" token can not be used as identifier in strict code
 es5id: 7.6.1.2_A1.21
 description: Checking if execution of "package=1" fails in strict code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.22.js b/test/language/future-reserved-words/S7.6.1.2_A1.22.js
index 6a416da84741da146dfc8048cdad8829bbdab071..0a7ed7f81e850bd1bddb9cd8db645372e1a9003e 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.22.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.22.js
@@ -5,7 +5,9 @@
 info: The "private" token can not be used as identifier in strict code
 es5id: 7.6.1.2_A1.22
 description: Checking if execution of "private=1" fails in strict code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.23.js b/test/language/future-reserved-words/S7.6.1.2_A1.23.js
index 1ad73c51d188e53da99957aabd25167b1e7c7b77..092bf67e34e6f4fe57eb87e9fd9b131bbd0a7358 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.23.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.23.js
@@ -5,7 +5,9 @@
 info: The "protected" token can not be used as identifier in strict code
 es5id: 7.6.1.2_A1.23
 description: Checking if execution of "protected=1" fails in  strict code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.24.js b/test/language/future-reserved-words/S7.6.1.2_A1.24.js
index 7d9e14cdefc2ff867907819f2e132d5e2f3cbf83..abd88425bc86c8ee95b501f277e84d7302934a63 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.24.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.24.js
@@ -5,7 +5,9 @@
 info: The "public" token can not be used as identifier in strict code
 es5id: 7.6.1.2_A1.24
 description: Checking if execution of "public=1" fails in strict code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.26.js b/test/language/future-reserved-words/S7.6.1.2_A1.26.js
index 40153c83b0d5120ba3dedeb19999a2e01c441f00..b765345a9271282dedc2f3e2157bd7c2fb9d65bf 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.26.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.26.js
@@ -5,7 +5,9 @@
 info: The "static" token can not be used as identifier in strict code
 es5id: 7.6.1.2_A1.26
 description: Checking if execution of "static=1" fails in strict code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.27.js b/test/language/future-reserved-words/S7.6.1.2_A1.27.js
index 8011fb1833a35be57dd0112200f997b04eb24e74..fae8764e54435d882334af9ed9b77d308512c818 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.27.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.27.js
@@ -5,7 +5,9 @@
 info: The "super" token can not be used as identifier
 es5id: 7.6.1.2_A1.27
 description: Checking if execution of "super=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var super = 1;
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.5.js b/test/language/future-reserved-words/S7.6.1.2_A1.5.js
index b1c184f444fb97372037f12c1d5cfcf4408dc09e..72ab227e805813dadf396e692295ff29a8135aaa 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.5.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.5.js
@@ -5,7 +5,9 @@
 info: The "class" token can not be used as identifier
 es5id: 7.6.1.2_A1.5
 description: Checking if execution of "class=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var class = 1;
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.6.js b/test/language/future-reserved-words/S7.6.1.2_A1.6.js
index af899166d5475530d45ed9c884b324b904e3687e..cf176bbb886d41eb86163c470bdfa084212342ff 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.6.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.6.js
@@ -5,7 +5,9 @@
 info: The "const" token can not be used as identifier
 es5id: 7.6.1.2_A1.6
 description: Checking if execution of "const=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var const = 1;
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.7.js b/test/language/future-reserved-words/S7.6.1.2_A1.7.js
index b5217a3f508e14764ab755d2be7ab324640f80a7..eae9074d56d91d6ea10a785420eb3182bf0179a4 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.7.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.7.js
@@ -5,7 +5,9 @@
 info: The "debugger" token can not be used as identifier
 es5id: 7.6.1.2_A1.7
 description: Checking if execution of "debugger=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var debugger = 1;
diff --git a/test/language/future-reserved-words/S7.6.1.2_A1.9.js b/test/language/future-reserved-words/S7.6.1.2_A1.9.js
index 78fc962f8871301cc16db2f2f5fb4fa4959865a7..8e04cff51f4c6e6793ca631f1e94e309d3d56a01 100644
--- a/test/language/future-reserved-words/S7.6.1.2_A1.9.js
+++ b/test/language/future-reserved-words/S7.6.1.2_A1.9.js
@@ -5,7 +5,9 @@
 info: The "enum" token can not be used as identifier
 es5id: 7.6.1.2_A1.9
 description: Checking if execution of "enum=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var enum = 1;
diff --git a/test/language/global-code/decl-lex-restricted-global.js b/test/language/global-code/decl-lex-restricted-global.js
index 7e32fca82a542aebc9c5cffb1a27ba0a82ae03d9..88561cd928cdce8b575f2d15d3728a65f4370db3 100644
--- a/test/language/global-code/decl-lex-restricted-global.js
+++ b/test/language/global-code/decl-lex-restricted-global.js
@@ -10,7 +10,9 @@ info: |
      [...]
      c. Let hasRestrictedGlobal be ? envRec.HasRestrictedGlobalProperty(name).
      d. If hasRestrictedGlobal is true, throw a SyntaxError exception.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 let undefined;
diff --git a/test/language/global-code/export.js b/test/language/global-code/export.js
index b41c5396945567221149688158167d7d37455c93..918d846e2d7782dcdcd743a25de5d1c61d288fe5 100644
--- a/test/language/global-code/export.js
+++ b/test/language/global-code/export.js
@@ -3,7 +3,9 @@
 /*---
 description: The `export` declaration may not appear within a ScriptBody
 esid: sec-scripts
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
      A.5 Scripts and Modules
 
diff --git a/test/language/global-code/import.js b/test/language/global-code/import.js
index d0332f127b6563d5aaa4cb47f90f5ab708b4da09..3080f988c725090b7854fa8324dfb117a22f9c37 100644
--- a/test/language/global-code/import.js
+++ b/test/language/global-code/import.js
@@ -3,7 +3,9 @@
 /*---
 description: The `import` declaration may not appear within a ScriptBody
 esid: sec-scripts
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
      A.5 Scripts and Modules
 
diff --git a/test/language/global-code/new.target-arrow.js b/test/language/global-code/new.target-arrow.js
index d2f46975fcc4c3b0306b3eec27f994b92b0c13c3..53cce9b3394c6de0aada9d7644d55aeec09b1c26 100644
--- a/test/language/global-code/new.target-arrow.js
+++ b/test/language/global-code/new.target-arrow.js
@@ -25,7 +25,9 @@ info: |
        Contains is used to detect new.target, this, and super usage within an
        ArrowFunction.
 features: [arrow-function]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 () => {
diff --git a/test/language/global-code/new.target.js b/test/language/global-code/new.target.js
index 60ea090a3f22b8dc668e41c524f6a5ffac6fb229..b30522332357cdc18386375d183d10613d909f70 100644
--- a/test/language/global-code/new.target.js
+++ b/test/language/global-code/new.target.js
@@ -9,7 +9,9 @@ info: |
     code containing NewTarget is eval code that is being processed by a direct
     eval that is contained in function code that is not the function code of an
     ArrowFunction.
-negative: SyntaxError
+negative: 
+  phase: early
+  type: SyntaxError
 ---*/
 
 new.target;
diff --git a/test/language/global-code/return.js b/test/language/global-code/return.js
index e9d338342625da3fabb9bde474349ddcb4dd88b9..72877c9613908c90d646ee478787d463b6853f84 100644
--- a/test/language/global-code/return.js
+++ b/test/language/global-code/return.js
@@ -12,7 +12,9 @@ info: |
 
   ScriptBody :
     StatementList[~Yield, ~Return]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 return;
diff --git a/test/language/global-code/super-call-arrow.js b/test/language/global-code/super-call-arrow.js
index a61130413ddc5eee514f81678cf371daa521c566..1cf735f4c7ea3d1214eef0ed67a214dd206e5867 100644
--- a/test/language/global-code/super-call-arrow.js
+++ b/test/language/global-code/super-call-arrow.js
@@ -25,7 +25,9 @@ info: |
        Contains is used to detect new.target, this, and super usage within an
        ArrowFunction.
 features: [super, arrow-function]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 () => {
diff --git a/test/language/global-code/super-call.js b/test/language/global-code/super-call.js
index fc5f87a1bbe1e6b1a9dfcb5240a9d0d544194268..5aeee34a1070f2910e8acee024521baa2fdaa89a 100644
--- a/test/language/global-code/super-call.js
+++ b/test/language/global-code/super-call.js
@@ -9,7 +9,9 @@ info: |
     containing super is eval code that is being processed by a direct eval that
     is contained in function code that is not the function code of an
     ArrowFunction.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 features: [super]
 ---*/
 
diff --git a/test/language/global-code/super-prop-arrow.js b/test/language/global-code/super-prop-arrow.js
index 30f85698d89a707f0c1838fa2102d6e4d31051ca..80ac0ce347e518a1627b143a687ffeec42e21572 100644
--- a/test/language/global-code/super-prop-arrow.js
+++ b/test/language/global-code/super-prop-arrow.js
@@ -25,7 +25,9 @@ info: |
        Contains is used to detect new.target, this, and super usage within an
        ArrowFunction.
 features: [super, arrow-function]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 () => {
diff --git a/test/language/global-code/super-prop.js b/test/language/global-code/super-prop.js
index b91d67cb4f911b7bdd1febc159d9b0dcdbc430b6..f0f9860f6a42b3a88de52fef8b5f15dd42d86825 100644
--- a/test/language/global-code/super-prop.js
+++ b/test/language/global-code/super-prop.js
@@ -9,7 +9,9 @@ info: |
     containing super is eval code that is being processed by a direct eval that
     is contained in function code that is not the function code of an
     ArrowFunction.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 features: [super]
 ---*/
 
diff --git a/test/language/global-code/yield-strict.js b/test/language/global-code/yield-strict.js
index 24e912bb5aabf2c65cbb3a12e38069ee4db3a501..96eb619c9251ce1485dde60574b97224cf8402c9 100644
--- a/test/language/global-code/yield-strict.js
+++ b/test/language/global-code/yield-strict.js
@@ -15,7 +15,9 @@ info: |
   ScriptBody :
     StatementList[~Yield, ~Return]
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 yield;
diff --git a/test/language/identifiers/val-break-via-escape-hex.js b/test/language/identifiers/val-break-via-escape-hex.js
index 42a6cc920f95bd76d6e656890dab144ca39bf967..fb1b737804d763b3f555a8bbe8590eb16ee96ca8 100644
--- a/test/language/identifiers/val-break-via-escape-hex.js
+++ b/test/language/identifiers/val-break-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: break
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{62}\u{72}\u{65}\u{61}\u{6b} = 123;;
diff --git a/test/language/identifiers/val-break-via-escape-hex4.js b/test/language/identifiers/val-break-via-escape-hex4.js
index 8206f0eb380193c75c6acedc6f3f53cccc0dd387..6299858de10f259a563104c331a93afd467eae1f 100644
--- a/test/language/identifiers/val-break-via-escape-hex4.js
+++ b/test/language/identifiers/val-break-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-4
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: break (break)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0062\u0072\u0065\u0061\u006b = 123;;
diff --git a/test/language/identifiers/val-break.js b/test/language/identifiers/val-break.js
index 9c74c49deda371580b46c5b39d22246c26efccbf..6a202e1d7e50a8b66ffc4dd5ee577a51131c0ad5 100644
--- a/test/language/identifiers/val-break.js
+++ b/test/language/identifiers/val-break.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var break = 123;;
diff --git a/test/language/identifiers/val-case-via-escape-hex.js b/test/language/identifiers/val-case-via-escape-hex.js
index e77de178879fdd8535e505b15ea32aa28cfd04aa..eacb03c328b3c43734a7d9de59a298b1bbec5ac8 100644
--- a/test/language/identifiers/val-case-via-escape-hex.js
+++ b/test/language/identifiers/val-case-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: case
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{63}ase = 123;
diff --git a/test/language/identifiers/val-case-via-escape-hex4.js b/test/language/identifiers/val-case-via-escape-hex4.js
index cfd8a602219218f2e984b839f82ca60194f6005e..f64ab18a42a72d8a35036ac2e749360c83267237 100644
--- a/test/language/identifiers/val-case-via-escape-hex4.js
+++ b/test/language/identifiers/val-case-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-5
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: case (case)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0063ase = 123;
diff --git a/test/language/identifiers/val-case.js b/test/language/identifiers/val-case.js
index f933ccc3e6f608fd6d9cb63f715b7b9eddbf8e14..f16897c4d2bbf16734be382b3a3463ca861e10ae 100644
--- a/test/language/identifiers/val-case.js
+++ b/test/language/identifiers/val-case.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var case = 123;
diff --git a/test/language/identifiers/val-catch-via-escape-hex.js b/test/language/identifiers/val-catch-via-escape-hex.js
index 0858e6ffcb29794fb82daee5b6ee35219e41dca8..3f41c513ed43cfa32a3ce7b3ff994c220e156085 100644
--- a/test/language/identifiers/val-catch-via-escape-hex.js
+++ b/test/language/identifiers/val-catch-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: catch
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{63}atch = 123;
diff --git a/test/language/identifiers/val-catch-via-escape-hex4.js b/test/language/identifiers/val-catch-via-escape-hex4.js
index 464c6da5207a5c5b296a4c0866a7872b3963d40e..a4e6f69b046de568c1ba02a3e62b3363f6851f49 100644
--- a/test/language/identifiers/val-catch-via-escape-hex4.js
+++ b/test/language/identifiers/val-catch-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-13
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: catch (catch)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0063atch = 123;
diff --git a/test/language/identifiers/val-catch.js b/test/language/identifiers/val-catch.js
index 242f54e5908acc3967a44cc29555f2848913cf6c..86265920aba8f71cf84a853509ed3b4360b1782e 100644
--- a/test/language/identifiers/val-catch.js
+++ b/test/language/identifiers/val-catch.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var catch = 123;
diff --git a/test/language/identifiers/val-class-via-escape-hex.js b/test/language/identifiers/val-class-via-escape-hex.js
index 7a898910f865d5dd7a11f7a9eb9cf6767c07e307..633c256ca89c4f195033aa6f2f52a7d6879c0000 100644
--- a/test/language/identifiers/val-class-via-escape-hex.js
+++ b/test/language/identifiers/val-class-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: class
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var cla\u{73}s = 123;
diff --git a/test/language/identifiers/val-class-via-escape-hex4.js b/test/language/identifiers/val-class-via-escape-hex4.js
index 25e17718a51ae40f2ba1f2472826c49194ba0bfe..85659fccc09579eb5c897efb28e962c49eac1d9f 100644
--- a/test/language/identifiers/val-class-via-escape-hex4.js
+++ b/test/language/identifiers/val-class-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-30
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: class (class)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var cla\u0073s = 123;
diff --git a/test/language/identifiers/val-class.js b/test/language/identifiers/val-class.js
index c2a65f53a92be4d760eda0c3399d74b81d02f021..f80e8983867f1da9f141b6f6f8f85f9b94e12718 100644
--- a/test/language/identifiers/val-class.js
+++ b/test/language/identifiers/val-class.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var class = 123;
diff --git a/test/language/identifiers/val-const-via-escape-hex.js b/test/language/identifiers/val-const-via-escape-hex.js
index 5c8c2f610da27d6ea57f86d6bc5fca3d4d5ae8a0..0fc0169887e25907acd08a7789c77c8ba25a2b6e 100644
--- a/test/language/identifiers/val-const-via-escape-hex.js
+++ b/test/language/identifiers/val-const-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: const
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var co\u{6e}st = 123;
diff --git a/test/language/identifiers/val-const-via-escape-hex4.js b/test/language/identifiers/val-const-via-escape-hex4.js
index 2f9f77afe6ad1878a9ffef4fc74dad973311dd42..273caf90520167791254b4a9dc7303f4d1a53a3f 100644
--- a/test/language/identifiers/val-const-via-escape-hex4.js
+++ b/test/language/identifiers/val-const-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-34
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: const (const)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var co\u006est = 123;
diff --git a/test/language/identifiers/val-const.js b/test/language/identifiers/val-const.js
index 31fd2667c3a7ee7bc49b5dfbf150356e641a9661..3d1bd5a29a97969cd754bc9daf4633ed81a49fa8 100644
--- a/test/language/identifiers/val-const.js
+++ b/test/language/identifiers/val-const.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var const = 123;
diff --git a/test/language/identifiers/val-continue-via-escape-hex.js b/test/language/identifiers/val-continue-via-escape-hex.js
index 4cf218f0698c786bf3caa2609b42b2d4be911444..2768f75ca4b7975bd937398b325b3ce216e6c580 100644
--- a/test/language/identifiers/val-continue-via-escape-hex.js
+++ b/test/language/identifiers/val-continue-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: continue
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{63}ontinue = 123;
diff --git a/test/language/identifiers/val-continue-via-escape-hex4.js b/test/language/identifiers/val-continue-via-escape-hex4.js
index 6d67614d249e8049ea43176c6b7357a4b722eb7c..e2a71c32dfc29f6d51de578d5356ccabc275a7d4 100644
--- a/test/language/identifiers/val-continue-via-escape-hex4.js
+++ b/test/language/identifiers/val-continue-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-17
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: continue (continue)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0063ontinue = 123;
diff --git a/test/language/identifiers/val-continue.js b/test/language/identifiers/val-continue.js
index 81babe568f7cd30b0bb8f7213007f1a69aac9c5f..7275001e6e14aacb68cfeb1c43a5506651a48429 100644
--- a/test/language/identifiers/val-continue.js
+++ b/test/language/identifiers/val-continue.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var continue = 123;
diff --git a/test/language/identifiers/val-debugger-via-escape-hex.js b/test/language/identifiers/val-debugger-via-escape-hex.js
index 827594d33687c406eb7921cafb097d8133d556a8..08a345701435a013e9c689e0e8773384037efe1f 100644
--- a/test/language/identifiers/val-debugger-via-escape-hex.js
+++ b/test/language/identifiers/val-debugger-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: debugger
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{64}ebugger = 123;
diff --git a/test/language/identifiers/val-debugger-via-escape-hex4.js b/test/language/identifiers/val-debugger-via-escape-hex4.js
index b42e9c7e28642c06e568c0661bab0d3ca1f9c935..edb7bef5a59f8f7e2740a87c4d7ea366ec42ca90 100644
--- a/test/language/identifiers/val-debugger-via-escape-hex4.js
+++ b/test/language/identifiers/val-debugger-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-21
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: debugger (debugger)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0064ebugger = 123;
diff --git a/test/language/identifiers/val-debugger.js b/test/language/identifiers/val-debugger.js
index a0bf31d18a63b34b02e79e46b32d5aa63ffa2437..d613940518d44db5c5da7cdb2c92237371bb4dd7 100644
--- a/test/language/identifiers/val-debugger.js
+++ b/test/language/identifiers/val-debugger.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var debugger = 123;
diff --git a/test/language/identifiers/val-default-via-escape-hex.js b/test/language/identifiers/val-default-via-escape-hex.js
index 190b572d30ecf634f252c36681fe9de5a5c7e182..2d5045f3cd1bcd12a22da057bf18ae2a386e05e8 100644
--- a/test/language/identifiers/val-default-via-escape-hex.js
+++ b/test/language/identifiers/val-default-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: default
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var def\u{61}ult = 123;
diff --git a/test/language/identifiers/val-default-via-escape-hex4.js b/test/language/identifiers/val-default-via-escape-hex4.js
index dbd5f3b37152e0c8f40e6d727b46a43b1f323860..0d7fb4f43bee8fb5abd32991a6e5ef7f6156e01c 100644
--- a/test/language/identifiers/val-default-via-escape-hex4.js
+++ b/test/language/identifiers/val-default-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-26
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: default (default)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var def\u0061ult = 123;
diff --git a/test/language/identifiers/val-default.js b/test/language/identifiers/val-default.js
index f1445dc79dc79b9b8ceead9952b1bd7a769a113e..9768c089f1bfdb54ca4b119c5a588dda8771b733 100644
--- a/test/language/identifiers/val-default.js
+++ b/test/language/identifiers/val-default.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var default = 123;
diff --git a/test/language/identifiers/val-delete-via-escape-hex.js b/test/language/identifiers/val-delete-via-escape-hex.js
index 60657d1030003f4ac77f00c5e17c96edcaafcfbd..47a6e608e1bbcf5edc2d6a5383f0f80ac1f62dd1 100644
--- a/test/language/identifiers/val-delete-via-escape-hex.js
+++ b/test/language/identifiers/val-delete-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: delete
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{64}elete = 123;
diff --git a/test/language/identifiers/val-delete-via-escape-hex4.js b/test/language/identifiers/val-delete-via-escape-hex4.js
index 2f4be9ae69e6584cf3bb28786a260accd975cb6f..9d5f41814f2336b21c0abaeaec9b67637c34bf28 100644
--- a/test/language/identifiers/val-delete-via-escape-hex4.js
+++ b/test/language/identifiers/val-delete-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-29
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: delete (delete)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0064elete = 123;
diff --git a/test/language/identifiers/val-delete.js b/test/language/identifiers/val-delete.js
index 32e7927a29bae2890ff7d46bfd58948d531ed4fe..8ec3b6260819b1a979307bc0082d402a9cd982ac 100644
--- a/test/language/identifiers/val-delete.js
+++ b/test/language/identifiers/val-delete.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var delete = 123;
diff --git a/test/language/identifiers/val-do-via-escape-hex.js b/test/language/identifiers/val-do-via-escape-hex.js
index 88d7490e1ad17c2c2a3bb61d8931200cf15288c1..86b2e87521e44c0652c1855324295597c7474f8e 100644
--- a/test/language/identifiers/val-do-via-escape-hex.js
+++ b/test/language/identifiers/val-do-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: do
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{64}\u{6f} = 123;
diff --git a/test/language/identifiers/val-do-via-escape-hex4.js b/test/language/identifiers/val-do-via-escape-hex4.js
index 02fe6d723ed1f51a48e670947da9c2dcab3451be..76c8b5037317be2d1f1701f5744e1171ded38a74 100644
--- a/test/language/identifiers/val-do-via-escape-hex4.js
+++ b/test/language/identifiers/val-do-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-8
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: do (do)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0064\u006f = 123;
diff --git a/test/language/identifiers/val-do.js b/test/language/identifiers/val-do.js
index 8d920c49e5ddb7f48f591924ea5c25e3906c2718..5b58a4ebe8d931b492e1fa75bdb555790416e02e 100644
--- a/test/language/identifiers/val-do.js
+++ b/test/language/identifiers/val-do.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var do = 123;
diff --git a/test/language/identifiers/val-else-via-escape-hex.js b/test/language/identifiers/val-else-via-escape-hex.js
index 52dcfcebfc2fad38949b987f34ee76e5f5b168e7..41132c667617bb9abd64f9c962b8a6e15e3d100b 100644
--- a/test/language/identifiers/val-else-via-escape-hex.js
+++ b/test/language/identifiers/val-else-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: else (else)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{65}lse = 123;
diff --git a/test/language/identifiers/val-else-via-escape-hex4.js b/test/language/identifiers/val-else-via-escape-hex4.js
index 497c30c2c0bc5dfa6601c4a07180c8b60704b5b6..bf5d1250cbaf354ee436dbad6abe9a84b5344e27 100644
--- a/test/language/identifiers/val-else-via-escape-hex4.js
+++ b/test/language/identifiers/val-else-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-9
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: else (else) (null)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0065lse = 123;
diff --git a/test/language/identifiers/val-else.js b/test/language/identifiers/val-else.js
index b09b1258f677859bbaf31b18557aaf95af2fe9cc..7cc8695991ce28ed6c4749f4417e383f2d9d6926 100644
--- a/test/language/identifiers/val-else.js
+++ b/test/language/identifiers/val-else.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var else = 123;
diff --git a/test/language/identifiers/val-enum-via-escape-hex.js b/test/language/identifiers/val-enum-via-escape-hex.js
index e7abb7e0835c9d5462a3790fb9ab0962e1e7203e..1ba210c39e7236a115834d04ab9b6fd654657a79 100644
--- a/test/language/identifiers/val-enum-via-escape-hex.js
+++ b/test/language/identifiers/val-enum-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: enum
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{65}\u{6e}\u{75}\u{6d} = 123;
diff --git a/test/language/identifiers/val-enum-via-escape-hex4.js b/test/language/identifiers/val-enum-via-escape-hex4.js
index 55184e7534c0e039a9fea83652f2dfb748f6b972..f27d0029ec7bad7fdfb999c9fc13d000ae153904 100644
--- a/test/language/identifiers/val-enum-via-escape-hex4.js
+++ b/test/language/identifiers/val-enum-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-32
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: enum (enum)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0065\u006e\u0075\u006d = 123;
diff --git a/test/language/identifiers/val-enum.js b/test/language/identifiers/val-enum.js
index d0c20f47ecd7c189017f60896ac2595046660852..3907af51fe50c419a8e30266415ccfcea2254522 100644
--- a/test/language/identifiers/val-enum.js
+++ b/test/language/identifiers/val-enum.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var enum = 123;
diff --git a/test/language/identifiers/val-export-via-escape-hex.js b/test/language/identifiers/val-export-via-escape-hex.js
index 93eb5e2337c98b8c100ec232711b76e9dd806d70..622840b6dd779da9396d3c37738afd806374d995 100644
--- a/test/language/identifiers/val-export-via-escape-hex.js
+++ b/test/language/identifiers/val-export-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: export
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var expor\u{74} = 123;
diff --git a/test/language/identifiers/val-export-via-escape-hex4.js b/test/language/identifiers/val-export-via-escape-hex4.js
index e712aeadcadef3712be98cdca4a2422683dc8862..253e3c77cf4b62012db926b8d6fee0d9fffe8e27 100644
--- a/test/language/identifiers/val-export-via-escape-hex4.js
+++ b/test/language/identifiers/val-export-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-35
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: export (export)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var expor\u0074 = 123;
diff --git a/test/language/identifiers/val-export.js b/test/language/identifiers/val-export.js
index 0607161a242d0c368b3cf636cdcdc1074daf7714..5dce85307ff2da85bf456f5a6568e79bb2d93d92 100644
--- a/test/language/identifiers/val-export.js
+++ b/test/language/identifiers/val-export.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var export = 123;
diff --git a/test/language/identifiers/val-extends-via-escape-hex.js b/test/language/identifiers/val-extends-via-escape-hex.js
index 6ff25420b819ddf3f835b8e7dbadbc7af516fa81..fd67329f83b9b56542d2a76b3aa7ad5d413d1626 100644
--- a/test/language/identifiers/val-extends-via-escape-hex.js
+++ b/test/language/identifiers/val-extends-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: extends
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var extend\u{73} = 123;
diff --git a/test/language/identifiers/val-extends-via-escape-hex4.js b/test/language/identifiers/val-extends-via-escape-hex4.js
index af9bd22d216ac3ad6ad8d601d3f62b495eabb592..f6479a6ceb948c52a59be208b683142361d24f17 100644
--- a/test/language/identifiers/val-extends-via-escape-hex4.js
+++ b/test/language/identifiers/val-extends-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-31
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: extends (extends)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var extend\u0073 = 123;
diff --git a/test/language/identifiers/val-extends.js b/test/language/identifiers/val-extends.js
index 92e0a0e9fe9020bc176f365a7403ec402b09af01..24695e5e013677ab9654c2297648ccfb9ca6175d 100644
--- a/test/language/identifiers/val-extends.js
+++ b/test/language/identifiers/val-extends.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var extends = 123;
diff --git a/test/language/identifiers/val-false-via-escape-hex.js b/test/language/identifiers/val-false-via-escape-hex.js
index 023b3f4ea94d63768064d8d579aff4026b3c019b..138c08795540fdb877520a2004a10c47452bfe27 100644
--- a/test/language/identifiers/val-false-via-escape-hex.js
+++ b/test/language/identifiers/val-false-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: false
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var fals\u{65} = 123;
diff --git a/test/language/identifiers/val-false-via-escape-hex4.js b/test/language/identifiers/val-false-via-escape-hex4.js
index ed74335a98e6311105dc0b6cd8ec1925549bfef5..ddb2dacb5ac8907eea0fc11fa3f31c7dffe56c2e 100644
--- a/test/language/identifiers/val-false-via-escape-hex4.js
+++ b/test/language/identifiers/val-false-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-3
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: false (false)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var fals\u0065 = 123;
diff --git a/test/language/identifiers/val-false.js b/test/language/identifiers/val-false.js
index a7d967813d4fb2b152a5384db1bf2e010c003506..d2aaa3eafa01e7dabf63ceb3ce3b0d8b7e9ca4c1 100644
--- a/test/language/identifiers/val-false.js
+++ b/test/language/identifiers/val-false.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var false = 123;
diff --git a/test/language/identifiers/val-finally-via-escape-hex.js b/test/language/identifiers/val-finally-via-escape-hex.js
index 4cf0ebc3777bff9c297c7b746174c29cfbe914b2..c8bcf9b167bcf1f5bd3c1c90db496eaf2b2a2df2 100644
--- a/test/language/identifiers/val-finally-via-escape-hex.js
+++ b/test/language/identifiers/val-finally-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: finally
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var fina\u{6c}ly = 123;
diff --git a/test/language/identifiers/val-finally-via-escape-hex4.js b/test/language/identifiers/val-finally-via-escape-hex4.js
index c940c520d65bd10ef2bbe8826bddfbb2155829c2..9bc9814872512e6f5d9ee4e12421001ca9be11c6 100644
--- a/test/language/identifiers/val-finally-via-escape-hex4.js
+++ b/test/language/identifiers/val-finally-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-14
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: finally (finally)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var fina\u006cly = 123;
diff --git a/test/language/identifiers/val-finally.js b/test/language/identifiers/val-finally.js
index 7e3851b837c1a15d4832af952ce7f2cd720ccae1..caadaa11a90b6b3521df7bca3ea834ef53a3d791 100644
--- a/test/language/identifiers/val-finally.js
+++ b/test/language/identifiers/val-finally.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var finally = 123;
diff --git a/test/language/identifiers/val-for-via-escape-hex.js b/test/language/identifiers/val-for-via-escape-hex.js
index 06054e460d1778f0e8e0ca2827db3da8fa34b553..1ef1bf99d65bbc71a77ee0e5666e5885ebe024a1 100644
--- a/test/language/identifiers/val-for-via-escape-hex.js
+++ b/test/language/identifiers/val-for-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: for
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var f\u{6f}r = 123;
diff --git a/test/language/identifiers/val-for-via-escape-hex4.js b/test/language/identifiers/val-for-via-escape-hex4.js
index 005c26eb5252f9479c558c10534180372e3b0296..cf79ac8fa4ac4ddd6d4583825b6210c04a597db5 100644
--- a/test/language/identifiers/val-for-via-escape-hex4.js
+++ b/test/language/identifiers/val-for-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-18
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: for (for)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var f\u006fr = 123;
diff --git a/test/language/identifiers/val-for.js b/test/language/identifiers/val-for.js
index 16a19a1d590e9c6401e35d764f44197b15614a89..0455e667b616307ff3d23918ed9f45e568eae6a4 100644
--- a/test/language/identifiers/val-for.js
+++ b/test/language/identifiers/val-for.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var for = 123;
diff --git a/test/language/identifiers/val-function-via-escape-hex.js b/test/language/identifiers/val-function-via-escape-hex.js
index 01bc16a2a912f490fee410d4cae6469c967495f5..a3a8d2ab3233eac4c2e5faef02d511c473932418 100644
--- a/test/language/identifiers/val-function-via-escape-hex.js
+++ b/test/language/identifiers/val-function-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: function
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var func\u{74}ion = 123;
diff --git a/test/language/identifiers/val-function-via-escape-hex4.js b/test/language/identifiers/val-function-via-escape-hex4.js
index 50c50b3d36018719680d6973722878fd76287a32..44d9028969485688a6296a3aaae35297033ce076 100644
--- a/test/language/identifiers/val-function-via-escape-hex4.js
+++ b/test/language/identifiers/val-function-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-22
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: function (function)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var func\u0074ion = 123;
diff --git a/test/language/identifiers/val-function.js b/test/language/identifiers/val-function.js
index dc846ee8b45335998798ee742eb2a409c1d6973f..563b2d0ba732ef405c130e1a24cc96ae64285f3f 100644
--- a/test/language/identifiers/val-function.js
+++ b/test/language/identifiers/val-function.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var function = 123;
diff --git a/test/language/identifiers/val-if-via-escape-hex.js b/test/language/identifiers/val-if-via-escape-hex.js
index ae3d1160061b1589cec93355e2a2a91d1f68eb64..65c6658fd9c500b6b9cb1965c34623489d3602da 100644
--- a/test/language/identifiers/val-if-via-escape-hex.js
+++ b/test/language/identifiers/val-if-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: if
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{69}\u{66} = 123;
diff --git a/test/language/identifiers/val-if-via-escape-hex4.js b/test/language/identifiers/val-if-via-escape-hex4.js
index 8fefe16a73b899f6ad294d7b98ca1be569a75e28..951e1bb2a25adcad13e33d75c8661a19778966c7 100644
--- a/test/language/identifiers/val-if-via-escape-hex4.js
+++ b/test/language/identifiers/val-if-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-24
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: if (if)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0069\u0066 = 123;
diff --git a/test/language/identifiers/val-if.js b/test/language/identifiers/val-if.js
index 1ad3c2fcced515a3bf49be1b2954f7ede0d009a6..f63f72bcaf2277c1feba51cc19d0df21be40ebd2 100644
--- a/test/language/identifiers/val-if.js
+++ b/test/language/identifiers/val-if.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var if = 123;
diff --git a/test/language/identifiers/val-import-via-escape-hex.js b/test/language/identifiers/val-import-via-escape-hex.js
index 637b78051dbf5d1cde5d38052cfa2463fad31ca9..d977362f9f6074639801ae13ade065d15d382c24 100644
--- a/test/language/identifiers/val-import-via-escape-hex.js
+++ b/test/language/identifiers/val-import-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: import
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{69}\u{6d}\u{70}\u{6f}\u{72}\u{74} = 123;
diff --git a/test/language/identifiers/val-import-via-escape-hex4.js b/test/language/identifiers/val-import-via-escape-hex4.js
index dabf8b92dc7bb3ea2af15486b15be99dd9868bda..eaefad74cffe4ba983b0f69ad65821d3254f0b9e 100644
--- a/test/language/identifiers/val-import-via-escape-hex4.js
+++ b/test/language/identifiers/val-import-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-36
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: import (import)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0069\u006d\u0070\u006f\u0072\u0074 = 123;
diff --git a/test/language/identifiers/val-import.js b/test/language/identifiers/val-import.js
index 6e4884aa6d556b58163cf88c1feb30bdb723ee70..8ca17b49d343315934dba06676ed4ed3ccdf62d0 100644
--- a/test/language/identifiers/val-import.js
+++ b/test/language/identifiers/val-import.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var import = 123;
diff --git a/test/language/identifiers/val-in-via-escape-hex.js b/test/language/identifiers/val-in-via-escape-hex.js
index ac41b788ea96990540272eb8ace089cfa87a3340..61dac19e3303cd8cfc461c089c6062c39d033d5d 100644
--- a/test/language/identifiers/val-in-via-escape-hex.js
+++ b/test/language/identifiers/val-in-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: in
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{69}\u{6e} = 123;
diff --git a/test/language/identifiers/val-in-via-escape-hex4.js b/test/language/identifiers/val-in-via-escape-hex4.js
index fcec93268c7cebbdb30ad98e08b06b54f827a40f..79dca2ffde56af4dfc74186dfe570f267bf24eb1 100644
--- a/test/language/identifiers/val-in-via-escape-hex4.js
+++ b/test/language/identifiers/val-in-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-28
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: in (in)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0069\u006e = 123;
diff --git a/test/language/identifiers/val-in.js b/test/language/identifiers/val-in.js
index 2eb40fa68e6a037a5a2817ff07c069fad9a9c24c..0e23f346f2abab1a0e98e3b21138ae7082342164 100644
--- a/test/language/identifiers/val-in.js
+++ b/test/language/identifiers/val-in.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var in = 123;
diff --git a/test/language/identifiers/val-instanceof-via-escape-hex.js b/test/language/identifiers/val-instanceof-via-escape-hex.js
index 9bcacaeff1667cac421ef359712f17ac7e209138..f707b91f9e9c45c8cd6fc3abc56fb6aed984f3f8 100644
--- a/test/language/identifiers/val-instanceof-via-escape-hex.js
+++ b/test/language/identifiers/val-instanceof-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: instanceof
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var insta\u{6e}ceof = 123;
diff --git a/test/language/identifiers/val-instanceof-via-escape-hex4.js b/test/language/identifiers/val-instanceof-via-escape-hex4.js
index fb43af7c69d527bf73e44469651f65926b3dbd9d..4a16a7d1654e5ec05fa9531dab60a2f34d42d6e0 100644
--- a/test/language/identifiers/val-instanceof-via-escape-hex4.js
+++ b/test/language/identifiers/val-instanceof-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-6
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: instanceof (instanceof)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var insta\u006eceof = 123;
diff --git a/test/language/identifiers/val-instanceof.js b/test/language/identifiers/val-instanceof.js
index d0f63c7335ccff1a2ffd63fdfdcc9f8b7c9de8ad..767d7ca1f5abecc7635bb32b5fd61af86967fe92 100644
--- a/test/language/identifiers/val-instanceof.js
+++ b/test/language/identifiers/val-instanceof.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var instanceof = 123;
diff --git a/test/language/identifiers/val-new-via-escape-hex.js b/test/language/identifiers/val-new-via-escape-hex.js
index 1e6993a48ceeca406a75feba5fe03796df449b15..ceb21b63acf3fe7edfb4dfa2f40dd20d7765f34d 100644
--- a/test/language/identifiers/val-new-via-escape-hex.js
+++ b/test/language/identifiers/val-new-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: new
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var n\u{65}w = 123;
diff --git a/test/language/identifiers/val-new-via-escape-hex4.js b/test/language/identifiers/val-new-via-escape-hex4.js
index 626ec4c02e908a32f04b25d2d4d12b52599edbf1..6a64b8e2e21ae6277487b0000ebeac86d507c023 100644
--- a/test/language/identifiers/val-new-via-escape-hex4.js
+++ b/test/language/identifiers/val-new-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-10
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: new (new)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var n\u0065w = 123;
diff --git a/test/language/identifiers/val-new.js b/test/language/identifiers/val-new.js
index 2afd03c42d2f1b5d02e9279e0798c016fd5ed8da..471d897fb47f23309a5a3ee5e26170d94a98bcbd 100644
--- a/test/language/identifiers/val-new.js
+++ b/test/language/identifiers/val-new.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var new = 123;
diff --git a/test/language/identifiers/val-null-via-escape-hex.js b/test/language/identifiers/val-null-via-escape-hex.js
index c3d02bc6adfbec997acee30a90e5c020600f8b10..1df09bee5762fbff82c9be219d8e74e760205830 100644
--- a/test/language/identifiers/val-null-via-escape-hex.js
+++ b/test/language/identifiers/val-null-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: null
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{6e}ull = 123;
diff --git a/test/language/identifiers/val-null-via-escape-hex4.js b/test/language/identifiers/val-null-via-escape-hex4.js
index c547dac9e794dc665279c239f1d26a8d45dd2fce..7083dab43feb73ef69994c6b56179ed0623e5536 100644
--- a/test/language/identifiers/val-null-via-escape-hex4.js
+++ b/test/language/identifiers/val-null-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-1
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: null (null)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u006eull = 123;
diff --git a/test/language/identifiers/val-null.js b/test/language/identifiers/val-null.js
index c4ddd797c67582f9945860505c243f9014d4bf78..daf8b878a5f136ebe426779e7d039e099b6f4a6a 100644
--- a/test/language/identifiers/val-null.js
+++ b/test/language/identifiers/val-null.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var null = 123;
diff --git a/test/language/identifiers/val-return-via-escape-hex.js b/test/language/identifiers/val-return-via-escape-hex.js
index d7f7817a7f6017d0bac078f044b0a2e2edce8023..e8bb6cc6c88b0a379f075b5fed8f99e3b9f97f5a 100644
--- a/test/language/identifiers/val-return-via-escape-hex.js
+++ b/test/language/identifiers/val-return-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: return
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var retur\u{6e} = 123;
diff --git a/test/language/identifiers/val-return-via-escape-hex4.js b/test/language/identifiers/val-return-via-escape-hex4.js
index 714f6665511fbfca97711bd9765fda6583699c83..072ea7a73d188663bb08df0f690a858d91ff68b9 100644
--- a/test/language/identifiers/val-return-via-escape-hex4.js
+++ b/test/language/identifiers/val-return-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-15
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: return (return)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var retur\u006e = 123;
diff --git a/test/language/identifiers/val-return.js b/test/language/identifiers/val-return.js
index b8ba3caa65bd10abce2068d7086d95d0821ce36d..b57bb8b5fb182d2cea97298ae812490c2016cb33 100644
--- a/test/language/identifiers/val-return.js
+++ b/test/language/identifiers/val-return.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var return = 123;
diff --git a/test/language/identifiers/val-super-via-escape-hex.js b/test/language/identifiers/val-super-via-escape-hex.js
index c22b9dfaabb4c6b594d6864ab17400693e5df96f..3cc4edfa0b41651fe388d2c1282fd6f669cbbc06 100644
--- a/test/language/identifiers/val-super-via-escape-hex.js
+++ b/test/language/identifiers/val-super-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: super
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{73}uper = 123;
diff --git a/test/language/identifiers/val-super-via-escape-hex4.js b/test/language/identifiers/val-super-via-escape-hex4.js
index e9568a7bb1ffdcdbe66b2a1119f5adf9895a395e..994ab03c31de91fe2d0d972b80c107b031a8ebae 100644
--- a/test/language/identifiers/val-super-via-escape-hex4.js
+++ b/test/language/identifiers/val-super-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-33
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: super (super)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0073uper = 123;
diff --git a/test/language/identifiers/val-super.js b/test/language/identifiers/val-super.js
index 009e67f5d62018a4a5bdfd0ce06ecb3ac641f73b..99ffc47adb2711a944fbe2538ca37764001053b5 100644
--- a/test/language/identifiers/val-super.js
+++ b/test/language/identifiers/val-super.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var super = 123;
diff --git a/test/language/identifiers/val-switch-via-escape-hex.js b/test/language/identifiers/val-switch-via-escape-hex.js
index c864f2986614dc0daa92889f20561f635960d4c3..04cbbd63c9244540ee63d1113ddb7a2567641ead 100644
--- a/test/language/identifiers/val-switch-via-escape-hex.js
+++ b/test/language/identifiers/val-switch-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: switch
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var switc\u{68} = 123;
diff --git a/test/language/identifiers/val-switch-via-escape-hex4.js b/test/language/identifiers/val-switch-via-escape-hex4.js
index bc20a1250086f4a98ceca5a565708be0d08ab97a..fb40c7c8f7750dfd69db7a60aff6fb1f4683e805 100644
--- a/test/language/identifiers/val-switch-via-escape-hex4.js
+++ b/test/language/identifiers/val-switch-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-19
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: switch (switch)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var switc\u0068 = 123;
diff --git a/test/language/identifiers/val-switch.js b/test/language/identifiers/val-switch.js
index b505ea1ff861b6aa3c32d9b138ff22b1ac2fe593..038df66ff7d6d59d6c264006531301f9ff5b43e8 100644
--- a/test/language/identifiers/val-switch.js
+++ b/test/language/identifiers/val-switch.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var switch = 123;
diff --git a/test/language/identifiers/val-this-via-escape-hex.js b/test/language/identifiers/val-this-via-escape-hex.js
index b1816dc0a4cb4951ce21afa3a5d0eb62c4826ccd..5bdb3fb90eab4c174a964dbe6c0a5b6656c9d60e 100644
--- a/test/language/identifiers/val-this-via-escape-hex.js
+++ b/test/language/identifiers/val-this-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: this
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var thi\u{73} = 123;
diff --git a/test/language/identifiers/val-this-via-escape-hex4.js b/test/language/identifiers/val-this-via-escape-hex4.js
index ffcd5e5928b8b365c25d7488a33e01cceb7e7384..096712eba6ff5014bbfa933bb64be7d4b99cf564 100644
--- a/test/language/identifiers/val-this-via-escape-hex4.js
+++ b/test/language/identifiers/val-this-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-23
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: this (this)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var thi\u0073 = 123;
diff --git a/test/language/identifiers/val-this.js b/test/language/identifiers/val-this.js
index 71dc283266a77771b819baa23989558ec5bf77ed..e4e556cbcd49d7584da54307409e928dc5fc6f83 100644
--- a/test/language/identifiers/val-this.js
+++ b/test/language/identifiers/val-this.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var this = 123;
diff --git a/test/language/identifiers/val-throw-via-escape-hex.js b/test/language/identifiers/val-throw-via-escape-hex.js
index 978c13af78ad2bf07d591fbf332f10d2284f8645..149477ffca68aafb8e25918a2b8e493fe04b982a 100644
--- a/test/language/identifiers/val-throw-via-escape-hex.js
+++ b/test/language/identifiers/val-throw-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: throw
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var thro\u{77} = 123;
diff --git a/test/language/identifiers/val-throw-via-escape-hex4.js b/test/language/identifiers/val-throw-via-escape-hex4.js
index dc7c9dc807c55f406100ebfd94d1bfbdff536197..5573448205429bc64baed9f28824c721fe85b432 100644
--- a/test/language/identifiers/val-throw-via-escape-hex4.js
+++ b/test/language/identifiers/val-throw-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-27
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: throw (throw)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var thro\u0077 = 123;
diff --git a/test/language/identifiers/val-throw.js b/test/language/identifiers/val-throw.js
index 3c5758e12c985fc8b06bbee4297381ce0527bb63..24e7ebda9e2875fe30ccaf7d5112e2d516490e6a 100644
--- a/test/language/identifiers/val-throw.js
+++ b/test/language/identifiers/val-throw.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var throw = 123;
diff --git a/test/language/identifiers/val-true-via-escape-hex.js b/test/language/identifiers/val-true-via-escape-hex.js
index 7aa9228d9fd121024edb24ccd2919a99663f35a1..2bdf5a6e040a685d1717ddaaa01c72766296667f 100644
--- a/test/language/identifiers/val-true-via-escape-hex.js
+++ b/test/language/identifiers/val-true-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var tr\u{75}e = 123;
diff --git a/test/language/identifiers/val-true-via-escape-hex4.js b/test/language/identifiers/val-true-via-escape-hex4.js
index 59a541e849fe00f98bc1c5a01feb0d40116172a3..fdf9f9f40f156e0ede5255307b0259d4230b4251 100644
--- a/test/language/identifiers/val-true-via-escape-hex4.js
+++ b/test/language/identifiers/val-true-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-2
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: true (true)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var tr\u0075e = 123;
diff --git a/test/language/identifiers/val-true.js b/test/language/identifiers/val-true.js
index 2df3fbb7f511e61ae76c3590e44a288a23db0b25..98af63cac1213ba8f469c65c7de8ab33f74d87db 100644
--- a/test/language/identifiers/val-true.js
+++ b/test/language/identifiers/val-true.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var true = 123;
diff --git a/test/language/identifiers/val-try-via-escape-hex.js b/test/language/identifiers/val-try-via-escape-hex.js
index da6c4639842d118a668410153c8b1675ae913c29..c6eae5b1e166752e223d6a3733b44c6400561e21 100644
--- a/test/language/identifiers/val-try-via-escape-hex.js
+++ b/test/language/identifiers/val-try-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: try
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{74}\u{72}\u{79} = 123;
diff --git a/test/language/identifiers/val-try-via-escape-hex4.js b/test/language/identifiers/val-try-via-escape-hex4.js
index 55f73422bb328831633dd4b3c509d452036d0973..9db48ea0c44f5d12371c20ed40f0fabc5d2b1c21 100644
--- a/test/language/identifiers/val-try-via-escape-hex4.js
+++ b/test/language/identifiers/val-try-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-12
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: try (try)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0074\u0072\u0079 = 123;
diff --git a/test/language/identifiers/val-try.js b/test/language/identifiers/val-try.js
index aa5ff65887523226197ac959d11e4d00425331d3..25c1239b4cfbfa6e5edfca271cdfa4a05f037813 100644
--- a/test/language/identifiers/val-try.js
+++ b/test/language/identifiers/val-try.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var try = 123;
diff --git a/test/language/identifiers/val-typeof-via-escape-hex.js b/test/language/identifiers/val-typeof-via-escape-hex.js
index 7069490e4fc2a222872f0552edd80a81f804bcdc..9a6ae786ecce1585057cf4cbc33183922c9635c3 100644
--- a/test/language/identifiers/val-typeof-via-escape-hex.js
+++ b/test/language/identifiers/val-typeof-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: typeof
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var typeo\u{66} = 123;
diff --git a/test/language/identifiers/val-typeof-via-escape-hex4.js b/test/language/identifiers/val-typeof-via-escape-hex4.js
index 98d4ab0ccc2dcede2c39de29ea9ad0a88b938fd7..762afd2f8db32191aafd3872d9196c8f06f7204f 100644
--- a/test/language/identifiers/val-typeof-via-escape-hex4.js
+++ b/test/language/identifiers/val-typeof-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-7
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: typeof (typeof)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var typeo\u0066 = 123;
diff --git a/test/language/identifiers/val-typeof.js b/test/language/identifiers/val-typeof.js
index 02c3a81ff101ec420ba2c818996277355ce96f13..713fef7c6efe7198dba20a8a1ff18bdd0ba68587 100644
--- a/test/language/identifiers/val-typeof.js
+++ b/test/language/identifiers/val-typeof.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var typeof = 123;
diff --git a/test/language/identifiers/val-var-via-escape-hex.js b/test/language/identifiers/val-var-via-escape-hex.js
index 4e9c22d464c00050923f8a9a5fd65813a2d4da7c..5efde45394f04f755245281b67309b35b85cb012 100644
--- a/test/language/identifiers/val-var-via-escape-hex.js
+++ b/test/language/identifiers/val-var-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: var
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var va\u{72} = 123;
diff --git a/test/language/identifiers/val-var-via-escape-hex4.js b/test/language/identifiers/val-var-via-escape-hex4.js
index bdca2d4c8cff0159684ebb890de926642abf82e7..b4fada8679512eaeb6d4ff68451945be9dc735d6 100644
--- a/test/language/identifiers/val-var-via-escape-hex4.js
+++ b/test/language/identifiers/val-var-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-11
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: var (var)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var va\u0072 = 123;
diff --git a/test/language/identifiers/val-var.js b/test/language/identifiers/val-var.js
index 1bed4ca170d5d46536889202e7b7433b6cd4415f..d81b4b8c8e34b48ba38db5b5ce390796b3bb1604 100644
--- a/test/language/identifiers/val-var.js
+++ b/test/language/identifiers/val-var.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var var = 123;
diff --git a/test/language/identifiers/val-void-via-escape-hex.js b/test/language/identifiers/val-void-via-escape-hex.js
index 126def5114db77fc972e01cb191146142bf1008c..ad56d3a3c8587cb45d24bc0beb673f5a007347f6 100644
--- a/test/language/identifiers/val-void-via-escape-hex.js
+++ b/test/language/identifiers/val-void-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: void
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{76}\u{6f}\u{69}\u{64} = 123;
diff --git a/test/language/identifiers/val-void-via-escape-hex4.js b/test/language/identifiers/val-void-via-escape-hex4.js
index 7102d8aa61950a8b4c1febe0ee75343a42790103..7daaf94617a8cfe6d8d3a90de9720bfee2b1d036 100644
--- a/test/language/identifiers/val-void-via-escape-hex4.js
+++ b/test/language/identifiers/val-void-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-16
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: void (void)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0076\u006f\u0069\u0064 = 123;
diff --git a/test/language/identifiers/val-void.js b/test/language/identifiers/val-void.js
index 6260522a3b2729ac4e0a69a537e039ae8eba5f24..62ec52b2b6d765c9989139c00a82518b0a602b0b 100644
--- a/test/language/identifiers/val-void.js
+++ b/test/language/identifiers/val-void.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var void = 123;
diff --git a/test/language/identifiers/val-while-via-escape-hex.js b/test/language/identifiers/val-while-via-escape-hex.js
index 86d90e217a78f44ea483d6de88ea1b30462120f0..8331b71e5d6beea3febed656e49aecef781aea24 100644
--- a/test/language/identifiers/val-while-via-escape-hex.js
+++ b/test/language/identifiers/val-while-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: while
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{77}\u{68}\u{69}\u{6c}\u{65} = 123;
diff --git a/test/language/identifiers/val-while-via-escape-hex4.js b/test/language/identifiers/val-while-via-escape-hex4.js
index a3d4085a830f99b8809a459a5ab25952d1bf4618..fcb22db3cf1f6905f286f4911a2c24ff13b8564d 100644
--- a/test/language/identifiers/val-while-via-escape-hex4.js
+++ b/test/language/identifiers/val-while-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-20
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: while (while)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0077\u0068\u0069\u006c\u0065 = 123;
diff --git a/test/language/identifiers/val-while.js b/test/language/identifiers/val-while.js
index 3a1a0e506a961e18557df9560f7434dd832b481e..1e0ec86a96c6817434493516a4945715e62f5b58 100644
--- a/test/language/identifiers/val-while.js
+++ b/test/language/identifiers/val-while.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var while = 123;
diff --git a/test/language/identifiers/val-with-via-escape-hex.js b/test/language/identifiers/val-with-via-escape-hex.js
index d3b4cdd8152c9624d11e62e90af7fca07452c59a..5d0292ac1df2897e42cceb34aabe7faf10c15c70 100644
--- a/test/language/identifiers/val-with-via-escape-hex.js
+++ b/test/language/identifiers/val-with-via-escape-hex.js
@@ -6,7 +6,9 @@ es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
     Names in UTF8: with
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u{77}ith = 123;
diff --git a/test/language/identifiers/val-with-via-escape-hex4.js b/test/language/identifiers/val-with-via-escape-hex4.js
index 28c866a0e37fde5cbaf7d244a0b4ff1df29677f1..a7c91c66ceef97ea49ec82ec40b903208861c775 100644
--- a/test/language/identifiers/val-with-via-escape-hex4.js
+++ b/test/language/identifiers/val-with-via-escape-hex4.js
@@ -6,7 +6,9 @@ es5id: 7.6-25
 description: >
     7.6 - SyntaxError expected: reserved words used as Identifier
     Names in UTF8: with (with)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var \u0077ith = 123;
diff --git a/test/language/identifiers/val-with.js b/test/language/identifiers/val-with.js
index 43b697069486e211ba136bc4788731e7acd24a5c..2bc89f3e85ef4af683ffa50e9e1e6c69f914c49c 100644
--- a/test/language/identifiers/val-with.js
+++ b/test/language/identifiers/val-with.js
@@ -5,7 +5,9 @@
 es6id: 11.6
 description: >
     SyntaxError expected: reserved words used as Identifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var with = 123;
diff --git a/test/language/identifiers/val-yield-strict.js b/test/language/identifiers/val-yield-strict.js
index deca8d6e6ef39bd40304a60c05c1b188e487a79a..f6f3ec7df930b7c1f79c2bd445ca0693351f4f42 100644
--- a/test/language/identifiers/val-yield-strict.js
+++ b/test/language/identifiers/val-yield-strict.js
@@ -6,7 +6,9 @@ description: >
     `yield` is a reserved identifier in strict mode code and may not be used
     as an identifier.
 es6id: 12.1.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
  ---*/
 
diff --git a/test/language/import/dup-bound-names.js b/test/language/import/dup-bound-names.js
index 2727eea9c622720c09a5599aa4682e0cdb18a65e..34eff72aa0e31985f369e70b6a6debd7f66b8147 100644
--- a/test/language/import/dup-bound-names.js
+++ b/test/language/import/dup-bound-names.js
@@ -6,7 +6,9 @@ description: >
     It is a Syntax Error if the BoundNames of ImportDeclaration contains any
     duplicate entries.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 import { x, y as x } from 'z';
diff --git a/test/language/keywords/S7.6.1.1_A1.1.js b/test/language/keywords/S7.6.1.1_A1.1.js
index a254c9266223d735fbd28cd066a645fb75f781ea..b272cb85dd08290db825a8ece6872c535803232e 100644
--- a/test/language/keywords/S7.6.1.1_A1.1.js
+++ b/test/language/keywords/S7.6.1.1_A1.1.js
@@ -5,7 +5,9 @@
 info: The "break" token can not be used as identifier
 es5id: 7.6.1.1_A1.1
 description: Checking if execution of "break=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 break = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.10.js b/test/language/keywords/S7.6.1.1_A1.10.js
index 053e0faca62200d106bbaae87aeaab8e55b86754..b3d6b9eab5778089b81f24ca804ef93d010457eb 100644
--- a/test/language/keywords/S7.6.1.1_A1.10.js
+++ b/test/language/keywords/S7.6.1.1_A1.10.js
@@ -5,7 +5,9 @@
 info: The "for" token can not be used as identifier
 es5id: 7.6.1.1_A1.10
 description: Checking if execution of "for=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.11.js b/test/language/keywords/S7.6.1.1_A1.11.js
index 96652e2b10b239d62d43b5c5f9b915e3f1b8d70e..6e1479e5f4604df1e3abfdd8d0c6bbeacb4a444c 100644
--- a/test/language/keywords/S7.6.1.1_A1.11.js
+++ b/test/language/keywords/S7.6.1.1_A1.11.js
@@ -5,7 +5,9 @@
 info: The "function" token can not be used as identifier
 es5id: 7.6.1.1_A1.11
 description: Checking if execution of "function=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.12.js b/test/language/keywords/S7.6.1.1_A1.12.js
index 603ecbe1332a7ca6a29786b25a96a738196e8f0d..ce3672ffd6e0a0ee5f8a7a701dfc98bd479faf6f 100644
--- a/test/language/keywords/S7.6.1.1_A1.12.js
+++ b/test/language/keywords/S7.6.1.1_A1.12.js
@@ -5,7 +5,9 @@
 info: The "if" token can not be used as identifier
 es5id: 7.6.1.1_A1.12
 description: Checking if execution of "if=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.13.js b/test/language/keywords/S7.6.1.1_A1.13.js
index d7da9537db0c2f5159b026f837637f606ce98895..4e9d4f00c97a868f153b68373b0a746a824020ae 100644
--- a/test/language/keywords/S7.6.1.1_A1.13.js
+++ b/test/language/keywords/S7.6.1.1_A1.13.js
@@ -5,7 +5,9 @@
 info: The "in" token can not be used as identifier
 es5id: 7.6.1.1_A1.13
 description: Checking if execution of "in=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 in = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.14.js b/test/language/keywords/S7.6.1.1_A1.14.js
index d5044199445b46dc906806e3279608c1f0e0aab2..933135025306f437504954f47ec36f9c936cfbe7 100644
--- a/test/language/keywords/S7.6.1.1_A1.14.js
+++ b/test/language/keywords/S7.6.1.1_A1.14.js
@@ -5,7 +5,9 @@
 info: The "instanceof" token can not be used as identifier
 es5id: 7.6.1.1_A1.14
 description: Checking if execution of "instanceof=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 instanceof = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.15.js b/test/language/keywords/S7.6.1.1_A1.15.js
index e623b1a0be5bf9286ccec273d36879526fe04eff..6c0865e11d1f5591eba3c44f6967a35b2e6839bb 100644
--- a/test/language/keywords/S7.6.1.1_A1.15.js
+++ b/test/language/keywords/S7.6.1.1_A1.15.js
@@ -5,7 +5,9 @@
 info: The "new" token can not be used as identifier
 es5id: 7.6.1.1_A1.15
 description: Checking if execution of "new=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 new = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.16.js b/test/language/keywords/S7.6.1.1_A1.16.js
index add73e9f27530a15b2ce39089d82fd5f565af9ab..693b32ec072822cb12bf3e67f54a0a1334e5c428 100644
--- a/test/language/keywords/S7.6.1.1_A1.16.js
+++ b/test/language/keywords/S7.6.1.1_A1.16.js
@@ -5,7 +5,9 @@
 info: The "return" token can not be used as identifier
 es5id: 7.6.1.1_A1.16
 description: Checking if execution of "return=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 return = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.17.js b/test/language/keywords/S7.6.1.1_A1.17.js
index ae8dbae8e0a8f382492cebdb58b16f89c1a1c544..d388331d06ea9bcca03f927c291c716ae4e5d5a4 100644
--- a/test/language/keywords/S7.6.1.1_A1.17.js
+++ b/test/language/keywords/S7.6.1.1_A1.17.js
@@ -5,7 +5,9 @@
 info: The "switch" token can not be used as identifier
 es5id: 7.6.1.1_A1.17
 description: Checking if execution of "switch=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 switch = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.18.js b/test/language/keywords/S7.6.1.1_A1.18.js
index 6c9fa99f7d984389594aa4eab41a76f6f86b2599..60c5f943175e9335f0a8d7a81df6eddb21441cbf 100644
--- a/test/language/keywords/S7.6.1.1_A1.18.js
+++ b/test/language/keywords/S7.6.1.1_A1.18.js
@@ -5,7 +5,9 @@
 info: The "this" token can not be used as identifier
 es5id: 7.6.1.1_A1.18
 description: Checking if execution of "this=1" fails
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 this = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.19.js b/test/language/keywords/S7.6.1.1_A1.19.js
index 16418ccb0fb028752e906bec45553cf5520133ef..6f74ed30df1e354f5f910dca7ad4969314e58c0b 100644
--- a/test/language/keywords/S7.6.1.1_A1.19.js
+++ b/test/language/keywords/S7.6.1.1_A1.19.js
@@ -5,7 +5,9 @@
 info: The "throw" token can not be used as identifier
 es5id: 7.6.1.1_A1.19
 description: Checking if execution of "throw=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 throw = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.2.js b/test/language/keywords/S7.6.1.1_A1.2.js
index a973527c4da9f04ae93a9a6b8073bfd18e684898..9d1416c61a396d87f5bd1930571adef280ef8467 100644
--- a/test/language/keywords/S7.6.1.1_A1.2.js
+++ b/test/language/keywords/S7.6.1.1_A1.2.js
@@ -5,7 +5,9 @@
 info: The "case" token can not be used as identifier
 es5id: 7.6.1.1_A1.2
 description: Checking if execution of "case=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 case = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.20.js b/test/language/keywords/S7.6.1.1_A1.20.js
index a72a7ae35aae0d41e4b28d7b7814ba609e766853..cde696e30512f69187ef8afe40e601acde7501f2 100644
--- a/test/language/keywords/S7.6.1.1_A1.20.js
+++ b/test/language/keywords/S7.6.1.1_A1.20.js
@@ -5,7 +5,9 @@
 info: The "try" token can not be used as identifier
 es5id: 7.6.1.1_A1.20
 description: Checking if execution of "try=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 try = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.21.js b/test/language/keywords/S7.6.1.1_A1.21.js
index 6a3b03a0b2b2724dae43ef0faf826d5330eacdd3..e7728c46ca84b4cf2b25a9e69bf1e7aa05a08449 100644
--- a/test/language/keywords/S7.6.1.1_A1.21.js
+++ b/test/language/keywords/S7.6.1.1_A1.21.js
@@ -5,7 +5,9 @@
 info: The "typeof" token can not be used as identifier
 es5id: 7.6.1.1_A1.21
 description: Checking if execution of "typeof=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 typeof = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.22.js b/test/language/keywords/S7.6.1.1_A1.22.js
index 3192d857abaa2f2fec03e2ba3f5b63b89c23609b..91f643325d81257463eaa4976483e78d4bf29d03 100644
--- a/test/language/keywords/S7.6.1.1_A1.22.js
+++ b/test/language/keywords/S7.6.1.1_A1.22.js
@@ -5,7 +5,9 @@
 info: The "var" token can not be used as identifier
 es5id: 7.6.1.1_A1.22
 description: Checking if execution of "var=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.23.js b/test/language/keywords/S7.6.1.1_A1.23.js
index b6cded9f36df3959eaadb20c0f0ed7e1e0e4a9aa..c1e3120051ea4c73e7a78054d164723e04c9688a 100644
--- a/test/language/keywords/S7.6.1.1_A1.23.js
+++ b/test/language/keywords/S7.6.1.1_A1.23.js
@@ -5,7 +5,9 @@
 info: The "void" token can not be used as identifier
 es5id: 7.6.1.1_A1.23
 description: Checking if execution of "void=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 void = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.24.js b/test/language/keywords/S7.6.1.1_A1.24.js
index 6cbfa08e9854ad0ca7b2fac8a294584f8cde3e8b..9fb3767f18ce3f6acfbba742570109a8e843f2de 100644
--- a/test/language/keywords/S7.6.1.1_A1.24.js
+++ b/test/language/keywords/S7.6.1.1_A1.24.js
@@ -5,7 +5,9 @@
 info: The "while" token can not be used as identifier
 es5id: 7.6.1.1_A1.24
 description: Checking if execution of "while=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 while = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.25.js b/test/language/keywords/S7.6.1.1_A1.25.js
index 693163b6dd4ded75c619c4ad5c5ff8401ba28ac2..869d56d51959235a6cfb581c8b722eea0efc6b1f 100644
--- a/test/language/keywords/S7.6.1.1_A1.25.js
+++ b/test/language/keywords/S7.6.1.1_A1.25.js
@@ -5,7 +5,9 @@
 info: The "with" token can not be used as identifier
 es5id: 7.6.1.1_A1.25
 description: Checking if execution of "with=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 with = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.3.js b/test/language/keywords/S7.6.1.1_A1.3.js
index e896e65557653b558916d3f0348e251b3ee57452..38ea1915d765bce1ac1c790fda7063666fdfd65d 100644
--- a/test/language/keywords/S7.6.1.1_A1.3.js
+++ b/test/language/keywords/S7.6.1.1_A1.3.js
@@ -5,7 +5,9 @@
 info: The "catch" token can not be used as identifier
 es5id: 7.6.1.1_A1.3
 description: Checking if execution of "catch=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 catch = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.4.js b/test/language/keywords/S7.6.1.1_A1.4.js
index f9215dcdccbb08a1450e9a6e66813a9d8d12b0fc..65c97315ce76c4474fc3cff561038b8e01ac13ee 100644
--- a/test/language/keywords/S7.6.1.1_A1.4.js
+++ b/test/language/keywords/S7.6.1.1_A1.4.js
@@ -5,7 +5,9 @@
 info: The "continue" token can not be used as identifier
 es5id: 7.6.1.1_A1.4
 description: Checking if execution of "contunue=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 continue = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.5.js b/test/language/keywords/S7.6.1.1_A1.5.js
index 35425610c51313e461d80617f709ba0b29febeb8..1c6f9c5e880e3c0a42a98e862de0761a6e374262 100644
--- a/test/language/keywords/S7.6.1.1_A1.5.js
+++ b/test/language/keywords/S7.6.1.1_A1.5.js
@@ -5,7 +5,9 @@
 info: The "default" token can not be used as identifier
 es5id: 7.6.1.1_A1.5
 description: Checking if execution of "default=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 default = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.6.js b/test/language/keywords/S7.6.1.1_A1.6.js
index e4330159acdc17954e1dba4933d6baeb8c8b0cc0..e8eeac76474a836a232a3a6e4ceba026ed3c77b3 100644
--- a/test/language/keywords/S7.6.1.1_A1.6.js
+++ b/test/language/keywords/S7.6.1.1_A1.6.js
@@ -5,7 +5,9 @@
 info: The "delete" token can not be used as identifier
 es5id: 7.6.1.1_A1.6
 description: Checking if execution of "delete=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 delete = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.7.js b/test/language/keywords/S7.6.1.1_A1.7.js
index b9428377a69cd067d3dac7bcbc496262fdb967e6..310e6476b366b805f61bc4e0460122a47f3037cc 100644
--- a/test/language/keywords/S7.6.1.1_A1.7.js
+++ b/test/language/keywords/S7.6.1.1_A1.7.js
@@ -5,7 +5,9 @@
 info: The "do" token can not be used as identifier
 es5id: 7.6.1.1_A1.7
 description: Checking if execution of "do=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 do = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.8.js b/test/language/keywords/S7.6.1.1_A1.8.js
index bf4409e315f2f71e467e35c1d31acf87a6f6cf07..8c5817b86d41981be9598c910da02667f5fdebbd 100644
--- a/test/language/keywords/S7.6.1.1_A1.8.js
+++ b/test/language/keywords/S7.6.1.1_A1.8.js
@@ -5,7 +5,9 @@
 info: The "else" token can not be used as identifier
 es5id: 7.6.1.1_A1.8
 description: Checking if execution of "else=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 else = 1;
diff --git a/test/language/keywords/S7.6.1.1_A1.9.js b/test/language/keywords/S7.6.1.1_A1.9.js
index 50af87b024f2d2e25cf6d9b2b93e8a216ffc7546..e4fe13f21dfad1d5f26fb780dd3f9b5fb7f4dd00 100644
--- a/test/language/keywords/S7.6.1.1_A1.9.js
+++ b/test/language/keywords/S7.6.1.1_A1.9.js
@@ -5,7 +5,9 @@
 info: The "finally" token can not be used as identifier
 es5id: 7.6.1.1_A1.9
 description: Checking if execution of "finally=1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 finally = 1;
diff --git a/test/language/line-terminators/S7.3_A2.1_T1.js b/test/language/line-terminators/S7.3_A2.1_T1.js
index 3e8cad14aec9afa5fa49052a5f769f6656a36e1d..424b17027887269a6144c25fa4d4dca5f8d55b52 100644
--- a/test/language/line-terminators/S7.3_A2.1_T1.js
+++ b/test/language/line-terminators/S7.3_A2.1_T1.js
@@ -5,10 +5,8 @@
 info: LINE FEED (U+000A) within strings is not allowed
 es5id: 7.3_A2.1_T1
 description: Insert LINE FEED (\u000A) into string
-negative: SyntaxError
 ---*/
 
-// CHECK#1
-if (eval("'\u000Astr\u000Aing\u000A'") === "\u000Astr\u000Aing\u000A") {
-  $ERROR('#1: eval("\'\\u000Astr\\u000Aing\\u000A\'") === "\\u000Astr\\u000Aing\\u000A"');
-}
+assert.throws(SyntaxError, function() {
+  eval("'\u000Astr\u000Aing\u000A'");
+});
diff --git a/test/language/line-terminators/S7.3_A2.1_T2.js b/test/language/line-terminators/S7.3_A2.1_T2.js
index 00c7a1d4b43ac5d9099ebafa660d95c128690c53..8c2689bb3cc3c8c9241c113bb6c8af35b03e23c8 100644
--- a/test/language/line-terminators/S7.3_A2.1_T2.js
+++ b/test/language/line-terminators/S7.3_A2.1_T2.js
@@ -5,7 +5,9 @@
 info: LINE FEED (U+000A) within strings is not allowed
 es5id: 7.3_A2.1_T2
 description: Use real LINE FEED into string
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/line-terminators/S7.3_A2.2_T1.js b/test/language/line-terminators/S7.3_A2.2_T1.js
index bb50b71a302133f7af20a3eb0a0b583341f51162..cb4e39387d1fd2246c6162aa4b344eae16ea12c7 100644
--- a/test/language/line-terminators/S7.3_A2.2_T1.js
+++ b/test/language/line-terminators/S7.3_A2.2_T1.js
@@ -5,10 +5,8 @@
 info: CARRIAGE RETURN (U+000D) within strings is not allowed
 es5id: 7.3_A2.2_T1
 description: Insert CARRIAGE RETURN (\u000D) into string
-negative: SyntaxError
 ---*/
 
-// CHECK#1
-if (eval("'\u000Dstr\u000Ding\u000D'") === "\u000Dstr\u000Ding\u000D") {
-  $ERROR('#1: eval("\'\\u000Dstr\\u000Ding\\u000D\'") === "\\u000Dstr\\u000Ding\\u000D"');
-}
+assert.throws(SyntaxError, function() {
+  eval("'\u000Dstr\u000Ding\u000D'");
+});
diff --git a/test/language/line-terminators/S7.3_A2.2_T2.js b/test/language/line-terminators/S7.3_A2.2_T2.js
index dce4f2a2b990383a444ed5e207d77b1c94aa3e98..6d70527026634b6531f31c41da838afad2fd820d 100644
--- a/test/language/line-terminators/S7.3_A2.2_T2.js
+++ b/test/language/line-terminators/S7.3_A2.2_T2.js
@@ -5,7 +5,9 @@
 info: CARRIAGE RETURN (U+000D) within strings is not allowed
 es5id: 7.3_A2.2_T2
 description: Insert real CARRIAGE RETURN into string
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/line-terminators/S7.3_A2.3.js b/test/language/line-terminators/S7.3_A2.3.js
index 439140a558b3451d208bb39ef9e082e9f78dc5a2..fb26e7e7a7133c940835c462cf6bc8a3630978a7 100644
--- a/test/language/line-terminators/S7.3_A2.3.js
+++ b/test/language/line-terminators/S7.3_A2.3.js
@@ -5,10 +5,8 @@
 info: LINE SEPARATOR (U+2028) within strings is not allowed
 es5id: 7.3_A2.3
 description: Insert LINE SEPARATOR (\u2028) into string
-negative: SyntaxError
 ---*/
 
-// CHECK#1
-if (eval("'\u2028str\u2028ing\u2028'") === "\u2028str\u2028ing\u2028") {
-  $ERROR('#1: eval("\'\\u2028str\\u2028ing\\u2028\'") === "\\u2028str\\u2028ing\\u2028"');
-}
+assert.throws(SyntaxError, function() {
+  eval("'\u2028str\u2028ing\u2028'");
+});
diff --git a/test/language/line-terminators/S7.3_A2.4.js b/test/language/line-terminators/S7.3_A2.4.js
index 9db6e42e8b9ed25c8fbf73c4b891b02d29170966..582a84f6429e5744ddeae8f78a1a1dad1bff4049 100644
--- a/test/language/line-terminators/S7.3_A2.4.js
+++ b/test/language/line-terminators/S7.3_A2.4.js
@@ -5,10 +5,9 @@
 info: PARAGRAPH SEPARATOR (U+2029) within strings is not allowed
 es5id: 7.3_A2.4
 description: Insert PARAGRAPH SEPARATOR (\u2029) into string
-negative: SyntaxError
 ---*/
 
 // CHECK#1
-if (eval("'\u2029str\u2029ing\u2029'") === "\u2029str\u2029ing\u2029") {
-  $ERROR('#1: eval("\'\\u2029str\\u2029ing\\u2029\'") === "\\u2029str\\u2029ing\\u2029"');
-}
+assert.throws(SyntaxError, function() {
+  eval("'\u2029str\u2029ing\u2029'");
+});
diff --git a/test/language/line-terminators/S7.3_A3.1_T2.js b/test/language/line-terminators/S7.3_A3.1_T2.js
index 61d2bbbaa32d4a4318a396e3a70edc8c636dd765..2b37ae5146394d8a090e8e4176d78a5da7822333 100644
--- a/test/language/line-terminators/S7.3_A3.1_T2.js
+++ b/test/language/line-terminators/S7.3_A3.1_T2.js
@@ -5,8 +5,8 @@
 info: Single line comments can not contain LINE FEED (U+000A) inside
 es5id: 7.3_A3.1_T2
 description: Insert LINE FEED (\u000A) into begin of single line comment
-negative: SyntaxError
 ---*/
 
-// CHECK#1
-eval("//\u000A single line comment");
+assert.throws(SyntaxError, function() {
+  eval("//\u000A single line comment");
+});
diff --git a/test/language/line-terminators/S7.3_A3.1_T3.js b/test/language/line-terminators/S7.3_A3.1_T3.js
index 68c5a9062621d68fbfb5de9d4edbdf3c215c5c0f..c315d3d4273d6de5460a61880479685dfec04738 100644
--- a/test/language/line-terminators/S7.3_A3.1_T3.js
+++ b/test/language/line-terminators/S7.3_A3.1_T3.js
@@ -5,7 +5,9 @@
 info: Single line comments can not contain LINE FEED (U+000A) inside
 es5id: 7.3_A3.1_T3
 description: Insert real LINE FEED into single line comment
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/line-terminators/S7.3_A3.2_T1.js b/test/language/line-terminators/S7.3_A3.2_T1.js
index eb4fbb79e0029d130d5613a59974e8e8b8aaa7ac..ae4fbbf2a62d44a9e045253c458559dbb8853bdb 100644
--- a/test/language/line-terminators/S7.3_A3.2_T1.js
+++ b/test/language/line-terminators/S7.3_A3.2_T1.js
@@ -5,7 +5,9 @@
 info: Single line comments can not contain CARRIAGE RETURN (U+000D) inside
 es5id: 7.3_A3.2_T1
 description: Insert CARRIAGE RETURN (\u000D) into single line comment
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // single line comment 
 ??? (invalid)
diff --git a/test/language/line-terminators/S7.3_A3.2_T2.js b/test/language/line-terminators/S7.3_A3.2_T2.js
index 04cde82e4e429e984d9ac79db105588acf270309..580e558a1b9cd1cce9efa2ac462a7554ecaa5250 100644
--- a/test/language/line-terminators/S7.3_A3.2_T2.js
+++ b/test/language/line-terminators/S7.3_A3.2_T2.js
@@ -5,8 +5,8 @@
 info: Single line comments can not contain CARRIAGE RETURN (U+000D) inside
 es5id: 7.3_A3.2_T2
 description: Insert CARRIAGE RETURN (\u000D) into begin of single line comment
-negative: SyntaxError
 ---*/
 
-// CHECK#1
-eval("//\u000D single line comment");
+assert.throws(SyntaxError, function() {
+  eval("//\u000D single line comment");
+});
diff --git a/test/language/line-terminators/S7.3_A3.2_T3.js b/test/language/line-terminators/S7.3_A3.2_T3.js
index 02b123410f15b65c7c71b7aba67bdeefd1e4483d..04d63d37377ff26a03fcfe04d5894ff838a39563 100644
--- a/test/language/line-terminators/S7.3_A3.2_T3.js
+++ b/test/language/line-terminators/S7.3_A3.2_T3.js
@@ -5,7 +5,9 @@
 info: Single line comments can not contain CARRIAGE RETURN (U+000D) inside
 es5id: 7.3_A3.2_T3
 description: Insert real CARRIAGE RETURN into single line comment
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/line-terminators/S7.3_A3.3_T1.js b/test/language/line-terminators/S7.3_A3.3_T1.js
index 6a8bd1b8d85b1204be5f1524c01e06fb45835396..f895d3289c1cf9f6638d4026f90f3297832f0340 100644
--- a/test/language/line-terminators/S7.3_A3.3_T1.js
+++ b/test/language/line-terminators/S7.3_A3.3_T1.js
@@ -7,7 +7,9 @@ info: >
     character
 es5id: 7.3_A3.3_T1
 description: Insert LINE SEPARATOR (\u2028) into single line comment
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // single line LS>
??? (invalid)
diff --git a/test/language/line-terminators/S7.3_A3.3_T2.js b/test/language/line-terminators/S7.3_A3.3_T2.js
index 07d3f855a2d49311839cfcf7c8a6d2c42e67e7bd..fd825222018038b3b26dbdc81f1cfb240d8d86fd 100644
--- a/test/language/line-terminators/S7.3_A3.3_T2.js
+++ b/test/language/line-terminators/S7.3_A3.3_T2.js
@@ -5,8 +5,8 @@
 info: Single line comments can not contain LINE SEPARATOR (U+2028) inside
 es5id: 7.3_A3.3_T2
 description: Insert LINE SEPARATOR (\u2028) into begin of single line comment
-negative: SyntaxError
 ---*/
 
-// CHECK#1
-eval("//\u2028 single line comment");
+assert.throws(SyntaxError, function() {
+  eval("//\u2028 single line comment");
+});
diff --git a/test/language/line-terminators/S7.3_A3.4_T1.js b/test/language/line-terminators/S7.3_A3.4_T1.js
index b1e07af9f267d844155550b8987ac90e66e8a4ad..2ff0ea095c8cfbcb18f690a686dba26570f3da22 100644
--- a/test/language/line-terminators/S7.3_A3.4_T1.js
+++ b/test/language/line-terminators/S7.3_A3.4_T1.js
@@ -5,7 +5,9 @@
 info: Single line comments can not contain PARAGRAPH SEPARATOR (U+2029) inside
 es5id: 7.3_A3.4_T1
 description: Insert PARAGRAPH SEPARATOR (\u2029) into single line comment
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // single line PS>
??? (invalid)
diff --git a/test/language/line-terminators/S7.3_A3.4_T2.js b/test/language/line-terminators/S7.3_A3.4_T2.js
index 6393ba801a6056f4d0706114de1e19c439dac9f0..953b894a02d70a09513704a4b228fdd4f7f02e45 100644
--- a/test/language/line-terminators/S7.3_A3.4_T2.js
+++ b/test/language/line-terminators/S7.3_A3.4_T2.js
@@ -7,8 +7,8 @@ es5id: 7.3_A3.4_T2
 description: >
     Insert PARAGRAPH SEPARATOR (\u2029) into begin of single line
     comment
-negative: SyntaxError
 ---*/
 
-// CHECK#1
-eval("//\u2029 single line comment");
+assert.throws(SyntaxError, function() {
+  eval("//\u2029 single line comment");
+});
diff --git a/test/language/line-terminators/S7.3_A6_T1.js b/test/language/line-terminators/S7.3_A6_T1.js
index bc16811d3925e00de7dc253cf6f78a2815847969..6cc49d37336a82c336c605f32d04518982a3d8e0 100644
--- a/test/language/line-terminators/S7.3_A6_T1.js
+++ b/test/language/line-terminators/S7.3_A6_T1.js
@@ -7,7 +7,9 @@ info: >
     consisting of six characters, namely \u plus four hexadecimal digits
 es5id: 7.3_A6_T1
 description: Insert LINE FEED (U+000A) in var x
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var\u000Ax;
diff --git a/test/language/line-terminators/S7.3_A6_T2.js b/test/language/line-terminators/S7.3_A6_T2.js
index ed3acaa4567af22127842fdd2b8750e2b8c1ab50..e247745f4b039faf028087eb50544480c82a5997 100644
--- a/test/language/line-terminators/S7.3_A6_T2.js
+++ b/test/language/line-terminators/S7.3_A6_T2.js
@@ -7,7 +7,9 @@ info: >
     consisting of six characters, namely \u plus four hexadecimal digits
 es5id: 7.3_A6_T2
 description: Insert CARRIAGE RETURN (U+000D) in var x
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var\u000Dx;
diff --git a/test/language/line-terminators/S7.3_A6_T3.js b/test/language/line-terminators/S7.3_A6_T3.js
index ea10ae15834cd7b9b5840f51efbccedf9bae95ff..f2c759815889fadd84a6efbc02511fc74dc7f762 100644
--- a/test/language/line-terminators/S7.3_A6_T3.js
+++ b/test/language/line-terminators/S7.3_A6_T3.js
@@ -7,7 +7,9 @@ info: >
     consisting of six characters, namely \u plus four hexadecimal digits
 es5id: 7.3_A6_T3
 description: Insert LINE SEPARATOR (U+2028) in var x
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var\u2028x;
diff --git a/test/language/line-terminators/S7.3_A6_T4.js b/test/language/line-terminators/S7.3_A6_T4.js
index daa1ad396b5a003c1a299b11504234ff5e69dd57..4c0bc0b99dd568b1e3196bb3b4ba9544e5db0dc7 100644
--- a/test/language/line-terminators/S7.3_A6_T4.js
+++ b/test/language/line-terminators/S7.3_A6_T4.js
@@ -7,7 +7,9 @@ info: >
     consisting of six characters, namely \u plus four hexadecimal digits
 es5id: 7.3_A6_T4
 description: Insert PARAGRAPH SEPARATOR (U+2029) in var x
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var\u2029x;
diff --git a/test/language/literals/numeric/7.8.3-1gs.js b/test/language/literals/numeric/7.8.3-1gs.js
index b63843295a09a6ec9a0d69903c1a831193d28f67..090189eb6b83f78b9efdedbe052bfe311875c25b 100644
--- a/test/language/literals/numeric/7.8.3-1gs.js
+++ b/test/language/literals/numeric/7.8.3-1gs.js
@@ -4,9 +4,10 @@
 /*---
 es5id: 7.8.3-1gs
 description: Strict Mode - octal extension(010) is forbidden in strict mode
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 var y = 010;
diff --git a/test/language/literals/numeric/7.8.3-2gs.js b/test/language/literals/numeric/7.8.3-2gs.js
index d4c938160f706f1b589a8d5d7255d443becb9cd8..f208ba600825e5ee9e21a0de472415adb6cd177f 100644
--- a/test/language/literals/numeric/7.8.3-2gs.js
+++ b/test/language/literals/numeric/7.8.3-2gs.js
@@ -6,11 +6,12 @@ es5id: 7.8.3-2gs
 description: >
     Strict Mode - octal extension is forbidden in strict mode (after a
     hex number is assigned to a variable)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 var a;
 a = 0x1;
 a = 01;
diff --git a/test/language/literals/numeric/7.8.3-3gs.js b/test/language/literals/numeric/7.8.3-3gs.js
index b29697437cccb15941f895fd469caea03dde8da9..e82e6cffe79a20021cc3f2cfdead44127d36c860 100644
--- a/test/language/literals/numeric/7.8.3-3gs.js
+++ b/test/language/literals/numeric/7.8.3-3gs.js
@@ -6,9 +6,10 @@ es5id: 7.8.3-3gs
 description: >
     Strict Mode - octal extension is forbidden in strict mode (after a
     hex number is assigned to a variable from an eval)
-negative: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-var a;
-eval("a = 0x1;a = 01;");
+var a;
+assert.throws(SyntaxError, function() {
+  eval("a = 0x1;a = 01;");
+});
diff --git a/test/language/literals/numeric/S7.8.3_A6.1_T1.js b/test/language/literals/numeric/S7.8.3_A6.1_T1.js
index 23be70d68db19baa6c7b5ae017007eb4b9be22d2..033531cb982c07555286f11d4a51f81919cf0d73 100644
--- a/test/language/literals/numeric/S7.8.3_A6.1_T1.js
+++ b/test/language/literals/numeric/S7.8.3_A6.1_T1.js
@@ -5,7 +5,9 @@
 info: "HexIntegerLiteral :: 0(x/X) is incorrect"
 es5id: 7.8.3_A6.1_T1
 description: Checking if execution of "0x" passes
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/numeric/S7.8.3_A6.1_T2.js b/test/language/literals/numeric/S7.8.3_A6.1_T2.js
index ab511578fae1d1d98857e2734bf199889f4fc247..3bfd3a025594cefae04a083d88a526ed06a77c37 100644
--- a/test/language/literals/numeric/S7.8.3_A6.1_T2.js
+++ b/test/language/literals/numeric/S7.8.3_A6.1_T2.js
@@ -5,7 +5,9 @@
 info: "HexIntegerLiteral :: 0(x/X) is incorrect"
 es5id: 7.8.3_A6.1_T2
 description: Checking if execution of "0X" passes
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/numeric/S7.8.3_A6.2_T1.js b/test/language/literals/numeric/S7.8.3_A6.2_T1.js
index bb9870aa2ec3e8cba11a5c7a0392de28b6d65368..50436d13c96f0eb453ce2948d39efef0c62506aa 100644
--- a/test/language/literals/numeric/S7.8.3_A6.2_T1.js
+++ b/test/language/literals/numeric/S7.8.3_A6.2_T1.js
@@ -5,7 +5,9 @@
 info: 0xG is incorrect
 es5id: 7.8.3_A6.2_T1
 description: Checking if execution of "0xG" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/numeric/S7.8.3_A6.2_T2.js b/test/language/literals/numeric/S7.8.3_A6.2_T2.js
index db0ae747f4db89ce49b690526fca5f096aa5ec4b..1bebb39c94212431965300937b237f7d3137b82d 100644
--- a/test/language/literals/numeric/S7.8.3_A6.2_T2.js
+++ b/test/language/literals/numeric/S7.8.3_A6.2_T2.js
@@ -5,7 +5,9 @@
 info: 0xG is incorrect
 es5id: 7.8.3_A6.2_T2
 description: Checking if execution of "0xg" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/numeric/binary-invalid-digit.js b/test/language/literals/numeric/binary-invalid-digit.js
index 25bdccb9c0d6da80849798e8949c3d22ffebdf00..abf985d6ac351531ea1b2d73223f7d71882b357c 100644
--- a/test/language/literals/numeric/binary-invalid-digit.js
+++ b/test/language/literals/numeric/binary-invalid-digit.js
@@ -13,7 +13,9 @@ info: >
       BinaryDigits BinaryDigit
     BinaryDigit :: one of
       0 1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0b2;
diff --git a/test/language/literals/numeric/binary-invalid-leading.js b/test/language/literals/numeric/binary-invalid-leading.js
index 5da8ac7c1565e8c33aeb8146c043866634567475..8fe6d9168f2bee6e3e94f757c13a502b01074cbd 100644
--- a/test/language/literals/numeric/binary-invalid-leading.js
+++ b/test/language/literals/numeric/binary-invalid-leading.js
@@ -13,7 +13,9 @@ info: >
       BinaryDigits BinaryDigit
     BinaryDigit :: one of
       0 1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 00b0;
diff --git a/test/language/literals/numeric/binary-invalid-truncated.js b/test/language/literals/numeric/binary-invalid-truncated.js
index c8e4fbfcb95ec5c10b68fb36d2cc7344430f36a3..f00561453ec15f165b66201dfd1cfb599befa652 100644
--- a/test/language/literals/numeric/binary-invalid-truncated.js
+++ b/test/language/literals/numeric/binary-invalid-truncated.js
@@ -13,7 +13,9 @@ info: >
       BinaryDigits BinaryDigit
     BinaryDigit :: one of
       0 1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0b;
diff --git a/test/language/literals/numeric/binary-invalid-unicode.js b/test/language/literals/numeric/binary-invalid-unicode.js
index e43da930f8026a6b44d5f4827f25b9aef41135d1..eeaf5c8ec08da61ca81acb323c03962908e8cd67 100644
--- a/test/language/literals/numeric/binary-invalid-unicode.js
+++ b/test/language/literals/numeric/binary-invalid-unicode.js
@@ -13,7 +13,9 @@ info: >
       BinaryDigits BinaryDigit
     BinaryDigit :: one of
       0 1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0\u00620;
diff --git a/test/language/literals/numeric/legacy-octal-integer-strict.js b/test/language/literals/numeric/legacy-octal-integer-strict.js
index 9bbcf3b48ddb17fd40abd311dcbb31ee84764696..b463a751b575294ef223e9e6b6cf41b0e4b563b4 100644
--- a/test/language/literals/numeric/legacy-octal-integer-strict.js
+++ b/test/language/literals/numeric/legacy-octal-integer-strict.js
@@ -16,7 +16,9 @@ info: >
        0 OctalDigit
        LegacyOctalIntegerLiteral OctalDigit
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 00;
diff --git a/test/language/literals/numeric/non-octal-decimal-integer-strict.js b/test/language/literals/numeric/non-octal-decimal-integer-strict.js
index f20b77aa8e47e26806cde35072e61507a22cfdb3..d5ec7d00ead3adbb40f94223c7e419327aa21d71 100644
--- a/test/language/literals/numeric/non-octal-decimal-integer-strict.js
+++ b/test/language/literals/numeric/non-octal-decimal-integer-strict.js
@@ -22,7 +22,9 @@ info: >
      NonOctalDigit :: one of
        8 9
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 08;
diff --git a/test/language/literals/numeric/octal-invalid-digit.js b/test/language/literals/numeric/octal-invalid-digit.js
index 7823fe6b8c373971334b13dcb8343cc48d83d451..789365abdf0f777007cd1cbcc14c6d257f1d0540 100644
--- a/test/language/literals/numeric/octal-invalid-digit.js
+++ b/test/language/literals/numeric/octal-invalid-digit.js
@@ -13,7 +13,9 @@ info: >
       OctalDigits OctalDigit
     OctalDigit :: one of
       0 1 2 3 4 5 6 7
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0o8;
diff --git a/test/language/literals/numeric/octal-invalid-leading.js b/test/language/literals/numeric/octal-invalid-leading.js
index 1319a384714539d92c7354b7b8470d15b43c2dbb..496856267a3db5f711c5b158662179c43f065e11 100644
--- a/test/language/literals/numeric/octal-invalid-leading.js
+++ b/test/language/literals/numeric/octal-invalid-leading.js
@@ -13,7 +13,9 @@ info: >
       OctalDigits OctalDigit
     OctalDigit :: one of
       0 1 2 3 4 5 6 7
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 00o0;
diff --git a/test/language/literals/numeric/octal-invalid-truncated.js b/test/language/literals/numeric/octal-invalid-truncated.js
index f17c4860c111cbe827605651839b269c2d07cf9c..6d36ccc94c2d97aaaab569924e135c1177993c9a 100644
--- a/test/language/literals/numeric/octal-invalid-truncated.js
+++ b/test/language/literals/numeric/octal-invalid-truncated.js
@@ -13,7 +13,9 @@ info: >
       OctalDigits OctalDigit
     OctalDigit :: one of
       0 1 2 3 4 5 6 7
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0o;
diff --git a/test/language/literals/numeric/octal-invalid-unicode.js b/test/language/literals/numeric/octal-invalid-unicode.js
index 9be0626abae0cdcf81751b8add7ab00b1c80704d..938d03c4f4d9f65f38ae9f02a7ec87148e63d069 100644
--- a/test/language/literals/numeric/octal-invalid-unicode.js
+++ b/test/language/literals/numeric/octal-invalid-unicode.js
@@ -13,7 +13,9 @@ info: >
       OctalDigits OctalDigit
     OctalDigit :: one of
       0 1 2 3 4 5 6 7
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 0\u006f0;
diff --git a/test/language/literals/regexp/7.8.5-1gs.js b/test/language/literals/regexp/7.8.5-1gs.js
index a525c7f90ffa96ce6cddf7804f29750cc1e88607..e057a8556132a5364128b253ae2c3becf9cba698 100644
--- a/test/language/literals/regexp/7.8.5-1gs.js
+++ b/test/language/literals/regexp/7.8.5-1gs.js
@@ -4,8 +4,9 @@
 /*---
 es5id: 7.8.5-1gs
 description: Empty literal RegExp should result in a SyntaxError
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
-throw NotEarlyError;
 var re = //;
diff --git a/test/language/literals/regexp/S7.8.5_A1.2_T1.js b/test/language/literals/regexp/S7.8.5_A1.2_T1.js
index 0d75cd4821b80491da895e34466f9675e13ed597..d4cec1ce2270357ccac3fa90395b220e26f66e9a 100644
--- a/test/language/literals/regexp/S7.8.5_A1.2_T1.js
+++ b/test/language/literals/regexp/S7.8.5_A1.2_T1.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionFirstChar :: * or \\ or / or [empty] is incorrect"
 es5id: 7.8.5_A1.2_T1
 description: "*"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A1.2_T2.js b/test/language/literals/regexp/S7.8.5_A1.2_T2.js
index fec6db97cae158117d225400ba471e680393d7b7..854a86eff3ad768eb7202ac24854caa036541a96 100644
--- a/test/language/literals/regexp/S7.8.5_A1.2_T2.js
+++ b/test/language/literals/regexp/S7.8.5_A1.2_T2.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionFirstChar :: * or \\ or / or [empty] is incorrect"
 es5id: 7.8.5_A1.2_T2
 description: \
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A1.2_T3.js b/test/language/literals/regexp/S7.8.5_A1.2_T3.js
index ea5a41b552d3342fb19064293ce8db0d74d18c6c..40a3940ef35ddec020761d3fa538ac2388b5bcd0 100644
--- a/test/language/literals/regexp/S7.8.5_A1.2_T3.js
+++ b/test/language/literals/regexp/S7.8.5_A1.2_T3.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionFirstChar :: * or \\ or / or [empty] is incorrect"
 es5id: 7.8.5_A1.2_T3
 description: /
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A1.2_T4.js b/test/language/literals/regexp/S7.8.5_A1.2_T4.js
index 599c6fdc9ff645f0c52cdf6b915167de1a23bfe5..5c1818dccc36a0073ae6b9c022beb74213e36223 100644
--- a/test/language/literals/regexp/S7.8.5_A1.2_T4.js
+++ b/test/language/literals/regexp/S7.8.5_A1.2_T4.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionFirstChar :: * or \\ or / or [empty] is incorrect"
 es5id: 7.8.5_A1.2_T4
 description: "[empty]"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A1.3_T1.js b/test/language/literals/regexp/S7.8.5_A1.3_T1.js
index 7b49ef35a73b31c514b96ace72c20f3225588685..31e03c0e0f67cf5de571a73c51b05afd57ca1c0f 100644
--- a/test/language/literals/regexp/S7.8.5_A1.3_T1.js
+++ b/test/language/literals/regexp/S7.8.5_A1.3_T1.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionFirstChar :: LineTerminator is incorrect"
 es5id: 7.8.5_A1.3_T1
 description: Line Feed, without eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A1.3_T3.js b/test/language/literals/regexp/S7.8.5_A1.3_T3.js
index e7c78e764d75835bd14eb6584c12780c6e7abe9a..c2ef82357ac8420b853ea5eff928738f63ea437f 100644
--- a/test/language/literals/regexp/S7.8.5_A1.3_T3.js
+++ b/test/language/literals/regexp/S7.8.5_A1.3_T3.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionFirstChar :: LineTerminator is incorrect"
 es5id: 7.8.5_A1.3_T3
 description: Carriage Return, without eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A1.5_T1.js b/test/language/literals/regexp/S7.8.5_A1.5_T1.js
index b5f81b07369f2c4d9f8316aa8682106e1245c9ed..2e62d51b3de913b589a2215caa569bd55ef6f0a4 100644
--- a/test/language/literals/regexp/S7.8.5_A1.5_T1.js
+++ b/test/language/literals/regexp/S7.8.5_A1.5_T1.js
@@ -7,7 +7,9 @@ info: >
     incorrect
 es5id: 7.8.5_A1.5_T1
 description: Line Feed, without eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A1.5_T3.js b/test/language/literals/regexp/S7.8.5_A1.5_T3.js
index 03a4bf320d368be0b481caf7eb74fa565beb800c..92b1e2d0372ce868ce16ba5662aac3ef3f6b40bb 100644
--- a/test/language/literals/regexp/S7.8.5_A1.5_T3.js
+++ b/test/language/literals/regexp/S7.8.5_A1.5_T3.js
@@ -7,7 +7,9 @@ info: >
     incorrect
 es5id: 7.8.5_A1.5_T3
 description: Carriage Return, without eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A2.2_T1.js b/test/language/literals/regexp/S7.8.5_A2.2_T1.js
index 602269b52edcaf302794cc787fc24da1f3a72cf9..b38c10ccc8a73a51a64ed2150d3cec317f728058 100644
--- a/test/language/literals/regexp/S7.8.5_A2.2_T1.js
+++ b/test/language/literals/regexp/S7.8.5_A2.2_T1.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionChar :: \\ or / is incorrect"
 es5id: 7.8.5_A2.2_T1
 description: \
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A2.2_T2.js b/test/language/literals/regexp/S7.8.5_A2.2_T2.js
index e9d02eedc1173316ea61cb6feb95d47bbd4b5ace..a231489510f25602d7210f893528ca0f54f1505f 100644
--- a/test/language/literals/regexp/S7.8.5_A2.2_T2.js
+++ b/test/language/literals/regexp/S7.8.5_A2.2_T2.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionChar :: \\ or / is incorrect"
 es5id: 7.8.5_A2.2_T2
 description: /
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A2.3_T1.js b/test/language/literals/regexp/S7.8.5_A2.3_T1.js
index 667e771cecb00cf865f26bb0de3614a8d7e50ea6..771cf4fe5759c3ad5503136440868a2144634f12 100644
--- a/test/language/literals/regexp/S7.8.5_A2.3_T1.js
+++ b/test/language/literals/regexp/S7.8.5_A2.3_T1.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionChar :: LineTerminator is incorrect"
 es5id: 7.8.5_A2.3_T1
 description: Line Feed, without eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A2.3_T3.js b/test/language/literals/regexp/S7.8.5_A2.3_T3.js
index 2cc2cda825ad1ceb0a4d22952a991e4c140826f0..aef8993cb9cb5f73e056753e71975f6bf4ff4a9b 100644
--- a/test/language/literals/regexp/S7.8.5_A2.3_T3.js
+++ b/test/language/literals/regexp/S7.8.5_A2.3_T3.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionChar :: LineTerminator is incorrect"
 es5id: 7.8.5_A2.3_T3
 description: Carriage Return, without eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A2.5_T1.js b/test/language/literals/regexp/S7.8.5_A2.5_T1.js
index 44bd5da49923bdea9d2ab44ba8e3470bd15ebf84..50b89b9c7f9a3b5e719d94c0eb2dc8105c2e1cf2 100644
--- a/test/language/literals/regexp/S7.8.5_A2.5_T1.js
+++ b/test/language/literals/regexp/S7.8.5_A2.5_T1.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionChar :: BackslashSequence :: \\LineTerminator is incorrect"
 es5id: 7.8.5_A2.5_T1
 description: Line Feed, without eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/S7.8.5_A2.5_T3.js b/test/language/literals/regexp/S7.8.5_A2.5_T3.js
index 64afbad549729cf5748fd18771c0cd1a627bf545..c8bc4bfa15b2fedf637e4b7f70d39cf3222587f0 100644
--- a/test/language/literals/regexp/S7.8.5_A2.5_T3.js
+++ b/test/language/literals/regexp/S7.8.5_A2.5_T3.js
@@ -5,7 +5,9 @@
 info: "RegularExpressionChar :: BackslashSequence :: \\LineTerminator is incorrect"
 es5id: 7.8.5_A2.5_T3
 description: Carriage Return, without eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/regexp/early-err-bad-flag.js b/test/language/literals/regexp/early-err-bad-flag.js
index 72842c41a25f8b1a8906e065c906c1e8edbfd4ad..6e2fb67c5c16255c04458ea2ee425d2bf5507904 100644
--- a/test/language/literals/regexp/early-err-bad-flag.js
+++ b/test/language/literals/regexp/early-err-bad-flag.js
@@ -7,7 +7,9 @@ info: >
     It is a Syntax Error if FlagText of RegularExpressionLiteral contains any
     code points other than "g", "i", "m", "u", or "y", or if it contains the
     same code point more than once.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 throw new Test262Error();
diff --git a/test/language/literals/regexp/early-err-dup-flag.js b/test/language/literals/regexp/early-err-dup-flag.js
index 266fff009dca96e1f3c212ee0930b421b9518f7d..a58c3488742b043fb9037f40e90f011bf5c2bd22 100644
--- a/test/language/literals/regexp/early-err-dup-flag.js
+++ b/test/language/literals/regexp/early-err-dup-flag.js
@@ -7,7 +7,9 @@ info: >
     It is a Syntax Error if FlagText of RegularExpressionLiteral contains any
     code points other than "g", "i", "m", "u", or "y", or if it contains the
     same code point more than once.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 throw new Test262Error();
diff --git a/test/language/literals/regexp/early-err-flags-unicode-escape.js b/test/language/literals/regexp/early-err-flags-unicode-escape.js
index 16a5ec4e65bc84d1ece131d0c55e70d7b234a3db..daccd6df629ee2850d05a88daa57b65667b9605e 100644
--- a/test/language/literals/regexp/early-err-flags-unicode-escape.js
+++ b/test/language/literals/regexp/early-err-flags-unicode-escape.js
@@ -7,7 +7,9 @@ description: >
   RegularExpressionFlags :: RegularExpressionFlags IdentifierPart
 
   - It is a Syntax Error if IdentifierPart contains a Unicode escape sequence.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /./\u0067;
diff --git a/test/language/literals/regexp/early-err-pattern.js b/test/language/literals/regexp/early-err-pattern.js
index bdea79346afefd4da129d5c9af1fe6de1b9ab277..61b63a1f203a42905423f9e51684375eb64ef052 100644
--- a/test/language/literals/regexp/early-err-pattern.js
+++ b/test/language/literals/regexp/early-err-pattern.js
@@ -7,7 +7,9 @@ info: >
     It is a Syntax Error if BodyText of RegularExpressionLiteral cannot be
     recognized using the goal symbol Pattern of the ECMAScript RegExp grammar
     specified in 21.2.1.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 throw new Test262Error();
diff --git a/test/language/literals/regexp/invalid-braced-quantifier-exact.js b/test/language/literals/regexp/invalid-braced-quantifier-exact.js
index 31ade39d4e05308ae3c2ee1b16de3b50a284ce77..1f837e9c3b99cb87484bc16274e9aa4bf123fa3d 100644
--- a/test/language/literals/regexp/invalid-braced-quantifier-exact.js
+++ b/test/language/literals/regexp/invalid-braced-quantifier-exact.js
@@ -15,7 +15,9 @@ info: |
     ExtendedPatternCharacter, it also introduces the InvalidBracedQuantifier
     pattern with a higher precedence. This makes the SyntaxError for such
     patterns consistent between Annex-B and non-Annex-B environments.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /{2}/;
diff --git a/test/language/literals/regexp/invalid-braced-quantifier-lower.js b/test/language/literals/regexp/invalid-braced-quantifier-lower.js
index 48587fb6124bcb95d3e80d41e4f9a98a8df361a8..b18f42bc365afa9c82ab35897d51e49a4ee8ae07 100644
--- a/test/language/literals/regexp/invalid-braced-quantifier-lower.js
+++ b/test/language/literals/regexp/invalid-braced-quantifier-lower.js
@@ -15,7 +15,9 @@ info: |
     ExtendedPatternCharacter, it also introduces the InvalidBracedQuantifier
     pattern with a higher precedence. This makes the SyntaxError for such
     patterns consistent between Annex-B and non-Annex-B environments.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /{2,}/;
diff --git a/test/language/literals/regexp/invalid-braced-quantifier-range.js b/test/language/literals/regexp/invalid-braced-quantifier-range.js
index 56cb830f4572af00f2fa3fc38bda7b8b5c655139..9a95777bc30494e7cc5e075c7016daa0eede5dc2 100644
--- a/test/language/literals/regexp/invalid-braced-quantifier-range.js
+++ b/test/language/literals/regexp/invalid-braced-quantifier-range.js
@@ -15,7 +15,9 @@ info: |
     ExtendedPatternCharacter, it also introduces the InvalidBracedQuantifier
     pattern with a higher precedence. This makes the SyntaxError for such
     patterns consistent between Annex-B and non-Annex-B environments.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /{2,3}/;
diff --git a/test/language/literals/regexp/u-dec-esc.js b/test/language/literals/regexp/u-dec-esc.js
index a2f92f579f9c1322d2e74e0c5ea8bccb868b514c..b238d86bc6ed0da96f622b8834193a0cd64ad5a5 100644
--- a/test/language/literals/regexp/u-dec-esc.js
+++ b/test/language/literals/regexp/u-dec-esc.js
@@ -7,7 +7,9 @@ info: >
     DecimalEscape is not allowed when the `u` flag is set (regardless of Annex
     B extensions--see ES6 section B.1.4).
 es6id: 21.2.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /\1/u;
diff --git a/test/language/literals/regexp/u-invalid-class-escape.js b/test/language/literals/regexp/u-invalid-class-escape.js
index 702f9ab7b5eb0a9b7f276343c30d6a08f69e34cd..1c17f05e6acf2e1cc389cdcf3561b301c30c4f6c 100644
--- a/test/language/literals/regexp/u-invalid-class-escape.js
+++ b/test/language/literals/regexp/u-invalid-class-escape.js
@@ -13,7 +13,9 @@ info: |
         CharacterEscape[?U]
 
     The `u` flag precludes the Annex B extension that enables this pattern.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /\c0/u;
diff --git a/test/language/literals/regexp/u-invalid-extended-pattern-char.js b/test/language/literals/regexp/u-invalid-extended-pattern-char.js
index a4a5a5df3f1f6415be4a0e164555d5c0fdcf4ea9..a6d91c9d43956272ce4ff17a0f39a5faacb72ef4 100644
--- a/test/language/literals/regexp/u-invalid-extended-pattern-char.js
+++ b/test/language/literals/regexp/u-invalid-extended-pattern-char.js
@@ -10,7 +10,9 @@ info: |
 
     Term[U] ::
          [~U] ExtendedAtom
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /{/u;
diff --git a/test/language/literals/regexp/u-invalid-identity-escape.js b/test/language/literals/regexp/u-invalid-identity-escape.js
index 4f16bf0f40d8a60d85a50e42836ff0154a353f47..b36d6f8a8878efbcb2a42275c6966307fa3419e2 100644
--- a/test/language/literals/regexp/u-invalid-identity-escape.js
+++ b/test/language/literals/regexp/u-invalid-identity-escape.js
@@ -12,7 +12,9 @@ info: |
 
     The `u` flag precludes the use of characters in  UnicodeIDContinue
     irrespective of the presence of Annex B extensions.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /\M/u;
diff --git a/test/language/literals/regexp/u-invalid-legacy-octal-escape.js b/test/language/literals/regexp/u-invalid-legacy-octal-escape.js
index 7c752422caee1dd7fe8e202b902c693af99a6eca..204d341353122a7fa476d3d1eb8281ea510d1f21 100644
--- a/test/language/literals/regexp/u-invalid-legacy-octal-escape.js
+++ b/test/language/literals/regexp/u-invalid-legacy-octal-escape.js
@@ -15,7 +15,9 @@ info: |
         HexEscapeSequence
         RegExpUnicodeEscapeSequence[?U]
         IdentityEscape[?U]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /\1/u;
diff --git a/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a.js b/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a.js
index 5b8e427b501e512637f23656410cf8fb7fa0ad14..a88fe8a8c917dd980e3eab532fc9f764b3f1f8cb 100644
--- a/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a.js
+++ b/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-a.js
@@ -22,7 +22,9 @@ info: |
        exactly one character, throw a SyntaxError exception.
 
     The `u` flag precludes the Annex B extension that enables this pattern.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /[\d-a]/u;
diff --git a/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab.js b/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab.js
index cd41a927ebceee108a9e5e6b4007d0344169c282..48e7172a4b8ffe33fa22f4bb55baf195770f53d5 100644
--- a/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab.js
+++ b/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-ab.js
@@ -22,7 +22,9 @@ info: |
        exactly one character, throw a SyntaxError exception.
 
     The `u` flag precludes the Annex B extension that enables this pattern.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /[\s-\d]/u;
diff --git a/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b.js b/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b.js
index 54b8ff674e882a709f4733dc76998d4f031ed6ad..cb41b9490ff8d7c53c8580c1cc34046117ee760b 100644
--- a/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b.js
+++ b/test/language/literals/regexp/u-invalid-non-empty-class-ranges-no-dash-b.js
@@ -22,7 +22,9 @@ info: |
        exactly one character, throw a SyntaxError exception.
 
     The `u` flag precludes the Annex B extension that enables this pattern.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /[%-\d]/u;
diff --git a/test/language/literals/regexp/u-invalid-non-empty-class-ranges.js b/test/language/literals/regexp/u-invalid-non-empty-class-ranges.js
index 2187096539e7f162347e2fca4154bf2dc3e541dc..49b6580a51b765a5f311db4d1e1432bd97b5b3d3 100644
--- a/test/language/literals/regexp/u-invalid-non-empty-class-ranges.js
+++ b/test/language/literals/regexp/u-invalid-non-empty-class-ranges.js
@@ -21,7 +21,9 @@ info: |
        exactly one character, throw a SyntaxError exception.
 
     The `u` flag precludes the Annex B extension that enables this pattern.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /[--\d]/u;
diff --git a/test/language/literals/regexp/u-invalid-oob-decimal-escape.js b/test/language/literals/regexp/u-invalid-oob-decimal-escape.js
index bbebbe1070710057edc0f3627c9c34534b1024d9..47c63ab9522a635424b9682fd0bf9969bc96ce2d 100644
--- a/test/language/literals/regexp/u-invalid-oob-decimal-escape.js
+++ b/test/language/literals/regexp/u-invalid-oob-decimal-escape.js
@@ -10,7 +10,9 @@ info: |
 
     When the "unicode" flag is set, this algorithm is honored irrespective of
     the presence of Annex B extensions.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /\8/u;
diff --git a/test/language/literals/regexp/u-invalid-quantifiable-assertion.js b/test/language/literals/regexp/u-invalid-quantifiable-assertion.js
index a26d51282d7d6c055a5915dc44eb98c96ace90a0..087124e62da88e3133357707a2be74e9057fc040 100644
--- a/test/language/literals/regexp/u-invalid-quantifiable-assertion.js
+++ b/test/language/literals/regexp/u-invalid-quantifiable-assertion.js
@@ -10,7 +10,9 @@ info: |
 
     Term[U] ::
          [~U] QuantifiableAssertion Quantifier
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /.(?=.)?/u;
diff --git a/test/language/literals/regexp/u-unicode-esc-bounds.js b/test/language/literals/regexp/u-unicode-esc-bounds.js
index 58badcde7ff445fd31fcc4a52525e05cb98000e6..b3140f808fa30ec4757ebcc80c6bb0fde6d368e5 100644
--- a/test/language/literals/regexp/u-unicode-esc-bounds.js
+++ b/test/language/literals/regexp/u-unicode-esc-bounds.js
@@ -10,7 +10,9 @@ info: >
     RegExpUnicodeEscapeSequence :: u{ HexDigits }
 
         - It is a Syntax Error if the MV of HexDigits > 1114111.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /\u{110000}/u;
diff --git a/test/language/literals/regexp/u-unicode-esc-non-hex.js b/test/language/literals/regexp/u-unicode-esc-non-hex.js
index 21c23e91d28136dee6fb216c46e402e92c473905..c8265206bee7d6a82db15c385646431241c6be09 100644
--- a/test/language/literals/regexp/u-unicode-esc-non-hex.js
+++ b/test/language/literals/regexp/u-unicode-esc-non-hex.js
@@ -5,7 +5,9 @@
 description: >
     Non-hexadecimal value within the delimiters of a UnicodeEscapeSequence
 es6id: 21.2.1
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 /\u{1,}/u;
diff --git a/test/language/literals/string/7.8.4-1gs.js b/test/language/literals/string/7.8.4-1gs.js
index d78956031eec189477703e172dfde56e38d8c4b2..d9801271411c8b636cfc673152a0e89e74323271 100644
--- a/test/language/literals/string/7.8.4-1gs.js
+++ b/test/language/literals/string/7.8.4-1gs.js
@@ -6,9 +6,10 @@ es5id: 7.8.4-1gs
 description: >
     Strict Mode - OctalEscapeSequence(\0110) is forbidden in strict
     mode
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 var _7_8_4_2 = '100abc\0110def';
diff --git a/test/language/literals/string/S7.8.4_A1.1_T1.js b/test/language/literals/string/S7.8.4_A1.1_T1.js
index 25e7947d1b39e6fcc40629c0d0262730e47956de..b1da233d7fb2c4bec692aa1523323f45af768e38 100644
--- a/test/language/literals/string/S7.8.4_A1.1_T1.js
+++ b/test/language/literals/string/S7.8.4_A1.1_T1.js
@@ -7,7 +7,9 @@ es5id: 7.8.4_A1.1_T1
 description: >
     DoubleStringCharacter :: SourceCharacter but not double-quote " or
     LineTerminator
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A1.1_T2.js b/test/language/literals/string/S7.8.4_A1.1_T2.js
index bd503769e87f72ba974cd4eebfd2778694a0c0bd..e3516a13f7db3f1f72c7c0bd2b60cc2536f156b7 100644
--- a/test/language/literals/string/S7.8.4_A1.1_T2.js
+++ b/test/language/literals/string/S7.8.4_A1.1_T2.js
@@ -7,7 +7,9 @@ es5id: 7.8.4_A1.1_T2
 description: >
     DoubleStringCharacter :: SourceCharacter but not double-quote " or
     LineTerminator
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A1.2_T1.js b/test/language/literals/string/S7.8.4_A1.2_T1.js
index 890a6b58e2f7750546e09f2c7cb91016d5cb8ad7..1bc242b5679fea6ef135c72adaecb1c76e6eaa74 100644
--- a/test/language/literals/string/S7.8.4_A1.2_T1.js
+++ b/test/language/literals/string/S7.8.4_A1.2_T1.js
@@ -7,7 +7,9 @@ es5id: 7.8.4_A1.2_T1
 description: >
     SingleStringCharacter :: SourceCharacter but not single-quote ' or
     LineTerminator
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A1.2_T2.js b/test/language/literals/string/S7.8.4_A1.2_T2.js
index cd300d10f8f582074c18f9ccc11acc1c559eaebb..5174b7bd7b4fecc7cab4560d5ebfc93c119d8f3e 100644
--- a/test/language/literals/string/S7.8.4_A1.2_T2.js
+++ b/test/language/literals/string/S7.8.4_A1.2_T2.js
@@ -7,7 +7,9 @@ es5id: 7.8.4_A1.2_T2
 description: >
     SingleStringCharacter :: SourceCharacter but not single-quote ' or
     LineTerminator
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A3.1_T1.js b/test/language/literals/string/S7.8.4_A3.1_T1.js
index d5755153008a31af332d9ed37cfbfaccc691b93f..19b3a6fd6dab059a6b19559911f0463981e01631 100644
--- a/test/language/literals/string/S7.8.4_A3.1_T1.js
+++ b/test/language/literals/string/S7.8.4_A3.1_T1.js
@@ -5,7 +5,9 @@
 info: "StringLiteral :: \"\\\" or '\\' is not correct"
 es5id: 7.8.4_A3.1_T1
 description: Checking if execution of "\" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A3.1_T2.js b/test/language/literals/string/S7.8.4_A3.1_T2.js
index eadb8d72b9d27cb4f146279567005e34fbebf11d..afdbf643c45e9d515593853611a325a076658cb5 100644
--- a/test/language/literals/string/S7.8.4_A3.1_T2.js
+++ b/test/language/literals/string/S7.8.4_A3.1_T2.js
@@ -5,7 +5,9 @@
 info: "StringLiteral :: \"\\\" or '\\' is not correct"
 es5id: 7.8.4_A3.1_T2
 description: Checking if execution of "'\'" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A3.2_T1.js b/test/language/literals/string/S7.8.4_A3.2_T1.js
index 4890f99acc23f58cd6d12b1e986d15244f14b5bb..45e6bd4ef91707292024e6c31412646528bc5f28 100644
--- a/test/language/literals/string/S7.8.4_A3.2_T1.js
+++ b/test/language/literals/string/S7.8.4_A3.2_T1.js
@@ -5,7 +5,9 @@
 info: "StringLiteral :: \"\\\\\\\" or '\\\\\\' is not correct"
 es5id: 7.8.4_A3.2_T1
 description: Checking if execution of "\\\" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A3.2_T2.js b/test/language/literals/string/S7.8.4_A3.2_T2.js
index 2f76790dcd8f4ab1a9bbcc13e27b9cb4962a95da..be3ab6f57837919faa01b1b7d69024dcd6875ea8 100644
--- a/test/language/literals/string/S7.8.4_A3.2_T2.js
+++ b/test/language/literals/string/S7.8.4_A3.2_T2.js
@@ -5,7 +5,9 @@
 info: "StringLiteral :: \"\\\\\\\" or '\\\\\\' is not correct"
 es5id: 7.8.4_A3.2_T2
 description: Checking if execution of '\\\' fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A4.3_T1.js b/test/language/literals/string/S7.8.4_A4.3_T1.js
index d8ccc3b0da3bade714d95d956173e46502ae01ed..cb1337c04483730de291db5d72798bc4080cd31b 100644
--- a/test/language/literals/string/S7.8.4_A4.3_T1.js
+++ b/test/language/literals/string/S7.8.4_A4.3_T1.js
@@ -5,7 +5,9 @@
 info: NonEscapeSequence is not EscapeCharacter
 es5id: 7.8.4_A4.3_T1
 description: "EscapeCharacter :: DecimalDigits :: 1"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/literals/string/S7.8.4_A4.3_T2.js b/test/language/literals/string/S7.8.4_A4.3_T2.js
index daa88f3e7ab5ee533dc1d8a77ba04ea8d738ffc0..70cae8287948fcd3737916229f73030bd17b363a 100644
--- a/test/language/literals/string/S7.8.4_A4.3_T2.js
+++ b/test/language/literals/string/S7.8.4_A4.3_T2.js
@@ -5,7 +5,9 @@
 info: NonEscapeSequence is not EscapeCharacter
 es5id: 7.8.4_A4.3_T2
 description: "EscapeCharacter :: DecimalDigits :: 7"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/literals/string/S7.8.4_A7.1_T4.js b/test/language/literals/string/S7.8.4_A7.1_T4.js
index dc6d28dd515a68a5d2d3e2d32767871ab8330f20..390128b43f3a3a1e0c6b1be750b146392d84dabc 100644
--- a/test/language/literals/string/S7.8.4_A7.1_T4.js
+++ b/test/language/literals/string/S7.8.4_A7.1_T4.js
@@ -7,7 +7,9 @@ info: >
     HexDigit
 es5id: 7.8.4_A7.1_T4
 description: "UnicodeEscapeSequence :: u000G is incorrect"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#
diff --git a/test/language/literals/string/S7.8.4_A7.2_T1.js b/test/language/literals/string/S7.8.4_A7.2_T1.js
index 59ce6a0423c17f36e08d5df650f26ed1434b8993..255d3e83c64a44f981ac7a7b8db807bdf9c5710d 100644
--- a/test/language/literals/string/S7.8.4_A7.2_T1.js
+++ b/test/language/literals/string/S7.8.4_A7.2_T1.js
@@ -5,7 +5,9 @@
 info: "UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect"
 es5id: 7.8.4_A7.2_T1
 description: ":: HexDigit :: 1"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A7.2_T2.js b/test/language/literals/string/S7.8.4_A7.2_T2.js
index df4f0582d1531b4d7f2274041226d3800e219f1b..793819eedce560a9d59689c715948a7d071278c0 100644
--- a/test/language/literals/string/S7.8.4_A7.2_T2.js
+++ b/test/language/literals/string/S7.8.4_A7.2_T2.js
@@ -5,7 +5,9 @@
 info: "UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect"
 es5id: 7.8.4_A7.2_T2
 description: ":: HexDigit :: A"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A7.2_T3.js b/test/language/literals/string/S7.8.4_A7.2_T3.js
index a6ca9c6ec091d1ba65bb5633da3c709bd96618e6..2be1ce4ac6632529efcc07fe3ed1366991823a81 100644
--- a/test/language/literals/string/S7.8.4_A7.2_T3.js
+++ b/test/language/literals/string/S7.8.4_A7.2_T3.js
@@ -5,7 +5,9 @@
 info: "UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect"
 es5id: 7.8.4_A7.2_T3
 description: ":: HexDigit :: 1"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A7.2_T4.js b/test/language/literals/string/S7.8.4_A7.2_T4.js
index 6a02030dca5ea057a7e56c4eeefff972ead3fb8a..3711c0d098135e64ce6bcd900976a6c948996ad2 100644
--- a/test/language/literals/string/S7.8.4_A7.2_T4.js
+++ b/test/language/literals/string/S7.8.4_A7.2_T4.js
@@ -5,7 +5,9 @@
 info: "UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect"
 es5id: 7.8.4_A7.2_T4
 description: ":: HexDigit :: A"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A7.2_T5.js b/test/language/literals/string/S7.8.4_A7.2_T5.js
index 42d0aca8a5612754634f92899431a0b839f247b8..338425c10a87d704ceb1a03dbe35aac7d62cb7d4 100644
--- a/test/language/literals/string/S7.8.4_A7.2_T5.js
+++ b/test/language/literals/string/S7.8.4_A7.2_T5.js
@@ -5,7 +5,9 @@
 info: "UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect"
 es5id: 7.8.4_A7.2_T5
 description: ":: HexDigit :: 1"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/S7.8.4_A7.2_T6.js b/test/language/literals/string/S7.8.4_A7.2_T6.js
index 462748fac7b9e24154775edc2bd593630cfa174b..3abb025a2aa2b2c3b3ea0cf9fe13e736803a8dda 100644
--- a/test/language/literals/string/S7.8.4_A7.2_T6.js
+++ b/test/language/literals/string/S7.8.4_A7.2_T6.js
@@ -5,7 +5,9 @@
 info: "UnicodeEscapeSequence :: u HexDigit (one, two or three time) is incorrect"
 es5id: 7.8.4_A7.2_T6
 description: ":: HexDigit :: A"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //CHECK#1
diff --git a/test/language/literals/string/legacy-octal-escape-sequence-strict.js b/test/language/literals/string/legacy-octal-escape-sequence-strict.js
index 8486c0e817f344506ce9a8c3c7fddc9bbfb82bc0..c401353dc1462b6fa38f7fd44976ea430ecedf45 100644
--- a/test/language/literals/string/legacy-octal-escape-sequence-strict.js
+++ b/test/language/literals/string/legacy-octal-escape-sequence-strict.js
@@ -28,7 +28,9 @@ info: >
     This definition of EscapeSequence is not used in strict mode or when
     parsing TemplateCharacter.
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 '\1';
diff --git a/test/language/module-code/comment-multi-line-html-close.js b/test/language/module-code/comment-multi-line-html-close.js
index 22713d2a3278bb2221d6645bc2cbcd49405e00d6..6a4124d3e81ce580c7299ce9ec9a7925d4d14d01 100644
--- a/test/language/module-code/comment-multi-line-html-close.js
+++ b/test/language/module-code/comment-multi-line-html-close.js
@@ -6,7 +6,9 @@ description: >
     (MultiLineHTMLCloseComment)
 esid: sec-html-like-comments
 es6id: B1.3
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/comment-single-line-html-close.js b/test/language/module-code/comment-single-line-html-close.js
index 6e86c6a14862a9217ee9b4aac0539341bc3d9968..595b9d9c601e6df35be3014424f9e5ab9913fa2c 100644
--- a/test/language/module-code/comment-single-line-html-close.js
+++ b/test/language/module-code/comment-single-line-html-close.js
@@ -6,7 +6,9 @@ description: >
     (SingleLineHTMLCloseComment)
 esid: sec-html-like-comments
 es6id: B1.3
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/comment-single-line-html-open.js b/test/language/module-code/comment-single-line-html-open.js
index 17f8af2724b2e21d71a7e2db9030a7f28f2d3f6e..3218abfd5369f5cd8a59dbe7fb4ba061937e9351 100644
--- a/test/language/module-code/comment-single-line-html-open.js
+++ b/test/language/module-code/comment-single-line-html-open.js
@@ -6,7 +6,9 @@ description: >
     (SingleLineHTMLOpenComment)
 esid: sec-html-like-comments
 es6id: B1.3
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/early-dup-export-decl.js b/test/language/module-code/early-dup-export-decl.js
index 74ff07aff3f33405e617aee13dd21901dd3070c5..c6364991a3972f94c61517fa069ab77ea813e559 100644
--- a/test/language/module-code/early-dup-export-decl.js
+++ b/test/language/module-code/early-dup-export-decl.js
@@ -6,7 +6,9 @@ description: >
     It is a Syntax Error if the ExportedNames of ModuleItemList contains any
     duplicate entries.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 export function f() {}
diff --git a/test/language/module-code/early-dup-export-dflt-id.js b/test/language/module-code/early-dup-export-dflt-id.js
index a82ae96fe32e65d3e65e96ce6d68fdd1d270c4c2..930d37b7301d91746e430e5d9eb1bb2653a559bd 100644
--- a/test/language/module-code/early-dup-export-dflt-id.js
+++ b/test/language/module-code/early-dup-export-dflt-id.js
@@ -7,7 +7,9 @@ description: >
     It is a Syntax Error if the ExportedNames of ModuleItemList contains any
     duplicate entries.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x, y;
diff --git a/test/language/module-code/early-dup-export-dflt.js b/test/language/module-code/early-dup-export-dflt.js
index 0ddb08bb35a45c697c01cad94f69490b35581000..0bc2009f63f7709d6c4a1aa8f84edc4de4b11ee6 100644
--- a/test/language/module-code/early-dup-export-dflt.js
+++ b/test/language/module-code/early-dup-export-dflt.js
@@ -6,7 +6,9 @@ description: >
     It is a Syntax Error if the ExportedNames of ModuleItemList contains any
     duplicate entries.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 export default var x = null;
diff --git a/test/language/module-code/early-dup-export-id-as.js b/test/language/module-code/early-dup-export-id-as.js
index 11d1e3e69b04f14216b33d6477ce183ab4f0f1a6..03a27f34febbbf25d6e3a52d79346fd02caf385b 100644
--- a/test/language/module-code/early-dup-export-id-as.js
+++ b/test/language/module-code/early-dup-export-id-as.js
@@ -6,7 +6,9 @@ description: >
     It is a Syntax Error if the ExportedNames of ModuleItemList contains any
     duplicate entries.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x, y;
diff --git a/test/language/module-code/early-dup-export-id.js b/test/language/module-code/early-dup-export-id.js
index 249553bb5fef1a08ed5750c6002022f62fbdd96f..9c155cccf49a890688b3cec9830fe2d122c2ca33 100644
--- a/test/language/module-code/early-dup-export-id.js
+++ b/test/language/module-code/early-dup-export-id.js
@@ -6,7 +6,9 @@ description: >
     It is a Syntax Error if the ExportedNames of ModuleItemList contains any
     duplicate entries.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x;
diff --git a/test/language/module-code/early-dup-lables.js b/test/language/module-code/early-dup-lables.js
index 18e3a7b09fb2b635b6e8fc870931d5fc3219bc73..bb15af879a51626fc210f11566f69be5782354f6 100644
--- a/test/language/module-code/early-dup-lables.js
+++ b/test/language/module-code/early-dup-lables.js
@@ -6,7 +6,9 @@ description: >
     It is a Syntax Error if ContainsDuplicateLabels of ModuleItemList with
     argument « » is true.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 label: {
diff --git a/test/language/module-code/early-dup-lex.js b/test/language/module-code/early-dup-lex.js
index fce2d71b9f6a7fb4a1dc2826c6560c8e728a8969..369ed1ec840a7b42d0bfeded0bfc525a5807d3b9 100644
--- a/test/language/module-code/early-dup-lex.js
+++ b/test/language/module-code/early-dup-lex.js
@@ -7,7 +7,9 @@ description: >
     contains any duplicate entries.
 flags: [module]
 features: [let, const]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 let x;
diff --git a/test/language/module-code/early-export-global.js b/test/language/module-code/early-export-global.js
index 2e02038bb2e3dd61d1fae571d3e8283d7d9b7640..3659544fd667b380cfcb6b682e941c7955e10242 100644
--- a/test/language/module-code/early-export-global.js
+++ b/test/language/module-code/early-export-global.js
@@ -9,7 +9,9 @@ info: >
     ModuleItemList does not also occur in either the VarDeclaredNames of
     ModuleItemList, or the LexicallyDeclaredNames of ModuleItemList.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 export { Number };
diff --git a/test/language/module-code/early-export-unresolvable.js b/test/language/module-code/early-export-unresolvable.js
index 049dce70aaffb53aa06f3bd4a3d5ab75617ca5f1..b0f6a455bb28c91705cd36286ec28d2c7085ad52 100644
--- a/test/language/module-code/early-export-unresolvable.js
+++ b/test/language/module-code/early-export-unresolvable.js
@@ -7,7 +7,9 @@ description: >
     ModuleItemList does not also occur in either the VarDeclaredNames of
     ModuleItemList, or the LexicallyDeclaredNames of ModuleItemList.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 export { unresolvable };
diff --git a/test/language/module-code/early-import-arguments.js b/test/language/module-code/early-import-arguments.js
index 0885a7ee663d58920a83374e61edb3fe405a31aa..fec3a8d92d044fea73acc58cb599e252d2dbd94d 100644
--- a/test/language/module-code/early-import-arguments.js
+++ b/test/language/module-code/early-import-arguments.js
@@ -18,7 +18,9 @@ info: |
     - It is a Syntax Error if the code matched by this production is contained
       in strict mode code and the StringValue of Identifier is "arguments" or
       "eval".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/early-import-as-arguments.js b/test/language/module-code/early-import-as-arguments.js
index f5250a38ca31df5f963d2494b3ae8df93c89bfd3..cec189e7079de41955d0319aed25f5757250dd0e 100644
--- a/test/language/module-code/early-import-as-arguments.js
+++ b/test/language/module-code/early-import-as-arguments.js
@@ -18,7 +18,9 @@ info: |
     - It is a Syntax Error if the code matched by this production is contained
       in strict mode code and the StringValue of Identifier is "arguments" or
       "eval".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/early-import-as-eval.js b/test/language/module-code/early-import-as-eval.js
index 2b732cebec8c8d22e2b22dc9c3acd234fc34a831..ce4c80885f88dc4a726d4ff90924554047e9f270 100644
--- a/test/language/module-code/early-import-as-eval.js
+++ b/test/language/module-code/early-import-as-eval.js
@@ -18,7 +18,9 @@ info: |
     - It is a Syntax Error if the code matched by this production is contained
       in strict mode code and the StringValue of Identifier is "arguments" or
       "eval".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/early-import-eval.js b/test/language/module-code/early-import-eval.js
index c8ba3d20f7c933023e229f43bb9e4d02c775f9d2..7e2bc97888c4775bd217a91ab37cb9affe7a465e 100644
--- a/test/language/module-code/early-import-eval.js
+++ b/test/language/module-code/early-import-eval.js
@@ -18,7 +18,9 @@ info: |
     - It is a Syntax Error if the code matched by this production is contained
       in strict mode code and the StringValue of Identifier is "arguments" or
       "eval".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/early-lex-and-var.js b/test/language/module-code/early-lex-and-var.js
index b5b9cae067df07c0c32ef666b51fc1274d874a7a..9d2f8aa3c92adaad362eba14f2827b1074468ad1 100644
--- a/test/language/module-code/early-lex-and-var.js
+++ b/test/language/module-code/early-lex-and-var.js
@@ -7,7 +7,9 @@ description: >
     ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
 flags: [module]
 features: [let]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 let x;
diff --git a/test/language/module-code/early-new-target.js b/test/language/module-code/early-new-target.js
index 777deec067da9892659554b01aea3c7a6cad8483..2b4cf7e853e614976ea9fb8113f5b7b9dcb6e067 100644
--- a/test/language/module-code/early-new-target.js
+++ b/test/language/module-code/early-new-target.js
@@ -5,7 +5,9 @@ es6id: 15.2.1.1
 description: >
     It is a Syntax Error if ModuleItemList Contains NewTarget
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 new.target;
diff --git a/test/language/module-code/early-strict-mode.js b/test/language/module-code/early-strict-mode.js
index baa5324782116d8088488f4021b85e6536f0b07b..383e32af7e0f41d0e4416cf40382650c7071135b 100644
--- a/test/language/module-code/early-strict-mode.js
+++ b/test/language/module-code/early-strict-mode.js
@@ -5,7 +5,9 @@ description: Module code is always strict mode code.
 es6id: 10.2.1
 esid: sec-strict-mode-code
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 $ERROR('This statement should not be executed.');
diff --git a/test/language/module-code/early-super.js b/test/language/module-code/early-super.js
index b4acf2e3f6d0e4461033ccd8647d7e1e9d851e67..868708b109c21b122119df476609e15a236813a3 100644
--- a/test/language/module-code/early-super.js
+++ b/test/language/module-code/early-super.js
@@ -5,7 +5,9 @@ es6id: 15.2.1.1
 description: >
     It is a Syntax Error if ModuleItemList Contains super.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 super;
diff --git a/test/language/module-code/early-undef-break.js b/test/language/module-code/early-undef-break.js
index 4b99d2fc7943ecf6d4be99d628a55f6d719404ba..7616744d0b949faabf76752f17554310a511b0de 100644
--- a/test/language/module-code/early-undef-break.js
+++ b/test/language/module-code/early-undef-break.js
@@ -6,7 +6,9 @@ description: >
     It is a Syntax Error if ContainsUndefinedBreakTarget of ModuleItemList with
     argument « » is true.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 while (false) {
diff --git a/test/language/module-code/early-undef-continue.js b/test/language/module-code/early-undef-continue.js
index cc9f5070be8079f1174f61c3081c016f8cf1b528..f973357bdf8361b05f8775fc9d4b4bc7a642ac27 100644
--- a/test/language/module-code/early-undef-continue.js
+++ b/test/language/module-code/early-undef-continue.js
@@ -6,7 +6,9 @@ description: >
     It is a Syntax Error if ContainsUndefinedContinueTarget of ModuleItemList
     with arguments « » and « » is true.
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 while (false) {
diff --git a/test/language/module-code/eval-export-dflt-expr-err-eval.js b/test/language/module-code/eval-export-dflt-expr-err-eval.js
index 5e8c31ed5894746930d0182e61facc5e5fbc4c99..1363183194ea20b76b75822203b77ea96f32a071 100644
--- a/test/language/module-code/eval-export-dflt-expr-err-eval.js
+++ b/test/language/module-code/eval-export-dflt-expr-err-eval.js
@@ -24,7 +24,9 @@ info: |
     2. If Type(V) is not Reference, return V.
     3. Let base be GetBase(V).
     4. If IsUnresolvableReference(V) is true, throw a ReferenceError exception.
-negative: Test262Error
+negative:
+  phase: runtime
+  type: Test262Error
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/eval-export-dflt-expr-err-get-value.js b/test/language/module-code/eval-export-dflt-expr-err-get-value.js
index 8d292118e3bad30333a0a773cde1ebba27526e13..0c397452ff80a2b9b8dc08a5b585c31d32dbcd17 100644
--- a/test/language/module-code/eval-export-dflt-expr-err-get-value.js
+++ b/test/language/module-code/eval-export-dflt-expr-err-get-value.js
@@ -24,7 +24,9 @@ info: |
     2. If Type(V) is not Reference, return V.
     3. Let base be GetBase(V).
     4. If IsUnresolvableReference(V) is true, throw a ReferenceError exception.
-negative: ReferenceError
+negative:
+  phase: runtime
+  type: ReferenceError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/eval-rqstd-abrupt.js b/test/language/module-code/eval-rqstd-abrupt.js
index b52242627f849894ee0efb65728e7ba6d1498f45..8ae152231e1fe3452a4f00e0699c4da9d77cd69f 100644
--- a/test/language/module-code/eval-rqstd-abrupt.js
+++ b/test/language/module-code/eval-rqstd-abrupt.js
@@ -10,7 +10,9 @@ info: |
        module.[[RequestedModules]] do,
        a. Let requiredModule be ? HostResolveImportedModule(module, required).
        b. Perform ? requiredModule.ModuleEvaluation().
-negative: TypeError
+negative:
+  phase: early
+  type: TypeError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/eval-self-abrupt.js b/test/language/module-code/eval-self-abrupt.js
index bb23cb268c72f0276d0e0853f4fd3f72838f358f..c80cd28d9b01a8de009faf276fc0b1cf2dd0037f 100644
--- a/test/language/module-code/eval-self-abrupt.js
+++ b/test/language/module-code/eval-self-abrupt.js
@@ -10,7 +10,9 @@ info: |
     18. Resume the context that is now on the top of the execution context
         stack as the running execution context.
     19. Return Completion(result).
-negative: Test262Error
+negative:
+  phase: runtime
+  type: Test262Error
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-iee-err-ambiguous-as.js b/test/language/module-code/instn-iee-err-ambiguous-as.js
index 944e948990525c212a97652d5838102b04f640e2..2cb1f99c5206055850aac430fdac766e03d5a07e 100644
--- a/test/language/module-code/instn-iee-err-ambiguous-as.js
+++ b/test/language/module-code/instn-iee-err-ambiguous-as.js
@@ -30,7 +30,9 @@ info: |
                   not the same Module Record or
                   SameValue(resolution.[[BindingName]],
                   starResolution.[[BindingName]]) is false, return "ambiguous".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-iee-err-ambiguous.js b/test/language/module-code/instn-iee-err-ambiguous.js
index e3f1275e19f4837f1d99a91a9e8ee41fdedf72c1..006b8c1cd081e74627f0bcb9553f04243b37fc5c 100644
--- a/test/language/module-code/instn-iee-err-ambiguous.js
+++ b/test/language/module-code/instn-iee-err-ambiguous.js
@@ -30,7 +30,9 @@ info: |
                   not the same Module Record or
                   SameValue(resolution.[[BindingName]],
                   starResolution.[[BindingName]]) is false, return "ambiguous".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-iee-err-circular-as.js b/test/language/module-code/instn-iee-err-circular-as.js
index da272aa2b805ee5bfc8c91af7a5822f32b205dc6..be5e0967c508a92fda0189ea0df8aab534288673 100644
--- a/test/language/module-code/instn-iee-err-circular-as.js
+++ b/test/language/module-code/instn-iee-err-circular-as.js
@@ -19,7 +19,9 @@ info: |
           SameValue(exportName, r.[[ExportName]]) is true, then
           i. Assert: this is a circular import request.
           ii. Return null.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-iee-err-circular.js b/test/language/module-code/instn-iee-err-circular.js
index 6255577aa6daf244a1214d96d96fb11c979c860b..c45c71a129e563cf7464f392f42df94532c5e4c6 100644
--- a/test/language/module-code/instn-iee-err-circular.js
+++ b/test/language/module-code/instn-iee-err-circular.js
@@ -19,7 +19,9 @@ info: |
           SameValue(exportName, r.[[ExportName]]) is true, then
           i. Assert: this is a circular import request.
           ii. Return null.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-iee-err-dflt-thru-star-as.js b/test/language/module-code/instn-iee-err-dflt-thru-star-as.js
index d7d7d992fcd68e50ae6629cc532d0999f779bf50..32c643d2167ae4647c1a235274e73873b29d56aa 100644
--- a/test/language/module-code/instn-iee-err-dflt-thru-star-as.js
+++ b/test/language/module-code/instn-iee-err-dflt-thru-star-as.js
@@ -18,7 +18,9 @@ info: |
        a. Assert: A default export was not explicitly defined by this module.
        b. Throw a SyntaxError exception.
        c. NOTE A default export cannot be provided by an export *.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-iee-err-dflt-thru-star.js b/test/language/module-code/instn-iee-err-dflt-thru-star.js
index 6d8093158c5379e1129fc877268ba1a788c7bdaf..adda2b02246709219725e4b0f491bc86a00285bc 100644
--- a/test/language/module-code/instn-iee-err-dflt-thru-star.js
+++ b/test/language/module-code/instn-iee-err-dflt-thru-star.js
@@ -18,7 +18,9 @@ info: |
        a. Assert: A default export was not explicitly defined by this module.
        b. Throw a SyntaxError exception.
        c. NOTE A default export cannot be provided by an export *.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-iee-err-not-found-as.js b/test/language/module-code/instn-iee-err-not-found-as.js
index 1befd1bbb97e5d94650c978a9e2b731ed39904e2..45340e09321e4b58890c3c1479189b34b70e5c41 100644
--- a/test/language/module-code/instn-iee-err-not-found-as.js
+++ b/test/language/module-code/instn-iee-err-not-found-as.js
@@ -18,7 +18,9 @@ info: |
     10. For each ExportEntry Record e in module.[[StarExportEntries]], do
         [...]
     11. Return starResolution.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-iee-err-not-found.js b/test/language/module-code/instn-iee-err-not-found.js
index 349385247fa01a2f3d21993a8493995c838edfe8..1c8d138e6cdebaa9efb159a134e32ac3c27778ee 100644
--- a/test/language/module-code/instn-iee-err-not-found.js
+++ b/test/language/module-code/instn-iee-err-not-found.js
@@ -18,7 +18,9 @@ info: |
     10. For each ExportEntry Record e in module.[[StarExportEntries]], do
         [...]
     11. Return starResolution.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-iee-star-cycle.js b/test/language/module-code/instn-iee-star-cycle.js
index 31c843d6e3cefdaa7fc3c3ae16372a054f2647a5..1bd694b60fec1bff90bfd728f3972581ba7dbdcc 100644
--- a/test/language/module-code/instn-iee-star-cycle.js
+++ b/test/language/module-code/instn-iee-star-cycle.js
@@ -18,7 +18,9 @@ info: |
     7. If exportStarSet contains module, return null.
     8. Append module to exportStarSet.
     [...]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-named-err-ambiguous-as.js b/test/language/module-code/instn-named-err-ambiguous-as.js
index cf68ca0c5c54e2e618d2d348eb45fdd11ead01ef..8c6e35ffa1d9405e19bb459305d83adfe6c5e411 100644
--- a/test/language/module-code/instn-named-err-ambiguous-as.js
+++ b/test/language/module-code/instn-named-err-ambiguous-as.js
@@ -35,7 +35,9 @@ info: |
                   not the same Module Record or
                   SameValue(resolution.[[BindingName]],
                   starResolution.[[BindingName]]) is false, return "ambiguous".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-named-err-ambiguous.js b/test/language/module-code/instn-named-err-ambiguous.js
index 8e89f559d5d0d56a99c2521bd155d2db4290e8a3..ea38342cbd38c69c8acfa11b0b765fed1a2b6909 100644
--- a/test/language/module-code/instn-named-err-ambiguous.js
+++ b/test/language/module-code/instn-named-err-ambiguous.js
@@ -35,7 +35,9 @@ info: |
                   not the same Module Record or
                   SameValue(resolution.[[BindingName]],
                   starResolution.[[BindingName]]) is false, return "ambiguous".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-named-err-dflt-thru-star-as.js b/test/language/module-code/instn-named-err-dflt-thru-star-as.js
index 7f73a48ee0d63e3cf9f9f8c13e785ab9aad81805..9750a581998708ce69669c98b1419a36503ce7f5 100644
--- a/test/language/module-code/instn-named-err-dflt-thru-star-as.js
+++ b/test/language/module-code/instn-named-err-dflt-thru-star-as.js
@@ -23,7 +23,9 @@ info: |
        a. Assert: A default export was not explicitly defined by this module.
        b. Throw a SyntaxError exception.
        c. NOTE A default export cannot be provided by an export *.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-named-err-dflt-thru-star-dflt.js b/test/language/module-code/instn-named-err-dflt-thru-star-dflt.js
index e1a8e056c6543b3644af5b783bb9efaa9af8b097..35276861a7ebbc46d63af2e20d67ccca68de6ff1 100644
--- a/test/language/module-code/instn-named-err-dflt-thru-star-dflt.js
+++ b/test/language/module-code/instn-named-err-dflt-thru-star-dflt.js
@@ -23,7 +23,9 @@ info: |
        a. Assert: A default export was not explicitly defined by this module.
        b. Throw a SyntaxError exception.
        c. NOTE A default export cannot be provided by an export *.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-named-err-not-found-as.js b/test/language/module-code/instn-named-err-not-found-as.js
index 4d5c2f5ee2c3270a0c921671346752290f700b1e..29f658e213b711308361a7cca4cbaa046b845c35 100644
--- a/test/language/module-code/instn-named-err-not-found-as.js
+++ b/test/language/module-code/instn-named-err-not-found-as.js
@@ -23,7 +23,9 @@ info: |
     10. For each ExportEntry Record e in module.[[StarExportEntries]], do
         [...]
     11. Return starResolution.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-named-err-not-found-dflt.js b/test/language/module-code/instn-named-err-not-found-dflt.js
index 81528910d9736aecdda9f2f06c3794dec58d622d..d3316429a225efdd1d7cfbbc37ffd0e61700ca59 100644
--- a/test/language/module-code/instn-named-err-not-found-dflt.js
+++ b/test/language/module-code/instn-named-err-not-found-dflt.js
@@ -23,7 +23,9 @@ info: |
     10. For each ExportEntry Record e in module.[[StarExportEntries]], do
         [...]
     11. Return starResolution.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-named-err-not-found.js b/test/language/module-code/instn-named-err-not-found.js
index 135d8428c31a6a370a6c25edfc132667af0de40f..15f5af71524329d365eb4ff50d014fc627a42486 100644
--- a/test/language/module-code/instn-named-err-not-found.js
+++ b/test/language/module-code/instn-named-err-not-found.js
@@ -23,7 +23,9 @@ info: |
     10. For each ExportEntry Record e in module.[[StarExportEntries]], do
         [...]
     11. Return starResolution.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-named-star-cycle.js b/test/language/module-code/instn-named-star-cycle.js
index 38749ea9fac9385671c8797c23e49aa6482876c3..19a7c913a0bf3b7ca80f4d06053d2aeaa40f5175 100644
--- a/test/language/module-code/instn-named-star-cycle.js
+++ b/test/language/module-code/instn-named-star-cycle.js
@@ -27,7 +27,9 @@ info: |
     7. If exportStarSet contains module, return null.
     8. Append module to exportStarSet.
     [...]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-resolve-empty-export.js b/test/language/module-code/instn-resolve-empty-export.js
index c8309579e0bc2c38f799379f0c35184aa903f2b2..b770b99a45e8791640939bcba6efb310ccc491be 100644
--- a/test/language/module-code/instn-resolve-empty-export.js
+++ b/test/language/module-code/instn-resolve-empty-export.js
@@ -29,7 +29,9 @@ info: |
         { }
         { ExportsList }
         { ExportsList , }
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-resolve-empty-import.js b/test/language/module-code/instn-resolve-empty-import.js
index 82bc3a240ff7249f23e5e893a5bab62300718b0f..7bf6151eaeaea82789966248549d62632371ce1d 100644
--- a/test/language/module-code/instn-resolve-empty-import.js
+++ b/test/language/module-code/instn-resolve-empty-import.js
@@ -35,7 +35,9 @@ info: |
         { }
         { ImportsList }
         { ImportsList , }
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-resolve-err-reference.js b/test/language/module-code/instn-resolve-err-reference.js
index 10649df49cd80cfcd190b9e1c215017e0ac74d88..2e7b1e847995d16829cd26ff1e6fbd50ada75be2 100644
--- a/test/language/module-code/instn-resolve-err-reference.js
+++ b/test/language/module-code/instn-resolve-err-reference.js
@@ -10,7 +10,9 @@ info: |
        [...]
        b. Let requiredModule be ? HostResolveImportedModule(module, required).
     [...]
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-resolve-err-syntax.js b/test/language/module-code/instn-resolve-err-syntax.js
index 9c389ffcfaa2dcbbd2eaefc01f6e9c09aa0ef8c6..fcedb3942d632f52f2cbbb869d657848bdb65ee7 100644
--- a/test/language/module-code/instn-resolve-err-syntax.js
+++ b/test/language/module-code/instn-resolve-err-syntax.js
@@ -10,7 +10,9 @@ info: |
        [...]
        b. Let requiredModule be ? HostResolveImportedModule(module, required).
     [...]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-resolve-order-depth.js b/test/language/module-code/instn-resolve-order-depth.js
index 855b06432dc8a01150259e115e040999342bae71..01e03bfd54f43d05c829cfd4c8c3394c3b03db0e 100644
--- a/test/language/module-code/instn-resolve-order-depth.js
+++ b/test/language/module-code/instn-resolve-order-depth.js
@@ -3,7 +3,9 @@
 /*---
 description: Module dependencies are resolved following a depth-first strategy
 esid: sec-moduledeclarationinstantiation
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-resolve-order-src.js b/test/language/module-code/instn-resolve-order-src.js
index 0b1482b47709ba17ebc3e6fb50a319b030cf8d41..a30556b404a87157498e768ef9e8eb5ee234b0bf 100644
--- a/test/language/module-code/instn-resolve-order-src.js
+++ b/test/language/module-code/instn-resolve-order-src.js
@@ -3,7 +3,9 @@
 /*---
 description: Modules dependencies are resolved in source text order
 esid: sec-moduledeclarationinstantiation
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-star-err-not-found.js b/test/language/module-code/instn-star-err-not-found.js
index 712172ec0bcc8fad015920cc222c6c2ae9f4f765..10313c971ad1cef8b69e6372c97dd5429699a299 100644
--- a/test/language/module-code/instn-star-err-not-found.js
+++ b/test/language/module-code/instn-star-err-not-found.js
@@ -22,7 +22,9 @@ info: |
        c. For each name that is an element of exportedNames,
           i. Let resolution be ? module.ResolveExport(name, « », « »).
           ii. If resolution is null, throw a SyntaxError exception.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/instn-star-star-cycle.js b/test/language/module-code/instn-star-star-cycle.js
index 69547618fe0bf324e24bc1b73505d1debd35fcd9..d40c973ac70fabba78fc3c38bc11a0368079aa55 100644
--- a/test/language/module-code/instn-star-star-cycle.js
+++ b/test/language/module-code/instn-star-star-cycle.js
@@ -22,7 +22,9 @@ info: |
     7. If exportStarSet contains module, return null.
     8. Append module to exportStarSet.
     [...]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-arrow-function.js b/test/language/module-code/parse-err-decl-pos-export-arrow-function.js
index ddc41e401fb0b522b7b827d202c8074dfdd5cf47..c416f182af1891f74381caa77170cf52c1628d27 100644
--- a/test/language/module-code/parse-err-decl-pos-export-arrow-function.js
+++ b/test/language/module-code/parse-err-decl-pos-export-arrow-function.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-block-stmt-list.js b/test/language/module-code/parse-err-decl-pos-export-block-stmt-list.js
index 6af476be1b2838322301b22603695f2ac8e8c20a..644ac851a701e9465f0ad3c0a8ff80742ced7092 100644
--- a/test/language/module-code/parse-err-decl-pos-export-block-stmt-list.js
+++ b/test/language/module-code/parse-err-decl-pos-export-block-stmt-list.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-block-stmt.js b/test/language/module-code/parse-err-decl-pos-export-block-stmt.js
index b263b7bcdc16913615d276b62f0b6da12a5f48f1..e9210b4997387a88f9c700da7616bf5845ebb536 100644
--- a/test/language/module-code/parse-err-decl-pos-export-block-stmt.js
+++ b/test/language/module-code/parse-err-decl-pos-export-block-stmt.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-class-decl-meth-static.js b/test/language/module-code/parse-err-decl-pos-export-class-decl-meth-static.js
index b4d16fc1373b62b8c6d3a7d1a5653d55b6950d69..1b7981b903406179e8cb4d00acd42a3cc6627c70 100644
--- a/test/language/module-code/parse-err-decl-pos-export-class-decl-meth-static.js
+++ b/test/language/module-code/parse-err-decl-pos-export-class-decl-meth-static.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-class-decl-meth.js b/test/language/module-code/parse-err-decl-pos-export-class-decl-meth.js
index 40f20daa3fa591defaa4fe8d5975e4e698af8032..44850b010e0818af83fc1cac6f520397cd05cb06 100644
--- a/test/language/module-code/parse-err-decl-pos-export-class-decl-meth.js
+++ b/test/language/module-code/parse-err-decl-pos-export-class-decl-meth.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-class-decl-method-gen-static.js b/test/language/module-code/parse-err-decl-pos-export-class-decl-method-gen-static.js
index f72b71335e414c07424e93f87b72f7fd6a5f6a90..fd2886f51c04bc49388d674eaef9282d8327fdef 100644
--- a/test/language/module-code/parse-err-decl-pos-export-class-decl-method-gen-static.js
+++ b/test/language/module-code/parse-err-decl-pos-export-class-decl-method-gen-static.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-class-decl-method-gen.js b/test/language/module-code/parse-err-decl-pos-export-class-decl-method-gen.js
index 31e9e6a1812e0318b96cdbeb08d936877a98698a..a6cc6be07b1955b89a892b70ba39a1bd0da5f152 100644
--- a/test/language/module-code/parse-err-decl-pos-export-class-decl-method-gen.js
+++ b/test/language/module-code/parse-err-decl-pos-export-class-decl-method-gen.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-gen-static.js b/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-gen-static.js
index d588a06dc19fcb8dcc3baeef225467ad3a187707..adf2050cc60ab98f6b4be924f6cb38bf1bd1132b 100644
--- a/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-gen-static.js
+++ b/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-gen-static.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-gen.js b/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-gen.js
index d70d683164f4dd6d20b649583ee70a0e91dae473..2b419916872eb0324ffee40624c98c59f3a0a731 100644
--- a/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-gen.js
+++ b/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-gen.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-static.js b/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-static.js
index cbf0c6b6c637abca6e2af395190a17cb7de50753..7da2bcfa35de52c5b57d54e97378aaedcb6eb5ae 100644
--- a/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-static.js
+++ b/test/language/module-code/parse-err-decl-pos-export-class-expr-meth-static.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-class-expr-meth.js b/test/language/module-code/parse-err-decl-pos-export-class-expr-meth.js
index 84121167b8d52d18e329ef4f0093f33d81380beb..5d569f206b3fca8285dd1846d55812d8c5663fc6 100644
--- a/test/language/module-code/parse-err-decl-pos-export-class-expr-meth.js
+++ b/test/language/module-code/parse-err-decl-pos-export-class-expr-meth.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-do-while.js b/test/language/module-code/parse-err-decl-pos-export-do-while.js
index f480d8ff6b8c982fe7f4820b11b5818a72335640..2ed5064de5d8f4ceb5c2a0d98fd406ee9bf92f30 100644
--- a/test/language/module-code/parse-err-decl-pos-export-do-while.js
+++ b/test/language/module-code/parse-err-decl-pos-export-do-while.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-const.js b/test/language/module-code/parse-err-decl-pos-export-for-const.js
index 7399befe3c820b390ec30d70e60a7cf79ee6c994..90019ce3d8372a96642cff1497ed16c38a4fffbe 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-const.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-const.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-in-const.js b/test/language/module-code/parse-err-decl-pos-export-for-in-const.js
index e75fd81bd998dca07837bdd805b616d88812d198..44adc1b6f880670850fe9a97ec47fd93f48ac820 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-in-const.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-in-const.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-in-let.js b/test/language/module-code/parse-err-decl-pos-export-for-in-let.js
index b89a175eb85b6b559a9d656e331ff0068eacb4fe..eb6866ffd807a5468486dc07ec98a868a162e98b 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-in-let.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-in-let.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-in-lhs.js b/test/language/module-code/parse-err-decl-pos-export-for-in-lhs.js
index 65e73a0c23918104049052bce17a490cc472ad10..b4732dae564e32d7589706ea326ea30159900900 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-in-lhs.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-in-lhs.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-in-var.js b/test/language/module-code/parse-err-decl-pos-export-for-in-var.js
index bbf1b26c2f3bdfc44c2150372f19e5e12743c1b8..e9f4520ded531aabf36988069600125820a61dbf 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-in-var.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-in-var.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-let.js b/test/language/module-code/parse-err-decl-pos-export-for-let.js
index 5873f7bcd3abe61c00fb41fcd9e800b5508b7fc1..735d09846b07f282549e64b0a39efbee5adf8005 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-let.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-let.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-lhs.js b/test/language/module-code/parse-err-decl-pos-export-for-lhs.js
index 62f7ce6ed7cc30f327ac1ed50d6472bfde73d2c1..392dc2ad7bac0194747759eace72c8dc3100d3a2 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-lhs.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-lhs.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-of-const.js b/test/language/module-code/parse-err-decl-pos-export-for-of-const.js
index 70ea0b75e1f5ddb86984bfdccbb1ba531364f67f..1163a69b09c9fc280950436e32a719f0cdeca34d 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-of-const.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-of-const.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-of-let.js b/test/language/module-code/parse-err-decl-pos-export-for-of-let.js
index 109bd992ba191bbcd7849b0127e7b6fb42460654..a20bf165f3b260b03826bda9ee002ef1f640b3d2 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-of-let.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-of-let.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-of-lhs.js b/test/language/module-code/parse-err-decl-pos-export-for-of-lhs.js
index 83f9af25a5d48be2d7366adb3803eb0c9c4501b8..7fb11c41bee61cd2d3b57558b7071f852f56a66b 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-of-lhs.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-of-lhs.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-of-var.js b/test/language/module-code/parse-err-decl-pos-export-for-of-var.js
index 96391d83895f6ade46d0b0293dd26dc2c0dff07d..bf435ffc9fb2e7b8a18f2c7e5a94c23325e7dfc9 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-of-var.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-of-var.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-for-var.js b/test/language/module-code/parse-err-decl-pos-export-for-var.js
index 040126bcfd556c79a3385bd45c530f460b25c869..5ebea8093a5d1c7e039a383808c64bb16d9410dd 100644
--- a/test/language/module-code/parse-err-decl-pos-export-for-var.js
+++ b/test/language/module-code/parse-err-decl-pos-export-for-var.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-function-decl.js b/test/language/module-code/parse-err-decl-pos-export-function-decl.js
index fe8995b749111716e12a90040c34f50dd97ad8eb..38dae22389c002e17c8904c975269c21900be84e 100644
--- a/test/language/module-code/parse-err-decl-pos-export-function-decl.js
+++ b/test/language/module-code/parse-err-decl-pos-export-function-decl.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-function-expr.js b/test/language/module-code/parse-err-decl-pos-export-function-expr.js
index 4024793eea4dbf42d0407f6b5dc5562444d89b95..cff92106eb1c4e2abcbcf624b48a8ae95d819b76 100644
--- a/test/language/module-code/parse-err-decl-pos-export-function-expr.js
+++ b/test/language/module-code/parse-err-decl-pos-export-function-expr.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-generator-decl.js b/test/language/module-code/parse-err-decl-pos-export-generator-decl.js
index 0fdd413db236689535de9add4c4498913fa36ed6..a2761fde668c892046310cdcf37be1af2861761b 100644
--- a/test/language/module-code/parse-err-decl-pos-export-generator-decl.js
+++ b/test/language/module-code/parse-err-decl-pos-export-generator-decl.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-generator-expr.js b/test/language/module-code/parse-err-decl-pos-export-generator-expr.js
index a9d1eb3c7a306832ba6fcd51bb76944d6fe25ae6..2a7e53e042e3c5293f4627ad93ccdd5dc02fdbbc 100644
--- a/test/language/module-code/parse-err-decl-pos-export-generator-expr.js
+++ b/test/language/module-code/parse-err-decl-pos-export-generator-expr.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-if-else.js b/test/language/module-code/parse-err-decl-pos-export-if-else.js
index 8d401b1bc7cf131416323e15fe4351e8f50fdb42..516d76d76786a840fa2165e90c1436e841e3dc3a 100644
--- a/test/language/module-code/parse-err-decl-pos-export-if-else.js
+++ b/test/language/module-code/parse-err-decl-pos-export-if-else.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-if-if.js b/test/language/module-code/parse-err-decl-pos-export-if-if.js
index 44112ddcbb554599f933322f6cb957e63b2bfbe8..012241a20169fb2ba9f5abe94ef8c38cafd3ae0a 100644
--- a/test/language/module-code/parse-err-decl-pos-export-if-if.js
+++ b/test/language/module-code/parse-err-decl-pos-export-if-if.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-labeled.js b/test/language/module-code/parse-err-decl-pos-export-labeled.js
index d9bcae028605ac03ea1226937f5baa4e205b7bcb..fff280da8a8ff35712d122dcc95f129665e61d3a 100644
--- a/test/language/module-code/parse-err-decl-pos-export-labeled.js
+++ b/test/language/module-code/parse-err-decl-pos-export-labeled.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-object-gen-method.js b/test/language/module-code/parse-err-decl-pos-export-object-gen-method.js
index 1718d525fd27b2e75955c97d36e299508954d492..1b56047172b5a343d91e310ac286183ae6b885ec 100644
--- a/test/language/module-code/parse-err-decl-pos-export-object-gen-method.js
+++ b/test/language/module-code/parse-err-decl-pos-export-object-gen-method.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-object-getter.js b/test/language/module-code/parse-err-decl-pos-export-object-getter.js
index 3e75cc5b7eb8d4f9ccfac85ea6d4aff1dc6a4eeb..86f3fb2081df8d76d1dfb68e72bf195b8dfa98d4 100644
--- a/test/language/module-code/parse-err-decl-pos-export-object-getter.js
+++ b/test/language/module-code/parse-err-decl-pos-export-object-getter.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-object-method.js b/test/language/module-code/parse-err-decl-pos-export-object-method.js
index a6d1426b3a990a683e4792e5971b803d64c82574..c035853d75000e39cd1bff777ab0fd0667d4861f 100644
--- a/test/language/module-code/parse-err-decl-pos-export-object-method.js
+++ b/test/language/module-code/parse-err-decl-pos-export-object-method.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-object-setter.js b/test/language/module-code/parse-err-decl-pos-export-object-setter.js
index 2c24a418fad3542339e83ea48d8fee31d5de6a04..b156b53a8a10842050f04c69250d3874f3f3272f 100644
--- a/test/language/module-code/parse-err-decl-pos-export-object-setter.js
+++ b/test/language/module-code/parse-err-decl-pos-export-object-setter.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-switch-case-dflt.js b/test/language/module-code/parse-err-decl-pos-export-switch-case-dflt.js
index 2cfd81fda07a286bb05f0cc1d2b67edc0c5beef2..ba4780c9926105dcba89bc51848316802e7ad4a2 100644
--- a/test/language/module-code/parse-err-decl-pos-export-switch-case-dflt.js
+++ b/test/language/module-code/parse-err-decl-pos-export-switch-case-dflt.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-switch-case.js b/test/language/module-code/parse-err-decl-pos-export-switch-case.js
index 9df8088f1b8d194ef294e03389d674ac10a4ed84..4ffefa1f1804c3db99b31db9f5a74abcaa344af3 100644
--- a/test/language/module-code/parse-err-decl-pos-export-switch-case.js
+++ b/test/language/module-code/parse-err-decl-pos-export-switch-case.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-switch-dftl.js b/test/language/module-code/parse-err-decl-pos-export-switch-dftl.js
index 78e98b03559f3724e9461a8764c868a772286e89..193acb42e284e0fdbc9b2db7a3a89def19fa4285 100644
--- a/test/language/module-code/parse-err-decl-pos-export-switch-dftl.js
+++ b/test/language/module-code/parse-err-decl-pos-export-switch-dftl.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-try-catch-finally.js b/test/language/module-code/parse-err-decl-pos-export-try-catch-finally.js
index 929f12b5cbb2bc9fdfc188585e07f19668eda7e1..be7fa7742818d8ed5c2ac930ae4dfa8a41b2526f 100644
--- a/test/language/module-code/parse-err-decl-pos-export-try-catch-finally.js
+++ b/test/language/module-code/parse-err-decl-pos-export-try-catch-finally.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-try-catch.js b/test/language/module-code/parse-err-decl-pos-export-try-catch.js
index 2376cfe34901d17e2431885af0f40af8e0e13e27..cd7badb6ef20c1b394a056fccf76b9213ede9e33 100644
--- a/test/language/module-code/parse-err-decl-pos-export-try-catch.js
+++ b/test/language/module-code/parse-err-decl-pos-export-try-catch.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-try-finally.js b/test/language/module-code/parse-err-decl-pos-export-try-finally.js
index 529f15f58fb356bbe1488c57f79e6aa79f532d33..1f73825de2fb48ce8eeb78d09afe10150d6fbe83 100644
--- a/test/language/module-code/parse-err-decl-pos-export-try-finally.js
+++ b/test/language/module-code/parse-err-decl-pos-export-try-finally.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-try-try.js b/test/language/module-code/parse-err-decl-pos-export-try-try.js
index 202e0794692f114c58d1467d5596e03ab219b4f3..c641f4143315a2fe46f24442c4a380ad44d6b766 100644
--- a/test/language/module-code/parse-err-decl-pos-export-try-try.js
+++ b/test/language/module-code/parse-err-decl-pos-export-try-try.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-export-while.js b/test/language/module-code/parse-err-decl-pos-export-while.js
index c828f9b284c1a450b6be2f7727e36b72a57ed55b..b2115e5eedfb1c0c84627fb03d008fef939b4453 100644
--- a/test/language/module-code/parse-err-decl-pos-export-while.js
+++ b/test/language/module-code/parse-err-decl-pos-export-while.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `export` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-arrow-function.js b/test/language/module-code/parse-err-decl-pos-import-arrow-function.js
index 9bd081d19bb577b4752298a7a2437ac36e7e4b5b..958525b23477e888487e8f9864637645068ef51f 100644
--- a/test/language/module-code/parse-err-decl-pos-import-arrow-function.js
+++ b/test/language/module-code/parse-err-decl-pos-import-arrow-function.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-block-stmt-list.js b/test/language/module-code/parse-err-decl-pos-import-block-stmt-list.js
index 72452f50e2f2c49953fbd64e7497a6de3c4862e3..3b94c0f2a094fe01fe4932fe6f76bee10b11d48c 100644
--- a/test/language/module-code/parse-err-decl-pos-import-block-stmt-list.js
+++ b/test/language/module-code/parse-err-decl-pos-import-block-stmt-list.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-block-stmt.js b/test/language/module-code/parse-err-decl-pos-import-block-stmt.js
index d0d7fb561383f319f89636fb7366d26ee21099db..91688ce9dffc90810a6fdeee5f9c71942dd5e400 100644
--- a/test/language/module-code/parse-err-decl-pos-import-block-stmt.js
+++ b/test/language/module-code/parse-err-decl-pos-import-block-stmt.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-class-decl-meth-static.js b/test/language/module-code/parse-err-decl-pos-import-class-decl-meth-static.js
index 32baf075b24cc493a6c7ac0af167edf08e612a92..f968a76c45dee0e97f25414b213ed410ce2ea286 100644
--- a/test/language/module-code/parse-err-decl-pos-import-class-decl-meth-static.js
+++ b/test/language/module-code/parse-err-decl-pos-import-class-decl-meth-static.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-class-decl-meth.js b/test/language/module-code/parse-err-decl-pos-import-class-decl-meth.js
index 6feebfd3879d4e610c6a412e3df98dd3a03a9ac6..3852acdbd949fbb3532d0032611d88fce4275262 100644
--- a/test/language/module-code/parse-err-decl-pos-import-class-decl-meth.js
+++ b/test/language/module-code/parse-err-decl-pos-import-class-decl-meth.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-class-decl-method-gen-static.js b/test/language/module-code/parse-err-decl-pos-import-class-decl-method-gen-static.js
index 9989c819cf0552dea729035205c0071068ad9f0c..3f62c62f3d8cda16773f4f9957ff0311865c84fe 100644
--- a/test/language/module-code/parse-err-decl-pos-import-class-decl-method-gen-static.js
+++ b/test/language/module-code/parse-err-decl-pos-import-class-decl-method-gen-static.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-class-decl-method-gen.js b/test/language/module-code/parse-err-decl-pos-import-class-decl-method-gen.js
index 3b365375114a23a8ed2074e85230711059f4f791..dd8d56a4cc8da7fadf32e0cc27e9b5f11a17ea17 100644
--- a/test/language/module-code/parse-err-decl-pos-import-class-decl-method-gen.js
+++ b/test/language/module-code/parse-err-decl-pos-import-class-decl-method-gen.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-gen-static.js b/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-gen-static.js
index b795945208f395f9b01d1461e296af8328a44c1c..e25f32f30d1af32221df804d72141a28257198e2 100644
--- a/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-gen-static.js
+++ b/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-gen-static.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-gen.js b/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-gen.js
index bc6a6954b38043a8935eac32696b7765e9f1215d..8a145d7d0cd3f208f075e23bd0617f65991e0565 100644
--- a/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-gen.js
+++ b/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-gen.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-static.js b/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-static.js
index f43d5db5ace175cfeeb490c53405869b4b960b6e..3ac43fd1b39108579ce91bddb886fd9a9a808462 100644
--- a/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-static.js
+++ b/test/language/module-code/parse-err-decl-pos-import-class-expr-meth-static.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-class-expr-meth.js b/test/language/module-code/parse-err-decl-pos-import-class-expr-meth.js
index 845ab4ee740392c566a40eecf371ab6ea62646da..93a02d6470fc7cd521cda0618932e698b5b940cb 100644
--- a/test/language/module-code/parse-err-decl-pos-import-class-expr-meth.js
+++ b/test/language/module-code/parse-err-decl-pos-import-class-expr-meth.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-do-while.js b/test/language/module-code/parse-err-decl-pos-import-do-while.js
index 06200b07af9fa20e8bb037366bff76b47d5852f3..968b5794470984b5da573022ecfd585342ef47cd 100644
--- a/test/language/module-code/parse-err-decl-pos-import-do-while.js
+++ b/test/language/module-code/parse-err-decl-pos-import-do-while.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-const.js b/test/language/module-code/parse-err-decl-pos-import-for-const.js
index 4911d418416e7a407c788d24c695a209d2d66182..7df32518b8806dad08aa8fd2b405bc119e3f8909 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-const.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-const.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-in-const.js b/test/language/module-code/parse-err-decl-pos-import-for-in-const.js
index ad42e3ac9f6c69d113038fc1ca639ffe381c2e59..30abe3217d5c7d9442535e73c39a7f28fb319c05 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-in-const.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-in-const.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-in-let.js b/test/language/module-code/parse-err-decl-pos-import-for-in-let.js
index 01080d302274eb99de9fba03a0399013e74cbaf4..7961f5a860d444806141f45b79c6a58af869374a 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-in-let.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-in-let.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-in-lhs.js b/test/language/module-code/parse-err-decl-pos-import-for-in-lhs.js
index 24d6159c17c2be9a8121ef67ab935623900dddee..52b433c5e361f6bf5df1103b43e62c8af71648b3 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-in-lhs.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-in-lhs.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-in-var.js b/test/language/module-code/parse-err-decl-pos-import-for-in-var.js
index ea0f9ebe49358e31f47f14b10c9647af75402065..79af4f41a422a8dc0851d3f5f71f7227ad36bd37 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-in-var.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-in-var.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-let.js b/test/language/module-code/parse-err-decl-pos-import-for-let.js
index 1fee0012e7983927e90c31ea5542b0fc54ea98a4..369b1f20126983e38aff9e172ec3f4c468c7aac0 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-let.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-let.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-lhs.js b/test/language/module-code/parse-err-decl-pos-import-for-lhs.js
index 9d7407396007bd2adc20ffe0ad75e2803b74b5ca..f368c493b52409a6bd9698a07bc4df57432e7c55 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-lhs.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-lhs.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-of-const.js b/test/language/module-code/parse-err-decl-pos-import-for-of-const.js
index 7fabfe2ff0ace42bb08777dabab776c28fae3b04..5e93d21ab94fd5bc34c2ee86cc84148886ba5485 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-of-const.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-of-const.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-of-let.js b/test/language/module-code/parse-err-decl-pos-import-for-of-let.js
index b42b677e0dc9f7c0f8b9a966178e9c951ab691e7..0a7d6421003f50985d01c7f7c01db57a023fe110 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-of-let.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-of-let.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-of-lhs.js b/test/language/module-code/parse-err-decl-pos-import-for-of-lhs.js
index 6bdad656f1dc73d36ddc11d2eb5b745cd60c5805..dc06d5279ceb1f5c336e880dac39090f6fdd8c17 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-of-lhs.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-of-lhs.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-of-var.js b/test/language/module-code/parse-err-decl-pos-import-for-of-var.js
index 00d31771cc21e9a28d3baafa6d61e1289d63da12..dd95d3d970195915b901b9bb66e1eb2d77e5fb81 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-of-var.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-of-var.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-for-var.js b/test/language/module-code/parse-err-decl-pos-import-for-var.js
index 51bbc3954d0acc1d7375965cc6bb47255474cda4..74ba81ae6e7807c4f767acfaebbdc5b2141ef25e 100644
--- a/test/language/module-code/parse-err-decl-pos-import-for-var.js
+++ b/test/language/module-code/parse-err-decl-pos-import-for-var.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-function-decl.js b/test/language/module-code/parse-err-decl-pos-import-function-decl.js
index ae20168b6bb38f3468a43fe31df431604e941644..b03ffec8701b6a511f05f6be0571de3caa839965 100644
--- a/test/language/module-code/parse-err-decl-pos-import-function-decl.js
+++ b/test/language/module-code/parse-err-decl-pos-import-function-decl.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-function-expr.js b/test/language/module-code/parse-err-decl-pos-import-function-expr.js
index 371c726c886d869a2ad77252da77f1d917babe16..d52ac19733c5bf98d2d642596fb170a1c55d1562 100644
--- a/test/language/module-code/parse-err-decl-pos-import-function-expr.js
+++ b/test/language/module-code/parse-err-decl-pos-import-function-expr.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-generator-decl.js b/test/language/module-code/parse-err-decl-pos-import-generator-decl.js
index b41a01ecb6d71c7612128e06e095b1a0e9679035..a29796607af30b6e6c9da7391f3f899e74d621fb 100644
--- a/test/language/module-code/parse-err-decl-pos-import-generator-decl.js
+++ b/test/language/module-code/parse-err-decl-pos-import-generator-decl.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-generator-expr.js b/test/language/module-code/parse-err-decl-pos-import-generator-expr.js
index 52044a39bd4c6906446abfbda5497b60247913cd..ca3e9a3b73a31e59848267d1e54560b16281b2c3 100644
--- a/test/language/module-code/parse-err-decl-pos-import-generator-expr.js
+++ b/test/language/module-code/parse-err-decl-pos-import-generator-expr.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-if-else.js b/test/language/module-code/parse-err-decl-pos-import-if-else.js
index ce5b02398dc7f507cb6aa88268fb583585247e99..6023e015d11e190448c0ab08722c68dcd6dec0d6 100644
--- a/test/language/module-code/parse-err-decl-pos-import-if-else.js
+++ b/test/language/module-code/parse-err-decl-pos-import-if-else.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-if-if.js b/test/language/module-code/parse-err-decl-pos-import-if-if.js
index 7975a9b2533cbd05c01d1ca28126f9b988c54535..ca57171d7693d0dac3b7230a7b267b1c52b6a524 100644
--- a/test/language/module-code/parse-err-decl-pos-import-if-if.js
+++ b/test/language/module-code/parse-err-decl-pos-import-if-if.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-labeled.js b/test/language/module-code/parse-err-decl-pos-import-labeled.js
index 8ed78ae2d7622e139c2887644523eaf4369d1493..a4d963396b3b1178957dc5547a196f642cf1b269 100644
--- a/test/language/module-code/parse-err-decl-pos-import-labeled.js
+++ b/test/language/module-code/parse-err-decl-pos-import-labeled.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-object-gen-method.js b/test/language/module-code/parse-err-decl-pos-import-object-gen-method.js
index fe6e583401c910c6c138267039fcdfd596daf64b..a316e5a36d4d83972e81348d8ca3495761aa7486 100644
--- a/test/language/module-code/parse-err-decl-pos-import-object-gen-method.js
+++ b/test/language/module-code/parse-err-decl-pos-import-object-gen-method.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-object-getter.js b/test/language/module-code/parse-err-decl-pos-import-object-getter.js
index 74aca8c3930fa34aa70d062a55d049abf5f76ed1..6cd9488662738bd6fedbbbdaeb378146dbff93cb 100644
--- a/test/language/module-code/parse-err-decl-pos-import-object-getter.js
+++ b/test/language/module-code/parse-err-decl-pos-import-object-getter.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-object-method.js b/test/language/module-code/parse-err-decl-pos-import-object-method.js
index fdf7cccfe8794f292f8d176131452b9c52b400a9..7632d1fab4ded748ba6ac700604cd1cd36d18700 100644
--- a/test/language/module-code/parse-err-decl-pos-import-object-method.js
+++ b/test/language/module-code/parse-err-decl-pos-import-object-method.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-object-setter.js b/test/language/module-code/parse-err-decl-pos-import-object-setter.js
index a3dd23a29c3477464cfd8de8d7704ba796b0ba00..bc316b3d9a94f99415447c244349f5fc06ceb457 100644
--- a/test/language/module-code/parse-err-decl-pos-import-object-setter.js
+++ b/test/language/module-code/parse-err-decl-pos-import-object-setter.js
@@ -3,7 +3,9 @@
 /*---
 description: Expression cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-switch-case-dflt.js b/test/language/module-code/parse-err-decl-pos-import-switch-case-dflt.js
index 1a56b8e84fbe1b40b85e98929b5d0325c7295b12..6081a05a9aa27a8b8c77878dfa75db2c24b018bf 100644
--- a/test/language/module-code/parse-err-decl-pos-import-switch-case-dflt.js
+++ b/test/language/module-code/parse-err-decl-pos-import-switch-case-dflt.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-switch-case.js b/test/language/module-code/parse-err-decl-pos-import-switch-case.js
index e8efe29ef77e41916e866e84e220b9451eafa526..c8f22347dd338dc2d93e49a49c12e093d35c5bb5 100644
--- a/test/language/module-code/parse-err-decl-pos-import-switch-case.js
+++ b/test/language/module-code/parse-err-decl-pos-import-switch-case.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-switch-dftl.js b/test/language/module-code/parse-err-decl-pos-import-switch-dftl.js
index 8a855a97ea3204c110318b3b0f6b35422e3fb436..ad9cd2500f920eed2e0ce0034e886f894032abb5 100644
--- a/test/language/module-code/parse-err-decl-pos-import-switch-dftl.js
+++ b/test/language/module-code/parse-err-decl-pos-import-switch-dftl.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-try-catch-finally.js b/test/language/module-code/parse-err-decl-pos-import-try-catch-finally.js
index f0212bd37b672faabc8e63f816b1e28f7ee333b7..f1bde8b211b9d645d784f1fdb352f55b05395abd 100644
--- a/test/language/module-code/parse-err-decl-pos-import-try-catch-finally.js
+++ b/test/language/module-code/parse-err-decl-pos-import-try-catch-finally.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-try-catch.js b/test/language/module-code/parse-err-decl-pos-import-try-catch.js
index e0d4f944f84d4a748d0699cb5896d9635da9d562..289b3a750c04976d297b687a2a3075b4bf5e483b 100644
--- a/test/language/module-code/parse-err-decl-pos-import-try-catch.js
+++ b/test/language/module-code/parse-err-decl-pos-import-try-catch.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-try-finally.js b/test/language/module-code/parse-err-decl-pos-import-try-finally.js
index 76db6fd4c5ef3522d570ecc7e30bb44ad5b13a50..e99b64719b8d2d97baf56312e745ed4e84031057 100644
--- a/test/language/module-code/parse-err-decl-pos-import-try-finally.js
+++ b/test/language/module-code/parse-err-decl-pos-import-try-finally.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-try-try.js b/test/language/module-code/parse-err-decl-pos-import-try-try.js
index 39ed0e805352e8d8bc2cf2dac8e7f796a76b16e1..8e1d62b6c1262e21328d6a815dc88dab445afd56 100644
--- a/test/language/module-code/parse-err-decl-pos-import-try-try.js
+++ b/test/language/module-code/parse-err-decl-pos-import-try-try.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-decl-pos-import-while.js b/test/language/module-code/parse-err-decl-pos-import-while.js
index add8e60a110ba122f7d01c5e173904870576e3d2..c7840f3c46ad382baf789d972819e9659c9104c3 100644
--- a/test/language/module-code/parse-err-decl-pos-import-while.js
+++ b/test/language/module-code/parse-err-decl-pos-import-while.js
@@ -3,7 +3,9 @@
 /*---
 description: Statement cannot contain an `import` declaration
 esid: sec-modules
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-export-dflt-const.js b/test/language/module-code/parse-err-export-dflt-const.js
index ca886476e11217c345b1109354b0132325b719b0..ef7247b41555ae4305719bf0785d9367d873a473 100644
--- a/test/language/module-code/parse-err-export-dflt-const.js
+++ b/test/language/module-code/parse-err-export-dflt-const.js
@@ -5,7 +5,9 @@ esid: sec-exports
 es6id: 15.2.3
 description: The default export may not be a LexicalDeclaration (const)
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 export default const x = null;
diff --git a/test/language/module-code/parse-err-export-dflt-expr.js b/test/language/module-code/parse-err-export-dflt-expr.js
index 61c05e49131599f948e9efb66397c6f8f8370991..c9f03e464fc6ea99bc3bbe3d847e5d2decdb9521 100644
--- a/test/language/module-code/parse-err-export-dflt-expr.js
+++ b/test/language/module-code/parse-err-export-dflt-expr.js
@@ -14,7 +14,9 @@ info: |
       export default HoistableDeclaration[Default]
       export default ClassDeclaration[Default]
       export default [lookahead ∉ { function, class }] AssignmentExpression[In];
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-export-dflt-let.js b/test/language/module-code/parse-err-export-dflt-let.js
index cb3ae054b0c865938d782c796911d84f25fd9629..e355941efae2532023fef0a4a14b4b49e25a07a8 100644
--- a/test/language/module-code/parse-err-export-dflt-let.js
+++ b/test/language/module-code/parse-err-export-dflt-let.js
@@ -5,7 +5,9 @@ esid: sec-exports
 es6id: 15.2.3
 description: The default export may not be a LexicalDeclaration (let)
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 export default let x;
diff --git a/test/language/module-code/parse-err-export-dflt-var.js b/test/language/module-code/parse-err-export-dflt-var.js
index 5cd5102168a9475a2d4eccf14c4c30b63a62724d..4165cdf1f30b8a860b463246cd48bfa7e9dbce84 100644
--- a/test/language/module-code/parse-err-export-dflt-var.js
+++ b/test/language/module-code/parse-err-export-dflt-var.js
@@ -5,7 +5,9 @@ esid: sec-exports
 es6id: 15.2.3
 description: The default export may not be a VariableStatement
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 export default var x;
diff --git a/test/language/module-code/parse-err-hoist-lex-fun.js b/test/language/module-code/parse-err-hoist-lex-fun.js
index 98c95ae674757951f6afe04c51c69f9f7e25ec07..3ecf06c587b7473026d127cc0519fb3fbcff5140 100644
--- a/test/language/module-code/parse-err-hoist-lex-fun.js
+++ b/test/language/module-code/parse-err-hoist-lex-fun.js
@@ -13,7 +13,9 @@ info: |
 
     - It is a Syntax Error if any element of the LexicallyDeclaredNames of
       ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-hoist-lex-gen.js b/test/language/module-code/parse-err-hoist-lex-gen.js
index 6f32a70240223331e6b43a87f987a9e6b718b454..bb1f5d0fbead16ee352d35d7d61402530e4cb92d 100644
--- a/test/language/module-code/parse-err-hoist-lex-gen.js
+++ b/test/language/module-code/parse-err-hoist-lex-gen.js
@@ -14,7 +14,9 @@ info: |
 
     - It is a Syntax Error if any element of the LexicallyDeclaredNames of
       ModuleItemList also occurs in the VarDeclaredNames of ModuleItemList.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-invoke-anon-fun-decl.js b/test/language/module-code/parse-err-invoke-anon-fun-decl.js
index e1610369075719b0e86fb8be5630876d7ed8d76e..f443981cde4b907c97a0adaaaefaef99ae394fa3 100644
--- a/test/language/module-code/parse-err-invoke-anon-fun-decl.js
+++ b/test/language/module-code/parse-err-invoke-anon-fun-decl.js
@@ -14,7 +14,9 @@ info: |
       export default HoistableDeclaration[Default]
       export default ClassDeclaration[Default]
       export default [lookahead ∉ { function, class }] AssignmentExpression[In];
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-invoke-anon-gen-decl.js b/test/language/module-code/parse-err-invoke-anon-gen-decl.js
index 68c13642fee5f63ef7f74c60c6e58dd9d680690f..ea625968a9fd332b808240848f2037f7ed68868b 100644
--- a/test/language/module-code/parse-err-invoke-anon-gen-decl.js
+++ b/test/language/module-code/parse-err-invoke-anon-gen-decl.js
@@ -15,7 +15,9 @@ info: |
       export default HoistableDeclaration[Default]
       export default ClassDeclaration[Default]
       export default [lookahead ∉ { function, class }] AssignmentExpression[In];
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-reference.js b/test/language/module-code/parse-err-reference.js
index 8521599c0edc22a8c0bbd6046dbb8be07c03a6c2..9e8c492baa2e915129b345c41220177dbc9a16a3 100644
--- a/test/language/module-code/parse-err-reference.js
+++ b/test/language/module-code/parse-err-reference.js
@@ -3,7 +3,9 @@
 /*---
 description: Early ReferenceError resulting from module parsing
 esid: sec-parsemodule
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 info: |
     [...]
     2. Parse sourceText using Module as the goal symbol and analyze the parse
diff --git a/test/language/module-code/parse-err-return.js b/test/language/module-code/parse-err-return.js
index e51e894a8d045a04573c545422e0d490a6c21b7b..0130511208440a314727076d5b1e782c96c42e5b 100644
--- a/test/language/module-code/parse-err-return.js
+++ b/test/language/module-code/parse-err-return.js
@@ -22,7 +22,9 @@ info: |
     ExportDeclaration
     StatementListItem[~Yield, ~Return]
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 return;
diff --git a/test/language/module-code/parse-err-semi-dflt-expr.js b/test/language/module-code/parse-err-semi-dflt-expr.js
index 78cba692fdbb0055ee6c9e85d4b60b1bc925dea5..331915a7b4e6226264b269ddbae8559a292fe0e9 100644
--- a/test/language/module-code/parse-err-semi-dflt-expr.js
+++ b/test/language/module-code/parse-err-semi-dflt-expr.js
@@ -15,7 +15,9 @@ info: |
       export default HoistableDeclaration[Default]
       export default ClassDeclaration[Default]
       export default [lookahead ∉ { function, class }] AssignmentExpression[In];
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-semi-export-clause-from.js b/test/language/module-code/parse-err-semi-export-clause-from.js
index b581cd3e659c31e1401631565fd4ed9c1fd2d578..3eaa729a64a75f7d7699f5b879bc7d5e3ec25938 100644
--- a/test/language/module-code/parse-err-semi-export-clause-from.js
+++ b/test/language/module-code/parse-err-semi-export-clause-from.js
@@ -15,7 +15,9 @@ info: |
       export default HoistableDeclaration[Default]
       export default ClassDeclaration[Default]
       export default [lookahead ∉ { function, class }] AssignmentExpression[In];
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-semi-export-clause.js b/test/language/module-code/parse-err-semi-export-clause.js
index 7b4584629107cf8d6c87924817e4a5c42a353fd7..a876deeb541bd6389c932175ce3b8bbd031e78c1 100644
--- a/test/language/module-code/parse-err-semi-export-clause.js
+++ b/test/language/module-code/parse-err-semi-export-clause.js
@@ -15,7 +15,9 @@ info: |
       export default HoistableDeclaration[Default]
       export default ClassDeclaration[Default]
       export default [lookahead ∉ { function, class }] AssignmentExpression[In];
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-semi-export-star.js b/test/language/module-code/parse-err-semi-export-star.js
index cc8f908891ae8978daa9d3ae5304e8a4b80feea4..6ff59a84cfb69f21ce69c143f5e59dcb764196ff 100644
--- a/test/language/module-code/parse-err-semi-export-star.js
+++ b/test/language/module-code/parse-err-semi-export-star.js
@@ -14,7 +14,9 @@ info: |
       export default HoistableDeclaration[Default]
       export default ClassDeclaration[Default]
       export default [lookahead ∉ { function, class }] AssignmentExpression[In];
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [module]
 ---*/
 
diff --git a/test/language/module-code/parse-err-syntax.js b/test/language/module-code/parse-err-syntax.js
index ec36f521c67e6ec55106cf96614441a940c52498..818199963d61328d966c0ce38740b83a522f0895 100644
--- a/test/language/module-code/parse-err-syntax.js
+++ b/test/language/module-code/parse-err-syntax.js
@@ -3,7 +3,9 @@
 /*---
 description: Early SyntaxError resulting from module parsing
 esid: sec-parsemodule
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     [...]
     2. Parse sourceText using Module as the goal symbol and analyze the parse
diff --git a/test/language/module-code/parse-err-yield.js b/test/language/module-code/parse-err-yield.js
index 34600568a201f440cf0d1236dcb4fed0ef1c079f..17e20c96dcc48eb9444b5d109c1b8c8ead7710ff 100644
--- a/test/language/module-code/parse-err-yield.js
+++ b/test/language/module-code/parse-err-yield.js
@@ -22,7 +22,9 @@ info: |
     ExportDeclaration
     StatementListItem[~Yield, ~Return]
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 yield;
diff --git a/test/language/punctuators/S7.7_A2_T1.js b/test/language/punctuators/S7.7_A2_T1.js
index 1e955d54b62f2cb0abf57151a2c273380f864da4..52b658b056f42e0e606ce37277328c2be4f0a79c 100644
--- a/test/language/punctuators/S7.7_A2_T1.js
+++ b/test/language/punctuators/S7.7_A2_T1.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T1
 description: Try to use {} as a Unicode \u007B\u007D
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 \u007B\u007D;
diff --git a/test/language/punctuators/S7.7_A2_T10.js b/test/language/punctuators/S7.7_A2_T10.js
index 2fcdf86b4acaf7019f914b0d5e223248f4da6406..02765dc64f7aaea4218e625eee9ca158d17b71e2 100644
--- a/test/language/punctuators/S7.7_A2_T10.js
+++ b/test/language/punctuators/S7.7_A2_T10.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T10
 description: Try to use / as a Unicode \u002F
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 1\u002F2;
diff --git a/test/language/punctuators/S7.7_A2_T2.js b/test/language/punctuators/S7.7_A2_T2.js
index 665b24297887bba793900a81056f983d6ff90c6b..97118e83da4406ab22a32aa4a9abb0e71dc3f34b 100644
--- a/test/language/punctuators/S7.7_A2_T2.js
+++ b/test/language/punctuators/S7.7_A2_T2.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T2
 description: Try to use () as Unicode \u00281\u0029
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 \u00281\u0029;
diff --git a/test/language/punctuators/S7.7_A2_T3.js b/test/language/punctuators/S7.7_A2_T3.js
index a38c8f29245aa0655cc2de6b0da14694eb99ed30..c45c90eb12b677b897e38b0054db6ceaa102b46f 100644
--- a/test/language/punctuators/S7.7_A2_T3.js
+++ b/test/language/punctuators/S7.7_A2_T3.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T3
 description: Try to use [] as a Unicode \u005B\u005D
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 \u005B\u005D;
diff --git a/test/language/punctuators/S7.7_A2_T4.js b/test/language/punctuators/S7.7_A2_T4.js
index a6f1f305b8847a6d7b7bce67a6ddbc3cbcc5a28a..4963bda477210ec1f47854011c262fc35858a2e6 100644
--- a/test/language/punctuators/S7.7_A2_T4.js
+++ b/test/language/punctuators/S7.7_A2_T4.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T4
 description: Try to use ; as a Unicode \u003B
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 \u003B;
diff --git a/test/language/punctuators/S7.7_A2_T5.js b/test/language/punctuators/S7.7_A2_T5.js
index 59135976d3e220631c6947cfac40bf2e0b4081b7..379bfe789aa663ee1d1b52424386bcc26776909c 100644
--- a/test/language/punctuators/S7.7_A2_T5.js
+++ b/test/language/punctuators/S7.7_A2_T5.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T5
 description: Try to use . as a Unicode \u002E
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 x = 1;
diff --git a/test/language/punctuators/S7.7_A2_T6.js b/test/language/punctuators/S7.7_A2_T6.js
index db832e0fa9f84979840f548dfbf7c7ab422198c8..6d9f73c3e45839f2952c949235a4854db647a172 100644
--- a/test/language/punctuators/S7.7_A2_T6.js
+++ b/test/language/punctuators/S7.7_A2_T6.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T6
 description: Try to use , as a Unicode \u002C
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 1\u002C2;
diff --git a/test/language/punctuators/S7.7_A2_T7.js b/test/language/punctuators/S7.7_A2_T7.js
index 685311c3fece948ac3ef4d0f658f80a75b0a1461..9b066810b26569e10b55c87fda1534181e3a3fdc 100644
--- a/test/language/punctuators/S7.7_A2_T7.js
+++ b/test/language/punctuators/S7.7_A2_T7.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T7
 description: Try to use + as a Unicode \u002B
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 1\u002B2;
diff --git a/test/language/punctuators/S7.7_A2_T8.js b/test/language/punctuators/S7.7_A2_T8.js
index 7fd346dabb4a164e3242c1e1ccd4aa745a1ba9d1..88469020da08fe6bc449b1024af498765d4f49f5 100644
--- a/test/language/punctuators/S7.7_A2_T8.js
+++ b/test/language/punctuators/S7.7_A2_T8.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T8
 description: Try to use -  as a Unicode \u002D
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 1\u002D2;
diff --git a/test/language/punctuators/S7.7_A2_T9.js b/test/language/punctuators/S7.7_A2_T9.js
index 789a7d1e0e41e01f7279695d5ad582e4a8b42e20..cbfdeb8fc88d9363ff8e0975b3fa8547cc622eeb 100644
--- a/test/language/punctuators/S7.7_A2_T9.js
+++ b/test/language/punctuators/S7.7_A2_T9.js
@@ -7,7 +7,9 @@ info: >
     six characters, namely \u plus four hexadecimal digits
 es5id: 7.7_A2_T9
 description: Try to use * as a Unicode \u002A
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 1\u002A2;
diff --git a/test/language/reserved-words/7.6.1.2-1gs.js b/test/language/reserved-words/7.6.1.2-1gs.js
index 2dac3658737b6046da7285871018370cc7c28954..27752445ce4678a51165c07310042e9efe6b3dec 100644
--- a/test/language/reserved-words/7.6.1.2-1gs.js
+++ b/test/language/reserved-words/7.6.1.2-1gs.js
@@ -6,9 +6,10 @@ es5id: 7.6.1.2-1gs
 description: >
     Strict Mode - SyntaxError is thrown when FutureReservedWord
     'implements' occurs in strict mode code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 var implements = 1;
diff --git a/test/language/reserved-words/S7.6.1_A1.1.js b/test/language/reserved-words/S7.6.1_A1.1.js
index 76b1803b0ff787cb907a31457bbccc0f2a8d9119..a7452d3dcf908d79732b397ab8f334f8abd2b62d 100644
--- a/test/language/reserved-words/S7.6.1_A1.1.js
+++ b/test/language/reserved-words/S7.6.1_A1.1.js
@@ -5,7 +5,9 @@
 info: The "null" token can not be used as identifier
 es5id: 7.6.1_A1.1
 description: Checking if execution of "null = 1" fails
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 null = 1;
diff --git a/test/language/reserved-words/S7.6.1_A1.2.js b/test/language/reserved-words/S7.6.1_A1.2.js
index e593fd56c13be965b9f8e2a593f06cd71521667d..ce5a346855d2e05a998180e5ce58c5fccb51913e 100644
--- a/test/language/reserved-words/S7.6.1_A1.2.js
+++ b/test/language/reserved-words/S7.6.1_A1.2.js
@@ -5,7 +5,9 @@
 info: The "true" token can not be used as identifier
 es5id: 7.6.1_A1.2
 description: Checking if execution of "true=1" fails
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 true = 1;
diff --git a/test/language/reserved-words/S7.6.1_A1.3.js b/test/language/reserved-words/S7.6.1_A1.3.js
index 1c94158bdeaab68e475a9070dd6af1b0a8543cda..547858922b4bf44a6fe8b386780b311e1c67c7fc 100644
--- a/test/language/reserved-words/S7.6.1_A1.3.js
+++ b/test/language/reserved-words/S7.6.1_A1.3.js
@@ -5,7 +5,9 @@
 info: The "false" token can not be used as identifier
 es5id: 7.6.1_A1.3
 description: Checking if execution of "false=1" fails
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 false = 1;
diff --git a/test/language/reserved-words/await-module.js b/test/language/reserved-words/await-module.js
index 1f822edc3416fa9643dfa8b546bd930c6128e820..0f80c91273e50037b5af56ea9e3221b49d3637df 100644
--- a/test/language/reserved-words/await-module.js
+++ b/test/language/reserved-words/await-module.js
@@ -5,7 +5,9 @@ esid: sec-reserved-words
 es6id: 11.6.2
 description: The `await` token is not permitted as an identifier in module code
 flags: [module]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var await;
diff --git a/test/language/rest-parameters/params-trailing-comma-rest.js b/test/language/rest-parameters/params-trailing-comma-rest.js
index 823b8806ccb066a7676b1f401ef5bdb44c6a18fb..028e7a36e5336681f04fd7ea0ec734b7ab82cd1d 100644
--- a/test/language/rest-parameters/params-trailing-comma-rest.js
+++ b/test/language/rest-parameters/params-trailing-comma-rest.js
@@ -6,7 +6,9 @@ description: >
   arguments in arrow function argument lists.
 info: http://jeffmo.github.io/es-trailing-function-commas/
 author: Jeff Morrison <lbljeffmo@gmail.com>
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 ((...a,) => {})
diff --git a/test/language/rest-parameters/position-invalid.js b/test/language/rest-parameters/position-invalid.js
index 27b6757725401e19756af95e854c48b569dc5347..bc64f3bb0bea83a226368fad8a8304dc851c9334 100644
--- a/test/language/rest-parameters/position-invalid.js
+++ b/test/language/rest-parameters/position-invalid.js
@@ -4,6 +4,8 @@
 es6id: 14.1
 description: >
     Rest parameter cannot be followed by another named parameter
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 function f(a, ...b, c) {}
diff --git a/test/language/statements/async-function/early-errors-declaration-NSPL-with-USD.js b/test/language/statements/async-function/early-errors-declaration-NSPL-with-USD.js
index 2284554d858d867ac57b9c66554e73493fcb2c78..dc8000e30cb745a30b8b4326b202fd729e73cb29 100644
--- a/test/language/statements/async-function/early-errors-declaration-NSPL-with-USD.js
+++ b/test/language/statements/async-function/early-errors-declaration-NSPL-with-USD.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is *true* and IsSimpleParameterList of ArrowParameters is *false*.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async function foo(x = 1){"use strict"}
diff --git a/test/language/statements/async-function/early-errors-declaration-arguments-in-formal-parameters.js b/test/language/statements/async-function/early-errors-declaration-arguments-in-formal-parameters.js
index 6bfb5c8974635bba8865817838d1c0e7550d70e9..f107468b1e6ba2be8b1c528c8d0c6fa2d79ce148 100644
--- a/test/language/statements/async-function/early-errors-declaration-arguments-in-formal-parameters.js
+++ b/test/language/statements/async-function/early-errors-declaration-arguments-in-formal-parameters.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains arguments in strict mode
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/statements/async-function/early-errors-declaration-await-in-formals-default.js b/test/language/statements/async-function/early-errors-declaration-await-in-formals-default.js
index aa3e5e51598c44bc19c02883b337071bc2c12d89..f961342868f097426749205da4b2cf87bf253220 100644
--- a/test/language/statements/async-function/early-errors-declaration-await-in-formals-default.js
+++ b/test/language/statements/async-function/early-errors-declaration-await-in-formals-default.js
@@ -5,6 +5,8 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters' default expressions contains await
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 async function foo (x = await) {  }
diff --git a/test/language/statements/async-function/early-errors-declaration-await-in-formals.js b/test/language/statements/async-function/early-errors-declaration-await-in-formals.js
index ee57dcd19c440d0d1a7d082228c76865495dda96..e93d9f6ab3f9421a2497483812d8fcc10d63d84b 100644
--- a/test/language/statements/async-function/early-errors-declaration-await-in-formals.js
+++ b/test/language/statements/async-function/early-errors-declaration-await-in-formals.js
@@ -5,6 +5,8 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains await
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 async function foo (await) {  }
diff --git a/test/language/statements/async-function/early-errors-declaration-binding-identifier-arguments.js b/test/language/statements/async-function/early-errors-declaration-binding-identifier-arguments.js
index 225e0085e3bf15acc77db01931cb7e3b93704a3a..a5c91fb576ff0b71543087fe5a55e17538015681 100644
--- a/test/language/statements/async-function/early-errors-declaration-binding-identifier-arguments.js
+++ b/test/language/statements/async-function/early-errors-declaration-binding-identifier-arguments.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   If the source code matching this production is strict code, it is a Syntax Error if BindingIdentifier is the IdentifierName arguments. 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 async function arguments () {  }
diff --git a/test/language/statements/async-function/early-errors-declaration-binding-identifier-eval.js b/test/language/statements/async-function/early-errors-declaration-binding-identifier-eval.js
index ea9a58e962218f51b67e68ce727bb8d305ad7864..29facf91aef2f9ca131d309b9addf8dfb42fbd61 100644
--- a/test/language/statements/async-function/early-errors-declaration-binding-identifier-eval.js
+++ b/test/language/statements/async-function/early-errors-declaration-binding-identifier-eval.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   If the source code matching this production is strict code, it is a Syntax Error if BindingIdentifier is the IdentifierName eval. 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 async function eval () {  }
diff --git a/test/language/statements/async-function/early-errors-declaration-body-contains-super-call.js b/test/language/statements/async-function/early-errors-declaration-body-contains-super-call.js
index b4ad18cccccd5f1ab0e4a840be6f03e7ceb706f4..a1d84ef3dda11a8f3283a85f42df1cea1d3b8698 100644
--- a/test/language/statements/async-function/early-errors-declaration-body-contains-super-call.js
+++ b/test/language/statements/async-function/early-errors-declaration-body-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if AsyncFunctionBody contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async function foo (foo) { super() };
diff --git a/test/language/statements/async-function/early-errors-declaration-body-contains-super-property.js b/test/language/statements/async-function/early-errors-declaration-body-contains-super-property.js
index 53fb87e10c99bc80f6e06ba7119f455b9a06336d..ed9570766fce28a494bf37b251d319db93cac5ed 100644
--- a/test/language/statements/async-function/early-errors-declaration-body-contains-super-property.js
+++ b/test/language/statements/async-function/early-errors-declaration-body-contains-super-property.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if AsyncFunctionBody contains SuperProperty is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async function foo (foo) { super.prop };
diff --git a/test/language/statements/async-function/early-errors-declaration-duplicate-parameters.js b/test/language/statements/async-function/early-errors-declaration-duplicate-parameters.js
index f91c35c61492ce2003d46a23170940f0f908399c..186baca6dbfe2e5cf76bcfa331eec6835323e4c6 100644
--- a/test/language/statements/async-function/early-errors-declaration-duplicate-parameters.js
+++ b/test/language/statements/async-function/early-errors-declaration-duplicate-parameters.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   If strict mode, early error rules for StrictFormalParameters are applied
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/statements/async-function/early-errors-declaration-eval-in-formal-parameters.js b/test/language/statements/async-function/early-errors-declaration-eval-in-formal-parameters.js
index f2b24adaa7b2eea940fab2e550c325b421d8681b..39d32b22ecc05b47bc4c4535f1aff36e7c35d75b 100644
--- a/test/language/statements/async-function/early-errors-declaration-eval-in-formal-parameters.js
+++ b/test/language/statements/async-function/early-errors-declaration-eval-in-formal-parameters.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains eval in strict mode
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
diff --git a/test/language/statements/async-function/early-errors-declaration-formals-body-duplicate.js b/test/language/statements/async-function/early-errors-declaration-formals-body-duplicate.js
index 1de28ba4f2da3f8b344d1a361f8e76c649cebf81..c4132bd5320e5821a2d83dba21b703c419c794ac 100644
--- a/test/language/statements/async-function/early-errors-declaration-formals-body-duplicate.js
+++ b/test/language/statements/async-function/early-errors-declaration-formals-body-duplicate.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if BoundNames of FormalParameters also occurs in the LexicallyDeclaredNames of AsyncFunctionBody
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async function foo (bar) { let bar; }
diff --git a/test/language/statements/async-function/early-errors-declaration-formals-contains-super-call.js b/test/language/statements/async-function/early-errors-declaration-formals-contains-super-call.js
index bdd6e2b55d17753801278170664167a7696a34fe..73e1ad87049b254c68181a567ead76a7f33b6b5b 100644
--- a/test/language/statements/async-function/early-errors-declaration-formals-contains-super-call.js
+++ b/test/language/statements/async-function/early-errors-declaration-formals-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if FormalParameters contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async function foo (foo = super()) { let bar; }
diff --git a/test/language/statements/async-function/early-errors-declaration-formals-contains-super-property.js b/test/language/statements/async-function/early-errors-declaration-formals-contains-super-property.js
index d68260db71a596b021fc65e367ac9f36c4559176..ee20b11cf311dc09767d779d292ca778fe7311b6 100644
--- a/test/language/statements/async-function/early-errors-declaration-formals-contains-super-property.js
+++ b/test/language/statements/async-function/early-errors-declaration-formals-contains-super-property.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if FormalParameters contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async function foo (foo = super.foo) { let bar; }
diff --git a/test/language/statements/async-function/early-errors-no-async-generator.js b/test/language/statements/async-function/early-errors-no-async-generator.js
index 4e4d2e44a7e7056a3d8c6b04fa672b109070dfce..9c4d2b47133d9b2112f0ab35e92c1c37a74d9c54 100644
--- a/test/language/statements/async-function/early-errors-no-async-generator.js
+++ b/test/language/statements/async-function/early-errors-no-async-generator.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   Async generators are not a thing (yet)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 async function* foo() { }
diff --git a/test/language/statements/block/S12.1_A4_T1.js b/test/language/statements/block/S12.1_A4_T1.js
index bcd1697bcbef84d5696aef2a6f3bd3b4bf1a8301..6addb73a51f3a2dc447e8960346a756383f79872 100644
--- a/test/language/statements/block/S12.1_A4_T1.js
+++ b/test/language/statements/block/S12.1_A4_T1.js
@@ -5,7 +5,9 @@
 info: The production Block can't be inside of expression
 es5id: 12.1_A4_T1
 description: Checking if execution of "y={__func}()" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function __func(){};
diff --git a/test/language/statements/block/S12.1_A4_T2.js b/test/language/statements/block/S12.1_A4_T2.js
index 2a6a56ffe50cd3c697041767cb529fb6ab0fccbf..0032285eb5f23b72bcce7280c8cc0191a45ff933 100644
--- a/test/language/statements/block/S12.1_A4_T2.js
+++ b/test/language/statements/block/S12.1_A4_T2.js
@@ -5,7 +5,9 @@
 info: The production Block can't be inside of expression
 es5id: 12.1_A4_T2
 description: Checking if execution of "y={x;}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 x=1;
diff --git a/test/language/statements/break/S12.8_A1_T1.js b/test/language/statements/break/S12.8_A1_T1.js
index 9a631ca00cfe0346150d71fdf412755ef1dbd397..5128e628476a66de6c2bf30d8ce2a6ca64b05b55 100644
--- a/test/language/statements/break/S12.8_A1_T1.js
+++ b/test/language/statements/break/S12.8_A1_T1.js
@@ -5,7 +5,9 @@
 info: Appearing of break without an IterationStatement leads to syntax error
 es5id: 12.8_A1_T1
 description: Checking if break statement with no loop fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/break/S12.8_A1_T2.js b/test/language/statements/break/S12.8_A1_T2.js
index 4b2ee30c2bd8fcd02726fd54372885b2826662ab..517cd8b75381a29fbd3925ec4a60e0257da05f48 100644
--- a/test/language/statements/break/S12.8_A1_T2.js
+++ b/test/language/statements/break/S12.8_A1_T2.js
@@ -5,7 +5,9 @@
 info: Appearing of break without an IterationStatement leads to syntax error
 es5id: 12.8_A1_T2
 description: Checking if break Identifier with no loop fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 LABEL : x=3.14;
diff --git a/test/language/statements/break/S12.8_A1_T3.js b/test/language/statements/break/S12.8_A1_T3.js
index 9f1693cbadad985ee33756df68828cb0636697ac..fbd6e646d80705a3e30acf061512ea8c793b334d 100644
--- a/test/language/statements/break/S12.8_A1_T3.js
+++ b/test/language/statements/break/S12.8_A1_T3.js
@@ -7,7 +7,9 @@ es5id: 12.8_A1_T3
 description: >
     Checking if break statement with no loop, placed into a block,
     fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/break/S12.8_A1_T4.js b/test/language/statements/break/S12.8_A1_T4.js
index e1c5752ea2d05e3b21b0aba9602748e92a936621..a8c085f6749db662bef85a23678c58f807da859d 100644
--- a/test/language/statements/break/S12.8_A1_T4.js
+++ b/test/language/statements/break/S12.8_A1_T4.js
@@ -7,7 +7,9 @@ es5id: 12.8_A1_T4
 description: >
     Checking if break Identifier with no loop, placed into a  block,
     fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 LABEL : x=3.14;
diff --git a/test/language/statements/break/S12.8_A5_T1.js b/test/language/statements/break/S12.8_A5_T1.js
index c30bfa322ccd46e650fbdd7b51f7e32e6b7c0db7..e74390fdd53e0959f9815bb9139fce24ba40af03 100644
--- a/test/language/statements/break/S12.8_A5_T1.js
+++ b/test/language/statements/break/S12.8_A5_T1.js
@@ -7,7 +7,9 @@ info: >
     crossing function boundaries) IterationStatement
 es5id: 12.8_A5_T1
 description: Checking if breaking another labeled loop fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (function(){
diff --git a/test/language/statements/break/S12.8_A5_T2.js b/test/language/statements/break/S12.8_A5_T2.js
index d22d0af9c7005681412b59150c3f496400b7cce4..91a0bc7f41fef69a5c2dc1129cd03a140370c68d 100644
--- a/test/language/statements/break/S12.8_A5_T2.js
+++ b/test/language/statements/break/S12.8_A5_T2.js
@@ -9,7 +9,9 @@ es5id: 12.8_A5_T2
 description: >
     Checking if using function name as an Identifier appears to be
     invalid
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (function(){
diff --git a/test/language/statements/break/S12.8_A5_T3.js b/test/language/statements/break/S12.8_A5_T3.js
index ac14feb593e51c59f41eccf2102e3fe6f06bb62b..955e7794f383e5808db911d6e20e51e2fd943e37 100644
--- a/test/language/statements/break/S12.8_A5_T3.js
+++ b/test/language/statements/break/S12.8_A5_T3.js
@@ -9,7 +9,9 @@ es5id: 12.8_A5_T3
 description: >
     Checking if using internal loop label as an Identifier appears to
     be invalid
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (function(){
diff --git a/test/language/statements/break/S12.8_A6.js b/test/language/statements/break/S12.8_A6.js
index d996d392046adad235eed9a8ddd836991a343031..1a3ad0014e5eb6b8ae5a412e1f07bb304bc0b06d 100644
--- a/test/language/statements/break/S12.8_A6.js
+++ b/test/language/statements/break/S12.8_A6.js
@@ -9,7 +9,9 @@ es5id: 12.8_A6
 description: >
     Checking if using "break Identifier" within a function body
     appears to be invalid
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x=0,y=0;
diff --git a/test/language/statements/break/S12.8_A8_T1.js b/test/language/statements/break/S12.8_A8_T1.js
index cdcb23e929046f368a35382d27f871d67427a17c..f2ff054be0058003a724ce29296fed5be1455899 100644
--- a/test/language/statements/break/S12.8_A8_T1.js
+++ b/test/language/statements/break/S12.8_A8_T1.js
@@ -7,7 +7,9 @@ es5id: 12.8_A8_T1
 description: >
     Checking if using "break Identifier" from within catch Block
     appears to be invalid
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x=0,y=0;
diff --git a/test/language/statements/break/S12.8_A8_T2.js b/test/language/statements/break/S12.8_A8_T2.js
index 51d7f1f49a16541eaff8097911033bfa9ee9b5e4..772289224f02847ab5607d91c6daaace931161f7 100644
--- a/test/language/statements/break/S12.8_A8_T2.js
+++ b/test/language/statements/break/S12.8_A8_T2.js
@@ -7,7 +7,9 @@ es5id: 12.8_A8_T2
 description: >
     Checking if using "break Identifier" from within catch Block
     appears to be invalid
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x=0,y=0;
diff --git a/test/language/statements/class/definition/early-errors-class-method-NSPL-with-USD.js b/test/language/statements/class/definition/early-errors-class-method-NSPL-with-USD.js
index 1df3a557dd95cbc1b79a68fc68f2823241e1044a..400cda4473914e676b0a5a97de8bdb0fd19946e0 100644
--- a/test/language/statements/class/definition/early-errors-class-method-NSPL-with-USD.js
+++ b/test/language/statements/class/definition/early-errors-class-method-NSPL-with-USD.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   It is a Syntax Error if ContainsUseStrict of AsyncConciseBody is *true* and IsSimpleParameterList of ArrowParameters is *false*.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class Foo {
   async bar(x = 1) {"use strict"}
diff --git a/test/language/statements/class/definition/early-errors-class-method-arguments-in-formal-parameters.js b/test/language/statements/class/definition/early-errors-class-method-arguments-in-formal-parameters.js
index e19517e0091647b42b70c79ba1671ce46e81b8e8..6832dcea004872568852a1a5c0d31c7ca0d97709 100644
--- a/test/language/statements/class/definition/early-errors-class-method-arguments-in-formal-parameters.js
+++ b/test/language/statements/class/definition/early-errors-class-method-arguments-in-formal-parameters.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains arguments
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class Foo {
   async foo (arguments) { }
diff --git a/test/language/statements/class/definition/early-errors-class-method-await-in-formals-default.js b/test/language/statements/class/definition/early-errors-class-method-await-in-formals-default.js
index 4575aa1d9e392f62239b26c6b3ba4b177548dfdc..48535adb202518444b88f068b6bb38780bf37093 100644
--- a/test/language/statements/class/definition/early-errors-class-method-await-in-formals-default.js
+++ b/test/language/statements/class/definition/early-errors-class-method-await-in-formals-default.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters' default expressions contains await
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class Foo {
   async foo (x = await) {  }
diff --git a/test/language/statements/class/definition/early-errors-class-method-await-in-formals.js b/test/language/statements/class/definition/early-errors-class-method-await-in-formals.js
index 5a0512b3c833f3ded744a6d49ff131ab76c2ef1c..b6776099b45a3451f1de908bfe6e1106a43ca46f 100644
--- a/test/language/statements/class/definition/early-errors-class-method-await-in-formals.js
+++ b/test/language/statements/class/definition/early-errors-class-method-await-in-formals.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains await
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class Foo {
   async foo (await) {  }
diff --git a/test/language/statements/class/definition/early-errors-class-method-body-contains-super-call.js b/test/language/statements/class/definition/early-errors-class-method-body-contains-super-call.js
index 5e0814155c5196f997cad90a7fc86f2a4a51c913..5d3b515459ac608c1a6c76a4ceb4298598c742b2 100644
--- a/test/language/statements/class/definition/early-errors-class-method-body-contains-super-call.js
+++ b/test/language/statements/class/definition/early-errors-class-method-body-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if AsyncFunctionBody contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class Foo {
   async foo () { super() }
diff --git a/test/language/statements/class/definition/early-errors-class-method-duplicate-parameters.js b/test/language/statements/class/definition/early-errors-class-method-duplicate-parameters.js
index aaa491c938850aec121ab1a0474c96ab66637826..b060183acc35acb7dd6483505079e00c51faa2b1 100644
--- a/test/language/statements/class/definition/early-errors-class-method-duplicate-parameters.js
+++ b/test/language/statements/class/definition/early-errors-class-method-duplicate-parameters.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   Early error rules for StrictFormalParameters are applied
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 class Foo {
diff --git a/test/language/statements/class/definition/early-errors-class-method-eval-in-formal-parameters.js b/test/language/statements/class/definition/early-errors-class-method-eval-in-formal-parameters.js
index 2f4341fb55503f20223bccf559695047e21b5632..f476e3921496f9e93f94f3f743e7c8048b3f132c 100644
--- a/test/language/statements/class/definition/early-errors-class-method-eval-in-formal-parameters.js
+++ b/test/language/statements/class/definition/early-errors-class-method-eval-in-formal-parameters.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a SyntaxError if FormalParameters contains eval in strict mode
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class Foo {
   async foo(eval) { }
diff --git a/test/language/statements/class/definition/early-errors-class-method-formals-body-duplicate.js b/test/language/statements/class/definition/early-errors-class-method-formals-body-duplicate.js
index f7170dc9db32a0372147a21fa38c0fd20d966e3e..dbcdd6dba888470438e66a190a7b6ff75d64c1bb 100644
--- a/test/language/statements/class/definition/early-errors-class-method-formals-body-duplicate.js
+++ b/test/language/statements/class/definition/early-errors-class-method-formals-body-duplicate.js
@@ -6,7 +6,9 @@ author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: >
   It is a SyntaxError if BoundNames of FormalParameters also occurs in the LexicallyDeclaredNames of AsyncFunctionBody
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 class Foo {
diff --git a/test/language/statements/class/definition/early-errors-class-method-formals-contains-super-call.js b/test/language/statements/class/definition/early-errors-class-method-formals-contains-super-call.js
index 8103422068888ff02d26038df94b45570aeb3555..bef1a5c81196e62f0d64abf086242453743ce73c 100644
--- a/test/language/statements/class/definition/early-errors-class-method-formals-contains-super-call.js
+++ b/test/language/statements/class/definition/early-errors-class-method-formals-contains-super-call.js
@@ -5,7 +5,9 @@
 author: Brian Terlson <brian.terlson@microsoft.com>
 esid: pending
 description: It is a syntax error if FormalParameters contains SuperCall is true
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class Foo {
   async foo(foo = super()) { }
diff --git a/test/language/statements/class/definition/methods-gen-yield-as-binding-identifier.js b/test/language/statements/class/definition/methods-gen-yield-as-binding-identifier.js
index 3bcdafe5d3fc28812ff31471eae63ceaa1626279..ff2f57abb2bda3b8fabe98961e554a29b1430635 100644
--- a/test/language/statements/class/definition/methods-gen-yield-as-binding-identifier.js
+++ b/test/language/statements/class/definition/methods-gen-yield-as-binding-identifier.js
@@ -7,7 +7,9 @@
       not be used as a binding identifier.
   features: [generators]
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 class A {
diff --git a/test/language/statements/class/definition/methods-gen-yield-as-function-expression-binding-identifier.js b/test/language/statements/class/definition/methods-gen-yield-as-function-expression-binding-identifier.js
index bb081f14e90e0209e6714b3d9750f8ae946038b5..5540822b63516341b7689201f4e4330f98200c71 100644
--- a/test/language/statements/class/definition/methods-gen-yield-as-function-expression-binding-identifier.js
+++ b/test/language/statements/class/definition/methods-gen-yield-as-function-expression-binding-identifier.js
@@ -7,7 +7,9 @@
       expression within classes.
   features: [generators]
   es6id: 14.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 class A {
diff --git a/test/language/statements/class/definition/methods-gen-yield-as-identifier-in-nested-function.js b/test/language/statements/class/definition/methods-gen-yield-as-identifier-in-nested-function.js
index 1cf64ff35780c8034f8ce6b78ce234dc1b330a5c..3ecab10e8f5f551b3faf886c1cf91fb9976aa498 100644
--- a/test/language/statements/class/definition/methods-gen-yield-as-identifier-in-nested-function.js
+++ b/test/language/statements/class/definition/methods-gen-yield-as-identifier-in-nested-function.js
@@ -7,7 +7,9 @@
       within classes.
   features: [generators]
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 class A {
diff --git a/test/language/statements/class/definition/methods-gen-yield-as-label.js b/test/language/statements/class/definition/methods-gen-yield-as-label.js
index 094f90ac729eafa61e89bb83952f59ff90ea2fc3..6b9da37724a582322d6b04b48ccc5b1f2f39738c 100644
--- a/test/language/statements/class/definition/methods-gen-yield-as-label.js
+++ b/test/language/statements/class/definition/methods-gen-yield-as-label.js
@@ -7,7 +7,9 @@
       not be used as a label.
   features: [generators]
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 class A {
diff --git a/test/language/statements/class/definition/methods-gen-yield-as-logical-or-expression.js b/test/language/statements/class/definition/methods-gen-yield-as-logical-or-expression.js
index f4bb32f4167e025d17853b0e1b5e074d91d0eafd..538a14447bba739fb2a0fd1439a4efce331a2c82 100644
--- a/test/language/statements/class/definition/methods-gen-yield-as-logical-or-expression.js
+++ b/test/language/statements/class/definition/methods-gen-yield-as-logical-or-expression.js
@@ -6,7 +6,9 @@
       `yield` expressions are not LogicalOrExpressions.
   features: [generators]
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 class A {
diff --git a/test/language/statements/class/definition/methods-gen-yield-as-parameter.js b/test/language/statements/class/definition/methods-gen-yield-as-parameter.js
index a1b648051ed724c2c3c87acc6d820884c3a25845..2b036aaec1f2c71f4b7485e7342e7a23c6ddd29e 100644
--- a/test/language/statements/class/definition/methods-gen-yield-as-parameter.js
+++ b/test/language/statements/class/definition/methods-gen-yield-as-parameter.js
@@ -7,7 +7,9 @@
       not be used as the binding identifier of a parameter.
   features: [generators]
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 class A {
diff --git a/test/language/statements/class/definition/methods-gen-yield-star-after-newline.js b/test/language/statements/class/definition/methods-gen-yield-star-after-newline.js
index 80cef3e5618953ad5cde502fdbc0e93fc56117d9..97cb6f5c5006edbad9c7a34884bdba10efcef096 100644
--- a/test/language/statements/class/definition/methods-gen-yield-star-after-newline.js
+++ b/test/language/statements/class/definition/methods-gen-yield-star-after-newline.js
@@ -6,7 +6,9 @@
       A newline may not precede the `*` token in a `yield` expression.
   features: [generators]
   es6id: 14.4
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 class A {
diff --git a/test/language/statements/class/definition/methods-gen-yield-weak-binding.js b/test/language/statements/class/definition/methods-gen-yield-weak-binding.js
index 8a8d4aa491946192c22c57e9946ec61e8f773d5b..b3e4aef7339cb5054560869dc1c72449fcc0dffb 100644
--- a/test/language/statements/class/definition/methods-gen-yield-weak-binding.js
+++ b/test/language/statements/class/definition/methods-gen-yield-weak-binding.js
@@ -6,7 +6,9 @@
       `yield` expressions bind weakly
   features: [generators]
   es6id: 14.4
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 class A {
diff --git a/test/language/statements/class/definition/params-trailing-comma-rest.js b/test/language/statements/class/definition/params-trailing-comma-rest.js
index 6ba7c5672e610d8c136bbcc2b281068a9cf827dc..d295a468bbe8aeb36b430f705f7ab61d76dceb70 100644
--- a/test/language/statements/class/definition/params-trailing-comma-rest.js
+++ b/test/language/statements/class/definition/params-trailing-comma-rest.js
@@ -6,7 +6,9 @@ description: >
   class method parameter lists.
 info: http://jeffmo.github.io/es-trailing-function-commas/
 author: Jeff Morrison <lbljeffmo@gmail.com>
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class C {
   m(...[],) {}
diff --git a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-ary.js b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-ary.js
index b8f19544a255f69434d81aadb641921826d0658d..4728e6540289efdedb8714be27096c58c3e0b5dd 100644
--- a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-id.js b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-id.js
index 7fbe3e2c767b31e47f7a97175ad852084d3a611e..c93bdf2e49badad1bdb473691c8b5aed36eb29c2 100644
--- a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-obj.js b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-obj.js
index 25005cb993813c54da33106f26abe1dcaced4245..b24a391fbbf812a025dc519017aa2bf00f25879e 100644
--- a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js
index d58971534f76097177ae86945ff2c26739c0c55c..f61c620edfb0a98cb81f120108adc4b78f858869 100644
--- a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-id.js b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-id.js
index b9ab2cedb409255679734067774f1c49685f7077..56afe75be1f5fc863823bfd04f5cf415183c04b7 100644
--- a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js
index 7410dd79aae8d705c0b3f0bdbbac822b72064e8b..d784aa3ad97fd4b96f52683f126f5b1e6fdfffda 100644
--- a/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js
index 5cabe9a492fc4495a46409a77e95812228392094..e77c7cd4bbfe84db7a87cac0e04f92df0cd7e94d 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js
index b9158455053b30e3e1b1ad333528cca8719cea44..83589bb9876a974f90c0f84bc67d2e50396b20da 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js
index 142e800d9ad6c0237daa40c9dd713986842406b5..af58054b3eb717db41fa796d1d62f356ec47e8f7 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
index 2d9fb7cbf3a15e73cb02ff58e789f1965c6a526e..e3351684dbb55f9f1f2d59b44952f34b103498dd 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
index 5492d74aec82f797ac00a4192bace98bbec3df08..d1b31bfec345abca884033ab46f9a50a02184f57 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
index fc802c0f8d4c1b9ac5f961e2be78e1665a13f551..7f6889025c67c6e6497d63aeac8a4a48feef8e3a 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-ary.js b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-ary.js
index 88edc1d662e7e2fa6a4447b8faf6b17322312914..4afa2082307b7659484ed68f3efa70c029f2b70e 100644
--- a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-id.js b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-id.js
index ec0e83cdbf17253acc397e7966228fcdf3b6d121..8a4b2d4e82a3e596584a158d11d0c41f11921f72 100644
--- a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-obj.js b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-obj.js
index 826b9b6ada76572dd772067fc54015a76f609b67..e5a78e3966a1c08620809cae03be49d6da7a791e 100644
--- a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-ary.js b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-ary.js
index 144f19ff89b7c6a0f74483f26ac12ddecdaacfb8..961742c40c941b1994ef20f3d28ebc2227f44ce6 100644
--- a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-id.js b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-id.js
index 1808b2b07bc5d8057b768ae087d2d2e7bec1a672..c19889304e9400ec57cc6cddbaf5654a49f130a9 100644
--- a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-obj.js b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-obj.js
index 1de0c4506d8428dfe83fc34d3e5b4c3cb6ca6d72..3b32762cb1af0c239a8cc74964c69b317eb02e22 100644
--- a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
index 4c816cfa3cf60b14cfe9d8384a6d4febce9cae5c..bf5ca4347a57db367f9da405439ef89cfd2900c0 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-id.js b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
index 2749d1d94cdc753092cde37fe8c76cf8af7d4f00..6f6d9387fb72dd042c6f35d22a02b770b4e743a5 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
index 421af5e3a408262d6f8a9e68e2b4081fe31aba68..4058443e83ce00d1009433ae49046e4296576869 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
index e875636188944ae1847e85f64179b25514fb1c53..cdfd2857e09d05c78c16cbbaab976262bf30d6e3 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
index 56ab611158822fd07800a9af61eb5b8c6a1a604a..1dc22bd3fa6d77abe691c55d155b37c3b3fc14d8 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
index 2d8cb1dcd75a27fd63beeaf9f6082789f36d39f0..175d28de5cae1b827b45a6c00c0f532565acbf7d 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-ary.js b/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-ary.js
index 8cb54374f7b5b351753aa1a79d6c1ba42b1d196f..33bc8739e392cd3b284b652d12ca2f4d9bf11e46 100644
--- a/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-id.js b/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-id.js
index eef64a7107bf0bc203a33f97b03eac5c2f2e2e46..5538fcdffd6057fda9d6c48c01b2b5a14318962e 100644
--- a/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-obj.js b/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-obj.js
index 55f0eead75d08eaa473d3b9e05b3cf6c935b2746..940cc07e4ed9bb7dbf64f620086e7fd6c5b58538 100644
--- a/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/class/dstr-meth-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-ary.js b/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-ary.js
index 8d6252f98ccaf3969b83077753b241040d6280cf..948f3eae7bac80c2059b77318e0d41239c826094 100644
--- a/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-id.js b/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-id.js
index ff48e6e2fbab286042fd109d673d03aef7960fb6..506fb911723fabac1266acd644e7f039957369a6 100644
--- a/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-obj.js b/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-obj.js
index c56040d01968b136001bf29ac5046e83516e4fb6..2b2e2cc71d7dd027ab35d01b1775b1ba2801868d 100644
--- a/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/class/dstr-meth-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-ary.js b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-ary.js
index 51e9b033548e5c62aa1522df39a4d8e23a37df28..f222cc65f8011fbed52e3017d0fc2739f0fa9d44 100644
--- a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-id.js b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-id.js
index 182992ad8bef5fdcf9fb60c0e5a08635ca17ac71..c6112b4768953aa6d37102cc144b09d510757cc7 100644
--- a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-obj.js b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-obj.js
index 8bc377226feded33c0ee964ed4615d0e79f12a2d..e3c90985262aa4b7716168f2aec930b5196f1ca9 100644
--- a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js
index 85ade6f323149dc662b4d10acd3210cda55ab49b..f205f24084c5e6168bdfa1f93ae0a7a083daa44e 100644
--- a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js
index 778a535e0395251278857364b87f81badeb0cd7d..6cacd149ee93ba9c316449f4b0e25c5cd163634a 100644
--- a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js
index eb8046ef02a4ac940b4fea099a45a52457ee98cd..5761f17fe921a7b10cce26c283bd7337cffbb80e 100644
--- a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-ary.js b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-ary.js
index 089161f35abaa64deb19ee75f9eda5eecd522391..c2be56c39ef343d4cbd7f9812ada8f8e4e599a44 100644
--- a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-id.js b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-id.js
index 1594c4948a1e1a607eb32073e72e091659d72e73..e113a78daf943acc55e43773d931c113b22bc705 100644
--- a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-obj.js b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-obj.js
index 01d4be49d320d82e95a89777e9bb39950ed3d8e0..64e4099866c1e605e6eaead8ed553cbc3fe226b7 100644
--- a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-ary.js b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-ary.js
index 66721e04609af7e52c05f5e07cba94a51de90e1a..06b2a9c698cddb12d2675ac930961c59a3a85b29 100644
--- a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-id.js b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-id.js
index d9d2bb65fc651da1a73023bea8f346da55ec0525..7fe55fe3606b7310a884939b5bc49d1fcc9b2a52 100644
--- a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-obj.js b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-obj.js
index 968eb66a14119f1ab41c45e066c19f27f4757bf6..fea30320da4ffee52e582d3be036977dcd7beb50 100644
--- a/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/class/dstr-meth-static-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-ary.js b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-ary.js
index 263f3b84b8dd98922514533852480e0e0bbff4cb..d401042b7285e63af1e18ac938365be66a88945f 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-id.js b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-id.js
index a61c9a964d34380e8fa7740d5a174fe2a729cde0..a3908287d80f1785253463409d649c0316f539af 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-obj.js b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-obj.js
index d5aa4120b61b5e4b765b48d59ec6c9284d805717..f4b3e181ac6b5e247bd722327199870625448cb0 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
index 1632b535f997937cebb14da7be0add261d7e001c..5aef394cad2fa6f3bb26512764103a0f507b1553 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-id.js b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-id.js
index c8095b1607156e59cff671d7fe7b94cf1367caf1..2132fec76175970121cbaca92c0856e177e202f0 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
index b7394c80486fc60c863d154b289898263d396336..d323163913b9e36a8c9147ef483fdf73fa48ea54 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/gen-method-param-dflt-yield.js b/test/language/statements/class/gen-method-param-dflt-yield.js
index 708120b2b5160f9f31bbe9f20cdb959e14751866..1f0984718301ecb421901691acbe88fc0fec193e 100644
--- a/test/language/statements/class/gen-method-param-dflt-yield.js
+++ b/test/language/statements/class/gen-method-param-dflt-yield.js
@@ -15,7 +15,9 @@ info: |
   function because any expressions that are part of FormalParameters are
   evaluated before the resulting generator object is in a resumable state.
 features: [generators, default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 class C {
diff --git a/test/language/statements/class/getter-param-dflt.js b/test/language/statements/class/getter-param-dflt.js
index 460bec80b82d63d8935132926ed6f219fcd02166..4e0db483254ee3c7181874ed65e028d2521b132b 100644
--- a/test/language/statements/class/getter-param-dflt.js
+++ b/test/language/statements/class/getter-param-dflt.js
@@ -13,7 +13,9 @@ info: |
 
     get PropertyName[?Yield] ( ) { FunctionBody }
 features: [default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 class C { get a(param = null) {} }
diff --git a/test/language/statements/class/method-param-yield.js b/test/language/statements/class/method-param-yield.js
index 244c1e8945e0f7c251f7e821c0be36041400d55c..a8461d4c69bba393d9c7e37f1f5b90651ff24225 100644
--- a/test/language/statements/class/method-param-yield.js
+++ b/test/language/statements/class/method-param-yield.js
@@ -10,7 +10,9 @@ info: |
 
     PropertyName[?Yield] ( StrictFormalParameters ) { FunctionBody }
 features: [generators, default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 class C {
diff --git a/test/language/statements/class/params-dflt-gen-meth-duplicates.js b/test/language/statements/class/params-dflt-gen-meth-duplicates.js
index 332f0623f05ad509bc3d9dcfc5d7ea6a7811a896..10878fa42bdca3c13c628e778add245b9cf0cfe6 100644
--- a/test/language/statements/class/params-dflt-gen-meth-duplicates.js
+++ b/test/language/statements/class/params-dflt-gen-meth-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/params-dflt-gen-meth-rest.js b/test/language/statements/class/params-dflt-gen-meth-rest.js
index 29a37231a029f1eb0fa4fbe206376a3f4497c051..4f1277a6b4d076e6a098dd626471565309227d30 100644
--- a/test/language/statements/class/params-dflt-gen-meth-rest.js
+++ b/test/language/statements/class/params-dflt-gen-meth-rest.js
@@ -7,7 +7,9 @@ esid: sec-class-definitions-runtime-semantics-evaluation
 es6id: 14.5.16
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/params-dflt-gen-meth-static-duplicates.js b/test/language/statements/class/params-dflt-gen-meth-static-duplicates.js
index f7c866e7626edadae21cc712acb9192fe076f25e..ce0137feedb119bc3904db7bccf5dcc0fd0f9937 100644
--- a/test/language/statements/class/params-dflt-gen-meth-static-duplicates.js
+++ b/test/language/statements/class/params-dflt-gen-meth-static-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/params-dflt-gen-meth-static-rest.js b/test/language/statements/class/params-dflt-gen-meth-static-rest.js
index 61fd2b452536f4ee50c5f14cc7e9ceaa72724814..4e0d22162758dd4bf9fff94e6639d5e3e02d1f3f 100644
--- a/test/language/statements/class/params-dflt-gen-meth-static-rest.js
+++ b/test/language/statements/class/params-dflt-gen-meth-static-rest.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/params-dflt-meth-duplicates.js b/test/language/statements/class/params-dflt-meth-duplicates.js
index 80ec29e6e0970c75304f27e6c354789c452742a0..df9d05b233e7375e3b73907020bc750ad2a50d74 100644
--- a/test/language/statements/class/params-dflt-meth-duplicates.js
+++ b/test/language/statements/class/params-dflt-meth-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/params-dflt-meth-rest.js b/test/language/statements/class/params-dflt-meth-rest.js
index 4a5c2530dcf319e84576406dd41751dcc263857c..5c58315916b0d5bea4cdda8065cff2cfec739d69 100644
--- a/test/language/statements/class/params-dflt-meth-rest.js
+++ b/test/language/statements/class/params-dflt-meth-rest.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/params-dflt-meth-static-duplicates.js b/test/language/statements/class/params-dflt-meth-static-duplicates.js
index 63eb7c0feb21e516886056d572d026ccc1342b33..55db3e3f21ea16a42e0903bcb9e0cf1fc52f47e2 100644
--- a/test/language/statements/class/params-dflt-meth-static-duplicates.js
+++ b/test/language/statements/class/params-dflt-meth-static-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/params-dflt-meth-static-rest.js b/test/language/statements/class/params-dflt-meth-static-rest.js
index 5d47e12dbcd850eeaf46648f05f5cc26fb670071..15033729439b3a9d4959bd8f80e75ac32851d3d0 100644
--- a/test/language/statements/class/params-dflt-meth-static-rest.js
+++ b/test/language/statements/class/params-dflt-meth-static-rest.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-bindingclassdeclarationevaluation
 es6id: 14.5.15
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     ClassDeclaration : class BindingIdentifier ClassTail
 
diff --git a/test/language/statements/class/static-gen-method-param-dflt-yield.js b/test/language/statements/class/static-gen-method-param-dflt-yield.js
index 903c8eeba314c60f40306d46fc177fccf8f73590..31a0c074cfa65c28b30cb0469fd4ef04f1e104ca 100644
--- a/test/language/statements/class/static-gen-method-param-dflt-yield.js
+++ b/test/language/statements/class/static-gen-method-param-dflt-yield.js
@@ -15,7 +15,9 @@ info: |
   function because any expressions that are part of FormalParameters are
   evaluated before the resulting generator object is in a resumable state.
 features: [generators, default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 class C {
diff --git a/test/language/statements/class/static-method-param-yield.js b/test/language/statements/class/static-method-param-yield.js
index be2fc130021108b77a5013afca6389c7b39958ac..263b50f6b1d19156a1b8c84446177efb93516aa7 100644
--- a/test/language/statements/class/static-method-param-yield.js
+++ b/test/language/statements/class/static-method-param-yield.js
@@ -10,7 +10,9 @@ info: |
 
     PropertyName[?Yield] ( StrictFormalParameters ) { FunctionBody }
 features: [generators, default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 class C {
diff --git a/test/language/statements/class/strict-mode/with.js b/test/language/statements/class/strict-mode/with.js
index 75858186d5c095595b5eb9faae5430a25ab717c2..b1a619fc8995a6b96c439bdbf91dc6fadf619ec3 100644
--- a/test/language/statements/class/strict-mode/with.js
+++ b/test/language/statements/class/strict-mode/with.js
@@ -4,7 +4,9 @@
 es6id: 14.5
 description: >
     class strict mode: `with` disallowed
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 class C extends (function B() { with ({}); return B; }()) {}
diff --git a/test/language/statements/class/syntax/early-errors/class-body-contains-multiple-constructor.js b/test/language/statements/class/syntax/early-errors/class-body-contains-multiple-constructor.js
index a40ed2472406c52e7e4d617bf45857d35e378d82..f2452f6fbe9348ad2a72eade5ebbb2af2da62755 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-contains-multiple-constructor.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-contains-multiple-constructor.js
@@ -7,7 +7,9 @@ description: >
 
     It is a Syntax Error if PrototypePropertyNameList of ClassElementList contains more than one occurrence of "constructor".
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   constructor() {}
diff --git a/test/language/statements/class/syntax/early-errors/class-body-has-direct-super-missing-class-heritage.js b/test/language/statements/class/syntax/early-errors/class-body-has-direct-super-missing-class-heritage.js
index 07a9c5d879611562975fef0560678a470c669678..0b759115ff0e4801f9471d7f7c4f15dc731e85ed 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-has-direct-super-missing-class-heritage.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-has-direct-super-missing-class-heritage.js
@@ -10,7 +10,9 @@ description: >
       2. If constructor is empty, return false.
       3. Return HasDirectSuper of constructor.
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   constructor() {
diff --git a/test/language/statements/class/syntax/early-errors/class-body-method-contains-direct-super.js b/test/language/statements/class/syntax/early-errors/class-body-method-contains-direct-super.js
index f44157bb93b3b0dc1a8b3655cdc66b2038d0688f..7f5d66760e58de0d617beeae61e7f4565fc4fa94 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-method-contains-direct-super.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-method-contains-direct-super.js
@@ -7,7 +7,9 @@ description: >
 
     It is a Syntax Error if PropName of MethodDefinition is not "constructor" and HasDirectSuper of MethodDefinition is true.
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   method() {
diff --git a/test/language/statements/class/syntax/early-errors/class-body-special-method-generator-contains-direct-super.js b/test/language/statements/class/syntax/early-errors/class-body-special-method-generator-contains-direct-super.js
index e850d38da8bd636b0bee967f1e4fd6a8a736859e..5d665efd5dc54dbff7b09e38faef065ac8598f8a 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-special-method-generator-contains-direct-super.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-special-method-generator-contains-direct-super.js
@@ -9,7 +9,9 @@ description: >
 
     (GeneratorMethod)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   * method() {
diff --git a/test/language/statements/class/syntax/early-errors/class-body-special-method-generator-propname-constructor.js b/test/language/statements/class/syntax/early-errors/class-body-special-method-generator-propname-constructor.js
index aad5526bafe4ac43d0d3450ac01e3883f17c5d9d..b5888db49eb0e84d6a9f1e3e92fde3a71771580e 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-special-method-generator-propname-constructor.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-special-method-generator-propname-constructor.js
@@ -9,7 +9,9 @@ description: >
 
     (GeneratorMethod)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   * constructor() {}
diff --git a/test/language/statements/class/syntax/early-errors/class-body-special-method-get-contains-direct-super.js b/test/language/statements/class/syntax/early-errors/class-body-special-method-get-contains-direct-super.js
index 1cabc3a7e735df0106bb7a136481cb413c68a61d..0bb2db262671f75fb93ae6055dcfa01a8b877552 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-special-method-get-contains-direct-super.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-special-method-get-contains-direct-super.js
@@ -9,7 +9,9 @@ description: >
 
     (get)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   get method() {
diff --git a/test/language/statements/class/syntax/early-errors/class-body-special-method-get-propname-constructor.js b/test/language/statements/class/syntax/early-errors/class-body-special-method-get-propname-constructor.js
index 5cf769a3fd88b67b79adb318ae1b06ecef31534e..c48d155928061c1b96bf90cafaee6bb5949586bb 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-special-method-get-propname-constructor.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-special-method-get-propname-constructor.js
@@ -9,7 +9,9 @@ description: >
 
     (get)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   get constructor() {}
diff --git a/test/language/statements/class/syntax/early-errors/class-body-special-method-set-contains-direct-super.js b/test/language/statements/class/syntax/early-errors/class-body-special-method-set-contains-direct-super.js
index 11a636583f3bd63e1d3c5b173346c05ab767fd6f..1132f0a87a512a7a8738dd0cdb3cd7265d7b0ea0 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-special-method-set-contains-direct-super.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-special-method-set-contains-direct-super.js
@@ -9,7 +9,9 @@ description: >
 
     (set)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   set method(_) {
diff --git a/test/language/statements/class/syntax/early-errors/class-body-special-method-set-propname-constructor.js b/test/language/statements/class/syntax/early-errors/class-body-special-method-set-propname-constructor.js
index e0f3e48aced043b839f8be6bc8b62d2918a1c2f2..500da9c523b54531cc0c1dbc055be3a4de9feff5 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-special-method-set-propname-constructor.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-special-method-set-propname-constructor.js
@@ -9,7 +9,9 @@ description: >
 
     (set)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   set constructor(_) {}
diff --git a/test/language/statements/class/syntax/early-errors/class-body-static-method-contains-direct-super.js b/test/language/statements/class/syntax/early-errors/class-body-static-method-contains-direct-super.js
index c5981097b126038a72f355ddda6cdbf74743892d..b738c74cf7285a3b5d19c233ccac2e67e8e076cf 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-static-method-contains-direct-super.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-static-method-contains-direct-super.js
@@ -7,7 +7,9 @@ description: >
 
     It is a Syntax Error if HasDirectSuper of MethodDefinition is true.
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   static method() {
diff --git a/test/language/statements/class/syntax/early-errors/class-body-static-method-get-contains-direct-super.js b/test/language/statements/class/syntax/early-errors/class-body-static-method-get-contains-direct-super.js
index 4b1c412a63689340696b1a5c1ba2a9826e468e47..98918d166a5bd8c8b798c3fb3f4de53543ad14e3 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-static-method-get-contains-direct-super.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-static-method-get-contains-direct-super.js
@@ -9,7 +9,9 @@ description: >
 
     (get)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   static get method() {
diff --git a/test/language/statements/class/syntax/early-errors/class-body-static-method-get-propname-prototype.js b/test/language/statements/class/syntax/early-errors/class-body-static-method-get-propname-prototype.js
index 67afb020eac472d060233fccec715761c3d89adb..294f0552226a1ed3061a6a8956debadaae76f815 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-static-method-get-propname-prototype.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-static-method-get-propname-prototype.js
@@ -9,7 +9,9 @@ description: >
 
     (get)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   static get prototype() {}
diff --git a/test/language/statements/class/syntax/early-errors/class-body-static-method-propname-prototype.js b/test/language/statements/class/syntax/early-errors/class-body-static-method-propname-prototype.js
index 6ea780588ed5933be1a305d5bc49c0587a25dbed..abd42901d3308844495a83d20432ec7d37fed155 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-static-method-propname-prototype.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-static-method-propname-prototype.js
@@ -7,7 +7,9 @@ description: >
 
     It is a Syntax Error if PropName of MethodDefinition is "prototype".
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   static prototype() {}
diff --git a/test/language/statements/class/syntax/early-errors/class-body-static-method-set-contains-direct-super.js b/test/language/statements/class/syntax/early-errors/class-body-static-method-set-contains-direct-super.js
index fe7f6c52adb3e7b546461bca0d4a756387d2d18e..05de3dfc049bb6705e48bd6b61d6455d9ebd7c24 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-static-method-set-contains-direct-super.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-static-method-set-contains-direct-super.js
@@ -9,7 +9,9 @@ description: >
 
     (set)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   static set method(_) {
diff --git a/test/language/statements/class/syntax/early-errors/class-body-static-method-set-propname-prototype.js b/test/language/statements/class/syntax/early-errors/class-body-static-method-set-propname-prototype.js
index 03e104010c05b53e393fcca264bc3f3ba792db92..10f1a7716ff37eecd5a090586bec33d2b65c1bf2 100644
--- a/test/language/statements/class/syntax/early-errors/class-body-static-method-set-propname-prototype.js
+++ b/test/language/statements/class/syntax/early-errors/class-body-static-method-set-propname-prototype.js
@@ -9,7 +9,9 @@ description: >
 
     (set)
 
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {
   static set prototype() {}
diff --git a/test/language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js b/test/language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js
index 22e4c97ffda4915be19ed64f54b16f790641dfa3..80779355d0ffe10f9618b1b4aca43bbd0611bc13 100644
--- a/test/language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js
+++ b/test/language/statements/class/syntax/early-errors/class-definition-evaluation-block-duplicate-binding.js
@@ -6,7 +6,9 @@ description: >
     Block : { StatementList }
 
     It is a Syntax Error if the LexicallyDeclaredNames of StatementList contains any duplicate entries.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 {
   class A {}
diff --git a/test/language/statements/class/syntax/early-errors/class-definition-evaluation-scriptbody-duplicate-binding.js b/test/language/statements/class/syntax/early-errors/class-definition-evaluation-scriptbody-duplicate-binding.js
index 81f19676377df5e60f0ce2c91b9b090a14553008..1e5b1fd1eaa134d82b4783b0c0707e63a84cbdbe 100644
--- a/test/language/statements/class/syntax/early-errors/class-definition-evaluation-scriptbody-duplicate-binding.js
+++ b/test/language/statements/class/syntax/early-errors/class-definition-evaluation-scriptbody-duplicate-binding.js
@@ -6,7 +6,9 @@ description: >
     ScriptBody : StatementList
 
     It is a Syntax Error if the LexicallyDeclaredNames of StatementList contains any duplicate entries.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 class A {}
 class A {}
diff --git a/test/language/statements/const/dstr-ary-ptrn-rest-init-ary.js b/test/language/statements/const/dstr-ary-ptrn-rest-init-ary.js
index 3631e50ca45b60362855ceb4a5934b7f8815df6f..f5ac2f8d0e40f80b22881d2e8180d71dfa2d853f 100644
--- a/test/language/statements/const/dstr-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/const/dstr-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/const/dstr-ary-ptrn-rest-init-id.js b/test/language/statements/const/dstr-ary-ptrn-rest-init-id.js
index f1a2bc47189b1ef40cfacd0d0010c13f6ffe3b25..0d980e7d92ec823f1826531bc5b7284ef603f4cb 100644
--- a/test/language/statements/const/dstr-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/const/dstr-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/const/dstr-ary-ptrn-rest-init-obj.js b/test/language/statements/const/dstr-ary-ptrn-rest-init-obj.js
index 36808de24006d2d4eb15e1487e7a7749111b7305..29cac8a91c3be52374a24c07dfff97d68952fdce 100644
--- a/test/language/statements/const/dstr-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/const/dstr-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/const/dstr-ary-ptrn-rest-not-final-ary.js b/test/language/statements/const/dstr-ary-ptrn-rest-not-final-ary.js
index d4db64bde32cc727d7983e7f5ea074f8af8dcd63..8663aa1067ae515c07e077d534bce35fe72c0253 100644
--- a/test/language/statements/const/dstr-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/const/dstr-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/const/dstr-ary-ptrn-rest-not-final-id.js b/test/language/statements/const/dstr-ary-ptrn-rest-not-final-id.js
index 343f2dd9656daedd50468643858a6da5ef47a3c6..a5cdb33dc090c1796cfc25888ca116f2d2f2511b 100644
--- a/test/language/statements/const/dstr-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/const/dstr-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/const/dstr-ary-ptrn-rest-not-final-obj.js b/test/language/statements/const/dstr-ary-ptrn-rest-not-final-obj.js
index 6f48b9ce531a95eee69f1757d01eff01be52bf8b..3936b25890b2a5f13d2183addb035f6850ec02de 100644
--- a/test/language/statements/const/dstr-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/const/dstr-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/const/global-use-before-initialization-in-declaration-statement.js b/test/language/statements/const/global-use-before-initialization-in-declaration-statement.js
index cfe298063e230742e63e7d339df598b32ae55c6c..1e44bc242b71f3640d69faae49848f7aab681c6a 100644
--- a/test/language/statements/const/global-use-before-initialization-in-declaration-statement.js
+++ b/test/language/statements/const/global-use-before-initialization-in-declaration-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const: global use before initialization in declaration statement.
     (TDZ, Temporal Dead Zone)
-negative: ReferenceError
+negative:
+  phase: runtime
+  type: ReferenceError
 ---*/
 const x = x + 1;
diff --git a/test/language/statements/const/global-use-before-initialization-in-prior-statement.js b/test/language/statements/const/global-use-before-initialization-in-prior-statement.js
index 399df2bffab66ace07e2a4c94014f6832901e25d..56ba7b265e4d55dce10298356332656394ce05db 100644
--- a/test/language/statements/const/global-use-before-initialization-in-prior-statement.js
+++ b/test/language/statements/const/global-use-before-initialization-in-prior-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const: global use before initialization in prior statement.
     (TDZ, Temporal Dead Zone)
-negative: ReferenceError
+negative:
+  phase: runtime
+  type: ReferenceError
 ---*/
 x; const x = 1;
diff --git a/test/language/statements/const/redeclaration-error-from-within-strict-mode-function-const.js b/test/language/statements/const/redeclaration-error-from-within-strict-mode-function-const.js
index 7077a0fdb5f0d51e3607c82f3e465296538e6666..74863da56874422140405da438b3052306361626 100644
--- a/test/language/statements/const/redeclaration-error-from-within-strict-mode-function-const.js
+++ b/test/language/statements/const/redeclaration-error-from-within-strict-mode-function-const.js
@@ -4,7 +4,9 @@
 es6id: 13.1
 description: >
     Redeclaration error within strict mode function inside non-strict code.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 (function() { 'use strict'; { const f = 1; var f; } })
diff --git a/test/language/statements/const/syntax/block-scope-syntax-const-declarations-mixed-with-without-initialiser.js b/test/language/statements/const/syntax/block-scope-syntax-const-declarations-mixed-with-without-initialiser.js
index c77cc74962e5ec775016050095aa367776b9b5f8..cde8810b16a5bf38933cf7a83b388ea28e091b99 100644
--- a/test/language/statements/const/syntax/block-scope-syntax-const-declarations-mixed-with-without-initialiser.js
+++ b/test/language/statements/const/syntax/block-scope-syntax-const-declarations-mixed-with-without-initialiser.js
@@ -4,7 +4,9 @@
 es6id: 13.1
 description: >
     const declarations mixed: with, without initialiser
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 const x = 1, y;
 
diff --git a/test/language/statements/const/syntax/block-scope-syntax-const-declarations-mixed-without-with-initialiser.js b/test/language/statements/const/syntax/block-scope-syntax-const-declarations-mixed-without-with-initialiser.js
index b80fe15099b429a037e6823f6f636b1b5bd18191..bd4d8ad1e99f8d2b6a5d0c32156a3965b756e29e 100644
--- a/test/language/statements/const/syntax/block-scope-syntax-const-declarations-mixed-without-with-initialiser.js
+++ b/test/language/statements/const/syntax/block-scope-syntax-const-declarations-mixed-without-with-initialiser.js
@@ -4,7 +4,9 @@
 es6id: 13.1
 description: >
     const declarations mixed: without, with initialiser
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 const x, y = 1;
 
diff --git a/test/language/statements/const/syntax/block-scope-syntax-const-declarations-without-initialiser.js b/test/language/statements/const/syntax/block-scope-syntax-const-declarations-without-initialiser.js
index acc7f5bd07bcbbcf4119575f9b21d62e767b9c30..a19ea69ce2e77b9656333319c433e13ac227b1a1 100644
--- a/test/language/statements/const/syntax/block-scope-syntax-const-declarations-without-initialiser.js
+++ b/test/language/statements/const/syntax/block-scope-syntax-const-declarations-without-initialiser.js
@@ -4,7 +4,9 @@
 es6id: 13.1
 description: >
     const declarations without initialiser
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 const x;
 
diff --git a/test/language/statements/const/syntax/const-declaring-let-split-across-two-lines.js b/test/language/statements/const/syntax/const-declaring-let-split-across-two-lines.js
index e6d9a0108f175547f0a2d37734ae3d97ead10be8..10fcbf36aa521b74b68eb8782310f6ae9faedfc6 100644
--- a/test/language/statements/const/syntax/const-declaring-let-split-across-two-lines.js
+++ b/test/language/statements/const/syntax/const-declaring-let-split-across-two-lines.js
@@ -8,9 +8,10 @@ description: >
     const: |const let| split across two lines is a static semantics early error.
 info: >
   Lexical declarations may not declare a binding named "let".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
-throw NotEarlyError;
 
 const
 let = "irrelevant initializer";
diff --git a/test/language/statements/const/syntax/with-initializer-do-statement-while-expression.js b/test/language/statements/const/syntax/with-initializer-do-statement-while-expression.js
index b145b91b12f9f4acba3364c2274347cf0d089873..8cb66c374ce3d9113271b0b536265eae50c07b05 100644
--- a/test/language/statements/const/syntax/with-initializer-do-statement-while-expression.js
+++ b/test/language/statements/const/syntax/with-initializer-do-statement-while-expression.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations with initialisers in statement positions: 
     do Statement while ( Expression )
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 do const x = 1; while (false)
diff --git a/test/language/statements/const/syntax/with-initializer-for-statement.js b/test/language/statements/const/syntax/with-initializer-for-statement.js
index 3e9667a08b15579cd7bca6331a5cbd63b96c46ad..571125e68896a19c4d50f691ae96428ecc7ce1b2 100644
--- a/test/language/statements/const/syntax/with-initializer-for-statement.js
+++ b/test/language/statements/const/syntax/with-initializer-for-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations with initialisers in statement positions: 
     for ( ;;) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (;false;) const x = 1;
diff --git a/test/language/statements/const/syntax/with-initializer-if-expression-statement-else-statement.js b/test/language/statements/const/syntax/with-initializer-if-expression-statement-else-statement.js
index 2e4826da4bc8a62376fd9552e8fd95a01844fdd9..c710482d2a6edb3ebacfdd3b6117deef9725f6fa 100644
--- a/test/language/statements/const/syntax/with-initializer-if-expression-statement-else-statement.js
+++ b/test/language/statements/const/syntax/with-initializer-if-expression-statement-else-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations with initialisers in statement positions: 
     if ( Expression ) Statement else Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 if (true) {} else const x = 1;
diff --git a/test/language/statements/const/syntax/with-initializer-if-expression-statement.js b/test/language/statements/const/syntax/with-initializer-if-expression-statement.js
index 6ecb959ae0bf844ab518ce53c748320f44ac32cc..f485a5ca77d06e8f044eac40d9d6c22a5fbedf3f 100644
--- a/test/language/statements/const/syntax/with-initializer-if-expression-statement.js
+++ b/test/language/statements/const/syntax/with-initializer-if-expression-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations with initialisers in statement positions: 
     if ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 if (true) const x = 1;
diff --git a/test/language/statements/const/syntax/with-initializer-label-statement.js b/test/language/statements/const/syntax/with-initializer-label-statement.js
index d6b4d144ca464582b2bed59a4b88e3ee8283f2dc..432c2d37449b57dfd358667a6d5f6e4ab5211ce8 100644
--- a/test/language/statements/const/syntax/with-initializer-label-statement.js
+++ b/test/language/statements/const/syntax/with-initializer-label-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations with initialisers in statement positions: 
     label: Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 label: const x = 1;
diff --git a/test/language/statements/const/syntax/with-initializer-while-expression-statement.js b/test/language/statements/const/syntax/with-initializer-while-expression-statement.js
index 7c0ffab5d250f5f915a066b7f35860d455a30bfb..7d35cfeb5c0073856e5160166a218f63f37c0964 100644
--- a/test/language/statements/const/syntax/with-initializer-while-expression-statement.js
+++ b/test/language/statements/const/syntax/with-initializer-while-expression-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations with initialisers in statement positions: 
     while ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 while (false) const x = 1;
diff --git a/test/language/statements/const/syntax/without-initializer-case-expression-statement-list.js b/test/language/statements/const/syntax/without-initializer-case-expression-statement-list.js
index 542f2107f8ae5c5216d0be767b39f94fd90656b3..6656dd493595eaef5504256f6e529b9b353349b1 100644
--- a/test/language/statements/const/syntax/without-initializer-case-expression-statement-list.js
+++ b/test/language/statements/const/syntax/without-initializer-case-expression-statement-list.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations without initialisers in statement positions: 
     case Expression : StatementList
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 switch (true) { case true: const x; }
diff --git a/test/language/statements/const/syntax/without-initializer-default-statement-list.js b/test/language/statements/const/syntax/without-initializer-default-statement-list.js
index 7af1230546cf9fcaf8754a7ff044527ff37fb29f..1d5c088e3518c34bc56898a14a7897590968f48b 100644
--- a/test/language/statements/const/syntax/without-initializer-default-statement-list.js
+++ b/test/language/statements/const/syntax/without-initializer-default-statement-list.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations without initialisers in statement positions: 
     default : StatementList
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 switch (true) { default: const x; }
diff --git a/test/language/statements/const/syntax/without-initializer-do-statement-while-expression.js b/test/language/statements/const/syntax/without-initializer-do-statement-while-expression.js
index f0fa50472ea48682f9504510391ce5bedcf67b28..d8e5f62d2ff4315afdc760535cdadb1417b00ba1 100644
--- a/test/language/statements/const/syntax/without-initializer-do-statement-while-expression.js
+++ b/test/language/statements/const/syntax/without-initializer-do-statement-while-expression.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations without initialisers in statement positions: 
     do Statement while ( Expression )
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 do const x; while (false)
diff --git a/test/language/statements/const/syntax/without-initializer-for-statement.js b/test/language/statements/const/syntax/without-initializer-for-statement.js
index f1c4a535ae4d3f29e96eba0cc3419cf2add50a07..5ef41674c604ef04b67d2cbeab8222bfe770c836 100644
--- a/test/language/statements/const/syntax/without-initializer-for-statement.js
+++ b/test/language/statements/const/syntax/without-initializer-for-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations without initialisers in statement positions: 
     for ( ;;) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (;false;) const x;
diff --git a/test/language/statements/const/syntax/without-initializer-if-expression-statement-else-statement.js b/test/language/statements/const/syntax/without-initializer-if-expression-statement-else-statement.js
index af8e62312a48e64168520d3b35b1019e8ee5704c..a0c3043e9be608a3e32c7fa5010e6a7fb5bfe88b 100644
--- a/test/language/statements/const/syntax/without-initializer-if-expression-statement-else-statement.js
+++ b/test/language/statements/const/syntax/without-initializer-if-expression-statement-else-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations without initialisers in statement positions: 
     if ( Expression ) Statement else Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 if (true) {} else const x;
diff --git a/test/language/statements/const/syntax/without-initializer-if-expression-statement.js b/test/language/statements/const/syntax/without-initializer-if-expression-statement.js
index a93aa3d7b70ee40ad30579e2dd194c544df95493..e84e357e1a64331ce4176bc0c1fc0ce7657af166 100644
--- a/test/language/statements/const/syntax/without-initializer-if-expression-statement.js
+++ b/test/language/statements/const/syntax/without-initializer-if-expression-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations without initialisers in statement positions: 
     if ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 if (true) const x;
diff --git a/test/language/statements/const/syntax/without-initializer-label-statement.js b/test/language/statements/const/syntax/without-initializer-label-statement.js
index 39279abcae70db06d48c7a3b93ff442e712e934d..d7cfd173f407d43ed5f5d27863b9977672f572aa 100644
--- a/test/language/statements/const/syntax/without-initializer-label-statement.js
+++ b/test/language/statements/const/syntax/without-initializer-label-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations without initialisers in statement positions: 
     label: Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 label: const x;
diff --git a/test/language/statements/const/syntax/without-initializer-while-expression-statement.js b/test/language/statements/const/syntax/without-initializer-while-expression-statement.js
index 9210efce8243776583724a8f6753ec9b3f3e0179..f726a94cc71be31b0f0c8da24004a54e15809e55 100644
--- a/test/language/statements/const/syntax/without-initializer-while-expression-statement.js
+++ b/test/language/statements/const/syntax/without-initializer-while-expression-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     const declarations without initialisers in statement positions: 
     while ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 while (false) const x;
diff --git a/test/language/statements/continue/S12.7_A1_T1.js b/test/language/statements/continue/S12.7_A1_T1.js
index b93a188952f2dd67a2ecd9fe20b5fe6004ba4466..367ee71e77d146577dc91109f521a34ac4817af9 100644
--- a/test/language/statements/continue/S12.7_A1_T1.js
+++ b/test/language/statements/continue/S12.7_A1_T1.js
@@ -7,7 +7,9 @@ es5id: 12.7_A1_T1
 description: >
     Checking if execution of single "continue" without any
     IterationStatement fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/continue/S12.7_A1_T2.js b/test/language/statements/continue/S12.7_A1_T2.js
index 3f64dc48f93fc392ee155414abc2381826b6d066..de01cbdfee9375f4702c51b6b8766d0c4679f656 100644
--- a/test/language/statements/continue/S12.7_A1_T2.js
+++ b/test/language/statements/continue/S12.7_A1_T2.js
@@ -7,7 +7,9 @@ es5id: 12.7_A1_T2
 description: >
     Checking if single "continue" with Label but without any
     IterationStatement fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 LABEL : x=3.14;
diff --git a/test/language/statements/continue/S12.7_A1_T3.js b/test/language/statements/continue/S12.7_A1_T3.js
index 5dc269fa757568ef11fff410743bce34b69a1bf4..a3a77601b260a25f05c616e52cc83aaed4ad36ea 100644
--- a/test/language/statements/continue/S12.7_A1_T3.js
+++ b/test/language/statements/continue/S12.7_A1_T3.js
@@ -7,7 +7,9 @@ es5id: 12.7_A1_T3
 description: >
     Checking if laballed "continue" with no IterationStatement, placed
     into a block, fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 LABEL : x=3.14;
diff --git a/test/language/statements/continue/S12.7_A1_T4.js b/test/language/statements/continue/S12.7_A1_T4.js
index f766c3390a65a1cc3bb67d296b16dcb3eab91718..58c2ba0448c417a3b6bba72e71e4f30e4c168b81 100644
--- a/test/language/statements/continue/S12.7_A1_T4.js
+++ b/test/language/statements/continue/S12.7_A1_T4.js
@@ -7,7 +7,9 @@ es5id: 12.7_A1_T4
 description: >
     Checking if execution of "continue" with no IterationStatement,
     placed into a block, fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/continue/S12.7_A5_T1.js b/test/language/statements/continue/S12.7_A5_T1.js
index 48980dd7a28ecdbcc8a96fc3ba80f0ffa41e0275..9a553b6b18d169bcb52f849070a4b93ca05ba613 100644
--- a/test/language/statements/continue/S12.7_A5_T1.js
+++ b/test/language/statements/continue/S12.7_A5_T1.js
@@ -8,7 +8,9 @@ info: >
     IterationStatement
 es5id: 12.7_A5_T1
 description: Trying to continue another labeled loop
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 LABEL_OUT : var x=0, y=0;
diff --git a/test/language/statements/continue/S12.7_A5_T2.js b/test/language/statements/continue/S12.7_A5_T2.js
index e31903c2c79d3a171234663b1e0eaa6aae0cc072..248eb84f11a0378e7a2ee6cde0ea6529a0f4d201 100644
--- a/test/language/statements/continue/S12.7_A5_T2.js
+++ b/test/language/statements/continue/S12.7_A5_T2.js
@@ -8,7 +8,9 @@ info: >
     IterationStatement
 es5id: 12.7_A5_T2
 description: Identifier is a function name
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 LABEL_OUT : var x=0, y=0;
diff --git a/test/language/statements/continue/S12.7_A5_T3.js b/test/language/statements/continue/S12.7_A5_T3.js
index 1f7b0226f05a2212b9fc580e1e714979af9c0c25..e00bf8c787ae7c6ddaf9fb935ba39be220d74ff3 100644
--- a/test/language/statements/continue/S12.7_A5_T3.js
+++ b/test/language/statements/continue/S12.7_A5_T3.js
@@ -8,7 +8,9 @@ info: >
     IterationStatement
 es5id: 12.7_A5_T3
 description: Identifier is within loop label
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 LABEL_OUT : var x=0, y=0;
diff --git a/test/language/statements/continue/S12.7_A6.js b/test/language/statements/continue/S12.7_A6.js
index 48d0646b2a5abee418aa531f5d9d0bb4e5f41d20..4a98557171040a8ac01bf2483517d5fabb7c6077 100644
--- a/test/language/statements/continue/S12.7_A6.js
+++ b/test/language/statements/continue/S12.7_A6.js
@@ -7,7 +7,9 @@ info: >
     IterationStatement yields SyntaxError
 es5id: 12.7_A6
 description: Using labaled "continue Identifier" within a function body
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x=0,y=0;
diff --git a/test/language/statements/continue/S12.7_A8_T1.js b/test/language/statements/continue/S12.7_A8_T1.js
index 68e2e22d58a3697541b91a3a8ddb14dd8cce12bb..ba4197939a783feb17fb13867a3fd63152b9d919 100644
--- a/test/language/statements/continue/S12.7_A8_T1.js
+++ b/test/language/statements/continue/S12.7_A8_T1.js
@@ -7,7 +7,9 @@ es5id: 12.7_A8_T1
 description: >
     Checking if execution of "continue Identifier" within catch Block
     fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x=0,y=0;
diff --git a/test/language/statements/continue/S12.7_A8_T2.js b/test/language/statements/continue/S12.7_A8_T2.js
index 005df354e10d6e237396fff2a80bcca158a0726e..5c3c10072b81be877a7dd44f776e69e4bc7069da 100644
--- a/test/language/statements/continue/S12.7_A8_T2.js
+++ b/test/language/statements/continue/S12.7_A8_T2.js
@@ -5,7 +5,9 @@
 info: Appearing of "continue" within a "try/catch" Block yields SyntaxError
 es5id: 12.7_A8_T2
 description: Checking if execution of "continue" within catch Block fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x=0,y=0;
diff --git a/test/language/statements/debugger/expression.js b/test/language/statements/debugger/expression.js
index c335e4e2b54a1de182647f6fa6ce169069897ec9..1b965da36c2438ee2e8a984f093cdfcfa49a7b12 100644
--- a/test/language/statements/debugger/expression.js
+++ b/test/language/statements/debugger/expression.js
@@ -4,7 +4,9 @@
 description: The `debugger` token may not occupy an expression position
 esid: sec-debugger-statement
 es6id: 13.16
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 (debugger);
diff --git a/test/language/statements/do-while/S12.6.1_A12.js b/test/language/statements/do-while/S12.6.1_A12.js
index a174829c5f9ca0d48591550e282506da125ebfea..999d6d381f400594482d68551c98fc72187976a9 100644
--- a/test/language/statements/do-while/S12.6.1_A12.js
+++ b/test/language/statements/do-while/S12.6.1_A12.js
@@ -5,7 +5,9 @@
 info: Any statement within "do-while" construction must be a compound
 es5id: 12.6.1_A12
 description: Checking if execution of "do var x=1; var y =2; while (0)" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/do-while/S12.6.1_A15.js b/test/language/statements/do-while/S12.6.1_A15.js
index f079896efac8906a43c5f20069e158ea9cc0c036..5c76c385c1a6ffe9c424cbf725379ecec6d4d457 100644
--- a/test/language/statements/do-while/S12.6.1_A15.js
+++ b/test/language/statements/do-while/S12.6.1_A15.js
@@ -5,7 +5,9 @@
 info: Block within a "do-while" Expression is not allowed
 es5id: 12.6.1_A15
 description: Using "{0}" Block as an Expression
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/do-while/S12.6.1_A6_T1.js b/test/language/statements/do-while/S12.6.1_A6_T1.js
index a0aacd85fd7b4a1eb878543d1b3ae0c0d2892de3..2597009ea1037a3f0518593c350d2f5f1afc7951 100644
--- a/test/language/statements/do-while/S12.6.1_A6_T1.js
+++ b/test/language/statements/do-while/S12.6.1_A6_T1.js
@@ -5,7 +5,9 @@
 info: Expression in "do-while" IterationStatement is bracketed with braces
 es5id: 12.6.1_A6_T1
 description: Checking if execution of "do{} while 1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/do-while/S12.6.1_A6_T2.js b/test/language/statements/do-while/S12.6.1_A6_T2.js
index a7686e92c8533611c25f90d8bd49748a992a9596..c63c1bffcdd9bf8048209fed5fa5c2a83572fab1 100644
--- a/test/language/statements/do-while/S12.6.1_A6_T2.js
+++ b/test/language/statements/do-while/S12.6.1_A6_T2.js
@@ -5,7 +5,9 @@
 info: Expression in "do-while" IterationStatement is bracketed with braces
 es5id: 12.6.1_A6_T2
 description: Checking if execution of "do{} while 0" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/do-while/S12.6.1_A6_T3.js b/test/language/statements/do-while/S12.6.1_A6_T3.js
index 4f59089ddc33f336327b4ade2d5e51724cf8d333..fe0c68c05678b77ae247aae244211c4976ad9456 100644
--- a/test/language/statements/do-while/S12.6.1_A6_T3.js
+++ b/test/language/statements/do-while/S12.6.1_A6_T3.js
@@ -5,7 +5,9 @@
 info: Expression in "do-while" IterationStatement is bracketed with braces
 es5id: 12.6.1_A6_T3
 description: Checking if execution of "do{}while true" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/do-while/S12.6.1_A6_T4.js b/test/language/statements/do-while/S12.6.1_A6_T4.js
index 9e77619bcaa7e59a37cb0f0bb45a52465db3d76b..e10fbbf268820e32655d69bb5ccc1960cfb57f69 100644
--- a/test/language/statements/do-while/S12.6.1_A6_T4.js
+++ b/test/language/statements/do-while/S12.6.1_A6_T4.js
@@ -5,7 +5,9 @@
 info: Expression in "do-while" IterationStatement is bracketed with braces
 es5id: 12.6.1_A6_T4
 description: Checking if execution of "do{}while false" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/do-while/S12.6.1_A6_T5.js b/test/language/statements/do-while/S12.6.1_A6_T5.js
index 2182ea4f9af11c92a965714b16b41769649fe6a3..7ad3ebe8aa05c2a4118043f80f5c22e4508e2185 100644
--- a/test/language/statements/do-while/S12.6.1_A6_T5.js
+++ b/test/language/statements/do-while/S12.6.1_A6_T5.js
@@ -5,7 +5,9 @@
 info: Expression in "do-while" IterationStatement is bracketed with braces
 es5id: 12.6.1_A6_T5
 description: Checking if execution of "do{}while ''" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/do-while/S12.6.1_A6_T6.js b/test/language/statements/do-while/S12.6.1_A6_T6.js
index 2ee26417fb30c4026b22e7499eccb6823294e1d0..88b0d79131e51f659e3d44e3b5aa70c395eddb51 100644
--- a/test/language/statements/do-while/S12.6.1_A6_T6.js
+++ b/test/language/statements/do-while/S12.6.1_A6_T6.js
@@ -5,7 +5,9 @@
 info: Expression in "do-while" IterationStatement is bracketed with braces
 es5id: 12.6.1_A6_T6
 description: Checking if execution of "do{}while 'hood'" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/do-while/decl-cls.js b/test/language/statements/do-while/decl-cls.js
index b88a399b8ba855454d066e4dfdb0111d0abcb3bc..f4bea89c81f1b5632f341de71e47c8f410e71ed0 100644
--- a/test/language/statements/do-while/decl-cls.js
+++ b/test/language/statements/do-while/decl-cls.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-do-while-statement
 es6id: 13.7.2
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 do class C {} while (false)
diff --git a/test/language/statements/do-while/decl-const.js b/test/language/statements/do-while/decl-const.js
index 6e8a23a70f1b022e8e1ab830fe80d98ef47e2c94..f1bacdb9e14bdee23df6363db89ccd669682c329 100644
--- a/test/language/statements/do-while/decl-const.js
+++ b/test/language/statements/do-while/decl-const.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-do-while-statement
 es6id: 13.7.2
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 do const x = null; while (false)
diff --git a/test/language/statements/do-while/decl-fun.js b/test/language/statements/do-while/decl-fun.js
index ff94a75480aa77ac6d8ae820d278cfacaf5c9710..a1f104b498b1e5a67a79f25045783ed9bb3e0561 100644
--- a/test/language/statements/do-while/decl-fun.js
+++ b/test/language/statements/do-while/decl-fun.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-do-while-statement
 es6id: 13.7.2
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 do function f() {} while (false)
diff --git a/test/language/statements/do-while/decl-gen.js b/test/language/statements/do-while/decl-gen.js
index 2e47fcc5fd97b15c20291df71e918e725d177227..3fc8778ea8792515e182d5ce37c8645c68d6b13f 100644
--- a/test/language/statements/do-while/decl-gen.js
+++ b/test/language/statements/do-while/decl-gen.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-do-while-statement
 es6id: 13.7.2
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 do function* g() {} while (false)
diff --git a/test/language/statements/do-while/decl-let.js b/test/language/statements/do-while/decl-let.js
index 42c320ea45c3b9d52757e429f929d36278909d59..2392e6a2075bb8882b9379984fb7b6a7807962f4 100644
--- a/test/language/statements/do-while/decl-let.js
+++ b/test/language/statements/do-while/decl-let.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-do-while-statement
 es6id: 13.7.2
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 do let x; while (false)
diff --git a/test/language/statements/do-while/labelled-fn-stmt.js b/test/language/statements/do-while/labelled-fn-stmt.js
index 0469dc9b8fe5d7bc8997af19b876134c52bed578..80f2faf6d43d5556821bb0d2c174885d56b46ad8 100644
--- a/test/language/statements/do-while/labelled-fn-stmt.js
+++ b/test/language/statements/do-while/labelled-fn-stmt.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/expression/S12.4_A1.js b/test/language/statements/expression/S12.4_A1.js
index dc4fe9dc0358f5637eb97c34ec8964a05b2e0b63..7671e3cbfc37ce68298e21fac16c637a3e1b6b1c 100644
--- a/test/language/statements/expression/S12.4_A1.js
+++ b/test/language/statements/expression/S12.4_A1.js
@@ -7,7 +7,9 @@ info: >
     that might make it ambiguous with a FunctionDeclaration
 es5id: 12.4_A1
 description: Checking if execution of "function(){}()" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/for-in/S12.6.4_A15.js b/test/language/statements/for-in/S12.6.4_A15.js
index 64f1e25e1b6639c7f3adaac5af2873db91d5d249..487474793e11d9ba4f33cb284cd10d82148c14f2 100644
--- a/test/language/statements/for-in/S12.6.4_A15.js
+++ b/test/language/statements/for-in/S12.6.4_A15.js
@@ -5,7 +5,9 @@
 info: Block within a "for-in" Expression is not allowed
 es5id: 12.6.4_A15
 description: Using block within "for-in" Expression
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var __arr=[1,2,3];
diff --git a/test/language/statements/for-in/decl-cls.js b/test/language/statements/for-in/decl-cls.js
index 85ff5e16a30590568db239367904a6c6572bc1fd..359f33b1d70772b510c02cfddc55dfde9086dedf 100644
--- a/test/language/statements/for-in/decl-cls.js
+++ b/test/language/statements/for-in/decl-cls.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x in {}) class C {}
diff --git a/test/language/statements/for-in/decl-const.js b/test/language/statements/for-in/decl-const.js
index 3a55cd477d68e98fa55da8f2d4659cb22f2d81d6..527202d75753454439d894c35403c2e3105ac701 100644
--- a/test/language/statements/for-in/decl-const.js
+++ b/test/language/statements/for-in/decl-const.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x in {}) const y = null;
diff --git a/test/language/statements/for-in/decl-fun.js b/test/language/statements/for-in/decl-fun.js
index 29509bc4135c7551f26d949b32a16d85f237120f..5e8c5de56c93064dddb665ffad5a7275e0ccb647 100644
--- a/test/language/statements/for-in/decl-fun.js
+++ b/test/language/statements/for-in/decl-fun.js
@@ -4,7 +4,9 @@
 description: Function declaration not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x in {}) function f() {}
diff --git a/test/language/statements/for-in/decl-gen.js b/test/language/statements/for-in/decl-gen.js
index 4d263ec376e9ef0c3eb751a439b1ff5a62388ef2..0dbf7e3c6652f8b85e3c75d3ccc40053e4b3f01f 100644
--- a/test/language/statements/for-in/decl-gen.js
+++ b/test/language/statements/for-in/decl-gen.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x in {}) function* g() {}
diff --git a/test/language/statements/for-in/decl-let.js b/test/language/statements/for-in/decl-let.js
index 2cf556476d6e1d5ffbd875807617c87a05880e62..0884d32202c6dab63836e12d76876e631c1c02a9 100644
--- a/test/language/statements/for-in/decl-let.js
+++ b/test/language/statements/for-in/decl-let.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (let) not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x in {}) let y;
diff --git a/test/language/statements/for-in/dstr-array-elem-init-simple-strict.js b/test/language/statements/for-in/dstr-array-elem-init-simple-strict.js
index 2c0539ca9ffa5b7ff4b79eab43d9f4bd49b8c752..3623a69496e5d2c95f80e4542c1cf5c6c45b4a03 100644
--- a/test/language/statements/for-in/dstr-array-elem-init-simple-strict.js
+++ b/test/language/statements/for-in/dstr-array-elem-init-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-elem-init-yield-ident-invalid.js b/test/language/statements/for-in/dstr-array-elem-init-yield-ident-invalid.js
index 5be7151345ac925b3e5bcce0ded500ea2573d06a..f6c8e77de1523a5b04557c2e8a742855fcd6fde9 100644
--- a/test/language/statements/for-in/dstr-array-elem-init-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-array-elem-init-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-elem-nested-array-invalid.js b/test/language/statements/for-in/dstr-array-elem-nested-array-invalid.js
index 6285773c115f2289ebe9d4541d8480ff40bf3df7..5be5df6bd05a621ef0b473d659ef60960b276c3f 100644
--- a/test/language/statements/for-in/dstr-array-elem-nested-array-invalid.js
+++ b/test/language/statements/for-in/dstr-array-elem-nested-array-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-elem-nested-array-yield-ident-invalid.js b/test/language/statements/for-in/dstr-array-elem-nested-array-yield-ident-invalid.js
index dfbd4be4e2cc476576868befeb426de504988e04..6375401ce50fe42ff61f2474909d740ca1ce9f9e 100644
--- a/test/language/statements/for-in/dstr-array-elem-nested-array-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-array-elem-nested-array-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-elem-nested-obj-invalid.js b/test/language/statements/for-in/dstr-array-elem-nested-obj-invalid.js
index f543fc09d63974938eb812496f780875d95ba6c1..81b7c639e37ebfbda1a464d3011bb9b3ba068886 100644
--- a/test/language/statements/for-in/dstr-array-elem-nested-obj-invalid.js
+++ b/test/language/statements/for-in/dstr-array-elem-nested-obj-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-elem-nested-obj-yield-ident-invalid.js b/test/language/statements/for-in/dstr-array-elem-nested-obj-yield-ident-invalid.js
index a6071c2582962e286937c855b745d1d83c33723f..3c0ffdeb15b0d63a4140e63fdd517df0eb84c4c3 100644
--- a/test/language/statements/for-in/dstr-array-elem-nested-obj-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-array-elem-nested-obj-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-elem-target-simple-strict.js b/test/language/statements/for-in/dstr-array-elem-target-simple-strict.js
index f69ea5b517d592324e00fb75e73a16ab08e9653c..5a41062b740f3481eafda53e8589701557e14f9d 100644
--- a/test/language/statements/for-in/dstr-array-elem-target-simple-strict.js
+++ b/test/language/statements/for-in/dstr-array-elem-target-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-elem-target-yield-invalid.js b/test/language/statements/for-in/dstr-array-elem-target-yield-invalid.js
index 0a7f0ac56692ac0f7acbebcb9ca3499ea0ac4c48..c33d414b560537d8ff073388823714b89dd2fcb2 100644
--- a/test/language/statements/for-in/dstr-array-elem-target-yield-invalid.js
+++ b/test/language/statements/for-in/dstr-array-elem-target-yield-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-before-element.js b/test/language/statements/for-in/dstr-array-rest-before-element.js
index 058e92d43983446b8801680a322328c9fbcc7029..61eafdee14ead67c6f7b3ae98fcb363ff8ef9b64 100644
--- a/test/language/statements/for-in/dstr-array-rest-before-element.js
+++ b/test/language/statements/for-in/dstr-array-rest-before-element.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-before-elision.js b/test/language/statements/for-in/dstr-array-rest-before-elision.js
index 90d0d410d0f2bdf048f465cd4d4293906c02abd1..badf217717dac66b5131c0de194123fd30ab8080 100644
--- a/test/language/statements/for-in/dstr-array-rest-before-elision.js
+++ b/test/language/statements/for-in/dstr-array-rest-before-elision.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-before-rest.js b/test/language/statements/for-in/dstr-array-rest-before-rest.js
index 64b7ed0734d64909980852d8ce3bb7b14cfad12d..c68c88726608cd939624a369730f33dbadcc3570 100644
--- a/test/language/statements/for-in/dstr-array-rest-before-rest.js
+++ b/test/language/statements/for-in/dstr-array-rest-before-rest.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-elision-invalid.js b/test/language/statements/for-in/dstr-array-rest-elision-invalid.js
index 94d7175fb53d7596acd5a7210c7d4647a9533278..b2902e764eb12c8011549469c7fc9ae19a9632a0 100644
--- a/test/language/statements/for-in/dstr-array-rest-elision-invalid.js
+++ b/test/language/statements/for-in/dstr-array-rest-elision-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-init.js b/test/language/statements/for-in/dstr-array-rest-init.js
index 83d3e0d2259cc4e588e7b6f3ea2b04c0d1cb50ab..bd141ebaba02af3d02cfe920d9fc356d8ccdfa8a 100644
--- a/test/language/statements/for-in/dstr-array-rest-init.js
+++ b/test/language/statements/for-in/dstr-array-rest-init.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-nested-array-invalid.js b/test/language/statements/for-in/dstr-array-rest-nested-array-invalid.js
index 46f158929900dea2ca5e7c2005c8ee0947865eaf..a6dc735da87821711ef2521c1710781e4c5fd557 100644
--- a/test/language/statements/for-in/dstr-array-rest-nested-array-invalid.js
+++ b/test/language/statements/for-in/dstr-array-rest-nested-array-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-nested-array-yield-ident-invalid.js b/test/language/statements/for-in/dstr-array-rest-nested-array-yield-ident-invalid.js
index 5a3e1da8ff7be719f3af56691437d6c5a0f2e4c6..42f8bfd9f79b00e7344eeea9a0d8ad111eb46258 100644
--- a/test/language/statements/for-in/dstr-array-rest-nested-array-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-array-rest-nested-array-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-nested-obj-invalid.js b/test/language/statements/for-in/dstr-array-rest-nested-obj-invalid.js
index c983ea7657d6cd391cded2df03c84c8ac74c312f..e653a345586f6d88e75f4859501100985d29b784 100644
--- a/test/language/statements/for-in/dstr-array-rest-nested-obj-invalid.js
+++ b/test/language/statements/for-in/dstr-array-rest-nested-obj-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-nested-obj-yield-ident-invalid.js b/test/language/statements/for-in/dstr-array-rest-nested-obj-yield-ident-invalid.js
index 75390433bd1813819171f7f150ec779ede259869..55c288206b43984038ebbd1f416097c38a2ccdfb 100644
--- a/test/language/statements/for-in/dstr-array-rest-nested-obj-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-array-rest-nested-obj-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-array-rest-yield-ident-invalid.js b/test/language/statements/for-in/dstr-array-rest-yield-ident-invalid.js
index 95ffc2e89df8a6f99fbd06d8c5dc8a1a73fad84b..5fc10a7c7425e0e887fd89d2cb61e0274778df9e 100644
--- a/test/language/statements/for-in/dstr-array-rest-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-array-rest-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-id-identifier-yield-expr.js b/test/language/statements/for-in/dstr-obj-id-identifier-yield-expr.js
index 3a127d0ea9ef849cc818c7cf7e94bbe92bb92bc0..ddfa319fb634faf81538bd80a17da4841a82bf53 100644
--- a/test/language/statements/for-in/dstr-obj-id-identifier-yield-expr.js
+++ b/test/language/statements/for-in/dstr-obj-id-identifier-yield-expr.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [generators, destructuring-binding]
 flags: [generated, noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-id-identifier-yield-ident-invalid.js b/test/language/statements/for-in/dstr-obj-id-identifier-yield-ident-invalid.js
index a862834eb215e2ad00a1c72931ba0158087d3999..ba9c59bd13c135e8efab58dafd08c69655cea054 100644
--- a/test/language/statements/for-in/dstr-obj-id-identifier-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-obj-id-identifier-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-id-init-simple-strict.js b/test/language/statements/for-in/dstr-obj-id-init-simple-strict.js
index 8cfbe1a2ec1eaf697fed4ec2f47053d8ecd50ee1..6f62b093a5ec2f19e939a88cbaed37a7afd4bfb3 100644
--- a/test/language/statements/for-in/dstr-obj-id-init-simple-strict.js
+++ b/test/language/statements/for-in/dstr-obj-id-init-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-id-init-yield-ident-invalid.js b/test/language/statements/for-in/dstr-obj-id-init-yield-ident-invalid.js
index 1e4ee9e2a747ed04085492b65f6bbe839dfa1b23..109bf7b724b98cff942c743a3b24360efab2c7ad 100644
--- a/test/language/statements/for-in/dstr-obj-id-init-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-obj-id-init-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-id-simple-strict.js b/test/language/statements/for-in/dstr-obj-id-simple-strict.js
index 4d59e9be58d82eccf75ff1eabee9e1b156e35b90..45053b910a3233b86a948ae462130713867ad235 100644
--- a/test/language/statements/for-in/dstr-obj-id-simple-strict.js
+++ b/test/language/statements/for-in/dstr-obj-id-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-prop-elem-init-yield-ident-invalid.js b/test/language/statements/for-in/dstr-obj-prop-elem-init-yield-ident-invalid.js
index ab7c6bb9e74cfe20e0fe05818292c163855498ab..478014cb77b834744cda3fc7cfeaff0e27b5e241 100644
--- a/test/language/statements/for-in/dstr-obj-prop-elem-init-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-obj-prop-elem-init-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-prop-elem-target-yield-ident-invalid.js b/test/language/statements/for-in/dstr-obj-prop-elem-target-yield-ident-invalid.js
index 7484fe6959c71258f8ecd82aa2ee5e63b453f2e4..cee5a47975521552f74bce4eef94ad683dfdc89f 100644
--- a/test/language/statements/for-in/dstr-obj-prop-elem-target-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-obj-prop-elem-target-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-prop-nested-array-invalid.js b/test/language/statements/for-in/dstr-obj-prop-nested-array-invalid.js
index 1aaceffa8d6c314d1d7dbb773b76f8ca874f3ef7..e28f056720d726bcc870b6bcfbdbf94ea6f9552a 100644
--- a/test/language/statements/for-in/dstr-obj-prop-nested-array-invalid.js
+++ b/test/language/statements/for-in/dstr-obj-prop-nested-array-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-prop-nested-array-yield-ident-invalid.js b/test/language/statements/for-in/dstr-obj-prop-nested-array-yield-ident-invalid.js
index d4fddf009a8c84f1082b0ddd6d3d4c2986724659..f8401783c3224b58c8e8d7307b845ade0d2c4c62 100644
--- a/test/language/statements/for-in/dstr-obj-prop-nested-array-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-obj-prop-nested-array-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-prop-nested-obj-invalid.js b/test/language/statements/for-in/dstr-obj-prop-nested-obj-invalid.js
index d9cfe9e3ec93462eb942d529ab4b44541e66fb18..f6a546eb9f03bcc9e21f5a98501f29c7f7aa71dc 100644
--- a/test/language/statements/for-in/dstr-obj-prop-nested-obj-invalid.js
+++ b/test/language/statements/for-in/dstr-obj-prop-nested-obj-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/dstr-obj-prop-nested-obj-yield-ident-invalid.js b/test/language/statements/for-in/dstr-obj-prop-nested-obj-yield-ident-invalid.js
index 0559dd12bda77c61db9263fc2abf638818887f34..fd0e3687e54b5ccc5721f0bad6bfeeac279c4b07 100644
--- a/test/language/statements/for-in/dstr-obj-prop-nested-obj-yield-ident-invalid.js
+++ b/test/language/statements/for-in/dstr-obj-prop-nested-obj-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-in/head-const-bound-names-dup.js b/test/language/statements/for-in/head-const-bound-names-dup.js
index a0afd41eb162159211b172e846f947267a688c89..b0388e1912e712732ce712112d2f0559e1f0ca82 100644
--- a/test/language/statements/for-in/head-const-bound-names-dup.js
+++ b/test/language/statements/for-in/head-const-bound-names-dup.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The head's declaration may not contain duplicate entries
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if the BoundNames of ForDeclaration contains any
     duplicate entries.
diff --git a/test/language/statements/for-in/head-const-bound-names-in-stmt.js b/test/language/statements/for-in/head-const-bound-names-in-stmt.js
index 3f8001633ec0f267040fed500fa64fc88092dfcf..e084ca56b507e6ecd2d45bc7922af8bde8ac629c 100644
--- a/test/language/statements/for-in/head-const-bound-names-in-stmt.js
+++ b/test/language/statements/for-in/head-const-bound-names-in-stmt.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The body may not re-declare variables declared in the head
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if any element of the BoundNames of ForDeclaration
     also occurs in the VarDeclaredNames of Statement.
diff --git a/test/language/statements/for-in/head-const-bound-names-let.js b/test/language/statements/for-in/head-const-bound-names-let.js
index ddaea955aa589ee086ac4c25e1cbca26c80f569e..dc83306d858feb1415775ce7291cc4d4b3b05531 100644
--- a/test/language/statements/for-in/head-const-bound-names-let.js
+++ b/test/language/statements/for-in/head-const-bound-names-let.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The declaration may not contain a binding for `let`
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if the BoundNames of ForDeclaration contains "let".
 esid: sec-for-in-and-for-of-statements
diff --git a/test/language/statements/for-in/head-let-bound-names-dup.js b/test/language/statements/for-in/head-let-bound-names-dup.js
index 8e395f5f93731a27bd364e60d1cf13beb3faed84..f347753a8f6829282413c44d0a46fdd691f977b7 100644
--- a/test/language/statements/for-in/head-let-bound-names-dup.js
+++ b/test/language/statements/for-in/head-let-bound-names-dup.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The head's declaration may not contain duplicate entries
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if the BoundNames of ForDeclaration contains any
     duplicate entries.
diff --git a/test/language/statements/for-in/head-let-bound-names-in-stmt.js b/test/language/statements/for-in/head-let-bound-names-in-stmt.js
index 219a7fd2e2076d8cb3e161b6c0e2ec8e155698c5..d4dfe3e268fbedbc447317089eba609df964021d 100644
--- a/test/language/statements/for-in/head-let-bound-names-in-stmt.js
+++ b/test/language/statements/for-in/head-let-bound-names-in-stmt.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The body may not re-declare variables declared in the head
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if any element of the BoundNames of ForDeclaration
     also occurs in the VarDeclaredNames of Statement.
diff --git a/test/language/statements/for-in/head-let-bound-names-let.js b/test/language/statements/for-in/head-let-bound-names-let.js
index d70fbc5e9b32cd38d7a18c36f077c0386c9a3c00..c5c9c9754a4f6a977f6e95fd9a84cc6dfac808ba 100644
--- a/test/language/statements/for-in/head-let-bound-names-let.js
+++ b/test/language/statements/for-in/head-let-bound-names-let.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The declaration may not contain a binding for `let`
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if the BoundNames of ForDeclaration contains "let".
 flags: [noStrict]
diff --git a/test/language/statements/for-in/head-lhs-cover-non-asnmt-trgt.js b/test/language/statements/for-in/head-lhs-cover-non-asnmt-trgt.js
index ea340a318ae1b6c071bd9da4194d79b96f98c5cf..031fe155e66156336a3eccea53e8303a2d1c0dbe 100644
--- a/test/language/statements/for-in/head-lhs-cover-non-asnmt-trgt.js
+++ b/test/language/statements/for-in/head-lhs-cover-non-asnmt-trgt.js
@@ -14,7 +14,9 @@ info: >
     LeftHandSideExpression. This rule is recursively applied.
 esid: sec-for-in-and-for-of-statements-static-semantics-early-errors
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ((this) in {}) {}
diff --git a/test/language/statements/for-in/head-lhs-invalid-asnmt-ptrn-ary.js b/test/language/statements/for-in/head-lhs-invalid-asnmt-ptrn-ary.js
index 460f9128e8991c69752381db0ecfd440379a4668..1f2585f4f2b034f9dc0d1431733a6c4791c63021 100644
--- a/test/language/statements/for-in/head-lhs-invalid-asnmt-ptrn-ary.js
+++ b/test/language/statements/for-in/head-lhs-invalid-asnmt-ptrn-ary.js
@@ -10,7 +10,9 @@ info: >
     AssignmentPattern as the goal symbol.
 esid: sec-for-in-and-for-of-statements-static-semantics-early-errors
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ([(x, y)] in {}) {}
diff --git a/test/language/statements/for-in/head-lhs-invalid-asnmt-ptrn-obj.js b/test/language/statements/for-in/head-lhs-invalid-asnmt-ptrn-obj.js
index 871ebfb4aacb3e0d98ab9712e52f080d1d5bb366..4089c5082e9e2f2dac29011852c79a8a97ae9ba1 100644
--- a/test/language/statements/for-in/head-lhs-invalid-asnmt-ptrn-obj.js
+++ b/test/language/statements/for-in/head-lhs-invalid-asnmt-ptrn-obj.js
@@ -10,7 +10,9 @@ info: >
     AssignmentPattern as the goal symbol.
 esid: sec-for-in-and-for-of-statements-static-semantics-early-errors
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ({ m() {} } in {}) {}
diff --git a/test/language/statements/for-in/head-lhs-non-asnmt-trgt.js b/test/language/statements/for-in/head-lhs-non-asnmt-trgt.js
index 55e906093db7ab26d47786fe5ec8caf671871930..0813f474e01bcfc8c69f6df2a87912c70b582ffd 100644
--- a/test/language/statements/for-in/head-lhs-non-asnmt-trgt.js
+++ b/test/language/statements/for-in/head-lhs-non-asnmt-trgt.js
@@ -8,7 +8,9 @@ info: >
     LeftHandSideExpression is false.
 esid: sec-for-in-and-for-of-statements-static-semantics-early-errors
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (this in {}) {}
diff --git a/test/language/statements/for-in/labelled-fn-stmt-const.js b/test/language/statements/for-in/labelled-fn-stmt-const.js
index 9feb0161cc2b1908c3d74d4149cdf880ab340a1b..d1362ea1af08605cb6da7a2d132912efb1737a62 100644
--- a/test/language/statements/for-in/labelled-fn-stmt-const.js
+++ b/test/language/statements/for-in/labelled-fn-stmt-const.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for-in/labelled-fn-stmt-let.js b/test/language/statements/for-in/labelled-fn-stmt-let.js
index 6e2c24e0cfddf897b5e142b9d494e4ef139b3c8b..9fbb407fc6960e654e7af1b821116008f65942cd 100644
--- a/test/language/statements/for-in/labelled-fn-stmt-let.js
+++ b/test/language/statements/for-in/labelled-fn-stmt-let.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for-in/labelled-fn-stmt-lhs.js b/test/language/statements/for-in/labelled-fn-stmt-lhs.js
index bc5f6490cea31c364416c0fa139dd07c63ad8a70..7564b4cb6d162e52ccc10fc4a2941a95edfe27ac 100644
--- a/test/language/statements/for-in/labelled-fn-stmt-lhs.js
+++ b/test/language/statements/for-in/labelled-fn-stmt-lhs.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for-in/labelled-fn-stmt-var.js b/test/language/statements/for-in/labelled-fn-stmt-var.js
index 25a17fe36fa968e8a4fe49beaf08893322469fef..1ac8edb3db7576848773fada62bdc1165ef1bbed 100644
--- a/test/language/statements/for-in/labelled-fn-stmt-var.js
+++ b/test/language/statements/for-in/labelled-fn-stmt-var.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for-of/decl-cls.js b/test/language/statements/for-of/decl-cls.js
index d33b4eb58e7648b21f00dd7f01672f2bdf9954f1..4871ac9cf0eeb54fec355743f4dba7af311e5272 100644
--- a/test/language/statements/for-of/decl-cls.js
+++ b/test/language/statements/for-of/decl-cls.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x of []) class C {}
diff --git a/test/language/statements/for-of/decl-const.js b/test/language/statements/for-of/decl-const.js
index 69d193185bff0e2386931602f219248652ef2d4b..9c34b0123405fbfec016ffbbd844f2a4b387e9d6 100644
--- a/test/language/statements/for-of/decl-const.js
+++ b/test/language/statements/for-of/decl-const.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x of []) const y = null;
diff --git a/test/language/statements/for-of/decl-fun.js b/test/language/statements/for-of/decl-fun.js
index 8001c192e9ddaad8751dc929011e6b5043e96b75..e2330dc1553795688cad34674c2c725b76cf9582 100644
--- a/test/language/statements/for-of/decl-fun.js
+++ b/test/language/statements/for-of/decl-fun.js
@@ -4,7 +4,9 @@
 description: Function declaration not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x of []) function f() {}
diff --git a/test/language/statements/for-of/decl-gen.js b/test/language/statements/for-of/decl-gen.js
index eb4b3aab1f3a3b9838466decdde38cbdb6ddba96..1914167d2770482adb534b815c6c04c0243bc346 100644
--- a/test/language/statements/for-of/decl-gen.js
+++ b/test/language/statements/for-of/decl-gen.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x of []) function* g() {}
diff --git a/test/language/statements/for-of/decl-let.js b/test/language/statements/for-of/decl-let.js
index 93cd0725def8785f2a0ba74675ef7d5fdbb2a020..a7fc8f2fd28a27f46ce9039919d2deba45474206 100644
--- a/test/language/statements/for-of/decl-let.js
+++ b/test/language/statements/for-of/decl-let.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (let) not allowed in statement position
 esid: sec-for-in-and-for-of-statements
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x of []) let y;
diff --git a/test/language/statements/for-of/dstr-array-elem-init-simple-strict.js b/test/language/statements/for-of/dstr-array-elem-init-simple-strict.js
index 82b297cbe53f6c6dda3463adf19abf7a82d6b088..2c4c7011f57e10e1335f501ae3c616e7aefd6d74 100644
--- a/test/language/statements/for-of/dstr-array-elem-init-simple-strict.js
+++ b/test/language/statements/for-of/dstr-array-elem-init-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-elem-init-yield-ident-invalid.js b/test/language/statements/for-of/dstr-array-elem-init-yield-ident-invalid.js
index 0aa39bfec6aef1acde970a14cece1ca8f53e98e4..a5bfc350b9cef4a06c310d5376941eaea88f332d 100644
--- a/test/language/statements/for-of/dstr-array-elem-init-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-array-elem-init-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-elem-nested-array-invalid.js b/test/language/statements/for-of/dstr-array-elem-nested-array-invalid.js
index 0a7c778c4ae04293410351b98935a5604b7d06d6..9ed8383dbe7a32833ab0d0041dbd172bc8934fb3 100644
--- a/test/language/statements/for-of/dstr-array-elem-nested-array-invalid.js
+++ b/test/language/statements/for-of/dstr-array-elem-nested-array-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-elem-nested-array-yield-ident-invalid.js b/test/language/statements/for-of/dstr-array-elem-nested-array-yield-ident-invalid.js
index 7a207726f02b9ebcd5b969f4e4ee721504cab5f4..2ba10e8c3b4ee5be3fe2612d39bccacc27f57784 100644
--- a/test/language/statements/for-of/dstr-array-elem-nested-array-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-array-elem-nested-array-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-elem-nested-obj-invalid.js b/test/language/statements/for-of/dstr-array-elem-nested-obj-invalid.js
index dd64e3188731f077d53bacc783764712a44942e8..e6eb412296a11f3f0ec1c0d6c2c583591738a8ae 100644
--- a/test/language/statements/for-of/dstr-array-elem-nested-obj-invalid.js
+++ b/test/language/statements/for-of/dstr-array-elem-nested-obj-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-elem-nested-obj-yield-ident-invalid.js b/test/language/statements/for-of/dstr-array-elem-nested-obj-yield-ident-invalid.js
index e90df0a1520697b2884af59a1e52618920c5d3ed..9e50e480b00b609dc545b5eeab40c7f47f6676b6 100644
--- a/test/language/statements/for-of/dstr-array-elem-nested-obj-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-array-elem-nested-obj-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-elem-target-simple-strict.js b/test/language/statements/for-of/dstr-array-elem-target-simple-strict.js
index 996ebd40b1fe49ffec1f5be4d1dd514ac73b1db8..d891344f14daefd4a0e24d3f98c1fd4840e92ba6 100644
--- a/test/language/statements/for-of/dstr-array-elem-target-simple-strict.js
+++ b/test/language/statements/for-of/dstr-array-elem-target-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-elem-target-yield-invalid.js b/test/language/statements/for-of/dstr-array-elem-target-yield-invalid.js
index 7ea2d77899f1beb5ca1bd9c07526400195d7713b..b07476511c4c181bf26e646cedfe5c4c4d7bcef2 100644
--- a/test/language/statements/for-of/dstr-array-elem-target-yield-invalid.js
+++ b/test/language/statements/for-of/dstr-array-elem-target-yield-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-before-element.js b/test/language/statements/for-of/dstr-array-rest-before-element.js
index 8278ee7485e0155410292c486b0b6195188af2f4..cf0ab1f67f9aae3be590ec0d24d5fa8d1a94df6f 100644
--- a/test/language/statements/for-of/dstr-array-rest-before-element.js
+++ b/test/language/statements/for-of/dstr-array-rest-before-element.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-before-elision.js b/test/language/statements/for-of/dstr-array-rest-before-elision.js
index 45b151db483193088bbfdba8e77805deba3e22d1..f7cd37a6046c2203ec8c6a79278f5211f3d8a13c 100644
--- a/test/language/statements/for-of/dstr-array-rest-before-elision.js
+++ b/test/language/statements/for-of/dstr-array-rest-before-elision.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-before-rest.js b/test/language/statements/for-of/dstr-array-rest-before-rest.js
index 1510b3bcccef9f79a1ee5d8a5dbd03d2afd09e4a..39ee51971ef6803400dd0aff52e1c68f23c59d10 100644
--- a/test/language/statements/for-of/dstr-array-rest-before-rest.js
+++ b/test/language/statements/for-of/dstr-array-rest-before-rest.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-elision-invalid.js b/test/language/statements/for-of/dstr-array-rest-elision-invalid.js
index 1eacb7487ca29b39a36dd874a75b5d533c8eb3d5..4058c70c2ecd06522c3d2431d9ac0f464f7adb47 100644
--- a/test/language/statements/for-of/dstr-array-rest-elision-invalid.js
+++ b/test/language/statements/for-of/dstr-array-rest-elision-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-init.js b/test/language/statements/for-of/dstr-array-rest-init.js
index 4bb7e9b48af6e682fe88372b41687b4c7093f339..30ed1d344bcf2d51f6cf7d85b1ee221886a36c13 100644
--- a/test/language/statements/for-of/dstr-array-rest-init.js
+++ b/test/language/statements/for-of/dstr-array-rest-init.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-nested-array-invalid.js b/test/language/statements/for-of/dstr-array-rest-nested-array-invalid.js
index 1efe016a109ed677c7af0eff8107f140de093420..d2bcbe180cd6cc1e9c81e550799ef91fbb042f29 100644
--- a/test/language/statements/for-of/dstr-array-rest-nested-array-invalid.js
+++ b/test/language/statements/for-of/dstr-array-rest-nested-array-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-nested-array-yield-ident-invalid.js b/test/language/statements/for-of/dstr-array-rest-nested-array-yield-ident-invalid.js
index 8058bce7330c1277451ae01eae7187a7ec5ac93e..2159013456fe5764f6d9888c850e3b26f50ec2be 100644
--- a/test/language/statements/for-of/dstr-array-rest-nested-array-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-array-rest-nested-array-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-nested-obj-invalid.js b/test/language/statements/for-of/dstr-array-rest-nested-obj-invalid.js
index 3d89a6b124734f4e230b48379cce6bb7251dba55..f89ec1222525ac9c40626764eac67dfc08899a22 100644
--- a/test/language/statements/for-of/dstr-array-rest-nested-obj-invalid.js
+++ b/test/language/statements/for-of/dstr-array-rest-nested-obj-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-nested-obj-yield-ident-invalid.js b/test/language/statements/for-of/dstr-array-rest-nested-obj-yield-ident-invalid.js
index b29ac0f2d7c612e4f5e1c53dc45a869b002cc742..19781364616b6da84b454d29fe567b9e5455d666 100644
--- a/test/language/statements/for-of/dstr-array-rest-nested-obj-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-array-rest-nested-obj-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-array-rest-yield-ident-invalid.js b/test/language/statements/for-of/dstr-array-rest-yield-ident-invalid.js
index 0348219f28f58f4835664ffd607b76c22309f564..27200ffdb1295a46f487e6b97a2e66f4d4b3a6f6 100644
--- a/test/language/statements/for-of/dstr-array-rest-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-array-rest-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-ary.js b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-ary.js
index b2633de511aaf86fd6c569bef2f86bbb1a8a0d24..94f81a4562aea48ca86cce9c5ed2f8ecb70f1deb 100644
--- a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-id.js b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-id.js
index fe304e8f9464884918f965083cd31258afdfd0ae..7f19f1953d4077109a7eb78c14967b4d46d43502 100644
--- a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-obj.js b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-obj.js
index 91fdbad76228f1e0beb057e4437f47bebd363414..ed4b70444d361aa8dabf5fb8872b666188675cdf 100644
--- a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-ary.js
index c6820570ef7ab2c4237d5c2b66d03c1a3cbc667f..f1ff6100ca149d3e35948610238aba99402e114b 100644
--- a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-id.js
index e778dbec05a5775d196d0c320a7280c12f1630cc..5ba1ca94cb6d0a76a803d0b2c35f0b7aac010562 100644
--- a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-obj.js
index cde39eb2900ed87038d5d8362e9f2b060c0273c0..fdbfc5685194ada5b56f2780ff967f2e5fd65bbc 100644
--- a/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-of/dstr-const-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-ary.js b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-ary.js
index 6bb3c0f230577f9a6e570b0329d545dd2a54df1f..8e1c8b8f1f73fc08614f418b75f0f744b867909e 100644
--- a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-id.js b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-id.js
index acad1cad55501d0c860a94210f89d8974cef9fd3..f98b3e096dd8b0fd5bbde7118302cebc4413e9eb 100644
--- a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-obj.js b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-obj.js
index b113904c6fa7b4905ff66e1b216fcbc28190e407..056b3336d1bd43b1214cb84f21616d18ff0dbb63 100644
--- a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-ary.js
index d8ab5d9d2cee8d7f13e4fff5b30dc4da297772cb..5858305db64ac0410f153e71cf34b9b6547a337f 100644
--- a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-id.js
index b6745f569e1034c56aaeda782bee96767e36f069..c616e6ca9ee7bf16bf694eba2237dacc6cff9b61 100644
--- a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-obj.js
index 9fa497cbf72e4c122d2d6952ed1c41337bf0cd5b..ef60754899edfd3424095f2a13c7ff3e6a316275 100644
--- a/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-of/dstr-let-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-id-identifier-yield-expr.js b/test/language/statements/for-of/dstr-obj-id-identifier-yield-expr.js
index 6cd810de7d93b05391edf634bc0fb507235752b4..7c1e7b64d10408001a0e181390c7cacb09edcdd9 100644
--- a/test/language/statements/for-of/dstr-obj-id-identifier-yield-expr.js
+++ b/test/language/statements/for-of/dstr-obj-id-identifier-yield-expr.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [generators, destructuring-binding]
 flags: [generated, noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-id-identifier-yield-ident-invalid.js b/test/language/statements/for-of/dstr-obj-id-identifier-yield-ident-invalid.js
index 41ec261777daa1ef00d67d0ce032303bb644d945..b7f4c600234a43d51762cc2c48ed718370b158eb 100644
--- a/test/language/statements/for-of/dstr-obj-id-identifier-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-obj-id-identifier-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-id-init-simple-strict.js b/test/language/statements/for-of/dstr-obj-id-init-simple-strict.js
index 88f4795606603ab1e4d09d3d8d9bac3a693fb326..f134054217f21f99f7ce03dc7edfebd47349165e 100644
--- a/test/language/statements/for-of/dstr-obj-id-init-simple-strict.js
+++ b/test/language/statements/for-of/dstr-obj-id-init-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-id-init-yield-ident-invalid.js b/test/language/statements/for-of/dstr-obj-id-init-yield-ident-invalid.js
index 5d3661cae4f58c7d5d93d672684398da72c585f1..9161b0660fae33177f41656fc6cd399d58568fc5 100644
--- a/test/language/statements/for-of/dstr-obj-id-init-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-obj-id-init-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-id-simple-strict.js b/test/language/statements/for-of/dstr-obj-id-simple-strict.js
index 778bf69926459a4279b506ded82df1dd86f5d002..11656261bd55679d9ddd853bf568e4d098e29d3d 100644
--- a/test/language/statements/for-of/dstr-obj-id-simple-strict.js
+++ b/test/language/statements/for-of/dstr-obj-id-simple-strict.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-prop-elem-init-yield-ident-invalid.js b/test/language/statements/for-of/dstr-obj-prop-elem-init-yield-ident-invalid.js
index b0172f958ebc9fc5f62c3c00105343e65198de74..45d77e0cfa2314e0c028be658f4afa7ed3835ccd 100644
--- a/test/language/statements/for-of/dstr-obj-prop-elem-init-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-obj-prop-elem-init-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-prop-elem-target-yield-ident-invalid.js b/test/language/statements/for-of/dstr-obj-prop-elem-target-yield-ident-invalid.js
index e4067d030811d3171d7ee242bc63ba71d0aecdf5..edba05e5879905e2a9d27dff21361ca0809497a0 100644
--- a/test/language/statements/for-of/dstr-obj-prop-elem-target-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-obj-prop-elem-target-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-prop-nested-array-invalid.js b/test/language/statements/for-of/dstr-obj-prop-nested-array-invalid.js
index 507fa926a5cd7ff49514b21e722bedeceb0d8edf..c572e25bf15e86996aa9ab7df95f2298c81f4cab 100644
--- a/test/language/statements/for-of/dstr-obj-prop-nested-array-invalid.js
+++ b/test/language/statements/for-of/dstr-obj-prop-nested-array-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-prop-nested-array-yield-ident-invalid.js b/test/language/statements/for-of/dstr-obj-prop-nested-array-yield-ident-invalid.js
index a69caf807d31807f9306bca73b2b636f199a0b4d..c705abc0d2423318deef3247d341674acd369b0e 100644
--- a/test/language/statements/for-of/dstr-obj-prop-nested-array-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-obj-prop-nested-array-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-prop-nested-obj-invalid.js b/test/language/statements/for-of/dstr-obj-prop-nested-obj-invalid.js
index c35fd2ce6bb172a523cd19034e3316033c09aafd..5bce7b4a90e38cfb939213e4100e25e7941f9a73 100644
--- a/test/language/statements/for-of/dstr-obj-prop-nested-obj-invalid.js
+++ b/test/language/statements/for-of/dstr-obj-prop-nested-obj-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-obj-prop-nested-obj-yield-ident-invalid.js b/test/language/statements/for-of/dstr-obj-prop-nested-obj-yield-ident-invalid.js
index 61b0241786c312c23ceed33d1e845ecb10fdbdcf..b06a635137cd047415bc872207cbbe3f65782c11 100644
--- a/test/language/statements/for-of/dstr-obj-prop-nested-obj-yield-ident-invalid.js
+++ b/test/language/statements/for-of/dstr-obj-prop-nested-obj-yield-ident-invalid.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated, onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
       for ( LeftHandSideExpression of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-ary.js b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-ary.js
index 626e63998bec03520d15797594c53f22b1e93814..e7c0027d6e0ef1a313f332dd7c3dadfe8795bd3d 100644
--- a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var ForBinding of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-id.js b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-id.js
index 071a3d26c513e1baf10c212e2da948a14a26728b..144e583e8bc393899878f331ea44721194c33615 100644
--- a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var ForBinding of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-obj.js b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-obj.js
index dd4378dbb1f191e2d1723ab5f568f0b0f188fd27..7091c4eedbfdca5faca8efed6895c01473da1efb 100644
--- a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var ForBinding of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-ary.js
index 4c62cf9218f785a07dfc52e670da446165d20854..ba7efb980fb3dd316b5d26680804ab8324be6990 100644
--- a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var ForBinding of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-id.js b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-id.js
index 222f744f54b9ce60a4af303d32a5e19474532516..46777aee0d64c2e2e97c9d5c908d66861bea3eb6 100644
--- a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var ForBinding of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-obj.js
index 4bea709a299d0c6ac17f3fe1ce4743e305f61085..6f641fe3ac1456a771b00b58005d1edf63ba256c 100644
--- a/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for-of/dstr-var-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-in-and-for-of-statements-runtime-semantics-labelledevaluation
 es6id: 13.7.5.11
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var ForBinding of AssignmentExpression ) Statement
diff --git a/test/language/statements/for-of/head-const-bound-names-dup.js b/test/language/statements/for-of/head-const-bound-names-dup.js
index 0fbfeeb269779d9973c4d4f926416a259759b133..38544ffc5bfd1dc6d2224776976c20bb58f1b72c 100644
--- a/test/language/statements/for-of/head-const-bound-names-dup.js
+++ b/test/language/statements/for-of/head-const-bound-names-dup.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The head's declaration may not contain duplicate entries
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if the BoundNames of ForDeclaration contains any
     duplicate entries.
diff --git a/test/language/statements/for-of/head-const-bound-names-in-stmt.js b/test/language/statements/for-of/head-const-bound-names-in-stmt.js
index a9cafda4e3b6f479f0171153b6c3c31506353b5d..7aad7a615a5b92a9886d25801ec7774647eb6b2d 100644
--- a/test/language/statements/for-of/head-const-bound-names-in-stmt.js
+++ b/test/language/statements/for-of/head-const-bound-names-in-stmt.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The body may not re-declare variables declared in the head
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if any element of the BoundNames of ForDeclaration
     also occurs in the VarDeclaredNames of Statement.
diff --git a/test/language/statements/for-of/head-const-bound-names-let.js b/test/language/statements/for-of/head-const-bound-names-let.js
index 07b2cbfea9d18fd453517c28f2aca99c7a887499..c6885f79bf3d14cb60b1040c80e9ec55455a548d 100644
--- a/test/language/statements/for-of/head-const-bound-names-let.js
+++ b/test/language/statements/for-of/head-const-bound-names-let.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The declaration may not contain a binding for `let`
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if the BoundNames of ForDeclaration contains "let".
 esid: sec-for-in-and-for-of-statements
diff --git a/test/language/statements/for-of/head-decl-no-expr.js b/test/language/statements/for-of/head-decl-no-expr.js
index 01da99998f6feaa43f59273110a0dbb5124fc7df..675a67d679014e3493950af20aea72f0d48e0e52 100644
--- a/test/language/statements/for-of/head-decl-no-expr.js
+++ b/test/language/statements/for-of/head-decl-no-expr.js
@@ -7,7 +7,9 @@ info: >
     IterationStatement :
         for ( ForDeclaration of AssignmentExpression ) Statement
 es6id: 13.7
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (let x of [], []) {}
diff --git a/test/language/statements/for-of/head-expr-no-expr.js b/test/language/statements/for-of/head-expr-no-expr.js
index 14e8e47bc430c5c522d9006a3bdb734e9ff5116e..1ecb7bab60f9f4e58a7eeaa3e3347c25917a14c4 100644
--- a/test/language/statements/for-of/head-expr-no-expr.js
+++ b/test/language/statements/for-of/head-expr-no-expr.js
@@ -7,7 +7,9 @@ info: >
     IterationStatement :
         for ( LeftHandSideExpression of AssignmentExpression ) Statement
 es6id: 13.7
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var x;
diff --git a/test/language/statements/for-of/head-let-bound-names-dup.js b/test/language/statements/for-of/head-let-bound-names-dup.js
index 32bfb157b4767f94a3279be82aece0eb9cad3d08..51fd365615d13d46d6d338e644906b2c524059d8 100644
--- a/test/language/statements/for-of/head-let-bound-names-dup.js
+++ b/test/language/statements/for-of/head-let-bound-names-dup.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The head's declaration may not contain duplicate entries
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if the BoundNames of ForDeclaration contains any
     duplicate entries.
diff --git a/test/language/statements/for-of/head-let-bound-names-in-stmt.js b/test/language/statements/for-of/head-let-bound-names-in-stmt.js
index eababe1a3e166e6a02b485b44d334e7a3d51103f..42b512c4b25c817890f0018b9f49f9dad1fdefa0 100644
--- a/test/language/statements/for-of/head-let-bound-names-in-stmt.js
+++ b/test/language/statements/for-of/head-let-bound-names-in-stmt.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The body may not re-declare variables declared in the head
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if any element of the BoundNames of ForDeclaration
     also occurs in the VarDeclaredNames of Statement.
diff --git a/test/language/statements/for-of/head-let-bound-names-let.js b/test/language/statements/for-of/head-let-bound-names-let.js
index bff8bdbf56777a08e71a04f0f57de534c9ffe3cf..b591bc504b7f2e063bb57b01981c6c3016a3bd3e 100644
--- a/test/language/statements/for-of/head-let-bound-names-let.js
+++ b/test/language/statements/for-of/head-let-bound-names-let.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: The declaration may not contain a binding for `let`
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     It is a Syntax Error if the BoundNames of ForDeclaration contains "let".
 flags: [noStrict]
diff --git a/test/language/statements/for-of/head-lhs-cover-non-asnmt-trgt.js b/test/language/statements/for-of/head-lhs-cover-non-asnmt-trgt.js
index 7f7749ec7982c2259473c9b8edcb9be4a1555f87..025dd4fe15aee75a8882660aa8eef7b0de4e8303 100644
--- a/test/language/statements/for-of/head-lhs-cover-non-asnmt-trgt.js
+++ b/test/language/statements/for-of/head-lhs-cover-non-asnmt-trgt.js
@@ -14,7 +14,9 @@ info: >
     LeftHandSideExpression. This rule is recursively applied.
 esid: sec-for-in-and-for-of-statements-static-semantics-early-errors
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ((this) of []) {}
diff --git a/test/language/statements/for-of/head-lhs-invalid-asnmt-ptrn-ary.js b/test/language/statements/for-of/head-lhs-invalid-asnmt-ptrn-ary.js
index cde3f4ed2f58d404cc29bc63954c2633025465f8..0092b720c21e48aa8cabb4a5a889fb434457551c 100644
--- a/test/language/statements/for-of/head-lhs-invalid-asnmt-ptrn-ary.js
+++ b/test/language/statements/for-of/head-lhs-invalid-asnmt-ptrn-ary.js
@@ -10,7 +10,9 @@ info: >
     AssignmentPattern as the goal symbol.
 esid: sec-for-in-and-for-of-statements-static-semantics-early-errors
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ([(x, y)] of []) {}
diff --git a/test/language/statements/for-of/head-lhs-invalid-asnmt-ptrn-obj.js b/test/language/statements/for-of/head-lhs-invalid-asnmt-ptrn-obj.js
index 66562b56b4cb04a9b61b288a96341913dfad7d79..81b881177c415de06f3f9fa21a2d5653db82706c 100644
--- a/test/language/statements/for-of/head-lhs-invalid-asnmt-ptrn-obj.js
+++ b/test/language/statements/for-of/head-lhs-invalid-asnmt-ptrn-obj.js
@@ -10,7 +10,9 @@ info: >
     AssignmentPattern as the goal symbol.
 esid: sec-for-in-and-for-of-statements-static-semantics-early-errors
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ({ m() {} } of []) {}
diff --git a/test/language/statements/for-of/head-lhs-let.js b/test/language/statements/for-of/head-lhs-let.js
index 8c3e0fe2f651c7a726190e9ee1f2053c662fbddb..baa4db286ad0b61ab62c07e67f81429c46428e53 100644
--- a/test/language/statements/for-of/head-lhs-let.js
+++ b/test/language/statements/for-of/head-lhs-let.js
@@ -15,7 +15,9 @@ info: |
 
     for ( ForDeclaration[?Yield] of AssignmentExpression[+In, ?Yield] )
       Statement[?Yield, ?Return]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ( let of [] ) ;
diff --git a/test/language/statements/for-of/head-lhs-non-asnmt-trgt.js b/test/language/statements/for-of/head-lhs-non-asnmt-trgt.js
index 3b0868017b3dee214d49a852eaf49a1ef1e28443..a0dc7105b2e5b2f4a56db017d88e55b1ef79c03f 100644
--- a/test/language/statements/for-of/head-lhs-non-asnmt-trgt.js
+++ b/test/language/statements/for-of/head-lhs-non-asnmt-trgt.js
@@ -8,7 +8,9 @@ info: >
     LeftHandSideExpression is false.
 esid: sec-for-in-and-for-of-statements-static-semantics-early-errors
 es6id: 13.7.5
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (this of []) {}
diff --git a/test/language/statements/for-of/head-var-no-expr.js b/test/language/statements/for-of/head-var-no-expr.js
index f2de943db97dd668bb01c29de6f96723844dc187..6e72ecd3031eb0a05e6f89393a978453bac88944 100644
--- a/test/language/statements/for-of/head-var-no-expr.js
+++ b/test/language/statements/for-of/head-var-no-expr.js
@@ -7,7 +7,9 @@ info: >
     IterationStatement :
         for ( var ForBinding of AssignmentExpression ) Statement
 es6id: 13.7
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for (var x of [], []) {}
diff --git a/test/language/statements/for-of/labelled-fn-stmt-const.js b/test/language/statements/for-of/labelled-fn-stmt-const.js
index 09cd108e533630c36e411f1a89e2bb8d5938247b..4442f3c4526fd78290f167b912dd470d07094863 100644
--- a/test/language/statements/for-of/labelled-fn-stmt-const.js
+++ b/test/language/statements/for-of/labelled-fn-stmt-const.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for-of/labelled-fn-stmt-let.js b/test/language/statements/for-of/labelled-fn-stmt-let.js
index a4032965e09c294fc23cb9611ba77718cbfcead3..3a6b5184799e386e4e232493ff3136c5c8bb8509 100644
--- a/test/language/statements/for-of/labelled-fn-stmt-let.js
+++ b/test/language/statements/for-of/labelled-fn-stmt-let.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for-of/labelled-fn-stmt-lhs.js b/test/language/statements/for-of/labelled-fn-stmt-lhs.js
index 7873b6bd19147dcfc3061270a3796296a7f9b37e..e0d2ef855c33045b7d22aaa3fcd51a27c81a63bd 100644
--- a/test/language/statements/for-of/labelled-fn-stmt-lhs.js
+++ b/test/language/statements/for-of/labelled-fn-stmt-lhs.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for-of/labelled-fn-stmt-var.js b/test/language/statements/for-of/labelled-fn-stmt-var.js
index 11c13cfb7e0f54ff51468d78d652c5421ffc4456..c174c5d2b1943854e8997ef5952a183d94304a48 100644
--- a/test/language/statements/for-of/labelled-fn-stmt-var.js
+++ b/test/language/statements/for-of/labelled-fn-stmt-var.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for/S12.6.3_A11.1_T3.js b/test/language/statements/for/S12.6.3_A11.1_T3.js
index 686587b616f32e1adec5b274d2fee1126cd8798a..94280411716a8386cf71e717beee9aeee6ed1f4b 100644
--- a/test/language/statements/for/S12.6.3_A11.1_T3.js
+++ b/test/language/statements/for/S12.6.3_A11.1_T3.js
@@ -8,7 +8,9 @@ info: >
     "var-loop" breaks
 es5id: 12.6.3_A11.1_T3
 description: Trying to continue non-existent label
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 __str="";
diff --git a/test/language/statements/for/S12.6.3_A11_T3.js b/test/language/statements/for/S12.6.3_A11_T3.js
index a3272871cb4e9bc66430aa637916e61993e8c85f..2dfabdcccdf31d6ea3604c0c8eaeb6210b14db1f 100644
--- a/test/language/statements/for/S12.6.3_A11_T3.js
+++ b/test/language/statements/for/S12.6.3_A11_T3.js
@@ -8,7 +8,9 @@ info: >
     breaks
 es5id: 12.6.3_A11_T3
 description: Trying to continue non-existent label
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 __str="";
diff --git a/test/language/statements/for/S12.6.3_A12.1_T3.js b/test/language/statements/for/S12.6.3_A12.1_T3.js
index b54efa56ce4f2959859fa8f743af770151f345dc..51508b0bc304994c063ab9a6a1a5d2e900f690e9 100644
--- a/test/language/statements/for/S12.6.3_A12.1_T3.js
+++ b/test/language/statements/for/S12.6.3_A12.1_T3.js
@@ -8,7 +8,9 @@ info: >
     returned while evaluating a "var-loop"
 es5id: 12.6.3_A12.1_T3
 description: Trying to break non-existent label
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 __str="";
diff --git a/test/language/statements/for/S12.6.3_A12_T3.js b/test/language/statements/for/S12.6.3_A12_T3.js
index 42680be4d67e900bd1d6b65014de091a7252e477..4c5d997ee2b207350a2208857aa8913198be4d1e 100644
--- a/test/language/statements/for/S12.6.3_A12_T3.js
+++ b/test/language/statements/for/S12.6.3_A12_T3.js
@@ -8,7 +8,9 @@ info: >
     returned while evaluating a loop
 es5id: 12.6.3_A12_T3
 description: Trying to break non-existent label
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 __str="";
diff --git a/test/language/statements/for/S12.6.3_A4.1.js b/test/language/statements/for/S12.6.3_A4.1.js
index aa8b4dca22636af97a8ea2777c74e887017b1028..c699257ddea8b43e89ee6115cc5504153fcc8c7a 100644
--- a/test/language/statements/for/S12.6.3_A4.1.js
+++ b/test/language/statements/for/S12.6.3_A4.1.js
@@ -8,7 +8,9 @@ info: >
     IterationStatement
 es5id: 12.6.3_A4.1
 description: Checking if execution of "for (var a in arr;1;){}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 arr = [1,2,3,4,5];
diff --git a/test/language/statements/for/S12.6.3_A4_T1.js b/test/language/statements/for/S12.6.3_A4_T1.js
index d9654fa5f858534e0b8255872e06df43a96b44bc..c8e355bb24c3cb96f0d52ab68e9beef4818032e7 100644
--- a/test/language/statements/for/S12.6.3_A4_T1.js
+++ b/test/language/statements/for/S12.6.3_A4_T1.js
@@ -8,7 +8,9 @@ info: >
     IterationStatement
 es5id: 12.6.3_A4_T1
 description: Checking if execution of "for (a in arr;1;){}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 arr = [1,2,3,4,5];
diff --git a/test/language/statements/for/S12.6.3_A4_T2.js b/test/language/statements/for/S12.6.3_A4_T2.js
index 0fe801b152b08eb6acf08f9443cfc9afdd5ce58d..ccffa955b4ee69b69edc986acfef5ba0dda363e2 100644
--- a/test/language/statements/for/S12.6.3_A4_T2.js
+++ b/test/language/statements/for/S12.6.3_A4_T2.js
@@ -8,7 +8,9 @@ info: >
     IterationStatement
 es5id: 12.6.3_A4_T2
 description: Checking if execution of "for (1 in arr;1;){}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 arr = [1,2,3,4,5];
diff --git a/test/language/statements/for/S12.6.3_A7.1_T1.js b/test/language/statements/for/S12.6.3_A7.1_T1.js
index 5b6170827903b9b46cc20969c3173cfccb50e5f0..fba75344df3ba8604f08c661dd22f2e628dc03c5 100644
--- a/test/language/statements/for/S12.6.3_A7.1_T1.js
+++ b/test/language/statements/for/S12.6.3_A7.1_T1.js
@@ -9,7 +9,9 @@ es5id: 12.6.3_A7.1_T1
 description: >
     Checking if execution of "for(var index=0; index<10; index++;
     index--)" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/for/S12.6.3_A7.1_T2.js b/test/language/statements/for/S12.6.3_A7.1_T2.js
index 20cd21ef76322e3d67a7676f235556a59dd096d8..439ac887d099b460440de8392a892cbdceac83cb 100644
--- a/test/language/statements/for/S12.6.3_A7.1_T2.js
+++ b/test/language/statements/for/S12.6.3_A7.1_T2.js
@@ -9,7 +9,9 @@ es5id: 12.6.3_A7.1_T2
 description: >
     Checking if execution of "for(var index=0; index<10; index+=4;
     index++; index--)" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/for/S12.6.3_A7_T1.js b/test/language/statements/for/S12.6.3_A7_T1.js
index 11189440ee6bd8e67f05a238f55675ad6afff933..68eefb6dd73f609ff2532a5212b3f179ee2d4f73 100644
--- a/test/language/statements/for/S12.6.3_A7_T1.js
+++ b/test/language/statements/for/S12.6.3_A7_T1.js
@@ -9,7 +9,9 @@ es5id: 12.6.3_A7_T1
 description: >
     Checking if execution of "for(index=0; index<10; index++;
     index--)" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/for/S12.6.3_A7_T2.js b/test/language/statements/for/S12.6.3_A7_T2.js
index 342a611457ddd154fdb7ec32c57d48b9aea0c586..81dd59e6353b291396705b4f317cd2277f52b8c6 100644
--- a/test/language/statements/for/S12.6.3_A7_T2.js
+++ b/test/language/statements/for/S12.6.3_A7_T2.js
@@ -9,7 +9,9 @@ es5id: 12.6.3_A7_T2
 description: >
     Checking if execution of "for(index=0; index<10; index+=4;
     index++; index--)" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/for/S12.6.3_A8.1_T1.js b/test/language/statements/for/S12.6.3_A8.1_T1.js
index eae1d63e7083ee297549363ac1288c65a0e4fb93..788e5313feedf8defd9fbd51334a3a10c3941b69 100644
--- a/test/language/statements/for/S12.6.3_A8.1_T1.js
+++ b/test/language/statements/for/S12.6.3_A8.1_T1.js
@@ -7,7 +7,9 @@ es5id: 12.6.3_A8.1_T1
 description: >
     Checking if execution of "for(var index=0; index<100; {index++;
     index*2;}) {  arr.add(""+index);}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var arr = [];
diff --git a/test/language/statements/for/S12.6.3_A8.1_T2.js b/test/language/statements/for/S12.6.3_A8.1_T2.js
index d5774cd7bbbe5de27c343b3a2c890e786f6e5347..e5aa75eb31ce9d415f3dc2a04297a2a25ecda628 100644
--- a/test/language/statements/for/S12.6.3_A8.1_T2.js
+++ b/test/language/statements/for/S12.6.3_A8.1_T2.js
@@ -7,7 +7,9 @@ es5id: 12.6.3_A8.1_T2
 description: >
     Checking if execution of "for(var index=0; {index++;index<100;};
     index*2;) {  arr.add(""+index);}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var arr = [];
diff --git a/test/language/statements/for/S12.6.3_A8.1_T3.js b/test/language/statements/for/S12.6.3_A8.1_T3.js
index 2298869eb8a53cc2eae14f9e856886a1991fc2cd..a4ca8ef743ade7c2acf602dc107388a6237cf624 100644
--- a/test/language/statements/for/S12.6.3_A8.1_T3.js
+++ b/test/language/statements/for/S12.6.3_A8.1_T3.js
@@ -7,7 +7,9 @@ es5id: 12.6.3_A8.1_T3
 description: >
     Checking if execution of "for({var index=0; index+=1;}
     index++<=10; index*2;) { arr.add(""+index);}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var arr = [];
diff --git a/test/language/statements/for/S12.6.3_A8_T1.js b/test/language/statements/for/S12.6.3_A8_T1.js
index 90a8a52e3f6abb6282393c9de6e40954d068aeec..4c90bd691232fbdac32ceea45b1e97d30bb8c920 100644
--- a/test/language/statements/for/S12.6.3_A8_T1.js
+++ b/test/language/statements/for/S12.6.3_A8_T1.js
@@ -7,7 +7,9 @@ es5id: 12.6.3_A8_T1
 description: >
     Checking if execution of "for(index=0; index<100; {index++;
     index*2;}) {  arr.add(""+index);}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var arr = [];
diff --git a/test/language/statements/for/S12.6.3_A8_T2.js b/test/language/statements/for/S12.6.3_A8_T2.js
index 8bb3742e9b7c89618123790b770da89b352500e8..d307a29a4c2534c0865f161e47632d7a474cf170 100644
--- a/test/language/statements/for/S12.6.3_A8_T2.js
+++ b/test/language/statements/for/S12.6.3_A8_T2.js
@@ -7,7 +7,9 @@ es5id: 12.6.3_A8_T2
 description: >
     Checking if execution of "for(index=0; {index++;index<100;};
     index*2;) {  arr.add(""+index);}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var arr = [];
diff --git a/test/language/statements/for/S12.6.3_A8_T3.js b/test/language/statements/for/S12.6.3_A8_T3.js
index cea0f6099e54e369e75ce50eb5a91a23474f4819..c29bcf3d2cb72bbd3116333e9d85b71b59eba35f 100644
--- a/test/language/statements/for/S12.6.3_A8_T3.js
+++ b/test/language/statements/for/S12.6.3_A8_T3.js
@@ -7,7 +7,9 @@ es5id: 12.6.3_A8_T3
 description: >
     Checking if execution of "for({index=0; index+=1;} index++<=10;
     index*2;) { arr.add(""+index);}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var arr = [];
diff --git a/test/language/statements/for/decl-cls.js b/test/language/statements/for/decl-cls.js
index 54a6ffbc500469d2dac9c21bbc5d0e69c8d89ebf..f3b9d9ba880811659d546342bb09ba070bdf496e 100644
--- a/test/language/statements/for/decl-cls.js
+++ b/test/language/statements/for/decl-cls.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-for-statement
 es6id: 13.7.4
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ( ; false; ) class C {}
diff --git a/test/language/statements/for/decl-const.js b/test/language/statements/for/decl-const.js
index 0c54e877416fdc4c72ac71f41bf63803ac00b9b5..ea599f0de592c5207a775b48ca2fca1ffa5254d2 100644
--- a/test/language/statements/for/decl-const.js
+++ b/test/language/statements/for/decl-const.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-for-statement
 es6id: 13.7.4
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ( ; false; ) const x = null;
diff --git a/test/language/statements/for/decl-fun.js b/test/language/statements/for/decl-fun.js
index ef3005a5c0b34bdc8ba8780e893faaffcb61864a..6ae66fc468273efcd3e72bc66390f3225e990a8d 100644
--- a/test/language/statements/for/decl-fun.js
+++ b/test/language/statements/for/decl-fun.js
@@ -4,7 +4,9 @@
 description: Function declaration not allowed in statement position
 esid: sec-for-statement
 es6id: 13.7.4
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ( ; false; ) function f() {}
diff --git a/test/language/statements/for/decl-gen.js b/test/language/statements/for/decl-gen.js
index 30a02fa163e92e0fbb345c97579bdca6c118d458..6d427ac666c717f96bcd68c78b4511aeb2c8f1f7 100644
--- a/test/language/statements/for/decl-gen.js
+++ b/test/language/statements/for/decl-gen.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-for-statement
 es6id: 13.7.4
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ( ; false; ) function* g() {}
diff --git a/test/language/statements/for/decl-let.js b/test/language/statements/for/decl-let.js
index 9b40c281d4ea001d0975d0b62b0ccd2c49c100be..7e65f0261e0a088c3d789eb37600ebd367a8d69a 100644
--- a/test/language/statements/for/decl-let.js
+++ b/test/language/statements/for/decl-let.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (let) not allowed in statement position
 esid: sec-for-statement
 es6id: 13.7.4
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 for ( ; false; ) let x;
diff --git a/test/language/statements/for/dstr-const-ary-ptrn-rest-init-ary.js b/test/language/statements/for/dstr-const-ary-ptrn-rest-init-ary.js
index 7c048a19cb7266a96763f39fee45442dbdf381ca..310b5bb75354de8f648ef6319c0d2da7906d2ef8 100644
--- a/test/language/statements/for/dstr-const-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for/dstr-const-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-const-ary-ptrn-rest-init-id.js b/test/language/statements/for/dstr-const-ary-ptrn-rest-init-id.js
index 93834e2c848e4e3b5491dffb25162177146749eb..55f02b08e4cb63fb5ff030f2739e6d899c3a2c14 100644
--- a/test/language/statements/for/dstr-const-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for/dstr-const-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-const-ary-ptrn-rest-init-obj.js b/test/language/statements/for/dstr-const-ary-ptrn-rest-init-obj.js
index ce18995dec7df618c8b0ad0adf0ba7de4e204168..78a39a1f1dea61d24a7a3e74d76ac08086bc41a5 100644
--- a/test/language/statements/for/dstr-const-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for/dstr-const-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-ary.js
index d75c3e49fb1ba8ae7e72044c020a02200a8e4e3c..9070a0ce29655c77b047d83c455c7b8bc7279bf7 100644
--- a/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-id.js b/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-id.js
index 592cc782ae2de3ce2da740de4a4b959189c0734e..7b49c1076669af9ac5e1492892384ba24eaa5a1a 100644
--- a/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-obj.js
index 576cdab260624e9e8fa86326dd325fe95a52da15..c5083ec107235619a06a3a3f610b312b694cdfb8 100644
--- a/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for/dstr-const-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-let-ary-ptrn-rest-init-ary.js b/test/language/statements/for/dstr-let-ary-ptrn-rest-init-ary.js
index afe478443ba09f9131aa09fbf17e990020ebf8f5..df6bc39025e3828653268638400015e19d696c25 100644
--- a/test/language/statements/for/dstr-let-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for/dstr-let-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-let-ary-ptrn-rest-init-id.js b/test/language/statements/for/dstr-let-ary-ptrn-rest-init-id.js
index a6147a5ed7a92643903420d16b4b56958b067d58..96be1548a46abd08ed5a910fb86793a8253f9f8d 100644
--- a/test/language/statements/for/dstr-let-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for/dstr-let-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-let-ary-ptrn-rest-init-obj.js b/test/language/statements/for/dstr-let-ary-ptrn-rest-init-obj.js
index 8792d02b41dd07dbe5ad217daf4fb56ddf050775..b88bf55356be445d9c1e1dde4aa0a628150458c1 100644
--- a/test/language/statements/for/dstr-let-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for/dstr-let-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-ary.js
index c5f70b29b2d77befb75864dde075d2d5f30f6dda..974f510e8712fef8969eb71bd7d6ef6feb574a23 100644
--- a/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-id.js b/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-id.js
index adad2e9cdc844751066efd85994cda2ec51c9fba..5b181970e2abbb5c4f26a82c1a63044f361d51e1 100644
--- a/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-obj.js
index 3c12299c881ab901f7e9415e50bd056815af9acb..b581a089d8ea481779024d1e9879f0d56cb6afa1 100644
--- a/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for/dstr-let-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( LexicalDeclaration Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-var-ary-ptrn-rest-init-ary.js b/test/language/statements/for/dstr-var-ary-ptrn-rest-init-ary.js
index a8c12fcb75ece812804aaa5584ab17b4840348c4..6e04f2f54c677698d264ef65532cc5e0ab6f0c63 100644
--- a/test/language/statements/for/dstr-var-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/for/dstr-var-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var VariableDeclarationList ; Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-var-ary-ptrn-rest-init-id.js b/test/language/statements/for/dstr-var-ary-ptrn-rest-init-id.js
index 5252a5ba361be2bbf67bec092ded374451c31a85..a1eba862054fb62d15d56450f757790a9cab6792 100644
--- a/test/language/statements/for/dstr-var-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/for/dstr-var-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var VariableDeclarationList ; Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-var-ary-ptrn-rest-init-obj.js b/test/language/statements/for/dstr-var-ary-ptrn-rest-init-obj.js
index 43df2f1a7372b600179de364a3274a80dff7b06f..0eec8d93a0c06368e7458d6ae33fc9386402cbf4 100644
--- a/test/language/statements/for/dstr-var-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/for/dstr-var-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var VariableDeclarationList ; Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-ary.js b/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-ary.js
index aed59f853cdb1bc3e3714c4b0e21733d8dd021e9..122a99a2f54b839ad8f0368fb9b2b1127b68839d 100644
--- a/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var VariableDeclarationList ; Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-id.js b/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-id.js
index 97f03b6dfd9055ba7798e72a3c417cb058889fc0..aa4c4ffcd04e09ec7aa641b621cf811c084e630b 100644
--- a/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var VariableDeclarationList ; Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-obj.js b/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-obj.js
index 6c9ada3c3a4f24f4ef0015f05d03a55e8879b1e9..e54ad010dff6f8cac98aaa41887799afbe25c942 100644
--- a/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/for/dstr-var-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-for-statement-runtime-semantics-labelledevaluation
 es6id: 13.7.4.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     IterationStatement :
         for ( var VariableDeclarationList ; Expressionopt ; Expressionopt ) Statement
diff --git a/test/language/statements/for/head-const-bound-names-in-stmt.js b/test/language/statements/for/head-const-bound-names-in-stmt.js
index 65ad8dde249303b56ce85ffe1fe4ded07181917e..793d427a9c8ecdd79cef739a9b6c90dbee3fe233 100644
--- a/test/language/statements/for/head-const-bound-names-in-stmt.js
+++ b/test/language/statements/for/head-const-bound-names-in-stmt.js
@@ -8,7 +8,9 @@ info: |
 
     It is a Syntax Error if any element of the BoundNames of LexicalDeclaration
     also occurs in the VarDeclaredNames of Statement.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-for-statement
 es6id: 13.7.4
 ---*/
diff --git a/test/language/statements/for/head-let-bound-names-in-stmt.js b/test/language/statements/for/head-let-bound-names-in-stmt.js
index e026d4edf8a094348e8d3e1391059e9a2b80ef96..c2a6acb1e66e9a69af8eb72b7e6c958a8bcd6ea4 100644
--- a/test/language/statements/for/head-let-bound-names-in-stmt.js
+++ b/test/language/statements/for/head-let-bound-names-in-stmt.js
@@ -8,7 +8,9 @@ info: |
 
     It is a Syntax Error if any element of the BoundNames of LexicalDeclaration
     also occurs in the VarDeclaredNames of Statement.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-for-statement
 es6id: 13.7.4
 ---*/
diff --git a/test/language/statements/for/labelled-fn-stmt-const.js b/test/language/statements/for/labelled-fn-stmt-const.js
index ec6bfccffa15ae1361e7f9cd78166f28f0b1e162..d198573ae382260320b1bb19fe6ebbc5e4455b1a 100644
--- a/test/language/statements/for/labelled-fn-stmt-const.js
+++ b/test/language/statements/for/labelled-fn-stmt-const.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for/labelled-fn-stmt-expr.js b/test/language/statements/for/labelled-fn-stmt-expr.js
index 80cd61dcd1bd7627bf67e09fdf61b8727a672ef7..86aaa01a088ac917b406c24a45f2af69cf4fcc23 100644
--- a/test/language/statements/for/labelled-fn-stmt-expr.js
+++ b/test/language/statements/for/labelled-fn-stmt-expr.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for/labelled-fn-stmt-let.js b/test/language/statements/for/labelled-fn-stmt-let.js
index 9ac16eaf56552b49e0622ad33a02ab8ff5618ef6..47b14c01e2627eef7a1381c8560a1007fdcc1f93 100644
--- a/test/language/statements/for/labelled-fn-stmt-let.js
+++ b/test/language/statements/for/labelled-fn-stmt-let.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/for/labelled-fn-stmt-var.js b/test/language/statements/for/labelled-fn-stmt-var.js
index 58c08f623abb6a1fb51c59d3fc56b112d8b1aa86..c1ea93bb4050eef54ce0953da5d03d7f34861afa 100644
--- a/test/language/statements/for/labelled-fn-stmt-var.js
+++ b/test/language/statements/for/labelled-fn-stmt-var.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/function/13.0_4-5gs.js b/test/language/statements/function/13.0_4-5gs.js
index 325748e67128009a142ef3bdb0a1caaace590673..b96877fe6cc106fa217a35df6e6ea87c18063d77 100644
--- a/test/language/statements/function/13.0_4-5gs.js
+++ b/test/language/statements/function/13.0_4-5gs.js
@@ -6,9 +6,10 @@ es5id: 13.0_4-5gs
 description: >
     Strict Mode - SourceElements is evaluated as strict mode code when
     a FunctionDeclaration is contained in strict mode code
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 function _13_0_4_5_fun() { eval = 42; };
diff --git a/test/language/statements/function/13.1-13gs.js b/test/language/statements/function/13.1-13gs.js
index a39cfaa17db33c9b9ed5b8052a79ac956603caa2..9fcafc1c810196dc7fd6f4d2d4ba0a8a34656b15 100644
--- a/test/language/statements/function/13.1-13gs.js
+++ b/test/language/statements/function/13.1-13gs.js
@@ -6,9 +6,10 @@ es5id: 13.1-13gs
 description: >
     StrictMode - SyntaxError is thrown if 'arguments' occurs as the
     Identifier of a FunctionDeclaration
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 function arguments() { };
diff --git a/test/language/statements/function/13.1-1gs.js b/test/language/statements/function/13.1-1gs.js
index 0dbfb456705092e523a04398296f814b78d33e60..021c961c55b3d80756f773ba92fdb1cfe072797a 100644
--- a/test/language/statements/function/13.1-1gs.js
+++ b/test/language/statements/function/13.1-1gs.js
@@ -7,9 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier 'eval'
     appears within a FormalParameterList of a strict mode
     FunctionDeclaration
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 function _13_1_1_fun(eval) { }
diff --git a/test/language/statements/function/13.1-4gs.js b/test/language/statements/function/13.1-4gs.js
index e7726c47ebb83722c236e54848be90193fdb0d24..0c4549e74a84c307d1819cc89b65c8c897d253e0 100644
--- a/test/language/statements/function/13.1-4gs.js
+++ b/test/language/statements/function/13.1-4gs.js
@@ -7,9 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if the identifier 'arguments'
     appears within a FormalParameterList of a strict mode
     FunctionExpression
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 var _13_1_4_fun = function (arguments) { };
diff --git a/test/language/statements/function/13.1-5gs.js b/test/language/statements/function/13.1-5gs.js
index 27c9026195c3a4e685cfcaa0378b6debd3b6bbfd..4d75685038356ed7119d3e0f23d06670dfcc0081 100644
--- a/test/language/statements/function/13.1-5gs.js
+++ b/test/language/statements/function/13.1-5gs.js
@@ -6,9 +6,10 @@ es5id: 13.1-5gs
 description: >
     Strict Mode - SyntaxError is thrown if a FunctionDeclaration has
     two identical parameters
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 function _13_1_5_fun(param, param) { }
diff --git a/test/language/statements/function/13.1-8gs.js b/test/language/statements/function/13.1-8gs.js
index a2c54ffdc4a24e3fd0b629d79c5c1667463d7b7d..6d61f0a5b9ec8fab61c4ee894db611dd7b1b2c1d 100644
--- a/test/language/statements/function/13.1-8gs.js
+++ b/test/language/statements/function/13.1-8gs.js
@@ -6,9 +6,10 @@ es5id: 13.1-8gs
 description: >
     Strict Mode - SyntaxError is thrown if a FunctionExpression has
     two identical parameters
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 var _13_1_8_fun = function (param, param) { };
diff --git a/test/language/statements/function/S13_A7_T3.js b/test/language/statements/function/S13_A7_T3.js
index 315edd9470400223b1899bff818fb29daffeae84..81926f1006c255eb9f916dc09318b604a48221fc 100644
--- a/test/language/statements/function/S13_A7_T3.js
+++ b/test/language/statements/function/S13_A7_T3.js
@@ -5,7 +5,9 @@
 info: The FunctionBody must be SourceElements
 es5id: 13_A7_T3
 description: Checking if execution of "function __func(){\A\B\C}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function __func(){\A\B\C};
diff --git a/test/language/statements/function/dstr-ary-ptrn-rest-init-ary.js b/test/language/statements/function/dstr-ary-ptrn-rest-init-ary.js
index 461e1136d8df07d610414ace1fc4958d205aed76..b678c25a08f4fac0a18691fde85d054017730139 100644
--- a/test/language/statements/function/dstr-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/function/dstr-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-ary-ptrn-rest-init-id.js b/test/language/statements/function/dstr-ary-ptrn-rest-init-id.js
index 99cf94a917f9e3982008ff8cd93874f962a05e60..3a3c769294ca5a8a3b9d3cd427ec009677c3e5ee 100644
--- a/test/language/statements/function/dstr-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/function/dstr-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-ary-ptrn-rest-init-obj.js b/test/language/statements/function/dstr-ary-ptrn-rest-init-obj.js
index 79b0e76525f49393aa2e400cfe8cff7c986689c8..26a9ccdfd00d315487f5393e5cdd4430e6afce3a 100644
--- a/test/language/statements/function/dstr-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/function/dstr-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-ary-ptrn-rest-not-final-ary.js b/test/language/statements/function/dstr-ary-ptrn-rest-not-final-ary.js
index 0101f587656662045904e973daecbff8566265f5..7d42ce5fe18b836efbaef2e0d8023fc31e936b21 100644
--- a/test/language/statements/function/dstr-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/function/dstr-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-ary-ptrn-rest-not-final-id.js b/test/language/statements/function/dstr-ary-ptrn-rest-not-final-id.js
index 04cbc7eb0cec454c131766595596f7643ec0a3cc..c638aa2af1580990dbcc10c114ec89bc18b187ae 100644
--- a/test/language/statements/function/dstr-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/function/dstr-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-ary-ptrn-rest-not-final-obj.js b/test/language/statements/function/dstr-ary-ptrn-rest-not-final-obj.js
index 68160f30ea195ec5b4974f65ee8afc94ca9e9646..b800a7faa3ee464483a6baf0cf1889142be71e89 100644
--- a/test/language/statements/function/dstr-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/function/dstr-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-ary.js b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-ary.js
index bccd34bba81086682aedc4c6960aa600f14ff757..6a726d5d597e28bf3fe468664f69751574632f7e 100644
--- a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-id.js b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-id.js
index 804f98bfea984a56fecf8b9ad9544da929caa19d..1f210dbde0a44764a11a8e9132db66202a67be52 100644
--- a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-obj.js b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-obj.js
index 39a080d8dd0cab2dc08c03e13c4b61e515dbd767..c68034a19f0edbf55d931392d6ae1c1daa3bb5a6 100644
--- a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-ary.js
index f23820db95e1c2f16f4e557a7a9ec5110c99fc93..518743a6edac7f100cece1aaa8492f72ca6194bf 100644
--- a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-id.js b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-id.js
index a3bd7a3b3000016ac34addd0be2c486004328e97..f26a0b4381c433b7398807a228c79ac5bd517f62 100644
--- a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-obj.js
index b0bffcfb89f39262a0f47b3f616ed8f8be56a290..f1ad5c77e5da4270cfa04d2ea5aee6b13753c264 100644
--- a/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/function/dstr-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/early-body-super-call.js b/test/language/statements/function/early-body-super-call.js
index fa3c2a24d2b5ae498d8f1f811bcb0ac997d4624f..23380b0291bf563a3cb4831a270adbd72ae2fa7c 100644
--- a/test/language/statements/function/early-body-super-call.js
+++ b/test/language/statements/function/early-body-super-call.js
@@ -6,7 +6,9 @@ es6id: 14.1.2
 description: Body may not contain a "super" call
 info: >
   It is a Syntax Error if FunctionBody Contains SuperCall is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function f() {
diff --git a/test/language/statements/function/early-body-super-prop.js b/test/language/statements/function/early-body-super-prop.js
index b1602ff8565103be838bf13411343cfcbcc73032..3fc7f900a6349db3bbb2499ca7d5e57e52e3cab0 100644
--- a/test/language/statements/function/early-body-super-prop.js
+++ b/test/language/statements/function/early-body-super-prop.js
@@ -6,7 +6,9 @@ es6id: 14.1.2
 description: Body may not contain a "super" property reference
 info: >
   It is a Syntax Error if FunctionBody Contains SuperProperty is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function f() {
diff --git a/test/language/statements/function/early-params-super-call.js b/test/language/statements/function/early-params-super-call.js
index be1ff3d6e44300b94b1b35f2d426956c3228140c..ce762e6b9607a114c6075237d00c13c13c548558 100644
--- a/test/language/statements/function/early-params-super-call.js
+++ b/test/language/statements/function/early-params-super-call.js
@@ -6,7 +6,9 @@ es6id: 14.1.2
 description: Parameters may not contain a "super" call
 info: >
   It is a Syntax Error if FormalParameters Contains SuperProperty is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function f(x = super()) {}
diff --git a/test/language/statements/function/early-params-super-prop.js b/test/language/statements/function/early-params-super-prop.js
index 2dbe965d87562479fea6f8abfc868733baeb25eb..829470b7e433fec9a7dd135a9fdf85d9c7a1adc5 100644
--- a/test/language/statements/function/early-params-super-prop.js
+++ b/test/language/statements/function/early-params-super-prop.js
@@ -6,7 +6,9 @@ es6id: 14.1.2
 description: Parameters may not contain a "super" property reference
 info: >
   It is a Syntax Error if FunctionBody Contains SuperProperty is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function f(x = super.x) {}
diff --git a/test/language/statements/function/param-dflt-yield-strict.js b/test/language/statements/function/param-dflt-yield-strict.js
index 39a14ad1d4579697dac341ea54830e0c859861b3..f2dd00ab2b23ece457d9dc2f93749513b01ed3ca 100644
--- a/test/language/statements/function/param-dflt-yield-strict.js
+++ b/test/language/statements/function/param-dflt-yield-strict.js
@@ -11,7 +11,9 @@ info: |
     function BindingIdentifier[?Yield] ( FormalParameters ) { FunctionBody }
 features: [generators, default-parameters]
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function *g() {
diff --git a/test/language/statements/function/params-dflt-duplicates.js b/test/language/statements/function/params-dflt-duplicates.js
index 8596f0c19ae287a26bde928688c7a14e9d7a6bee..2c604ff2ab095c08bccdc5db6590548d275f6d36 100644
--- a/test/language/statements/function/params-dflt-duplicates.js
+++ b/test/language/statements/function/params-dflt-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/params-dflt-rest.js b/test/language/statements/function/params-dflt-rest.js
index 532ac9669f13a12e6695f133aa4a28aaaf928e08..81fb0fc82365acd04e46b9d2fae1948c0bb5f991 100644
--- a/test/language/statements/function/params-dflt-rest.js
+++ b/test/language/statements/function/params-dflt-rest.js
@@ -7,7 +7,9 @@ esid: sec-function-definitions-runtime-semantics-instantiatefunctionobject
 es6id: 14.1.19
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     FunctionDeclaration :
         function BindingIdentifier ( FormalParameters ) { FunctionBody }
diff --git a/test/language/statements/function/use-strict-with-non-simple-param.js b/test/language/statements/function/use-strict-with-non-simple-param.js
index 91efcc18e32ac7674455c5bf7183c6b0bb477ca1..13821eb24d93ea44cd3ebe62871b7d9ed8cd26f5 100755
--- a/test/language/statements/function/use-strict-with-non-simple-param.js
+++ b/test/language/statements/function/use-strict-with-non-simple-param.js
@@ -9,7 +9,9 @@ info: >
   Static Semantics: Early Errors
 
   It is a Syntax Error if ContainsUseStrict of FunctionBody is true and IsSimpleParameterList of FormalParameters is false.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function f(a = 0) {
diff --git a/test/language/statements/generators/dstr-ary-ptrn-rest-init-ary.js b/test/language/statements/generators/dstr-ary-ptrn-rest-init-ary.js
index 20c620416ddbb9fa3692f41f647e749adf793e6a..74e6fdda06a008f3ec5c81da93c08c766e087f13 100644
--- a/test/language/statements/generators/dstr-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/generators/dstr-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-ary-ptrn-rest-init-id.js b/test/language/statements/generators/dstr-ary-ptrn-rest-init-id.js
index 83289d63c076795f034b12516d8a1c56c65dd1c3..59a54d04c69f62df93e91ce7e9286b2ec4a4bfd7 100644
--- a/test/language/statements/generators/dstr-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/generators/dstr-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-ary-ptrn-rest-init-obj.js b/test/language/statements/generators/dstr-ary-ptrn-rest-init-obj.js
index f68123f3936488a07b45322adc901d3b05629bc6..2185bc781261c9e685122abce2b93b674192c24b 100644
--- a/test/language/statements/generators/dstr-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/generators/dstr-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-ary.js b/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-ary.js
index 9c8a41998044d6fa7bad8d342d86a72a5699c193..ced93fff5b96388b8afdbfa35fb01469b4ab42bd 100644
--- a/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-id.js b/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-id.js
index f60d2609ba813f55b7b8da326f77669bbd84074b..9671128453b020d19f324b96ad3879979ac3aa68 100644
--- a/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-obj.js b/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-obj.js
index 6911e19e97e1744507ad341476bb185c075aa5e2..02a38d8fe7b386a5e41562fa68cd1e16f0181f04 100644
--- a/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/generators/dstr-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-ary.js b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-ary.js
index 2482ebae3e7b31dbe77ea5a3b9deb856ab39f124..652804dacc1b00cb37f491d11b97cd53322903fb 100644
--- a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-id.js b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-id.js
index 8f5757f7ab9faa0282fbf169fc7f7043846fd9af..3e646f9d6d84ea27e955081fcba4eb9815086abc 100644
--- a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-obj.js b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-obj.js
index 3a7ae5656368ca8bb62a2c31a7e8b39f1aea0c5a..96c4324a26f13a4627ad270213ff249ebbe6ad3c 100644
--- a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-ary.js b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-ary.js
index db823e4941fa8b538dc76cda034c0786738879cf..9a37ab3d35fb7830269cbe330ff0d52088d7476e 100644
--- a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-id.js b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-id.js
index 19178f05f9823c654cbc11bb099b36aa7bb5f4e2..90aa556d281e121786c18a03353efebcb6ee1783 100644
--- a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-obj.js b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-obj.js
index 0b871fc2e67e25881494d193400f6877a68583a9..769b14e62c45701f32fe7c6ac2ef06463a17b8f9 100644
--- a/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/generators/dstr-dflt-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [destructuring-binding, default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/param-dflt-yield.js b/test/language/statements/generators/param-dflt-yield.js
index 6df68b3bebd51d2c89aa4593df048ca6d699efa2..5d7cc7e5619d4f941d3453ae1298162284da2839 100644
--- a/test/language/statements/generators/param-dflt-yield.js
+++ b/test/language/statements/generators/param-dflt-yield.js
@@ -14,7 +14,9 @@ info: |
   function because any expressions that are part of FormalParameters are
   evaluated before the resulting generator object is in a resumable state.
 features: [default-parameters]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function* g(x = yield) {}
diff --git a/test/language/statements/generators/params-dflt-duplicates.js b/test/language/statements/generators/params-dflt-duplicates.js
index eb4c4459438b6325e2fa1ed95afa60b610d9adbe..4595958258f911f0b7e1bb4ffc039e141256cace 100644
--- a/test/language/statements/generators/params-dflt-duplicates.js
+++ b/test/language/statements/generators/params-dflt-duplicates.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/params-dflt-rest.js b/test/language/statements/generators/params-dflt-rest.js
index c198c3f325b23c450142db13912032dacae68547..95e1cff50130ac438f128d814384360298fb9f9f 100644
--- a/test/language/statements/generators/params-dflt-rest.js
+++ b/test/language/statements/generators/params-dflt-rest.js
@@ -7,7 +7,9 @@ esid: sec-generator-function-definitions-runtime-semantics-instantiatefunctionob
 es6id: 14.4.12
 features: [default-parameters]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     GeneratorDeclaration : function * ( FormalParameters ) { GeneratorBody }
 
diff --git a/test/language/statements/generators/use-strict-with-non-simple-param.js b/test/language/statements/generators/use-strict-with-non-simple-param.js
index 1fc9b13ef76e1a574fc3d75061a6df1f1d3b4c13..91dd8c85929db270757327e821f90139001676e6 100755
--- a/test/language/statements/generators/use-strict-with-non-simple-param.js
+++ b/test/language/statements/generators/use-strict-with-non-simple-param.js
@@ -9,7 +9,9 @@ info: >
   Static Semantics: Early Errors
 
   It is a Syntax Error if ContainsUseStrict of GeneratorBody is true and IsSimpleParameterList of FormalParameters is false.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function* f(a = 0) {
diff --git a/test/language/statements/generators/yield-as-binding-identifier.js b/test/language/statements/generators/yield-as-binding-identifier.js
index fa7cc86cd04e9c42b8fdec37d52a9313141a7ec7..e45037877921f544b65927731318219d59f2a50d 100644
--- a/test/language/statements/generators/yield-as-binding-identifier.js
+++ b/test/language/statements/generators/yield-as-binding-identifier.js
@@ -6,7 +6,9 @@
       `yield` is a reserved keyword within generator function bodies and may
       not be used as a binding identifier.
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 var result;
diff --git a/test/language/statements/generators/yield-as-label.js b/test/language/statements/generators/yield-as-label.js
index 21ad2760c42f513020ead5f444db787a02aa6db6..0da2b9a4241079e7826b824300d8bfef0ca04cbc 100644
--- a/test/language/statements/generators/yield-as-label.js
+++ b/test/language/statements/generators/yield-as-label.js
@@ -6,7 +6,9 @@
       `yield` is a reserved keyword within generator function bodies and may
       not be used as a label.
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 function* g() {
diff --git a/test/language/statements/generators/yield-as-logical-or-expression.js b/test/language/statements/generators/yield-as-logical-or-expression.js
index 2ebb34402f73e203daff888295ede847637f7309..d77b31584cfd5fd068b3a250c2ca4cf60f434a6b 100644
--- a/test/language/statements/generators/yield-as-logical-or-expression.js
+++ b/test/language/statements/generators/yield-as-logical-or-expression.js
@@ -5,7 +5,9 @@
   description: >
       `yield` expressions are not LogicalOrExpressions.
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 
diff --git a/test/language/statements/generators/yield-as-parameter.js b/test/language/statements/generators/yield-as-parameter.js
index 0b7c04ba058ee8c7e5f3bf837014894a12c89c27..1ced6fbb249b811ed93f3c91f08a8307f50abeaf 100644
--- a/test/language/statements/generators/yield-as-parameter.js
+++ b/test/language/statements/generators/yield-as-parameter.js
@@ -6,7 +6,9 @@
       `yield` is a reserved keyword within generator function bodies and may
       not be used as the binding identifier of a parameter.
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 function* g(yield) {}
diff --git a/test/language/statements/generators/yield-star-after-newline.js b/test/language/statements/generators/yield-star-after-newline.js
index 0f4f65c558a00f759f015ab772d1d0c94a46269b..88d72db5c0be1eb8b360e17a53b11b5817e6642f 100644
--- a/test/language/statements/generators/yield-star-after-newline.js
+++ b/test/language/statements/generators/yield-star-after-newline.js
@@ -5,7 +5,9 @@
   description: >
       A newline may not precede the `*` token in a `yield` expression.
   es6id: 14.4
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 function* g() {
diff --git a/test/language/statements/generators/yield-weak-binding.js b/test/language/statements/generators/yield-weak-binding.js
index 6fab61a33c8389f2ad38b3ce2d8c42c20a93d8e6..5b5c2a1c56ba8018a4a1dbb175a8230259848bb3 100644
--- a/test/language/statements/generators/yield-weak-binding.js
+++ b/test/language/statements/generators/yield-weak-binding.js
@@ -5,7 +5,9 @@
   description: >
       `yield` expressions bind weakly
   es6id: 14.4
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
  ---*/
 
 function* g() { yield 3 + yield 4; }
diff --git a/test/language/statements/if/S12.5_A11.js b/test/language/statements/if/S12.5_A11.js
index a574356ea81763194149072eb3d239d8743bd375..322cd0b752cfffa55b27b0dbced0d8b0f81acec4 100644
--- a/test/language/statements/if/S12.5_A11.js
+++ b/test/language/statements/if/S12.5_A11.js
@@ -5,7 +5,9 @@
 info: "{} within the \"if\" expression is not allowed"
 es5id: 12.5_A11
 description: Checking if execution of "if({1})" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/if/S12.5_A6_T1.js b/test/language/statements/if/S12.5_A6_T1.js
index 0eef08663a12d22a6b09aea01b7946dd4b145fbf..b31fb3a799b4d6f631e2a2bc19ee26f8d8b39cd2 100644
--- a/test/language/statements/if/S12.5_A6_T1.js
+++ b/test/language/statements/if/S12.5_A6_T1.js
@@ -5,7 +5,9 @@
 info: In the If statement expression must be enclosed in braces
 es5id: 12.5_A6_T1
 description: Checking if execution of "if true" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/if/S12.5_A6_T2.js b/test/language/statements/if/S12.5_A6_T2.js
index f555ef988cb4621063f7186dd3a2d003bedc91d1..fb5f29796d280b0470bbc22dc00dca6c4d1ba50c 100644
--- a/test/language/statements/if/S12.5_A6_T2.js
+++ b/test/language/statements/if/S12.5_A6_T2.js
@@ -5,7 +5,9 @@
 info: In the If statement expression must be enclosed in braces
 es5id: 12.5_A6_T2
 description: Checking if execution of "if false" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/if/S12.5_A8.js b/test/language/statements/if/S12.5_A8.js
index f4488788e6150043c842247cbf6c3d1869b12a23..dc0a087c32bd70865ba6507476ee21eed8c32c81 100644
--- a/test/language/statements/if/S12.5_A8.js
+++ b/test/language/statements/if/S12.5_A8.js
@@ -5,7 +5,9 @@
 info: In the "if" Statement empty expression is not allowed
 es5id: 12.5_A8
 description: Checking if execution of "if()" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/if/if-cls-else-cls.js b/test/language/statements/if/if-cls-else-cls.js
index 16e6728367cf0250db0b62c837cc8f184384ea40..dad1387b664556be072d437f89c8d5729eb53c59 100644
--- a/test/language/statements/if/if-cls-else-cls.js
+++ b/test/language/statements/if/if-cls-else-cls.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) class C {} else class D {}
diff --git a/test/language/statements/if/if-cls-else-stmt.js b/test/language/statements/if/if-cls-else-stmt.js
index 1c5fdca986e01c55a6e3c6880133e487e503fd20..7aef0ed5652b3458df171fe6c7208b54cc245fd6 100644
--- a/test/language/statements/if/if-cls-else-stmt.js
+++ b/test/language/statements/if/if-cls-else-stmt.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) class C {} else ;
diff --git a/test/language/statements/if/if-cls-no-else.js b/test/language/statements/if/if-cls-no-else.js
index 49956bf38c65dd22a5e095f47425a0a9fccc0da8..0d3da48837b9419552a1652226f90f30bda567ca 100644
--- a/test/language/statements/if/if-cls-no-else.js
+++ b/test/language/statements/if/if-cls-no-else.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) class C {}
diff --git a/test/language/statements/if/if-const-else-const.js b/test/language/statements/if/if-const-else-const.js
index fba8cdbadfc9dd503a895a20cfad9f794102082f..1612733656f159f877dd93203194b325d1bd9a42 100644
--- a/test/language/statements/if/if-const-else-const.js
+++ b/test/language/statements/if/if-const-else-const.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) const x = null; else const y = null;
diff --git a/test/language/statements/if/if-const-else-stmt.js b/test/language/statements/if/if-const-else-stmt.js
index e051c1726c1b78d990ea83146db82d648e0821ee..f95e1a3bcefde2503e339915f787e1fc2618b631 100644
--- a/test/language/statements/if/if-const-else-stmt.js
+++ b/test/language/statements/if/if-const-else-stmt.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) const x = null; else ;
diff --git a/test/language/statements/if/if-const-no-else.js b/test/language/statements/if/if-const-no-else.js
index 317751f4e4b16cd8dd0a1bfb2a04facfda907b96..b50b138109a29f3f7a68bbf41119b770614594ad 100644
--- a/test/language/statements/if/if-const-no-else.js
+++ b/test/language/statements/if/if-const-no-else.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) const x = null;
diff --git a/test/language/statements/if/if-decl-else-decl-strict.js b/test/language/statements/if/if-decl-else-decl-strict.js
index f510ab911edf2a3a61269d730ac69d60ec537c96..8304624ff63c16609be3f38372fa264d5859909e 100644
--- a/test/language/statements/if/if-decl-else-decl-strict.js
+++ b/test/language/statements/if/if-decl-else-decl-strict.js
@@ -4,7 +4,9 @@
 description: AnnexB extension not honored in strict mode (IfStatement with a declaration in both statement positions in the global scope)
 es6id: B.3.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     The following rules for IfStatement augment those in 13.6:
     
diff --git a/test/language/statements/if/if-decl-else-stmt-strict.js b/test/language/statements/if/if-decl-else-stmt-strict.js
index 3303fdcaded2e08766781e668b0ee4ee2534f570..a44d3566f57ade72578e1294df6b204a918573ea 100644
--- a/test/language/statements/if/if-decl-else-stmt-strict.js
+++ b/test/language/statements/if/if-decl-else-stmt-strict.js
@@ -4,7 +4,9 @@
 description: AnnexB extension not honored in strict mode (IfStatement with a declaration in the first statement position in the global scope)
 es6id: B.3.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     The following rules for IfStatement augment those in 13.6:
     
diff --git a/test/language/statements/if/if-decl-no-else-strict.js b/test/language/statements/if/if-decl-no-else-strict.js
index 22001387f17b8255c130e8c497a329af08f00734..6e6ce0b5f946092962ded4f60df6736196a1daca 100644
--- a/test/language/statements/if/if-decl-no-else-strict.js
+++ b/test/language/statements/if/if-decl-no-else-strict.js
@@ -4,7 +4,9 @@
 description: AnnexB extension not honored in strict mode (IfStatement without an else clause in the global scope)
 es6id: B.3.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     The following rules for IfStatement augment those in 13.6:
     
diff --git a/test/language/statements/if/if-fun-else-fun-strict.js b/test/language/statements/if/if-fun-else-fun-strict.js
index f6f58378744f23b071d1b17bd72ac9f08cfd7ab5..5242b83c6837a36554f4b757977e972e14d153ba 100644
--- a/test/language/statements/if/if-fun-else-fun-strict.js
+++ b/test/language/statements/if/if-fun-else-fun-strict.js
@@ -5,7 +5,9 @@ description: AnnexB extension not honored in strict mode (IfStatement with a dec
 esid: sec-if-statement
 es6id: 13.6
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     The following rules for IfStatement augment those in 13.6:
 
diff --git a/test/language/statements/if/if-fun-else-stmt-strict.js b/test/language/statements/if/if-fun-else-stmt-strict.js
index fcb8da8deb1a52eccd4e825e85c9b048ef72ebf4..d82cc8c709f03f7adf9295f5e4283fb4170a8e9b 100644
--- a/test/language/statements/if/if-fun-else-stmt-strict.js
+++ b/test/language/statements/if/if-fun-else-stmt-strict.js
@@ -5,7 +5,9 @@ description: AnnexB extension not honored in strict mode (IfStatement with a dec
 esid: sec-if-statement
 es6id: 13.6
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     The following rules for IfStatement augment those in 13.6:
 
diff --git a/test/language/statements/if/if-fun-no-else-strict.js b/test/language/statements/if/if-fun-no-else-strict.js
index 7e1199e363d84f4425bcf273ca260f81ceb053ce..0e30a9f622b810faecd7b5dbfd9ac20ab92ec0c9 100644
--- a/test/language/statements/if/if-fun-no-else-strict.js
+++ b/test/language/statements/if/if-fun-no-else-strict.js
@@ -5,7 +5,9 @@ description: AnnexB extension not honored in strict mode (IfStatement without an
 esid: sec-if-statement
 es6id: 13.6
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     The following rules for IfStatement augment those in 13.6:
 
diff --git a/test/language/statements/if/if-gen-else-gen.js b/test/language/statements/if/if-gen-else-gen.js
index 438b1e2cb605878db3b0a21ef5024d0069ee70c9..9d6517d44ae36ddcaca7e7d21e6303daa548b039 100644
--- a/test/language/statements/if/if-gen-else-gen.js
+++ b/test/language/statements/if/if-gen-else-gen.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) function* g() {  } else function* _g() {}
diff --git a/test/language/statements/if/if-gen-else-stmt.js b/test/language/statements/if/if-gen-else-stmt.js
index a39b393374c3ad42e8b40e959e1e6782728889a3..d735c65fe826940a2beb5f5908ca150bd0878d5b 100644
--- a/test/language/statements/if/if-gen-else-stmt.js
+++ b/test/language/statements/if/if-gen-else-stmt.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) function* g() {  } else ;
diff --git a/test/language/statements/if/if-gen-no-else.js b/test/language/statements/if/if-gen-no-else.js
index 5a90a93a5a19621e96aa42aa042e0a3e79a3a0ae..8f575bae7f9951881249efb12f85a97945d2b259 100644
--- a/test/language/statements/if/if-gen-no-else.js
+++ b/test/language/statements/if/if-gen-no-else.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) function* g() {  }
diff --git a/test/language/statements/if/if-let-else-let.js b/test/language/statements/if/if-let-else-let.js
index 499132770491f965a259f09ac3f0726d851e79ab..ef7eef79c22f06723304bf4753430e36cadd44b3 100644
--- a/test/language/statements/if/if-let-else-let.js
+++ b/test/language/statements/if/if-let-else-let.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (let) not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) let x; else let y;
diff --git a/test/language/statements/if/if-let-else-stmt.js b/test/language/statements/if/if-let-else-stmt.js
index 065476cb9b0fa9ea661a6783a16473cbaa81c1fe..638a8eff81c37273ba95573c80f29930982633ef 100644
--- a/test/language/statements/if/if-let-else-stmt.js
+++ b/test/language/statements/if/if-let-else-stmt.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (let) not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) let x; else ;
diff --git a/test/language/statements/if/if-let-no-else.js b/test/language/statements/if/if-let-no-else.js
index c24f675ea284b247d8003a63c62b503436a847ee..634a61b1d39ceaa546c46480439a03d58b5dc872 100644
--- a/test/language/statements/if/if-let-no-else.js
+++ b/test/language/statements/if/if-let-no-else.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (let) not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) let x;
diff --git a/test/language/statements/if/if-stmt-else-cls.js b/test/language/statements/if/if-stmt-else-cls.js
index 2d05e58d8a0daf4250fbf6dd05860a5ae8d20898..9ddb252fd572fa4bd7ae185b58d9f58f4b782c13 100644
--- a/test/language/statements/if/if-stmt-else-cls.js
+++ b/test/language/statements/if/if-stmt-else-cls.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (false) ; else class C {}
diff --git a/test/language/statements/if/if-stmt-else-const.js b/test/language/statements/if/if-stmt-else-const.js
index e8746d34dbb9311e000dc0b2b2966743a82be268..21dc19451fdfe7c50bb76f15176041b28aca910d 100644
--- a/test/language/statements/if/if-stmt-else-const.js
+++ b/test/language/statements/if/if-stmt-else-const.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (false) ; else const x = null;
diff --git a/test/language/statements/if/if-stmt-else-decl-strict.js b/test/language/statements/if/if-stmt-else-decl-strict.js
index fc7ad50daa9e52a27e3f42238dd9105b8b84bc92..4db206e30d652765092c1c55dfba98999b8da8d5 100644
--- a/test/language/statements/if/if-stmt-else-decl-strict.js
+++ b/test/language/statements/if/if-stmt-else-decl-strict.js
@@ -4,7 +4,9 @@
 description: AnnexB extension not honored in strict mode (IfStatement with a declaration in the second statement position in the global scope)
 es6id: B.3.4
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     The following rules for IfStatement augment those in 13.6:
     
diff --git a/test/language/statements/if/if-stmt-else-fun-strict.js b/test/language/statements/if/if-stmt-else-fun-strict.js
index 80326edf3ecbc088753783791aa469f2edacbade..d9610f50dce578104f2781d3ae497b98d79a6b90 100644
--- a/test/language/statements/if/if-stmt-else-fun-strict.js
+++ b/test/language/statements/if/if-stmt-else-fun-strict.js
@@ -5,7 +5,9 @@ description: AnnexB extension not honored in strict mode (IfStatement with a dec
 esid: sec-if-statement
 es6id: 13.6
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: >
     The following rules for IfStatement augment those in 13.6:
 
diff --git a/test/language/statements/if/if-stmt-else-gen.js b/test/language/statements/if/if-stmt-else-gen.js
index d5a158e294b91779918c3213013f51c820042f08..7579651aed0a469b7ecb42e5e373a91beb0c2eb0 100644
--- a/test/language/statements/if/if-stmt-else-gen.js
+++ b/test/language/statements/if/if-stmt-else-gen.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (false) ; else function* g() {  }
diff --git a/test/language/statements/if/if-stmt-else-let.js b/test/language/statements/if/if-stmt-else-let.js
index 28cd5a74acb067282e997d98ca3af31949a4d2a8..78016c57ebdae65215224d947c24a3984ccff0e1 100644
--- a/test/language/statements/if/if-stmt-else-let.js
+++ b/test/language/statements/if/if-stmt-else-let.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (let) not allowed in statement position
 esid: sec-if-statement
 es6id: 13.6
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (false) ; else let x;
diff --git a/test/language/statements/if/labelled-fn-stmt-first.js b/test/language/statements/if/labelled-fn-stmt-first.js
index b17aaafec86f0eff1c33e0aa1ccb42ae1cdc53ed..6d930fc05b9bc7d2635f9f49f4db02e38b062837 100644
--- a/test/language/statements/if/labelled-fn-stmt-first.js
+++ b/test/language/statements/if/labelled-fn-stmt-first.js
@@ -19,7 +19,9 @@ info: |
 
   In the absence of Annex B.3.2, a SyntaxError should be produced due to the
   labelled function declaration itself.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (false) label1: label2: function test262() {} else ;
diff --git a/test/language/statements/if/labelled-fn-stmt-lone.js b/test/language/statements/if/labelled-fn-stmt-lone.js
index c6e03f370038f1d81ed09845a3cf90c755826210..50a627c0faabb0d006e8a84d9a901c961960731f 100644
--- a/test/language/statements/if/labelled-fn-stmt-lone.js
+++ b/test/language/statements/if/labelled-fn-stmt-lone.js
@@ -19,7 +19,9 @@ info: |
 
   In the absence of Annex B.3.2, a SyntaxError should be produced due to the
   labelled function declaration itself.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (false) label1: label2: function test262() {}
diff --git a/test/language/statements/if/labelled-fn-stmt-second.js b/test/language/statements/if/labelled-fn-stmt-second.js
index 6433ce9dd4e5f0b7a50296a5e913d97a57e141f1..559ad47abd70aaf849e85a1dccdaaa941fd36935 100644
--- a/test/language/statements/if/labelled-fn-stmt-second.js
+++ b/test/language/statements/if/labelled-fn-stmt-second.js
@@ -19,7 +19,9 @@ info: |
 
   In the absence of Annex B.3.2, a SyntaxError should be produced due to the
   labelled function declaration itself.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 if (true) ; else label1: label2: function test262() {}
diff --git a/test/language/statements/labeled/continue.js b/test/language/statements/labeled/continue.js
index 315718a4cc7bd427c72f267a64c3a193c7ec1d3c..3c2f4a84e4635fd64d11451a35934a1511576d4c 100644
--- a/test/language/statements/labeled/continue.js
+++ b/test/language/statements/labeled/continue.js
@@ -13,7 +13,9 @@ info: |
   2. Let newLabelSet be a copy of labelSet with label appended.
   3. Return ContainsUndefinedContinueTarget of LabelledItem with arguments
      iterationSet and newLabelSet. negative: SyntaxError
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 do {
diff --git a/test/language/statements/labeled/decl-cls.js b/test/language/statements/labeled/decl-cls.js
index 5b94766564b7a0ba1298bcb40510a2c465221df2..a3ab64d75840fb58fcae407e0240fbd0d6e6bfba 100644
--- a/test/language/statements/labeled/decl-cls.js
+++ b/test/language/statements/labeled/decl-cls.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-labelled-statements
 es6id: 13.13
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 label: class C {}
diff --git a/test/language/statements/labeled/decl-const.js b/test/language/statements/labeled/decl-const.js
index 0cbc8f8693aa86491ca16ea65a12af063a586bdd..18e38c301274b29f3a9e45149d3f90c3d38c80cb 100644
--- a/test/language/statements/labeled/decl-const.js
+++ b/test/language/statements/labeled/decl-const.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-labelled-statements
 es6id: 13.13
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 label: const x = null;
diff --git a/test/language/statements/labeled/decl-fun-strict.js b/test/language/statements/labeled/decl-fun-strict.js
index edbf6a3d0d23e02493a73221aa467c5b8277b4ee..400d0950d2767cd7a53412bccb398c6336345052 100644
--- a/test/language/statements/labeled/decl-fun-strict.js
+++ b/test/language/statements/labeled/decl-fun-strict.js
@@ -7,7 +7,9 @@ description: >
     function declarations in statement position in strict mode:
     label: Statement
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 label: function g() {}
diff --git a/test/language/statements/labeled/decl-gen.js b/test/language/statements/labeled/decl-gen.js
index 7ba25d863e9cdfc4a198ba93bf0f94d417ac1cbe..7a361e22615d72ae28a7166a1f8684585122b5ae 100644
--- a/test/language/statements/labeled/decl-gen.js
+++ b/test/language/statements/labeled/decl-gen.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-labelled-statements
 es6id: 13.13
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 label: function* g() {}
diff --git a/test/language/statements/labeled/decl-let.js b/test/language/statements/labeled/decl-let.js
index 8d5d9e5d5df1f2db56acd5894e770b15fdeb71b9..56547ab2ee81826b46cca91d70045c73b286a3bb 100644
--- a/test/language/statements/labeled/decl-let.js
+++ b/test/language/statements/labeled/decl-let.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (let) not allowed in statement position
 esid: sec-labelled-statements
 es6id: 13.13
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 label: let x;
diff --git a/test/language/statements/labeled/value-yield-strict.js b/test/language/statements/labeled/value-yield-strict.js
index 855a0aa088728ed796fb5419f225740885eb3e1e..544a2db941ce91a028617ccf8738f24d4bb7393d 100644
--- a/test/language/statements/labeled/value-yield-strict.js
+++ b/test/language/statements/labeled/value-yield-strict.js
@@ -6,7 +6,9 @@
       `yield` is a reserved identifier in strict mode code and may not be used
       as a label.
   es6id: 12.1.1
-  negative: SyntaxError
+  negative:
+    phase: early
+    type: SyntaxError
   flags: [onlyStrict]
  ---*/
 
diff --git a/test/language/statements/let/dstr-ary-ptrn-rest-init-ary.js b/test/language/statements/let/dstr-ary-ptrn-rest-init-ary.js
index fe9651bd1ddcf1e4de042c6cddb6fc04b9263be5..6911b039b6ca5db3c3b13c421502d7a3fe1087d1 100644
--- a/test/language/statements/let/dstr-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/let/dstr-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/let/dstr-ary-ptrn-rest-init-id.js b/test/language/statements/let/dstr-ary-ptrn-rest-init-id.js
index 0f72b008b04eba571aa9016a7d0240d6dae974a6..396cb15bb4c88a8da1840f39833bb6fb4b422a8c 100644
--- a/test/language/statements/let/dstr-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/let/dstr-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/let/dstr-ary-ptrn-rest-init-obj.js b/test/language/statements/let/dstr-ary-ptrn-rest-init-obj.js
index dd2f2ebee536d3afe097cdc6a20f70c831f44448..ca4a72fd4805271209bd6fe1627f865a83ffc55d 100644
--- a/test/language/statements/let/dstr-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/let/dstr-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/let/dstr-ary-ptrn-rest-not-final-ary.js b/test/language/statements/let/dstr-ary-ptrn-rest-not-final-ary.js
index d34df0730bdf27b325ddf1bbf91b8e8b1d19d056..b68836d5cb271ba8b78d58d84104a52293731735 100644
--- a/test/language/statements/let/dstr-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/let/dstr-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/let/dstr-ary-ptrn-rest-not-final-id.js b/test/language/statements/let/dstr-ary-ptrn-rest-not-final-id.js
index 94ce80e72a1a00d2f1d2c2f317b7123df0d111de..62e8800d4b9a85f79b3e8bbab0f5ced903277b5a 100644
--- a/test/language/statements/let/dstr-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/let/dstr-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/let/dstr-ary-ptrn-rest-not-final-obj.js b/test/language/statements/let/dstr-ary-ptrn-rest-not-final-obj.js
index acb22f4259fc7b01d9f3cbc1c2331efc318a2de7..d189020f732397668f1edd509be8b3087b863433 100644
--- a/test/language/statements/let/dstr-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/let/dstr-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-let-and-const-declarations-runtime-semantics-evaluation
 es6id: 13.3.1.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     LexicalBinding : BindingPattern Initializer
 
diff --git a/test/language/statements/let/global-use-before-initialization-in-declaration-statement.js b/test/language/statements/let/global-use-before-initialization-in-declaration-statement.js
index b39d3b29df4f28d3ba3295a665632f60cda84339..af50dce75a5e35256493704d93caf84900590121 100644
--- a/test/language/statements/let/global-use-before-initialization-in-declaration-statement.js
+++ b/test/language/statements/let/global-use-before-initialization-in-declaration-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let: global use before initialization in declaration statement.
     (TDZ, Temporal Dead Zone)
-negative: ReferenceError
+negative:
+  phase: runtime
+  type: ReferenceError
 ---*/
 let x = x + 1;
diff --git a/test/language/statements/let/global-use-before-initialization-in-prior-statement.js b/test/language/statements/let/global-use-before-initialization-in-prior-statement.js
index 5da99025f1484a3de22c0aaf5b2299a4fad01e6f..74c1e27da8023494448f616d1796c3aaadcef17e 100644
--- a/test/language/statements/let/global-use-before-initialization-in-prior-statement.js
+++ b/test/language/statements/let/global-use-before-initialization-in-prior-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let: global use before initialization in prior statement.
     (TDZ, Temporal Dead Zone)
-negative: ReferenceError
+negative:
+  phase: runtime
+  type: ReferenceError
 ---*/
 x; let x;
diff --git a/test/language/statements/let/redeclaration-error-from-within-strict-mode-function.js b/test/language/statements/let/redeclaration-error-from-within-strict-mode-function.js
index 0f59463f1450942b245f42d8faa8d28a4a0ab7a0..90813599045938d062075774245741ce2d17934e 100644
--- a/test/language/statements/let/redeclaration-error-from-within-strict-mode-function.js
+++ b/test/language/statements/let/redeclaration-error-from-within-strict-mode-function.js
@@ -4,7 +4,9 @@
 es6id: 13.1
 description: >
     Redeclaration error within strict mode function inside non-strict code.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [noStrict]
 ---*/
 (function() { 'use strict'; { let f; var f; } })
diff --git a/test/language/statements/let/syntax/attempt-to-redeclare-let-binding-with-function-declaration.js b/test/language/statements/let/syntax/attempt-to-redeclare-let-binding-with-function-declaration.js
index 5663651f0671d63c567ca9538f60652b981662ca..15b1659c3cd5eb942382a8d1b7398440ccfbc19e 100644
--- a/test/language/statements/let/syntax/attempt-to-redeclare-let-binding-with-function-declaration.js
+++ b/test/language/statements/let/syntax/attempt-to-redeclare-let-binding-with-function-declaration.js
@@ -5,6 +5,8 @@ es6id: B.3.3
 description: >
     redeclaration within block:
     attempt to redeclare let binding with function declaration
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 { let f; function f() {} }
diff --git a/test/language/statements/let/syntax/attempt-to-redeclare-let-binding-with-var.js b/test/language/statements/let/syntax/attempt-to-redeclare-let-binding-with-var.js
index 427692df6774cb5fbfbad6f4110fe6676850b27e..ab18e36810651f756a24c899abf164ed683670c1 100644
--- a/test/language/statements/let/syntax/attempt-to-redeclare-let-binding-with-var.js
+++ b/test/language/statements/let/syntax/attempt-to-redeclare-let-binding-with-var.js
@@ -5,7 +5,9 @@ es6id: B.3.3
 description: >
     redeclaration within block:
     attempt to redeclare let binding with var
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 { let f; var f; }
 
diff --git a/test/language/statements/let/syntax/identifier-let-allowed-as-lefthandside-expression-strict.js b/test/language/statements/let/syntax/identifier-let-allowed-as-lefthandside-expression-strict.js
index fb677c8041a56ef21892c5d10ab88c23291b440e..50a08aa4edb5b715c0867788a376f140170160d5 100644
--- a/test/language/statements/let/syntax/identifier-let-allowed-as-lefthandside-expression-strict.js
+++ b/test/language/statements/let/syntax/identifier-let-allowed-as-lefthandside-expression-strict.js
@@ -6,7 +6,9 @@ description: >
     for declaration:
     identifier "let" disallowed as lefthandside expression in strict mode
 flags: [onlyStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 var o = { a: 1 };
 for (let in o) { }
diff --git a/test/language/statements/let/syntax/identifier-let-disallowed-as-boundname.js b/test/language/statements/let/syntax/identifier-let-disallowed-as-boundname.js
index b7db9eed0ad862457597fd29bd6d2b505b9066bd..7331e5cbb5c1e1518b5e18c118749f3c5ad93ca1 100644
--- a/test/language/statements/let/syntax/identifier-let-disallowed-as-boundname.js
+++ b/test/language/statements/let/syntax/identifier-let-disallowed-as-boundname.js
@@ -4,7 +4,9 @@
 es6id: 13.6.4.1
 description: >
     It is a Syntax Error if the BoundNames of ForDeclaration contains "let".
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (let let in {}) { }
 
diff --git a/test/language/statements/let/syntax/let-let-declaration-split-across-two-lines.js b/test/language/statements/let/syntax/let-let-declaration-split-across-two-lines.js
index 0ef615cea4b93e9300c83cfb5fdefb175d654510..d8e125be41a1da931bdb693e62f9ee10bfa7278f 100644
--- a/test/language/statements/let/syntax/let-let-declaration-split-across-two-lines.js
+++ b/test/language/statements/let/syntax/let-let-declaration-split-across-two-lines.js
@@ -22,9 +22,10 @@ info: >
   are considered.  *Then* 13.3.1.1's static semantics for the LexicalDeclaration
   just chosen, per 5.3, are validated to recognize the Script as invalid.  Thus
   the eval script can't be evaluated, and a SyntaxError is thrown.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
-throw NotEarlyError;
 
 let  // start of a LexicalDeclaration, *not* an ASI opportunity
 let;
diff --git a/test/language/statements/let/syntax/let-let-declaration-with-initializer-split-across-two-lines.js b/test/language/statements/let/syntax/let-let-declaration-with-initializer-split-across-two-lines.js
index 5efbf57212c57fdd8631ca5747d099f758592d24..54b819933c3e0bc708c086dcc84ad036d077ee15 100644
--- a/test/language/statements/let/syntax/let-let-declaration-with-initializer-split-across-two-lines.js
+++ b/test/language/statements/let/syntax/let-let-declaration-with-initializer-split-across-two-lines.js
@@ -22,9 +22,10 @@ info: >
   are considered.  *Then* 13.3.1.1's static semantics for the LexicalDeclaration
   just chosen, per 5.3, are validated to recognize the Script as invalid.  Thus
   the eval script can't be evaluated, and a SyntaxError is thrown.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
-throw NotEarlyError;
 
 let  // start of a LexicalDeclaration, *not* an ASI opportunity
 let = "irrelevant initializer";
diff --git a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-do-statement-while-expression.js b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-do-statement-while-expression.js
index a0633d27d14a75d8bd72dfab1b9c8f688c15eaf7..9640ced8dfc40287ff51cb02d257e2d2092530ed 100644
--- a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-do-statement-while-expression.js
+++ b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-do-statement-while-expression.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations with initialisers in statement positions: 
     do Statement while ( Expression )
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 do let x = 1; while (false)
diff --git a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-for-statement.js b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-for-statement.js
index 0da5b348c385622210c8c3e1f1c08682a71e8dc0..d2a04734027dbf9a682cb7351866313f8bdf750f 100644
--- a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-for-statement.js
+++ b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-for-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations with initialisers in statement positions: 
     for ( ;;) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (;false;) let x = 1;
diff --git a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-if-expression-statement-else-statement.js b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-if-expression-statement-else-statement.js
index c1bc33779db88aff6ba2e9692ef6a4d174cc393e..96f368d6bd38fa4221fe69d43e56613fef505e22 100644
--- a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-if-expression-statement-else-statement.js
+++ b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-if-expression-statement-else-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations with initialisers in statement positions: 
     if ( Expression ) Statement else Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 if (true) {} else let x = 1;
diff --git a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-if-expression-statement.js b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-if-expression-statement.js
index eadff5feb1e3017127667f584b082c8bbcaaec61..e41d75cb720b102df6fa2eb87178641c92723174 100644
--- a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-if-expression-statement.js
+++ b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-if-expression-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations with initialisers in statement positions: 
     if ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 if (true) let x = 1;
diff --git a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-label-statement.js b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-label-statement.js
index 93c7ed337e0ebc77727c6018cf8e604034edaf13..05559bf840e607aa430afbefad02a31f9dd9ddf2 100644
--- a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-label-statement.js
+++ b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-label-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations with initialisers in statement positions: 
     label: Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 label: let x = 1;
diff --git a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-while-expression-statement.js b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-while-expression-statement.js
index c200c59a0a6e64069579e440d3104f5510ac665a..2e7762be9f9fd85dbf82b2f8e7b9ffe884f106cb 100644
--- a/test/language/statements/let/syntax/with-initialisers-in-statement-positions-while-expression-statement.js
+++ b/test/language/statements/let/syntax/with-initialisers-in-statement-positions-while-expression-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations with initialisers in statement positions: 
     while ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 while (false) let x = 1;
diff --git a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-do-statement-while-expression.js b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-do-statement-while-expression.js
index 6e39f9bfc31c5d3d9ecbd5698cd22e9467fde8e3..45573edfc192efc8e0dbfd1c603458f8a28dc7f4 100644
--- a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-do-statement-while-expression.js
+++ b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-do-statement-while-expression.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations without initialisers in statement positions: 
     do Statement while ( Expression )
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 do let x; while (false)
diff --git a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-for-statement.js b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-for-statement.js
index 52d3082b69b9ad4a0bec72a65884b39cdb6973ff..8b401e5fd1d3450c40436c872945cf949b1ad122 100644
--- a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-for-statement.js
+++ b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-for-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations without initialisers in statement positions: 
     for ( ;;) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 for (;false;) let x;
diff --git a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-if-expression-statement-else-statement.js b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-if-expression-statement-else-statement.js
index 5d21b1f003e3b34eb897365b84fe41e915934d61..b130b250a585be8c5bd1253c74dc8488630774c6 100644
--- a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-if-expression-statement-else-statement.js
+++ b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-if-expression-statement-else-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations without initialisers in statement positions: 
     if ( Expression ) Statement else Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 if (true) {} else let x;
diff --git a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-if-expression-statement.js b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-if-expression-statement.js
index 26198763fbc78e7dad9c4950d7d5b49eb911078b..5f85664450bd6ce27b45e98a8a9219bba3342dbc 100644
--- a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-if-expression-statement.js
+++ b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-if-expression-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations without initialisers in statement positions: 
     if ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 if (true) let x;
diff --git a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-label-statement.js b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-label-statement.js
index f4024fb75683a6da76d2b244c4bdd663304d08da..625e7b93b4930ababa1b9d38dc3586c3432ce0db 100644
--- a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-label-statement.js
+++ b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-label-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations without initialisers in statement positions: 
     label: Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 label: let x;
diff --git a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-while-expression-statement.js b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-while-expression-statement.js
index 359f2a11829c17272ea8f8a86d8933a12cad908d..3ccb8cc70f7d52d8999d65cae730f8cc91bd16bf 100644
--- a/test/language/statements/let/syntax/without-initialisers-in-statement-positions-while-expression-statement.js
+++ b/test/language/statements/let/syntax/without-initialisers-in-statement-positions-while-expression-statement.js
@@ -5,6 +5,8 @@ es6id: 13.1
 description: >
     let declarations without initialisers in statement positions: 
     while ( Expression ) Statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 while (false) let x;
diff --git a/test/language/statements/return/S12.9_A1_T1.js b/test/language/statements/return/S12.9_A1_T1.js
index 5738fa4c6a4be39b10ac8e6c11c998d2d3ce7f9d..bbf69f627655641212a6297d73567642ac2dad8b 100644
--- a/test/language/statements/return/S12.9_A1_T1.js
+++ b/test/language/statements/return/S12.9_A1_T1.js
@@ -5,7 +5,9 @@
 info: Appearing of "return" without a function body leads to syntax error
 es5id: 12.9_A1_T1
 description: Checking if execution of "return" with no function fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/return/S12.9_A1_T10.js b/test/language/statements/return/S12.9_A1_T10.js
index b7bce0a7755288027ac9ceff99f6025f74bf96e0..7ca8dc906c8f6c2818a1b8ff9057a9e427e5e7f2 100644
--- a/test/language/statements/return/S12.9_A1_T10.js
+++ b/test/language/statements/return/S12.9_A1_T10.js
@@ -5,7 +5,9 @@
 info: Appearing of "return" without a function body leads to syntax error
 es5id: 12.9_A1_T10
 description: Checking if execution of "return (0)" with no function fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/return/S12.9_A1_T2.js b/test/language/statements/return/S12.9_A1_T2.js
index 52fc7500c5785419c5fadc5e9399536c4fc4bab1..38555bd1d790dfca81fb57150c4ff3cd5fd3fbda 100644
--- a/test/language/statements/return/S12.9_A1_T2.js
+++ b/test/language/statements/return/S12.9_A1_T2.js
@@ -5,7 +5,9 @@
 info: Appearing of "return" without a function body leads to syntax error
 es5id: 12.9_A1_T2
 description: Checking if execution of "return x" with no function fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/return/S12.9_A1_T3.js b/test/language/statements/return/S12.9_A1_T3.js
index db82a9aa29374db9640ef867929d43d3f9476068..f1b07cb3c81d20a2d6b9510704f0a4fb437dbaf8 100644
--- a/test/language/statements/return/S12.9_A1_T3.js
+++ b/test/language/statements/return/S12.9_A1_T3.js
@@ -5,7 +5,9 @@
 info: Appearing of "return" without a function body leads to syntax error
 es5id: 12.9_A1_T3
 description: Checking if execution of "return" within "try" statement fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/return/S12.9_A1_T4.js b/test/language/statements/return/S12.9_A1_T4.js
index c26d347e336552052d645f995dee3734b247a4de..7e5c5f4fec2e160783c9249c16f6eac6205036f4 100644
--- a/test/language/statements/return/S12.9_A1_T4.js
+++ b/test/language/statements/return/S12.9_A1_T4.js
@@ -5,7 +5,9 @@
 info: Appearing of "return" without a function body leads to syntax error
 es5id: 12.9_A1_T4
 description: Checking if execution of "return" with no function fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/return/S12.9_A1_T5.js b/test/language/statements/return/S12.9_A1_T5.js
index 12c8a617a099020512d5e3853de9d3c93b31c4ef..b63023b29438de858dca1770d90ca0ae413ae404 100644
--- a/test/language/statements/return/S12.9_A1_T5.js
+++ b/test/language/statements/return/S12.9_A1_T5.js
@@ -7,7 +7,9 @@ es5id: 12.9_A1_T5
 description: >
     Checking if execution of "return" with no function, placed into a
     Block, fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/return/S12.9_A1_T6.js b/test/language/statements/return/S12.9_A1_T6.js
index 372d6a4b93db6f5c48afcb5ecec39f3924daf824..9e62cd7f0d1a43f830a732915232865157d1e8c3 100644
--- a/test/language/statements/return/S12.9_A1_T6.js
+++ b/test/language/statements/return/S12.9_A1_T6.js
@@ -7,7 +7,9 @@ es5id: 12.9_A1_T6
 description: >
     Checking if execution of "return" with no function, placed into a
     loop, fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/return/S12.9_A1_T7.js b/test/language/statements/return/S12.9_A1_T7.js
index 0a2d7d33a9b4a424261a71190bc02f048c5b74de..d37b225ca42f49854bfa3bb047963de3a1219563 100644
--- a/test/language/statements/return/S12.9_A1_T7.js
+++ b/test/language/statements/return/S12.9_A1_T7.js
@@ -7,7 +7,9 @@ es5id: 12.9_A1_T7
 description: >
     Checking if execution of "return x" with no function, placed
     inside Block, fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/return/S12.9_A1_T8.js b/test/language/statements/return/S12.9_A1_T8.js
index 0433fabc2e7db7ae2f93ba59230a8992a38a6ccd..6ec21b547164a62e00724a64010e9d48f14bc6cd 100644
--- a/test/language/statements/return/S12.9_A1_T8.js
+++ b/test/language/statements/return/S12.9_A1_T8.js
@@ -7,7 +7,9 @@ es5id: 12.9_A1_T8
 description: >
     Checking if execution of "return x" with no function, placed into
     a loop, fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/return/S12.9_A1_T9.js b/test/language/statements/return/S12.9_A1_T9.js
index d6df82e8617db5dcaee043b02813d936b4447c7d..9b9ad3f3b2898c376f4a47da584b354279ed1fd6 100644
--- a/test/language/statements/return/S12.9_A1_T9.js
+++ b/test/language/statements/return/S12.9_A1_T9.js
@@ -5,7 +5,9 @@
 info: Appearing of "return" without a function body leads to syntax error
 es5id: 12.9_A1_T9
 description: Checking if execution of "return", placed into a catch Block, fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/switch/S12.11_A2_T1.js b/test/language/statements/switch/S12.11_A2_T1.js
index 5947de0f9804b26e92b3c1caf6457c4a9e7c148d..71c4b1b5415ed95c58ac8297eb5b3d002b96de0c 100644
--- a/test/language/statements/switch/S12.11_A2_T1.js
+++ b/test/language/statements/switch/S12.11_A2_T1.js
@@ -5,7 +5,9 @@
 info: There can be only one DefaultClause
 es5id: 12.11_A2_T1
 description: Duplicate DefaultClause
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function SwitchTest(value){
diff --git a/test/language/statements/switch/S12.11_A3_T1.js b/test/language/statements/switch/S12.11_A3_T1.js
index 56fa00ebd7b6d7ead4c1f70009663c2695136310..b2fb28997b0e6757f740598e21b0829bf13c7336 100644
--- a/test/language/statements/switch/S12.11_A3_T1.js
+++ b/test/language/statements/switch/S12.11_A3_T1.js
@@ -5,7 +5,9 @@
 info: Syntax constructions of switch statement
 es5id: 12.11_A3_T1
 description: Checking if execution of "switch() {}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function SwitchTest(value){
diff --git a/test/language/statements/switch/S12.11_A3_T2.js b/test/language/statements/switch/S12.11_A3_T2.js
index a6c4cecaebfb716af94c214a4d8e55ce1d788912..6774c8cbb9090d9c5e3d92ccf427cea6ed8c8346 100644
--- a/test/language/statements/switch/S12.11_A3_T2.js
+++ b/test/language/statements/switch/S12.11_A3_T2.js
@@ -5,7 +5,9 @@
 info: Syntax constructions of switch statement
 es5id: 12.11_A3_T2
 description: Checking if execution of "switch {}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function SwitchTest(value){
diff --git a/test/language/statements/switch/S12.11_A3_T3.js b/test/language/statements/switch/S12.11_A3_T3.js
index bb983237bafe295c4da91ad94d1a7779e476a116..5a8fa38c4f8b8b52999c530916b3ffa1ba09a0e7 100644
--- a/test/language/statements/switch/S12.11_A3_T3.js
+++ b/test/language/statements/switch/S12.11_A3_T3.js
@@ -5,7 +5,9 @@
 info: Syntax constructions of switch statement
 es5id: 12.11_A3_T3
 description: Checking if execution of "switch(value)" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 switch(value);
diff --git a/test/language/statements/switch/S12.11_A3_T4.js b/test/language/statements/switch/S12.11_A3_T4.js
index 856e189d82387ea2de26369151f23abe46474561..94a3320ce4ffedd802c85ad3f5d6e8c1cb3fd8ae 100644
--- a/test/language/statements/switch/S12.11_A3_T4.js
+++ b/test/language/statements/switch/S12.11_A3_T4.js
@@ -7,7 +7,9 @@ es5id: 12.11_A3_T4
 description: >
     Using "case" that has no Expresson after it. "CaseClause: case
     Expression : [StatementList]"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function SwitchTest(value){
diff --git a/test/language/statements/switch/S12.11_A3_T5.js b/test/language/statements/switch/S12.11_A3_T5.js
index 8dbb4d954825ad5a41e6bc3f521292484230c730..80b10ddf77789a7b8690b7734fd7656006d3b54b 100644
--- a/test/language/statements/switch/S12.11_A3_T5.js
+++ b/test/language/statements/switch/S12.11_A3_T5.js
@@ -5,7 +5,9 @@
 info: Syntax constructions of switch statement
 es5id: 12.11_A3_T5
 description: Introducing statement not followed by "case" keyword
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 function SwitchTest(value){
diff --git a/test/language/statements/switch/early-lex-dup.js b/test/language/statements/switch/early-lex-dup.js
index 3f74919c6f8d5436defce2c6b1155830bf89b9ca..c9896a52751b0d48f8d0c198cea4d4cf81010821 100644
--- a/test/language/statements/switch/early-lex-dup.js
+++ b/test/language/statements/switch/early-lex-dup.js
@@ -7,7 +7,9 @@ description: Syntax error from duplicate lexical variables
 info: >
   It is a Syntax Error if the LexicallyDeclaredNames of CaseBlock contains any
   duplicate entries.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 features: [let, const]
 ---*/
 
diff --git a/test/language/statements/switch/early-lex-var-collision.js b/test/language/statements/switch/early-lex-var-collision.js
index b642264586ae47410d5cc1435ca855edf5d61d5a..9150eb4984e2c334ddee495d477301f7ff450f33 100644
--- a/test/language/statements/switch/early-lex-var-collision.js
+++ b/test/language/statements/switch/early-lex-var-collision.js
@@ -9,7 +9,9 @@ description: >
 info: >
   It is a Syntax Error if any element of the LexicallyDeclaredNames of
   CaseClauses also occurs in the VarDeclaredNames of CaseClauses.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 features: [let]
 ---*/
 
diff --git a/test/language/statements/try/12.14.1-1gs.js b/test/language/statements/try/12.14.1-1gs.js
index 33b87b9a58c37c067d4c540ea6cbce38e6c09be3..c706ed07b0a15dd35b97dd21e678fe9389e4bfd1 100644
--- a/test/language/statements/try/12.14.1-1gs.js
+++ b/test/language/statements/try/12.14.1-1gs.js
@@ -7,9 +7,10 @@ description: >
     Strict Mode - SyntaxError is thrown if a TryStatement with a Catch
     occurs within strict code and the Identifier of the Catch
     production is eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 try { } catch (eval) { }
diff --git a/test/language/statements/try/S12.14_A16_T1.js b/test/language/statements/try/S12.14_A16_T1.js
index 2d4f7c81e65f0c51f0fdf474efd88e51e899c1b3..fbc1eb64193adb1e5ebe401f2eda792045326c0c 100644
--- a/test/language/statements/try/S12.14_A16_T1.js
+++ b/test/language/statements/try/S12.14_A16_T1.js
@@ -7,7 +7,9 @@ info: >
     Catch Finally"
 es5id: 12.14_A16_T1
 description: Checking if pure "try" syntax construction passes
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T10.js b/test/language/statements/try/S12.14_A16_T10.js
index b70057076fa0da06f5a47cf11eb0bee131b474f2..274a9561869075936621e1de3889569bad1dcf16 100644
--- a/test/language/statements/try/S12.14_A16_T10.js
+++ b/test/language/statements/try/S12.14_A16_T10.js
@@ -7,7 +7,9 @@ info: >
     Catch Finally"
 es5id: 12.14_A16_T10
 description: "Catch: \"catch (Identifier ) Block\""
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T11.js b/test/language/statements/try/S12.14_A16_T11.js
index 8b46cf73cb929f1bdb8663123fda43f28f24b8b9..32a4966e99007cbdddfdb03cecbbc1feb289e4c1 100644
--- a/test/language/statements/try/S12.14_A16_T11.js
+++ b/test/language/statements/try/S12.14_A16_T11.js
@@ -9,7 +9,9 @@ es5id: 12.14_A16_T11
 description: >
     Catch and Finally are placed into the Block of "try" (whitle
     expected outside)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T12.js b/test/language/statements/try/S12.14_A16_T12.js
index 0d6246dc93799080214d227e9ca62b1faa0a4f05..56d699c45cb5393d42ebc38d2c16d59a7af04485 100644
--- a/test/language/statements/try/S12.14_A16_T12.js
+++ b/test/language/statements/try/S12.14_A16_T12.js
@@ -7,7 +7,9 @@ info: >
     Catch Finally"
 es5id: 12.14_A16_T12
 description: Embedded "try" statements followed by two "catch" statements
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T13.js b/test/language/statements/try/S12.14_A16_T13.js
index ece3312bfe31c04685e456af9dc05dc192ff814a..bc6fd3e47ca0dbab721a3ba9d9541752e549a778 100644
--- a/test/language/statements/try/S12.14_A16_T13.js
+++ b/test/language/statements/try/S12.14_A16_T13.js
@@ -9,7 +9,9 @@ es5id: 12.14_A16_T13
 description: >
     Catch: "catch (Identifier ) Block". Checking if execution of "22"
     passes at the place of Identifier of "catch"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T14.js b/test/language/statements/try/S12.14_A16_T14.js
index 472201bc685f0f25409d412a4ee7dd8bebf13b9b..af40c60983b00a45afb6bb50a9870def5c3a89b8 100644
--- a/test/language/statements/try/S12.14_A16_T14.js
+++ b/test/language/statements/try/S12.14_A16_T14.js
@@ -7,7 +7,9 @@ info: >
     Catch Finally"
 es5id: 12.14_A16_T14
 description: Checking if passing argument to "try" statement fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T15.js b/test/language/statements/try/S12.14_A16_T15.js
index 6290c9e09e714e26f52a95684bf02cee67dc7d2b..03369e0c728541a1c7e21a4a6da575f0f0e7621c 100644
--- a/test/language/statements/try/S12.14_A16_T15.js
+++ b/test/language/statements/try/S12.14_A16_T15.js
@@ -9,7 +9,9 @@ es5id: 12.14_A16_T15
 description: >
     Finally: "finally Block". Checking if passing argument to "try"
     statement fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T2.js b/test/language/statements/try/S12.14_A16_T2.js
index 2aa5ae6ef15ca70a8ddd6d7127fb6ef0acd2e738..9ec0979d1a03650c12e818f04c31aa9dab31f7c7 100644
--- a/test/language/statements/try/S12.14_A16_T2.js
+++ b/test/language/statements/try/S12.14_A16_T2.js
@@ -7,7 +7,9 @@ info: >
     Catch Finally"
 es5id: 12.14_A16_T2
 description: Checking if execution of "catch" with no "try" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T3.js b/test/language/statements/try/S12.14_A16_T3.js
index bed9ac8ab6009ee6b7aa01aeeb2e0de08e5f041d..8fd817c327dde175c11fcb10296222d8288e39a6 100644
--- a/test/language/statements/try/S12.14_A16_T3.js
+++ b/test/language/statements/try/S12.14_A16_T3.js
@@ -7,7 +7,9 @@ info: >
     Catch Finally"
 es5id: 12.14_A16_T3
 description: Checking if execution of "finally" with no "try" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T4.js b/test/language/statements/try/S12.14_A16_T4.js
index 65d66448ae98d8921b42b4b0f96012032a9edb90..b764c035a3a6f6cb9953c48a1fde50bf1a193a0c 100644
--- a/test/language/statements/try/S12.14_A16_T4.js
+++ b/test/language/statements/try/S12.14_A16_T4.js
@@ -9,7 +9,9 @@ es5id: 12.14_A16_T4
 description: >
     Catch: "catch (Identifier ) Block". Checking if execution of
     "catch" that takes no arguments fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T5.js b/test/language/statements/try/S12.14_A16_T5.js
index 48722136f86dcc7e59cfa10a197441769a62210d..bb41afe34610376d05310a8d02b7f70f5bf87a26 100644
--- a/test/language/statements/try/S12.14_A16_T5.js
+++ b/test/language/statements/try/S12.14_A16_T5.js
@@ -9,7 +9,9 @@ es5id: 12.14_A16_T5
 description: >
     Catch: "catch (Identifier ) Block". Checking if execution of
     "catch" with no Block fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T6.js b/test/language/statements/try/S12.14_A16_T6.js
index fd00f1fd1a5d8f4a5f38c86e084152f4005e24c8..d5010188bed5ddf6ea6e3f8b768de3ae24339883 100644
--- a/test/language/statements/try/S12.14_A16_T6.js
+++ b/test/language/statements/try/S12.14_A16_T6.js
@@ -9,7 +9,9 @@ es5id: 12.14_A16_T6
 description: >
     Block: "{ StatementList }". Checking if execution of "try{
     catch{}{}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T7.js b/test/language/statements/try/S12.14_A16_T7.js
index 44ca68cf303b519b738a60454884c7e63f3c2c31..b3a6af9f8fcbd2874523663c386bace135fafbf7 100644
--- a/test/language/statements/try/S12.14_A16_T7.js
+++ b/test/language/statements/try/S12.14_A16_T7.js
@@ -9,7 +9,9 @@ es5id: 12.14_A16_T7
 description: >
     Block: "{ StatementList }". Checking if execution of "try{}
     catch(){" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T8.js b/test/language/statements/try/S12.14_A16_T8.js
index b9266cf7dcc577bad754415d660da7b8610ef0e4..d966bb1f1b597345a1de2994a1dd7472cff25f41 100644
--- a/test/language/statements/try/S12.14_A16_T8.js
+++ b/test/language/statements/try/S12.14_A16_T8.js
@@ -9,7 +9,9 @@ es5id: 12.14_A16_T8
 description: >
     Block: "{ StatementList }". Catch: "catch (Identifier ) Block".
     Checking if execution of "try{} catch(){finally{}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/S12.14_A16_T9.js b/test/language/statements/try/S12.14_A16_T9.js
index c6ca68ad0c88544a7617518766b53fbb38cb6f88..c92a76a158c3441cba69c0823075e9728b139c86 100644
--- a/test/language/statements/try/S12.14_A16_T9.js
+++ b/test/language/statements/try/S12.14_A16_T9.js
@@ -7,7 +7,9 @@ info: >
     Catch Finally"
 es5id: 12.14_A16_T9
 description: Checking if execution of "catch(){} finally{}" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // CHECK#1
diff --git a/test/language/statements/try/dstr-ary-ptrn-rest-init-ary.js b/test/language/statements/try/dstr-ary-ptrn-rest-init-ary.js
index f5bd7b04fc3fd481d278b2fac3f2caeac4c41458..a1f50431a627c6ee1fe5840d1977537152d4c92f 100644
--- a/test/language/statements/try/dstr-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/try/dstr-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     Catch : catch ( CatchParameter ) Block
 
diff --git a/test/language/statements/try/dstr-ary-ptrn-rest-init-id.js b/test/language/statements/try/dstr-ary-ptrn-rest-init-id.js
index 099ef1ac3438b8c6aa3ee62fa7d109c0fc4ad35d..a4c6f8aa058525c7397ec28b05bd176d664a2ecd 100644
--- a/test/language/statements/try/dstr-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/try/dstr-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     Catch : catch ( CatchParameter ) Block
 
diff --git a/test/language/statements/try/dstr-ary-ptrn-rest-init-obj.js b/test/language/statements/try/dstr-ary-ptrn-rest-init-obj.js
index b02fddc4f1820040ae0693652969eaf52e8a598c..6f7127a951b62dcbf66e6cd9f3c2f2a25106ea39 100644
--- a/test/language/statements/try/dstr-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/try/dstr-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     Catch : catch ( CatchParameter ) Block
 
diff --git a/test/language/statements/try/dstr-ary-ptrn-rest-not-final-ary.js b/test/language/statements/try/dstr-ary-ptrn-rest-not-final-ary.js
index b1a72b058c7382efae6d2a9242f4c62c79685cb6..39967ac00e08cacc885d1b29b1990670a46e0f57 100644
--- a/test/language/statements/try/dstr-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/try/dstr-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     Catch : catch ( CatchParameter ) Block
 
diff --git a/test/language/statements/try/dstr-ary-ptrn-rest-not-final-id.js b/test/language/statements/try/dstr-ary-ptrn-rest-not-final-id.js
index a9438d40e95396cfc6c11738d294882ba3c273b8..f24a1ecf736479e03224f1b382a10b679722fbe9 100644
--- a/test/language/statements/try/dstr-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/try/dstr-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     Catch : catch ( CatchParameter ) Block
 
diff --git a/test/language/statements/try/dstr-ary-ptrn-rest-not-final-obj.js b/test/language/statements/try/dstr-ary-ptrn-rest-not-final-obj.js
index 110d38a03377bf37195a7c406912bed69403b199..9e39bdd857391d6ced5b66065c5ae3e11f2a565f 100644
--- a/test/language/statements/try/dstr-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/try/dstr-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-runtime-semantics-catchclauseevaluation
 es6id: 13.15.7
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     Catch : catch ( CatchParameter ) Block
 
diff --git a/test/language/statements/try/early-catch-duplicates.js b/test/language/statements/try/early-catch-duplicates.js
index 59fedeeafd8e530be559554cff99ce8ecd7dd4f4..9dcd0483f9194330e84d3ae12e05e531426f98a0 100644
--- a/test/language/statements/try/early-catch-duplicates.js
+++ b/test/language/statements/try/early-catch-duplicates.js
@@ -6,7 +6,9 @@ es6id: 13.15.1
 description: >
     It is a Syntax Error if BoundNames of CatchParameter contains any duplicate
     elements.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 $ERROR('This code should not be executed.');
diff --git a/test/language/statements/try/early-catch-lex.js b/test/language/statements/try/early-catch-lex.js
index e685e3369b80262b804b865d32c6a41a3d2f1084..7608a94d3df4f220408282a179af164277ccbcc7 100644
--- a/test/language/statements/try/early-catch-lex.js
+++ b/test/language/statements/try/early-catch-lex.js
@@ -6,7 +6,9 @@ es6id: 13.15.1
 description: >
     It is a Syntax Error if any element of the BoundNames of CatchParameter
     also occurs in the LexicallyDeclaredNames of Block.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 features: [let]
 ---*/
 
diff --git a/test/language/statements/try/early-catch-var.js b/test/language/statements/try/early-catch-var.js
index 51d772c12d29708d821c0969e8e40c6b1fe7ab00..43e5555085e3b6194b9ab8c4b151ebafd78b8ac3 100644
--- a/test/language/statements/try/early-catch-var.js
+++ b/test/language/statements/try/early-catch-var.js
@@ -11,7 +11,9 @@ info: >
     VariableDeclarationList of a for statement, and the ForBinding of a for-of
     statement. Bindings from the ForBinding of a for-in statement are
     restricted regardless of the application of Annex B.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 $ERROR('This code should not be executed.');
diff --git a/test/language/statements/variable/12.2.1-1gs.js b/test/language/statements/variable/12.2.1-1gs.js
index 59fb0a2db3fc536110367635788956b6e590398c..d4dd0a6bdb79a93ae35eb0a1d2dd05a4deb75a0f 100644
--- a/test/language/statements/variable/12.2.1-1gs.js
+++ b/test/language/statements/variable/12.2.1-1gs.js
@@ -6,9 +6,10 @@ es5id: 12.2.1-1gs
 description: >
     Strict Mode - SyntaxError is thrown if a VariableDeclaration
     occurs within strict code and its Identifier is eval
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 for (var eval in arrObj) { }
diff --git a/test/language/statements/variable/12.2.1-4gs.js b/test/language/statements/variable/12.2.1-4gs.js
index 868265bedd2a3f7817c4279b457ee49155605cd4..fd7a19977a746ccf83ddd6d18cb6bb2cfbd39a44 100644
--- a/test/language/statements/variable/12.2.1-4gs.js
+++ b/test/language/statements/variable/12.2.1-4gs.js
@@ -6,9 +6,10 @@ es5id: 12.2.1-4gs
 description: >
     Strict Mode - SyntaxError is thrown if a VariableDeclarationNoIn
     occurs within strict code and its Identifier is arguments
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 var arguments;
diff --git a/test/language/statements/variable/S12.2_A8_T1.js b/test/language/statements/variable/S12.2_A8_T1.js
index 4e5f1efacddae4a1f19006ee03be4def444f85e5..52b7c5177b79c4bf684c493fd4e4e74da446c4a6 100644
--- a/test/language/statements/variable/S12.2_A8_T1.js
+++ b/test/language/statements/variable/S12.2_A8_T1.js
@@ -5,7 +5,9 @@
 info: Only AssignmentExpression is admitted when variable is initialized
 es5id: 12.2_A8_T1
 description: Checking if execution of "var x += 1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/variable/S12.2_A8_T2.js b/test/language/statements/variable/S12.2_A8_T2.js
index 8f60c152c03a24b9ae501317f1bc21d7ab03e0b5..742821c8ad16cc2190193ef1da66a356bae869c2 100644
--- a/test/language/statements/variable/S12.2_A8_T2.js
+++ b/test/language/statements/variable/S12.2_A8_T2.js
@@ -5,7 +5,9 @@
 info: Only AssignmentExpression is admitted when variable is initialized
 es5id: 12.2_A8_T2
 description: Checking if execution of "var x | true" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/variable/S12.2_A8_T3.js b/test/language/statements/variable/S12.2_A8_T3.js
index b5b8949b9902909b134a1d4475319788b98d066c..b945fabda52588002948ade35e5dcbec6a73fad1 100644
--- a/test/language/statements/variable/S12.2_A8_T3.js
+++ b/test/language/statements/variable/S12.2_A8_T3.js
@@ -5,7 +5,9 @@
 info: Only AssignmentExpression is admitted when variable is initialized
 es5id: 12.2_A8_T3
 description: Checking if execution of "var x && 1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/variable/S12.2_A8_T4.js b/test/language/statements/variable/S12.2_A8_T4.js
index 9b125cc983dd69b205a42d62f50db75067fa11c9..0676a72447542fa6805d047cbeec6caf687de0ec 100644
--- a/test/language/statements/variable/S12.2_A8_T4.js
+++ b/test/language/statements/variable/S12.2_A8_T4.js
@@ -5,7 +5,9 @@
 info: Only AssignmentExpression is admitted when variable is initialized
 es5id: 12.2_A8_T4
 description: Checking if execution of "var x++" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/variable/S12.2_A8_T5.js b/test/language/statements/variable/S12.2_A8_T5.js
index 4640a96dbc97b3524ed9c8ff25f6eb90a8ac8b66..bde43d8be7f6dfbb9f2356623dc80f3ca9c61425 100644
--- a/test/language/statements/variable/S12.2_A8_T5.js
+++ b/test/language/statements/variable/S12.2_A8_T5.js
@@ -5,7 +5,9 @@
 info: Only AssignmentExpression is admitted when variable is initialized
 es5id: 12.2_A8_T5
 description: Checking if execution of "var --x" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/variable/S12.2_A8_T6.js b/test/language/statements/variable/S12.2_A8_T6.js
index 9eb53feb8c6360cd8956a78453408b7cc7f374a0..288fbf26ba80271bc4c6bd269ee278d458a41541 100644
--- a/test/language/statements/variable/S12.2_A8_T6.js
+++ b/test/language/statements/variable/S12.2_A8_T6.js
@@ -5,7 +5,9 @@
 info: Only AssignmentExpression is admitted when variable is initialized
 es5id: 12.2_A8_T6
 description: Checking if execution of "var x*1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/variable/S12.2_A8_T7.js b/test/language/statements/variable/S12.2_A8_T7.js
index 6a80d0d7ab4c88fbfc063fc91676a403f91ce8aa..cb2610e235242e1d70ef4977e142ec00d4b582b0 100644
--- a/test/language/statements/variable/S12.2_A8_T7.js
+++ b/test/language/statements/variable/S12.2_A8_T7.js
@@ -5,7 +5,9 @@
 info: Only AssignmentExpression is admitted when variable is initialized
 es5id: 12.2_A8_T7
 description: Checking if execution of "var x>>1" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/variable/S12.2_A8_T8.js b/test/language/statements/variable/S12.2_A8_T8.js
index e5138c7e06444ebf2707c626ba97f69b983b4508..9871fc63c93d7ccae3bae7e5a87f957f82dc0ca5 100644
--- a/test/language/statements/variable/S12.2_A8_T8.js
+++ b/test/language/statements/variable/S12.2_A8_T8.js
@@ -5,7 +5,9 @@
 info: Only AssignmentExpression is admitted when variable is initialized
 es5id: 12.2_A8_T8
 description: Checking if execution of "var x in __arr" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 __arr = [];
diff --git a/test/language/statements/variable/dstr-ary-ptrn-rest-init-ary.js b/test/language/statements/variable/dstr-ary-ptrn-rest-init-ary.js
index 4642ceeec40e1453f3faee320847fdf6c400f0cf..2f299c7a0a69307e86152cd4c51204174aea81de 100644
--- a/test/language/statements/variable/dstr-ary-ptrn-rest-init-ary.js
+++ b/test/language/statements/variable/dstr-ary-ptrn-rest-init-ary.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/statements/variable/dstr-ary-ptrn-rest-init-id.js b/test/language/statements/variable/dstr-ary-ptrn-rest-init-id.js
index 75059bf1d0c63fb6944c913e843f0b268e12e1dc..632b5f18addfcb09b81181307d400b01fca1fe07 100644
--- a/test/language/statements/variable/dstr-ary-ptrn-rest-init-id.js
+++ b/test/language/statements/variable/dstr-ary-ptrn-rest-init-id.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/statements/variable/dstr-ary-ptrn-rest-init-obj.js b/test/language/statements/variable/dstr-ary-ptrn-rest-init-obj.js
index 9de68eaf6b9bd3ed1c77e810e180aa57531d80f1..1abd118894cfbce8ba3f3b9794f1b450477176f5 100644
--- a/test/language/statements/variable/dstr-ary-ptrn-rest-init-obj.js
+++ b/test/language/statements/variable/dstr-ary-ptrn-rest-init-obj.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-ary.js b/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-ary.js
index c9ce8fa69012e39fe6719713378984c67b736703..d9283d14dec853282c830f3464b0c31f5fa88ab7 100644
--- a/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-ary.js
+++ b/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-ary.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-id.js b/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-id.js
index 902035f97ad6ba2bf8ec88d48ea4e055330dbf7e..aa9c8e3f4a0dff53129e8fce53b12f4f57a5b4d3 100644
--- a/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-id.js
+++ b/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-id.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-obj.js b/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-obj.js
index 8cfb4ab63aa577cfbc75a85ced9fbcc6549ef456..6fbad3d0610f564bbbdf5783eeb8768cdd235caa 100644
--- a/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-obj.js
+++ b/test/language/statements/variable/dstr-ary-ptrn-rest-not-final-obj.js
@@ -7,7 +7,9 @@ esid: sec-variable-statement-runtime-semantics-evaluation
 es6id: 13.3.2.4
 features: [destructuring-binding]
 flags: [generated]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 info: |
     VariableDeclaration : BindingPattern Initializer
 
diff --git a/test/language/statements/while/S12.6.2_A15.js b/test/language/statements/while/S12.6.2_A15.js
index a5dcce4a5c30035d087fc174d58be90aac98eddc..de53df5c7c260d3777324a05c1ad0ef72f01ddf6 100644
--- a/test/language/statements/while/S12.6.2_A15.js
+++ b/test/language/statements/while/S12.6.2_A15.js
@@ -5,7 +5,9 @@
 info: Block within a "while" Expression is not allowed
 es5id: 12.6.2_A15
 description: Expression is "{0}"
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/while/S12.6.2_A6_T1.js b/test/language/statements/while/S12.6.2_A6_T1.js
index b2d4949b1521f5b145e22455d17ad7908c74c059..a7e555c37de822b03828b99d8992e6b5b98d3db4 100644
--- a/test/language/statements/while/S12.6.2_A6_T1.js
+++ b/test/language/statements/while/S12.6.2_A6_T1.js
@@ -5,7 +5,9 @@
 info: Expression in "while" IterationStatement is bracketed with braces
 es5id: 12.6.2_A6_T1
 description: Checking if execution of "while 1 break" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/while/S12.6.2_A6_T2.js b/test/language/statements/while/S12.6.2_A6_T2.js
index beb06e866ae0d060fc2bc1c88a52b6f7c5785905..fdc2a8baa918df1338c9648949ddd52803c838fd 100644
--- a/test/language/statements/while/S12.6.2_A6_T2.js
+++ b/test/language/statements/while/S12.6.2_A6_T2.js
@@ -5,7 +5,9 @@
 info: Expression in "while" IterationStatement is bracketed with braces
 es5id: 12.6.2_A6_T2
 description: Checking if execution of "while 0 break" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/while/S12.6.2_A6_T3.js b/test/language/statements/while/S12.6.2_A6_T3.js
index 6c28cf6628d0d55a791367a7af4d4f0da3cc3498..d9685dd1c2ca2f84246d7d0e0378a30b28fd568c 100644
--- a/test/language/statements/while/S12.6.2_A6_T3.js
+++ b/test/language/statements/while/S12.6.2_A6_T3.js
@@ -5,7 +5,9 @@
 info: Expression in "while" IterationStatement is bracketed with braces
 es5id: 12.6.2_A6_T3
 description: Checking if execution of "while true break" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/while/S12.6.2_A6_T4.js b/test/language/statements/while/S12.6.2_A6_T4.js
index 7b74d4efce73bb2723edf0367747c4f160dd1b4e..ad94fbc6d0baae58d648c63877bd075696fa5d39 100644
--- a/test/language/statements/while/S12.6.2_A6_T4.js
+++ b/test/language/statements/while/S12.6.2_A6_T4.js
@@ -5,7 +5,9 @@
 info: Expression in "while" IterationStatement is bracketed with braces
 es5id: 12.6.2_A6_T4
 description: Checking if execution of "while false break" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/while/S12.6.2_A6_T5.js b/test/language/statements/while/S12.6.2_A6_T5.js
index 644e32b52511ee75f082096ec18dfd4a727260dc..19b1eb6af76cbf031739953126da29366ed12d09 100644
--- a/test/language/statements/while/S12.6.2_A6_T5.js
+++ b/test/language/statements/while/S12.6.2_A6_T5.js
@@ -5,7 +5,9 @@
 info: Expression in "while" IterationStatement is bracketed with braces
 es5id: 12.6.2_A6_T5
 description: Checking if execution of "while '' break" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/while/S12.6.2_A6_T6.js b/test/language/statements/while/S12.6.2_A6_T6.js
index 49cba88d4df5aea23637fbd02e035260e00317db..66ecbee8ab8c869ccd6078c91b7cf19abb186a54 100644
--- a/test/language/statements/while/S12.6.2_A6_T6.js
+++ b/test/language/statements/while/S12.6.2_A6_T6.js
@@ -5,7 +5,9 @@
 info: Expression in "while" IterationStatement is bracketed with braces
 es5id: 12.6.2_A6_T6
 description: Checking if execution of "while 'hood' break" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 //////////////////////////////////////////////////////////////////////////////
diff --git a/test/language/statements/while/decl-cls.js b/test/language/statements/while/decl-cls.js
index f2c30d1e6333d30be4b6b6c7c50ba5a1cd69ad28..491f50e717188aa75207b78025891e757ee0b14e 100644
--- a/test/language/statements/while/decl-cls.js
+++ b/test/language/statements/while/decl-cls.js
@@ -4,7 +4,9 @@
 description: Class declaration not allowed in statement position
 esid: sec-while-statement
 es6id: 13.7.3
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 while (false) class C {}
diff --git a/test/language/statements/while/decl-const.js b/test/language/statements/while/decl-const.js
index 93b313f3ce04cf419b70dda384219032aeeea8c3..efc004035e3f0825b8c9c47988684243a1f638e1 100644
--- a/test/language/statements/while/decl-const.js
+++ b/test/language/statements/while/decl-const.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (const) not allowed in statement position
 esid: sec-while-statement
 es6id: 13.7.3
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 while (false) const x = null;
diff --git a/test/language/statements/while/decl-fun.js b/test/language/statements/while/decl-fun.js
index e76d8c893f2e16960f54dad6711aadd88d833bea..92ad5bb65d0359f6f7d7167d08c9d37d1e4c5f2e 100644
--- a/test/language/statements/while/decl-fun.js
+++ b/test/language/statements/while/decl-fun.js
@@ -4,7 +4,9 @@
 description: Function declaration not allowed in statement position
 esid: sec-while-statement
 es6id: 13.7.3
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 while (false) function f() {}
diff --git a/test/language/statements/while/decl-gen.js b/test/language/statements/while/decl-gen.js
index 62973f4581df579b550052b9cfd9681d15cc85d1..06340c8985a6411d8fde4e86f3eb0679302f38f7 100644
--- a/test/language/statements/while/decl-gen.js
+++ b/test/language/statements/while/decl-gen.js
@@ -4,7 +4,9 @@
 description: Generator declaration not allowed in statement position
 esid: sec-while-statement
 es6id: 13.7.3
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 while (false) function* g() {}
diff --git a/test/language/statements/while/decl-let.js b/test/language/statements/while/decl-let.js
index 920673f56c822964c5ffb966a31cac716e3cae14..1c0bfa24bbafc31f652db9f6d4a4a532e3cfd451 100644
--- a/test/language/statements/while/decl-let.js
+++ b/test/language/statements/while/decl-let.js
@@ -4,7 +4,9 @@
 description: Lexical declaration (let) not allowed in statement position
 esid: sec-while-statement
 es6id: 13.7.3
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 while (false) let x;
diff --git a/test/language/statements/while/labelled-fn-stmt.js b/test/language/statements/while/labelled-fn-stmt.js
index e82e9318740b4506151c44d62015a0c4ccd3aa1e..1d30320d7a497ae14f208db6d9ebc3de8f726507 100644
--- a/test/language/statements/while/labelled-fn-stmt.js
+++ b/test/language/statements/while/labelled-fn-stmt.js
@@ -2,7 +2,9 @@
 // This code is governed by the BSD license found in the LICENSE file.
 /*---
 description: It is a Syntax Error if IsLabelledFunction(Statement) is true.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 esid: sec-semantics-static-semantics-early-errors
 es6id: 13.7.1.1
 info: >
diff --git a/test/language/statements/with/12.10.1-11gs.js b/test/language/statements/with/12.10.1-11gs.js
index c00f62bee3361a6f91041d1689f84b52dc3d373d..996698c6bc0fb898721beb24135ce5d97ca92a4b 100644
--- a/test/language/statements/with/12.10.1-11gs.js
+++ b/test/language/statements/with/12.10.1-11gs.js
@@ -4,9 +4,10 @@
 /*---
 es5id: 12.10.1-11gs
 description: Strict Mode - SyntaxError is thrown when using with statement
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 flags: [onlyStrict]
 ---*/
 
-throw NotEarlyError;
 with ({}) { }
diff --git a/test/language/statements/with/decl-cls.js b/test/language/statements/with/decl-cls.js
index 18f1f9ab5f9d17fccfdb0015b73036340335d611..267a5136b44a58daf0471cf08240d2fa043f1fd7 100644
--- a/test/language/statements/with/decl-cls.js
+++ b/test/language/statements/with/decl-cls.js
@@ -5,7 +5,9 @@ description: Class declaration not allowed in statement position
 esid: sec-with-statement
 es6id: 13.11
 flags: [noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 with ({}) class C {}
diff --git a/test/language/statements/with/decl-const.js b/test/language/statements/with/decl-const.js
index d5e5b8aeb1ac4785defbb2a1dfc7ca53ebe456c7..e7f52299fa618ee90b1bb97e1c21268f06972695 100644
--- a/test/language/statements/with/decl-const.js
+++ b/test/language/statements/with/decl-const.js
@@ -5,7 +5,9 @@ description: Lexical declaration (const) not allowed in statement position
 esid: sec-with-statement
 es6id: 13.11
 flags: [noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 with ({}) const x = null;
diff --git a/test/language/statements/with/decl-fun.js b/test/language/statements/with/decl-fun.js
index 3bed84ea2d36d58e98024eb0d8ef91a1dcd38654..7601f9af6cd890b7f966643497d7381dfee4940c 100644
--- a/test/language/statements/with/decl-fun.js
+++ b/test/language/statements/with/decl-fun.js
@@ -5,7 +5,9 @@ description: Function declaration not allowed in statement position
 esid: sec-with-statement
 es6id: 13.11
 flags: [noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 with ({}) function f() {}
diff --git a/test/language/statements/with/decl-gen.js b/test/language/statements/with/decl-gen.js
index 0d0c2451e2750876b52a82221f78d6606432c119..8a492d2d4e21e21aea0e50a7a2cbcfdf81bc8754 100644
--- a/test/language/statements/with/decl-gen.js
+++ b/test/language/statements/with/decl-gen.js
@@ -5,7 +5,9 @@ description: Generator declaration not allowed in statement position
 esid: sec-with-statement
 es6id: 13.11
 flags: [noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 with ({}) function* g() {}
diff --git a/test/language/statements/with/decl-let.js b/test/language/statements/with/decl-let.js
index 9293c0aa564f1c7a90d4c71a17e8ef0cfc8884c5..577f5bcff0a96b9b75e6c1859e94204bba19380f 100644
--- a/test/language/statements/with/decl-let.js
+++ b/test/language/statements/with/decl-let.js
@@ -5,7 +5,9 @@ description: Lexical declaration (let) not allowed in statement position
 esid: sec-with-statement
 es6id: 13.11
 flags: [noStrict]
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 with ({}) let x;
diff --git a/test/language/statements/with/labelled-fn-stmt.js b/test/language/statements/with/labelled-fn-stmt.js
index 4725c360f368012c470ae64b4de41d8e475e7eed..8008b3930882e65d2a45e34410960c69c63ab300 100644
--- a/test/language/statements/with/labelled-fn-stmt.js
+++ b/test/language/statements/with/labelled-fn-stmt.js
@@ -16,7 +16,9 @@ info: |
 
   In the absence of Annex B.3.2, a SyntaxError should be produced due to the
   labelled function declaration itself.
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 with ({}) label1: label2: function test262() {}
diff --git a/test/language/types/boolean/S8.3_A2.1.js b/test/language/types/boolean/S8.3_A2.1.js
index 1a15285385dea3b067578bd0eff915617e60423f..981a32d2ba32d87f0b935b9a30765ed743694372 100644
--- a/test/language/types/boolean/S8.3_A2.1.js
+++ b/test/language/types/boolean/S8.3_A2.1.js
@@ -5,7 +5,9 @@
 info: The true is reserved word
 es5id: 8.3_A2.1
 description: Checking if execution of "true=1" fails
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 true = 1;
diff --git a/test/language/types/boolean/S8.3_A2.2.js b/test/language/types/boolean/S8.3_A2.2.js
index 8a254e33904817e21abdda2fc794b2ad5b6468e7..4092c1a7873b1371c02067b06172c10d62ce129b 100644
--- a/test/language/types/boolean/S8.3_A2.2.js
+++ b/test/language/types/boolean/S8.3_A2.2.js
@@ -5,7 +5,9 @@
 info: The false is reserved word
 es5id: 8.3_A2.2
 description: Checking if execution of "false=0" fails
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 false = 0;
diff --git a/test/language/types/null/S8.2_A2.js b/test/language/types/null/S8.2_A2.js
index 620e1ea06bfe41788f373f5d0e7a9f423fb118be..c4810923f489cfcd4b84f0e47834a50b9de38b5c 100644
--- a/test/language/types/null/S8.2_A2.js
+++ b/test/language/types/null/S8.2_A2.js
@@ -5,7 +5,9 @@
 info: The null is resrved word
 es5id: 8.2_A2
 description: Checking if execution of "var null" fails
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var null;
diff --git a/test/language/types/reference/S8.7.2_A1_T1.js b/test/language/types/reference/S8.7.2_A1_T1.js
index e023f355d4bba15389b872afb25441eeb3045e22..73cce90f4ad004c817c0d228935a14c9b48cf01b 100644
--- a/test/language/types/reference/S8.7.2_A1_T1.js
+++ b/test/language/types/reference/S8.7.2_A1_T1.js
@@ -5,7 +5,9 @@
 info: GetValue(V) mast fail
 es5id: 8.7.2_A1_T1
 description: Checking if execution of "'litera'=1;" fails
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 'litera'=1;
diff --git a/test/language/types/reference/S8.7.2_A1_T2.js b/test/language/types/reference/S8.7.2_A1_T2.js
index b59fda7b4108501165e72162464249358e520214..82ce11d9a63e5d281646990177675eaa6217d4ea 100644
--- a/test/language/types/reference/S8.7.2_A1_T2.js
+++ b/test/language/types/reference/S8.7.2_A1_T2.js
@@ -5,7 +5,9 @@
 info: GetValue(V) mast fail
 es5id: 8.7.2_A1_T2
 description: Checking if execution of "1=1" fails
-negative: ReferenceError
+negative:
+  phase: early
+  type: ReferenceError
 ---*/
 
 1=1;
diff --git a/test/language/types/string/S8.4_A13_T1.js b/test/language/types/string/S8.4_A13_T1.js
index 60d047be9fd06a2ecb24163473bdae68b7594f4e..e0d8a133d2eff2e88da349cd7ecb8a3edae0781c 100644
--- a/test/language/types/string/S8.4_A13_T1.js
+++ b/test/language/types/string/S8.4_A13_T1.js
@@ -5,7 +5,9 @@
 info: When appears not closed single-quote program failes
 es5id: 8.4_A13_T1
 description: Try to create variable using 3 single-quote
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var str = ''';
diff --git a/test/language/types/string/S8.4_A13_T2.js b/test/language/types/string/S8.4_A13_T2.js
index c4912bd52b4a4c7cd3f551a6a788056620d33f9e..8c67774ea8bf85abcd516c9ec91528eee7879735 100644
--- a/test/language/types/string/S8.4_A13_T2.js
+++ b/test/language/types/string/S8.4_A13_T2.js
@@ -5,7 +5,9 @@
 info: When appears not closed single-quote program failes
 es5id: 8.4_A13_T2
 description: Try to create variable using 1 single-quote
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var str = ';
diff --git a/test/language/types/string/S8.4_A13_T3.js b/test/language/types/string/S8.4_A13_T3.js
index 7a028d6fb443180fe82f8d2574b9b776d3261fe1..13e7ff79d1877754cb95333c6c1d49153eaf9706 100644
--- a/test/language/types/string/S8.4_A13_T3.js
+++ b/test/language/types/string/S8.4_A13_T3.js
@@ -5,7 +5,9 @@
 info: When appears not closed single-quote program failes
 es5id: 8.4_A13_T3
 description: Try to create variable using 4 single-quote
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var str = '''';
diff --git a/test/language/types/string/S8.4_A14_T1.js b/test/language/types/string/S8.4_A14_T1.js
index 80def88b064399baa76a7dcff5d8e105153454d1..178b6cbe26be1b7b7299fa3dd14bd2367bd8ffbe 100644
--- a/test/language/types/string/S8.4_A14_T1.js
+++ b/test/language/types/string/S8.4_A14_T1.js
@@ -5,7 +5,9 @@
 info: When appears not closed double-quote program failes
 es5id: 8.4_A14_T1
 description: Try to create variable using 1 double-quote
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var str = ";
diff --git a/test/language/types/string/S8.4_A14_T2.js b/test/language/types/string/S8.4_A14_T2.js
index 21a98042142f269690a50d15691680e1b984e4a1..a87b6110e4ad3f416c5cb84c0bc4011d5f310f66 100644
--- a/test/language/types/string/S8.4_A14_T2.js
+++ b/test/language/types/string/S8.4_A14_T2.js
@@ -5,7 +5,9 @@
 info: When appears not closed double-quote program failes
 es5id: 8.4_A14_T2
 description: Try to create variable using 3 double-quote
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var str = """;
diff --git a/test/language/types/string/S8.4_A14_T3.js b/test/language/types/string/S8.4_A14_T3.js
index 40d8743acd3f02a1698c08180f3764e27b8145ec..5304a43d7cac6cf8f8ee1cf1088e1eb28772cfbc 100644
--- a/test/language/types/string/S8.4_A14_T3.js
+++ b/test/language/types/string/S8.4_A14_T3.js
@@ -5,7 +5,9 @@
 info: When appears not closed double-quote program failes
 es5id: 8.4_A14_T3
 description: Try to create variable using 4 double-quote
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var str = """";
diff --git a/test/language/white-space/S7.2_A5_T1.js b/test/language/white-space/S7.2_A5_T1.js
index 957767e8a0539d519bfab43b4a282a5554ad356d..7fcef77219875de310a36785bd1c585a95b29ab1 100644
--- a/test/language/white-space/S7.2_A5_T1.js
+++ b/test/language/white-space/S7.2_A5_T1.js
@@ -7,7 +7,9 @@ info: >
     of six characters, namely \u plus four hexadecimal digits
 es5id: 7.2_A5_T1
 description: Use TAB (U+0009)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var\u0009x;
diff --git a/test/language/white-space/S7.2_A5_T2.js b/test/language/white-space/S7.2_A5_T2.js
index bd60773b27adb48025f13ad5a80f6a83a77fc90d..320dbf31f358011029e22833bd53abdf75b0ced0 100644
--- a/test/language/white-space/S7.2_A5_T2.js
+++ b/test/language/white-space/S7.2_A5_T2.js
@@ -7,7 +7,9 @@ info: >
     of six characters, namely \u plus four hexadecimal digits
 es5id: 7.2_A5_T2
 description: Use VERTICAL TAB (U+000B)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var\u000Bx;
diff --git a/test/language/white-space/S7.2_A5_T3.js b/test/language/white-space/S7.2_A5_T3.js
index fa3a23620ddde1e073d0fbe59d5a65dfc3218a24..6187c2b7512fefa02e55db1dd02bae932feba4ac 100644
--- a/test/language/white-space/S7.2_A5_T3.js
+++ b/test/language/white-space/S7.2_A5_T3.js
@@ -7,7 +7,9 @@ info: >
     of six characters, namely \u plus four hexadecimal digits
 es5id: 7.2_A5_T3
 description: Use FORM FEED (U+000C)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var\u000Cx;
diff --git a/test/language/white-space/S7.2_A5_T4.js b/test/language/white-space/S7.2_A5_T4.js
index 4ff6bbad43b4430f0534e7cc4edb3a64bbacfa19..21ae38f7ce2c13383e794191e480173517ad0efd 100644
--- a/test/language/white-space/S7.2_A5_T4.js
+++ b/test/language/white-space/S7.2_A5_T4.js
@@ -7,7 +7,9 @@ info: >
     of six characters, namely \u plus four hexadecimal digits
 es5id: 7.2_A5_T4
 description: Use SPACE (U+0020)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var\u0020x;
diff --git a/test/language/white-space/S7.2_A5_T5.js b/test/language/white-space/S7.2_A5_T5.js
index 956341d91399ef376d2b2a4c373d6c5b780b7980..439efb4bec2f3137a77a63cd73d05b0e3b97b689 100644
--- a/test/language/white-space/S7.2_A5_T5.js
+++ b/test/language/white-space/S7.2_A5_T5.js
@@ -7,7 +7,9 @@ info: >
     of six characters, namely \u plus four hexadecimal digits
 es5id: 7.2_A5_T5
 description: Use NO-BREAK SPACE (U+00A0)
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 var\u00A0x;
diff --git a/test/language/white-space/mongolian-vowel-separator.js b/test/language/white-space/mongolian-vowel-separator.js
index 1229707a9eb49d4344eacf99bfef03b7e1732b80..6a134eba1a54f72783e075a1f67c55bd9769d6da 100644
--- a/test/language/white-space/mongolian-vowel-separator.js
+++ b/test/language/white-space/mongolian-vowel-separator.js
@@ -20,7 +20,9 @@ info: >
     Other category “Zs” code points
 
   General Category of U+180E is “Cf” (Format).
-negative: SyntaxError
+negative:
+  phase: early
+  type: SyntaxError
 ---*/
 
 // U+180E between "var" and "foo"; UTF8(0x180E) = 0xE1 0xA0 0x8E
diff --git a/tools/generation/lib/template.py b/tools/generation/lib/template.py
index 769ec4fb9e6a193561773db2e60faeac855c6242..609724b6f30270837a751c3ee45262d01a17cbfe 100644
--- a/tools/generation/lib/template.py
+++ b/tools/generation/lib/template.py
@@ -144,7 +144,10 @@ class Template:
             lines += ['includes: ' + yaml.dump(includes).strip()]
 
         if case_values['meta'].get('negative'):
-            lines += ['negative: ' + case_values['meta'].get('negative')]
+            lines += ['negative:']
+            as_yaml = yaml.dump(case_values['meta'].get('negative'),
+                                default_flow_style=False)
+            lines += indent(as_yaml.strip(), '  ').split('\n')
 
         info = []
 
diff --git a/tools/generation/test/expected/negative/negative-negative.js b/tools/generation/test/expected/negative/negative-negative.js
new file mode 100644
index 0000000000000000000000000000000000000000..539d74803493d573c26b945985f04cf8f78c7cb4
--- /dev/null
+++ b/tools/generation/test/expected/negative/negative-negative.js
@@ -0,0 +1,13 @@
+// This file was procedurally generated from the following sources:
+// - tools/generation/test/fixtures/negative.case
+// - tools/generation/test/fixtures/negative/negative.template
+/*---
+description: foobar (The "negative" field should be emitted in the output files)
+es6id: 1.2.3
+flags: [generated]
+negative:
+  phase: early
+  type: ReferenceError
+info: |
+    case info
+---*/
diff --git a/tools/generation/test/fixtures/negative.case b/tools/generation/test/fixtures/negative.case
new file mode 100644
index 0000000000000000000000000000000000000000..9a56ecb4c6e55eb81d0825313cc59f271d78564c
--- /dev/null
+++ b/tools/generation/test/fixtures/negative.case
@@ -0,0 +1,10 @@
+// Copyright (C) 2016 Mike Pennisi. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+template: negative
+desc: foobar
+info: case info
+negative:
+  phase: early
+  type: ReferenceError
+---*/
diff --git a/tools/generation/test/fixtures/negative/negative.template b/tools/generation/test/fixtures/negative/negative.template
new file mode 100644
index 0000000000000000000000000000000000000000..e0ffe2019747426c1f2b0c92db861e69fb27feba
--- /dev/null
+++ b/tools/generation/test/fixtures/negative/negative.template
@@ -0,0 +1,7 @@
+// Copyright (C) 2016 Mike Pennisi. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+/*---
+name: The "negative" field should be emitted in the output files
+path: negative/negative-
+es6id: 1.2.3
+---*/
diff --git a/tools/generation/test/run.py b/tools/generation/test/run.py
index 297815d679413afb9d4d600d8267f770f19e7507..9fc9ee3a1b8c4d6fa83326bd233c8e667215f24a 100755
--- a/tools/generation/test/run.py
+++ b/tools/generation/test/run.py
@@ -54,5 +54,10 @@ class TestGeneration(unittest.TestCase):
         self.assertEqual(result['returncode'], 0)
         self.compareTrees('normal')
 
+    def test_negative(self):
+        result = self.fixture('negative.case')
+        self.assertEqual(result['returncode'], 0)
+        self.compareTrees('negative')
+
 if __name__ == '__main__':
     unittest.main()
diff --git a/tools/packaging/monkeyYaml.py b/tools/packaging/monkeyYaml.py
index b017e55b56d66d43aa5817c3d56749fd693b2f41..21c3fa42eee735957ca35a5f15f2b5fc641340cc 100644
--- a/tools/packaging/monkeyYaml.py
+++ b/tools/packaging/monkeyYaml.py
@@ -14,12 +14,16 @@ mYamlListPattern = re.compile(r"^\[(.*)\]$")
 mYamlMultilineList = re.compile(r"^ *- (.*)$")
 
 def load(str):
+    return myReadDict(str.splitlines())[1]
+
+def myReadDict(lines, indent=""):
     dict = None
     key = None
     emptyLines = 0
-
-    lines = str.splitlines()
     while lines:
+        if not lines[0].startswith(indent):
+            break
+
         line = lines.pop(0)
         if myIsAllSpaces(line):
             emptyLines += 1
@@ -31,7 +35,7 @@ def load(str):
                 dict = {}
             key = result.group(1).strip()
             value = result.group(2).strip()
-            (lines, value) = myReadValue(lines, value)
+            (lines, value) = myReadValue(lines, value, indent)
             dict[key] = value
         else:
             if dict and key and key in dict:
@@ -40,17 +44,20 @@ def load(str):
             else:
                 raise Exception("monkeyYaml is confused at " + line)
         emptyLines = 0
-    return dict
+    return lines, dict
 
-def myReadValue(lines, value):
+def myReadValue(lines, value, indent):
     if value == ">" or value == "|":
         (lines, value) = myMultiline(lines, value)
         value = value + "\n"
         return (lines, value)
-    if lines and not value and myMaybeList(lines[0]):
-        return myMultilineList(lines, value)
-    else:
-        return lines, myReadOneLine(value)
+    if lines and not value:
+        if myMaybeList(lines[0]):
+            return myMultilineList(lines, value)
+        indentMatch = re.match("(" + indent + r"\s+)", lines[0])
+        if indentMatch:
+            return myReadDict(lines, indentMatch.group(1))
+    return lines, myReadOneLine(value)
 
 def myMaybeList(value):
     return mYamlMultilineList.match(value)
diff --git a/tools/packaging/test/test_monkeyYaml.py b/tools/packaging/test/test_monkeyYaml.py
index df6667105db1f13ace612bcd6b3cc930ff8a1928..92d4e6139b0cb39a8457b1f7889a36c2631ffdb1 100644
--- a/tools/packaging/test/test_monkeyYaml.py
+++ b/tools/packaging/test/test_monkeyYaml.py
@@ -182,6 +182,27 @@ description: ggg
 
              jjj
 es6id:  19.1.2.1
+"""
+        self.assertEqual(monkeyYaml.load(y), yaml.load(y))
+
+    def test_nested_1(self):
+        y = """
+es61d: 19.1.2.1
+negative:
+    stage: early
+    type: ReferenceError
+description: foo
+"""
+        self.assertEqual(monkeyYaml.load(y), yaml.load(y))
+
+    def test_nested_2(self):
+        y = """
+es61d: 19.1.2.1
+first:
+    second_a:
+        third: 1
+    second_b: 3
+description: foo
 """
         self.assertEqual(monkeyYaml.load(y), yaml.load(y))