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/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()