From c7ac073e73d035a35877dd13f843cc12d10a9791 Mon Sep 17 00:00:00 2001
From: Mathias Bynens <mathias@qiwi.be>
Date: Mon, 9 Jul 2018 18:26:53 +0200
Subject: [PATCH] Update tests for RegExp Unicode property escapes (#1633)

https://github.com/mathiasbynens/unicode-property-escapes-tests/commit/62cbe2f1cb8d5c5ec3841242316b0014a3c82e64
---
 .../binary-properties-with-value.js           | 21 --------
 ...y-property-with-value-ASCII_-_F-negated.js | 18 +++++++
 .../binary-property-with-value-ASCII_-_F.js   | 18 +++++++
 ...erty-with-value-ASCII_-_Invalid-negated.js | 18 +++++++
 ...ary-property-with-value-ASCII_-_Invalid.js | 18 +++++++
 ...y-property-with-value-ASCII_-_N-negated.js | 18 +++++++
 .../binary-property-with-value-ASCII_-_N.js   | 18 +++++++
 ...-property-with-value-ASCII_-_No-negated.js | 18 +++++++
 .../binary-property-with-value-ASCII_-_No.js  | 18 +++++++
 ...y-property-with-value-ASCII_-_T-negated.js | 18 +++++++
 .../binary-property-with-value-ASCII_-_T.js   | 18 +++++++
 ...y-property-with-value-ASCII_-_Y-negated.js | 18 +++++++
 .../binary-property-with-value-ASCII_-_Y.js   | 18 +++++++
 ...property-with-value-ASCII_-_Yes-negated.js | 18 +++++++
 .../binary-property-with-value-ASCII_-_Yes.js | 18 +++++++
 .../character-class-range-end.js              | 20 ++++++++
 .../character-class-range-no-dash-end.js      | 20 ++++++++
 .../character-class-range-no-dash-start.js    | 20 ++++++++
 .../character-class-range-start.js            | 20 ++++++++
 .../property-escapes/character-class.js       | 14 +-----
 ...ension-In-prefix-Block-implicit-negated.js | 21 ++++++++
 ...mmar-extension-In-prefix-Block-implicit.js | 21 ++++++++
 ...nsion-In-prefix-Script-implicit-negated.js | 21 ++++++++
 ...mar-extension-In-prefix-Script-implicit.js | 21 ++++++++
 ...mmar-extension-In-prefix-Script-negated.js | 21 ++++++++
 .../grammar-extension-In-prefix-Script.js     | 21 ++++++++
 ...mmar-extension-Is-prefix-Script-negated.js | 21 ++++++++
 .../grammar-extension-Is-prefix-Script.js     | 21 ++++++++
 ...r-extension-circumflex-negation-negated.js | 21 ++++++++
 .../grammar-extension-circumflex-negation.js  | 21 ++++++++
 .../grammar-extension-empty-negated.js        | 21 ++++++++
 .../grammar-extension-empty.js                | 21 ++++++++
 .../grammar-extension-invalid-negated.js      | 21 ++++++++
 .../grammar-extension-invalid.js              | 21 ++++++++
 .../grammar-extension-no-braces-negated.js    | 21 ++++++++
 ...ammar-extension-no-braces-value-negated.js | 21 ++++++++
 .../grammar-extension-no-braces-value.js      | 21 ++++++++
 .../grammar-extension-no-braces.js            | 21 ++++++++
 ...ension-separator-and-value-only-negated.js | 21 ++++++++
 ...mmar-extension-separator-and-value-only.js | 21 ++++++++
 .../grammar-extension-separator-negated.js    | 21 ++++++++
 ...rammar-extension-separator-only-negated.js | 21 ++++++++
 .../grammar-extension-separator-only.js       | 21 ++++++++
 .../grammar-extension-separator.js            | 21 ++++++++
 .../grammar-extension-unclosed-negated.js     | 21 ++++++++
 .../grammar-extension-unclosed.js             | 21 ++++++++
 .../grammar-extension-unopened-negated.js     | 21 ++++++++
 .../grammar-extension-unopened.js             | 21 ++++++++
 .../property-escapes/grammar-extensions.js    | 47 -----------------
 .../loose-matching-01-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-01.js     | 18 +++++++
 .../loose-matching-02-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-02.js     | 18 +++++++
 .../loose-matching-03-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-03.js     | 18 +++++++
 .../loose-matching-04-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-04.js     | 18 +++++++
 .../loose-matching-05-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-05.js     | 18 +++++++
 .../loose-matching-06-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-06.js     | 18 +++++++
 .../loose-matching-07-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-07.js     | 18 +++++++
 .../loose-matching-08-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-08.js     | 18 +++++++
 .../loose-matching-09-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-09.js     | 18 +++++++
 .../loose-matching-10-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-10.js     | 18 +++++++
 .../loose-matching-11-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-11.js     | 18 +++++++
 .../loose-matching-12-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-12.js     | 18 +++++++
 .../loose-matching-13-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-13.js     | 18 +++++++
 .../loose-matching-14-negated.js              | 18 +++++++
 .../property-escapes/loose-matching-14.js     | 18 +++++++
 .../RegExp/property-escapes/loose-matching.js | 36 -------------
 .../non-binary-properties-without-value.js    | 23 ---------
 ...t-value-General_Category-equals-negated.js | 17 +++++++
 ...y-without-value-General_Category-equals.js | 17 +++++++
 ...-without-value-General_Category-negated.js | 17 +++++++
 ...property-without-value-General_Category.js | 17 +++++++
 ...rty-without-value-Script-equals-negated.js | 17 +++++++
 ...ry-property-without-value-Script-equals.js | 17 +++++++
 ...y-property-without-value-Script-negated.js | 17 +++++++
 ...on-binary-property-without-value-Script.js | 17 +++++++
 ...-value-Script_Extensions-equals-negated.js | 17 +++++++
 ...-without-value-Script_Extensions-equals.js | 17 +++++++
 ...without-value-Script_Extensions-negated.js | 17 +++++++
 ...roperty-without-value-Script_Extensions.js | 17 +++++++
 .../non-existent-binary-property-negated.js   | 17 +++++++
 .../non-existent-binary-property.js           | 17 +++++++
 .../non-existent-properties.js                | 16 ------
 ...non-existent-property-and-value-negated.js | 18 +++++++
 .../non-existent-property-and-value.js        | 18 +++++++
 ...xistent-property-existing-value-negated.js | 17 +++++++
 .../non-existent-property-existing-value.js   | 17 +++++++
 ...property-value-General_Category-negated.js | 18 +++++++
 ...-existent-property-value-Script-negated.js | 18 +++++++
 .../non-existent-property-value-Script.js     | 18 +++++++
 ...roperty-value-Script_Extensions-negated.js | 18 +++++++
 ...istent-property-value-Script_Extensions.js | 18 +++++++
 ...xistent-property-value-general-category.js | 18 +++++++
 .../non-existent-property-values.js           | 20 --------
 .../unsupported-binary-properties.js          | 50 -------------------
 ...-property-Composition_Exclusion-negated.js | 18 +++++++
 ...d-binary-property-Composition_Exclusion.js | 18 +++++++
 ...-binary-property-Expands_On_NFC-negated.js | 18 +++++++
 ...upported-binary-property-Expands_On_NFC.js | 18 +++++++
 ...-binary-property-Expands_On_NFD-negated.js | 18 +++++++
 ...upported-binary-property-Expands_On_NFD.js | 18 +++++++
 ...binary-property-Expands_On_NFKC-negated.js | 18 +++++++
 ...pported-binary-property-Expands_On_NFKC.js | 18 +++++++
 ...binary-property-Expands_On_NFKD-negated.js | 18 +++++++
 ...pported-binary-property-Expands_On_NFKD.js | 18 +++++++
 ...binary-property-FC_NFKC_Closure-negated.js | 18 +++++++
 ...pported-binary-property-FC_NFKC_Closure.js | 18 +++++++
 ...erty-Full_Composition_Exclusion-negated.js | 18 +++++++
 ...ary-property-Full_Composition_Exclusion.js | 18 +++++++
 ...d-binary-property-Grapheme_Link-negated.js | 18 +++++++
 ...supported-binary-property-Grapheme_Link.js | 18 +++++++
 ...upported-binary-property-Hyphen-negated.js | 18 +++++++
 .../unsupported-binary-property-Hyphen.js     | 18 +++++++
 ...inary-property-Other_Alphabetic-negated.js | 18 +++++++
 ...ported-binary-property-Other_Alphabetic.js | 18 +++++++
 ...er_Default_Ignorable_Code_Point-negated.js | 18 +++++++
 ...erty-Other_Default_Ignorable_Code_Point.js | 18 +++++++
 ...-property-Other_Grapheme_Extend-negated.js | 18 +++++++
 ...d-binary-property-Other_Grapheme_Extend.js | 18 +++++++
 ...nary-property-Other_ID_Continue-negated.js | 18 +++++++
 ...orted-binary-property-Other_ID_Continue.js | 18 +++++++
 ...-binary-property-Other_ID_Start-negated.js | 18 +++++++
 ...upported-binary-property-Other_ID_Start.js | 18 +++++++
 ...binary-property-Other_Lowercase-negated.js | 18 +++++++
 ...pported-binary-property-Other_Lowercase.js | 18 +++++++
 ...rted-binary-property-Other_Math-negated.js | 18 +++++++
 .../unsupported-binary-property-Other_Math.js | 18 +++++++
 ...binary-property-Other_Uppercase-negated.js | 18 +++++++
 ...pported-binary-property-Other_Uppercase.js | 18 +++++++
 ...ty-Prepended_Concatenation_Mark-negated.js | 18 +++++++
 ...y-property-Prepended_Concatenation_Mark.js | 18 +++++++
 .../unsupported-properties.js                 | 24 ---------
 ...orted-property-Block-with-value-negated.js | 18 +++++++
 .../unsupported-property-Block-with-value.js  | 18 +++++++
 ...ported-property-FC_NFKC_Closure-negated.js | 18 +++++++
 .../unsupported-property-FC_NFKC_Closure.js   | 18 +++++++
 ...unsupported-property-Line_Break-negated.js | 18 +++++++
 ...-property-Line_Break-with-value-negated.js | 18 +++++++
 ...upported-property-Line_Break-with-value.js | 18 +++++++
 .../unsupported-property-Line_Break.js        | 18 +++++++
 151 files changed, 2634 insertions(+), 249 deletions(-)
 delete mode 100644 test/built-ins/RegExp/property-escapes/binary-properties-with-value.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes.js
 create mode 100644 test/built-ins/RegExp/property-escapes/character-class-range-end.js
 create mode 100644 test/built-ins/RegExp/property-escapes/character-class-range-no-dash-end.js
 create mode 100644 test/built-ins/RegExp/property-escapes/character-class-range-no-dash-start.js
 create mode 100644 test/built-ins/RegExp/property-escapes/character-class-range-start.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-empty-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-empty.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-invalid-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-invalid.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-no-braces.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-separator-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-separator-only.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-separator.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-unclosed.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-unopened-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/grammar-extension-unopened.js
 delete mode 100644 test/built-ins/RegExp/property-escapes/grammar-extensions.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-01-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-01.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-02-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-02.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-03-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-03.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-04-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-04.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-05-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-05.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-06-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-06.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-07-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-07.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-08-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-08.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-09-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-09.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-10-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-10.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-11-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-11.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-12-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-12.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-13-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-13.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-14-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/loose-matching-14.js
 delete mode 100644 test/built-ins/RegExp/property-escapes/loose-matching.js
 delete mode 100644 test/built-ins/RegExp/property-escapes/non-binary-properties-without-value.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-binary-property-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-binary-property.js
 delete mode 100644 test/built-ins/RegExp/property-escapes/non-existent-properties.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-and-value-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-and-value.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-existing-value.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-value-Script.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions.js
 create mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-value-general-category.js
 delete mode 100644 test/built-ins/RegExp/property-escapes/non-existent-property-values.js
 delete mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-properties.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark.js
 delete mode 100644 test/built-ins/RegExp/property-escapes/unsupported-properties.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value.js
 create mode 100644 test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break.js

diff --git a/test/built-ins/RegExp/property-escapes/binary-properties-with-value.js b/test/built-ins/RegExp/property-escapes/binary-properties-with-value.js
deleted file mode 100644
index 346c79c08c..0000000000
--- a/test/built-ins/RegExp/property-escapes/binary-properties-with-value.js
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2017 Mathias Bynens. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-author: Mathias Bynens
-description: >
-  Binary properties with an explicit value must throw in Unicode property
-  escapes (even if the value is valid).
-esid: sec-static-semantics-unicodematchproperty-p
-features: [regexp-unicode-property-escapes]
----*/
-
-assert.throws.early(SyntaxError, "/\\p{ASCII=Yes}/u");
-assert.throws.early(SyntaxError, "/\\p{ASCII=Y}/u");
-assert.throws.early(SyntaxError, "/\\p{ASCII=T}/u");
-
-assert.throws.early(SyntaxError, "/\\P{ASCII=No}/u");
-assert.throws.early(SyntaxError, "/\\P{ASCII=N}/u");
-assert.throws.early(SyntaxError, "/\\P{ASCII=F}/u");
-
-assert.throws.early(SyntaxError, "/\\p{ASCII=Invalid}/u");
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated.js
new file mode 100644
index 0000000000..ccbfcafebb
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ASCII=F}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F.js
new file mode 100644
index 0000000000..ceb1879f70
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ASCII=F}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated.js
new file mode 100644
index 0000000000..246350af0f
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ASCII=Invalid}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid.js
new file mode 100644
index 0000000000..fab653c849
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ASCII=Invalid}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated.js
new file mode 100644
index 0000000000..ea73a2875e
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ASCII=N}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N.js
new file mode 100644
index 0000000000..56656dcc24
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ASCII=N}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated.js
new file mode 100644
index 0000000000..c14bb73614
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ASCII=No}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No.js
new file mode 100644
index 0000000000..116ecd4675
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ASCII=No}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated.js
new file mode 100644
index 0000000000..63ed9e4f0a
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ASCII=T}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T.js
new file mode 100644
index 0000000000..2889d2ae21
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ASCII=T}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated.js
new file mode 100644
index 0000000000..a22ffb282a
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ASCII=Y}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y.js
new file mode 100644
index 0000000000..688b32f212
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ASCII=Y}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated.js
new file mode 100644
index 0000000000..827ee53eaf
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ASCII=Yes}/u;
diff --git a/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes.js b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes.js
new file mode 100644
index 0000000000..cce1ad1180
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Binary properties with an explicit value must throw in Unicode property
+  escapes (even if the value is valid).
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ASCII=Yes}/u;
diff --git a/test/built-ins/RegExp/property-escapes/character-class-range-end.js b/test/built-ins/RegExp/property-escapes/character-class-range-end.js
new file mode 100644
index 0000000000..f4d48612c3
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/character-class-range-end.js
@@ -0,0 +1,20 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  NonemptyClassRanges :: ClassAtom - ClassAtom ClassRanges
+
+  It is a Syntax Error if IsCharacterClass of the first ClassAtom is
+  true or IsCharacterClass of the second ClassAtom is true.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/[--\p{Hex}]/u;
diff --git a/test/built-ins/RegExp/property-escapes/character-class-range-no-dash-end.js b/test/built-ins/RegExp/property-escapes/character-class-range-no-dash-end.js
new file mode 100644
index 0000000000..b3bb456b33
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/character-class-range-no-dash-end.js
@@ -0,0 +1,20 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  NonemptyClassRangesNoDash :: ClassAtomNoDash - ClassAtom ClassRanges
+
+  It is a Syntax Error if IsCharacterClass of ClassAtomNoDash is true or
+  IsCharacterClass of ClassAtom is true.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/[\uFFFF-\p{Hex}]/u;
diff --git a/test/built-ins/RegExp/property-escapes/character-class-range-no-dash-start.js b/test/built-ins/RegExp/property-escapes/character-class-range-no-dash-start.js
new file mode 100644
index 0000000000..ef5fd20dc5
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/character-class-range-no-dash-start.js
@@ -0,0 +1,20 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  NonemptyClassRangesNoDash :: ClassAtomNoDash - ClassAtom ClassRanges
+
+  It is a Syntax Error if IsCharacterClass of ClassAtomNoDash is true or
+  IsCharacterClass of ClassAtom is true.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/[\p{Hex}-\uFFFF]/u;
diff --git a/test/built-ins/RegExp/property-escapes/character-class-range-start.js b/test/built-ins/RegExp/property-escapes/character-class-range-start.js
new file mode 100644
index 0000000000..e03ee4de99
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/character-class-range-start.js
@@ -0,0 +1,20 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  NonemptyClassRanges :: ClassAtom - ClassAtom ClassRanges
+
+  It is a Syntax Error if IsCharacterClass of the first ClassAtom is
+  true or IsCharacterClass of the second ClassAtom is true.
+esid: sec-patterns-static-semantics-early-errors
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/[\p{Hex}--]/u;
diff --git a/test/built-ins/RegExp/property-escapes/character-class.js b/test/built-ins/RegExp/property-escapes/character-class.js
index bb09e9c818..a1f09750fd 100644
--- a/test/built-ins/RegExp/property-escapes/character-class.js
+++ b/test/built-ins/RegExp/property-escapes/character-class.js
@@ -1,4 +1,4 @@
-// Copyright 2017 Mathias Bynens. All rights reserved.
+// Copyright 2018 Mathias Bynens. All rights reserved.
 // This code is governed by the BSD license found in the LICENSE file.
 
 /*---
@@ -10,17 +10,7 @@ features: [regexp-unicode-property-escapes]
 ---*/
 
 /[\p{Hex}]/u;
-assert.throws(
-  SyntaxError,
-  () => /[\p{Hex}-\uFFFF]/u,
-  // See step 1 of https://tc39.github.io/ecma262/#sec-runtime-semantics-characterrange-abstract-operation.
-  'property escape at start of character class range should throw if it expands to multiple characters'
-);
-assert.throws.early(SyntaxError, "/[\\p{}]/u");
-assert.throws.early(SyntaxError, "/[\\p{invalid}]/u");
-assert.throws.early(SyntaxError, "/[\\p{]/u");
-assert.throws.early(SyntaxError, "/[\\p{]}/u");
-assert.throws.early(SyntaxError, "/[\\p}]/u");
+
 assert(
   /[\p{Hex}\P{Hex}]/u.test('\u{1D306}'),
   'multiple property escapes in a single character class should be supported'
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated.js
new file mode 100644
index 0000000000..df640b3399
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{InAdlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit.js b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit.js
new file mode 100644
index 0000000000..1eb1a9972f
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{InAdlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated.js
new file mode 100644
index 0000000000..df640b3399
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{InAdlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit.js b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit.js
new file mode 100644
index 0000000000..1eb1a9972f
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{InAdlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated.js
new file mode 100644
index 0000000000..59fc7cb99a
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{InScript=Adlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script.js b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script.js
new file mode 100644
index 0000000000..f575b01427
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{InScript=Adlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated.js
new file mode 100644
index 0000000000..48b95cba1d
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{IsScript=Adlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script.js b/test/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script.js
new file mode 100644
index 0000000000..3c889e9171
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{IsScript=Adlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated.js
new file mode 100644
index 0000000000..1b559675ee
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{^General_Category=Letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation.js b/test/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation.js
new file mode 100644
index 0000000000..b27561547b
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{^General_Category=Letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-empty-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-empty-negated.js
new file mode 100644
index 0000000000..90d9f30c93
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-empty-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/[\p{}]/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-empty.js b/test/built-ins/RegExp/property-escapes/grammar-extension-empty.js
new file mode 100644
index 0000000000..cfb1547268
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-empty.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/[\P{}]/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-invalid-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-invalid-negated.js
new file mode 100644
index 0000000000..ec22be97d9
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-invalid-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/[\P{invalid}]/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-invalid.js b/test/built-ins/RegExp/property-escapes/grammar-extension-invalid.js
new file mode 100644
index 0000000000..6f6bcfb8fe
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-invalid.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/[\p{invalid}]/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated.js
new file mode 100644
index 0000000000..b660bdd133
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated.js
new file mode 100644
index 0000000000..e66e9d00b0
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\PL/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value.js b/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value.js
new file mode 100644
index 0000000000..edaf3c3bdc
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\pL/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces.js b/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces.js
new file mode 100644
index 0000000000..9c287efb4a
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-no-braces.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated.js
new file mode 100644
index 0000000000..c4e847dc8f
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{=Letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only.js b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only.js
new file mode 100644
index 0000000000..c14455d269
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{=Letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-separator-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-negated.js
new file mode 100644
index 0000000000..0672dabf7b
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{General_Category:Letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated.js
new file mode 100644
index 0000000000..1a1a9db63c
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{=}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-separator-only.js b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-only.js
new file mode 100644
index 0000000000..84e155f01b
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-separator-only.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{=}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-separator.js b/test/built-ins/RegExp/property-escapes/grammar-extension-separator.js
new file mode 100644
index 0000000000..1c9051852a
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-separator.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{General_Category:Letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated.js
new file mode 100644
index 0000000000..7a91dca5e5
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-unclosed.js b/test/built-ins/RegExp/property-escapes/grammar-extension-unclosed.js
new file mode 100644
index 0000000000..db72f7c015
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-unclosed.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-unopened-negated.js b/test/built-ins/RegExp/property-escapes/grammar-extension-unopened-negated.js
new file mode 100644
index 0000000000..46eed4d31f
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-unopened-negated.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extension-unopened.js b/test/built-ins/RegExp/property-escapes/grammar-extension-unopened.js
new file mode 100644
index 0000000000..2791744e51
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/grammar-extension-unopened.js
@@ -0,0 +1,21 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  This tests violations of the grammar starting here:
+
+  CharacterClassEscape[U]::
+    [+U] p{ UnicodePropertyValueExpression }
+    [+U] P{ UnicodePropertyValueExpression }
+esid: prod-CharacterClassEscape
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p}/u;
diff --git a/test/built-ins/RegExp/property-escapes/grammar-extensions.js b/test/built-ins/RegExp/property-escapes/grammar-extensions.js
deleted file mode 100644
index 9e6c5582a8..0000000000
--- a/test/built-ins/RegExp/property-escapes/grammar-extensions.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2017 Mathias Bynens. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-author: Mathias Bynens
-description: >
-  Unicode property escapes must not support non-standard grammar extensions.
-esid: sec-static-semantics-unicodematchproperty-p
-features: [regexp-unicode-property-escapes]
----*/
-
-/\p{General_Category=Letter}/u;
-/\P{General_Category=Letter}/u;
-assert.throws.early(SyntaxError, "/\\p{^General_Category=Letter}/u");
-assert.throws.early(SyntaxError, "/\\p{General_Category:Letter}/u");
-assert.throws.early(SyntaxError, "/\\P{General_Category:Letter}/u");
-/\p{Letter}/u;
-/\P{Letter}/u;
-assert.throws.early(SyntaxError, "/\\p{=Letter}/u");
-assert.throws.early(SyntaxError, "/\\P{=Letter}/u");
-assert.throws.early(SyntaxError, "/\\p{=}/u");
-assert.throws.early(SyntaxError, "/\\P{=}/u");
-/\p{L}/u;
-/\P{L}/u;
-assert.throws.early(SyntaxError, "/\\pL/u");
-assert.throws.early(SyntaxError, "/\\PL/u");
-
-// Note: `Adlam` is a valid property value for both `Script` and `Block`.
-/\p{Script=Adlam}/u;
-/\P{Script=Adlam}/u;
-assert.throws.early(SyntaxError, "/\\p{IsScript=Adlam}/u");
-assert.throws.early(SyntaxError, "/\\P{IsScript=Adlam}/u");
-assert.throws.early(SyntaxError, "/\\p{isScript=Adlam}/u");
-assert.throws.early(SyntaxError, "/\\P{isScript=Adlam}/u");
-assert.throws.early(SyntaxError, "/\\p{InScript=Adlam}/u");
-assert.throws.early(SyntaxError, "/\\P{InScript=Adlam}/u");
-assert.throws.early(SyntaxError, "/\\p{inScript=Adlam}/u");
-assert.throws.early(SyntaxError, "/\\P{inScript=Adlam}/u");
-assert.throws.early(SyntaxError, "/\\p{InAdlam}/u");
-assert.throws.early(SyntaxError, "/\\P{InAdlam}/u");
-
-assert.throws.early(SyntaxError, "/\\p{/u");
-assert.throws.early(SyntaxError, "/\\P{/u");
-assert.throws.early(SyntaxError, "/\\p}/u");
-assert.throws.early(SyntaxError, "/\\P}/u");
-assert.throws.early(SyntaxError, "/\\p/u");
-assert.throws.early(SyntaxError, "/\\P/u");
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-01-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-01-negated.js
new file mode 100644
index 0000000000..deb36476d4
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-01-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ General_Category=Uppercase_Letter }/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-01.js b/test/built-ins/RegExp/property-escapes/loose-matching-01.js
new file mode 100644
index 0000000000..a1a7f0a2e4
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-01.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ General_Category=Uppercase_Letter }/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-02-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-02-negated.js
new file mode 100644
index 0000000000..4ae1c47904
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-02-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ Lowercase }/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-02.js b/test/built-ins/RegExp/property-escapes/loose-matching-02.js
new file mode 100644
index 0000000000..f29b5ca717
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-02.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ Lowercase }/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-03-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-03-negated.js
new file mode 100644
index 0000000000..2565cc5b99
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-03-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ANY}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-03.js b/test/built-ins/RegExp/property-escapes/loose-matching-03.js
new file mode 100644
index 0000000000..3b1f0247f4
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-03.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ANY}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-04-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-04-negated.js
new file mode 100644
index 0000000000..ff9fb3b248
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-04-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ASSIGNED}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-04.js b/test/built-ins/RegExp/property-escapes/loose-matching-04.js
new file mode 100644
index 0000000000..2959ed27bb
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-04.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ASSIGNED}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-05-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-05-negated.js
new file mode 100644
index 0000000000..66d92c8b86
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-05-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Ascii}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-05.js b/test/built-ins/RegExp/property-escapes/loose-matching-05.js
new file mode 100644
index 0000000000..bf9138e31a
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-05.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Ascii}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-06-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-06-negated.js
new file mode 100644
index 0000000000..dbece88d10
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-06-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{General_Category = Uppercase_Letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-06.js b/test/built-ins/RegExp/property-escapes/loose-matching-06.js
new file mode 100644
index 0000000000..7fd0e521dc
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-06.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{General_Category = Uppercase_Letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-07-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-07-negated.js
new file mode 100644
index 0000000000..aee5434134
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-07-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{_-_lOwEr_C-A_S-E_-_}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-07.js b/test/built-ins/RegExp/property-escapes/loose-matching-07.js
new file mode 100644
index 0000000000..abe0e9a966
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-07.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{_-_lOwEr_C-A_S-E_-_}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-08-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-08-negated.js
new file mode 100644
index 0000000000..05e1890fa9
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-08-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{any}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-08.js b/test/built-ins/RegExp/property-escapes/loose-matching-08.js
new file mode 100644
index 0000000000..cbcd02c624
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-08.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{any}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-09-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-09-negated.js
new file mode 100644
index 0000000000..02ba194a7d
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-09-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{ascii}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-09.js b/test/built-ins/RegExp/property-escapes/loose-matching-09.js
new file mode 100644
index 0000000000..3fbdaf80e2
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-09.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{ascii}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-10-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-10-negated.js
new file mode 100644
index 0000000000..0083d34711
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-10-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{assigned}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-10.js b/test/built-ins/RegExp/property-escapes/loose-matching-10.js
new file mode 100644
index 0000000000..1a9d18025e
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-10.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{assigned}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-11-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-11-negated.js
new file mode 100644
index 0000000000..b85350d0ee
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-11-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{gC=uppercase_letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-11.js b/test/built-ins/RegExp/property-escapes/loose-matching-11.js
new file mode 100644
index 0000000000..7da740b3c4
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-11.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{gC=uppercase_letter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-12-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-12-negated.js
new file mode 100644
index 0000000000..11741ffa19
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-12-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{gc=uppercaseletter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-12.js b/test/built-ins/RegExp/property-escapes/loose-matching-12.js
new file mode 100644
index 0000000000..15180fcdba
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-12.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{gc=uppercaseletter}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-13-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-13-negated.js
new file mode 100644
index 0000000000..9f8b7da7d6
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-13-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{lowercase}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-13.js b/test/built-ins/RegExp/property-escapes/loose-matching-13.js
new file mode 100644
index 0000000000..4293037c01
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-13.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{lowercase}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-14-negated.js b/test/built-ins/RegExp/property-escapes/loose-matching-14-negated.js
new file mode 100644
index 0000000000..9f8b7da7d6
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-14-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{lowercase}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching-14.js b/test/built-ins/RegExp/property-escapes/loose-matching-14.js
new file mode 100644
index 0000000000..4293037c01
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/loose-matching-14.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Loose matching must not be applied when matching properties and values in
+  Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{lowercase}/u;
diff --git a/test/built-ins/RegExp/property-escapes/loose-matching.js b/test/built-ins/RegExp/property-escapes/loose-matching.js
deleted file mode 100644
index ebd9c4e4cb..0000000000
--- a/test/built-ins/RegExp/property-escapes/loose-matching.js
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2017 Mathias Bynens. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-author: Mathias Bynens
-description: >
-  Loose matching must not be applied when matching properties and values in
-  Unicode property escapes.
-esid: sec-static-semantics-unicodematchproperty-p
-features: [regexp-unicode-property-escapes]
----*/
-
-/\p{Any}/u;
-assert.throws.early(SyntaxError, "/\\p{any}/u");
-assert.throws.early(SyntaxError, "/\\P{ANY}/u");
-
-/\p{ASCII}/u;
-assert.throws.early(SyntaxError, "/\\p{ascii}/u");
-assert.throws.early(SyntaxError, "/\\P{Ascii}/u");
-
-/\p{Assigned}/u;
-assert.throws.early(SyntaxError, "/\\p{assigned}/u");
-assert.throws.early(SyntaxError, "/\\P{ASSIGNED}/u");
-
-/\p{General_Category=Uppercase_Letter}/u;
-/\P{General_Category=Uppercase_Letter}/u;
-assert.throws.early(SyntaxError, "/\\p{General_Category = Uppercase_Letter}/u");
-assert.throws.early(SyntaxError, "/\\P{ General_Category=Uppercase_Letter }/u");
-assert.throws.early(SyntaxError, "/\\p{gc=uppercaseletter}/u");
-assert.throws.early(SyntaxError, "/\\P{gC=uppercase_letter}/u");
-
-/\p{Lowercase}/u;
-/\P{Lowercase}/u;
-assert.throws.early(SyntaxError, "/\\p{lowercase}/u");
-assert.throws.early(SyntaxError, "/\\p{ Lowercase }/u");
-assert.throws.early(SyntaxError, "/\\P{_-_lOwEr_C-A_S-E_-_}/u");
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-properties-without-value.js b/test/built-ins/RegExp/property-escapes/non-binary-properties-without-value.js
deleted file mode 100644
index 3804212eda..0000000000
--- a/test/built-ins/RegExp/property-escapes/non-binary-properties-without-value.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2017 Mathias Bynens. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-author: Mathias Bynens
-description: >
-  Non-binary properties without a value must throw in Unicode property escapes.
-esid: sec-static-semantics-unicodematchproperty-p
-features: [regexp-unicode-property-escapes]
----*/
-
-assert.throws.early(SyntaxError, "/\\p{General_Category}/u");
-assert.throws.early(SyntaxError, "/\\P{General_Category}/u");
-assert.throws.early(SyntaxError, "/\\p{General_Category=}/u");
-assert.throws.early(SyntaxError, "/\\P{General_Category=}/u");
-assert.throws.early(SyntaxError, "/\\p{Script}/u");
-assert.throws.early(SyntaxError, "/\\P{Script}/u");
-assert.throws.early(SyntaxError, "/\\p{Script=}/u");
-assert.throws.early(SyntaxError, "/\\P{Script=}/u");
-assert.throws.early(SyntaxError, "/\\p{Script_Extensions}/u");
-assert.throws.early(SyntaxError, "/\\P{Script_Extensions}/u");
-assert.throws.early(SyntaxError, "/\\p{Script_Extensions=}/u");
-assert.throws.early(SyntaxError, "/\\P{Script_Extensions=}/u");
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated.js
new file mode 100644
index 0000000000..faa9fa8bdc
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{General_Category=}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals.js
new file mode 100644
index 0000000000..f36fb17081
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{General_Category=}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated.js
new file mode 100644
index 0000000000..ad55a5dd74
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{General_Category}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category.js
new file mode 100644
index 0000000000..39a6a9109d
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{General_Category}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated.js
new file mode 100644
index 0000000000..25131898fc
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Script=}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals.js
new file mode 100644
index 0000000000..4c21d041ee
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Script=}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated.js
new file mode 100644
index 0000000000..430fb14d9d
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Script}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script.js
new file mode 100644
index 0000000000..b121607fb4
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Script}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated.js
new file mode 100644
index 0000000000..7cb0a650d8
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Script_Extensions=}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals.js
new file mode 100644
index 0000000000..76f20b1bbf
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Script_Extensions=}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated.js
new file mode 100644
index 0000000000..60bf6d18ee
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Script_Extensions}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions.js b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions.js
new file mode 100644
index 0000000000..77200ab05b
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-binary properties without a value must throw in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Script_Extensions}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-binary-property-negated.js b/test/built-ins/RegExp/property-escapes/non-existent-binary-property-negated.js
new file mode 100644
index 0000000000..7ae47f4688
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-binary-property-negated.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent properties must not be supported in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{UnknownBinaryProperty}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-binary-property.js b/test/built-ins/RegExp/property-escapes/non-existent-binary-property.js
new file mode 100644
index 0000000000..e8ca1e7b6e
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-binary-property.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent properties must not be supported in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{UnknownBinaryProperty}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-properties.js b/test/built-ins/RegExp/property-escapes/non-existent-properties.js
deleted file mode 100644
index 86f39acb7c..0000000000
--- a/test/built-ins/RegExp/property-escapes/non-existent-properties.js
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2017 Mathias Bynens. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-author: Mathias Bynens
-description: >
-  Non-existent properties must not be supported in Unicode property escapes.
-esid: sec-static-semantics-unicodematchproperty-p
-features: [regexp-unicode-property-escapes]
----*/
-
-assert.throws.early(SyntaxError, "/\\p{UnknownBinaryProperty}/u");
-assert.throws.early(SyntaxError, "/\\P{UnknownBinaryProperty}/u");
-
-assert.throws.early(SyntaxError, "/\\p{Line_Breakz=Alphabetic}/u");
-assert.throws.early(SyntaxError, "/\\P{Line_Breakz=Alphabetic}/u");
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-and-value-negated.js b/test/built-ins/RegExp/property-escapes/non-existent-property-and-value-negated.js
new file mode 100644
index 0000000000..063cecc368
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-and-value-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent property values must not be supported in Unicode property
+  escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Line_Breakz=WAT}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-and-value.js b/test/built-ins/RegExp/property-escapes/non-existent-property-and-value.js
new file mode 100644
index 0000000000..036b33af8e
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-and-value.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent property values must not be supported in Unicode property
+  escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Line_Breakz=WAT}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated.js b/test/built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated.js
new file mode 100644
index 0000000000..bbc5bf71fb
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent properties must not be supported in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Line_Breakz=Alphabetic}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-existing-value.js b/test/built-ins/RegExp/property-escapes/non-existent-property-existing-value.js
new file mode 100644
index 0000000000..275a4ad023
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-existing-value.js
@@ -0,0 +1,17 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent properties must not be supported in Unicode property escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Line_Breakz=Alphabetic}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated.js b/test/built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated.js
new file mode 100644
index 0000000000..5dd4d1d85a
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent property values must not be supported in Unicode property
+  escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\\P{General_Category=WAT}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated.js b/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated.js
new file mode 100644
index 0000000000..7c43256f95
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent property values must not be supported in Unicode property
+  escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\\P{Script=FooBarBazInvalid}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script.js b/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script.js
new file mode 100644
index 0000000000..6a621cd649
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent property values must not be supported in Unicode property
+  escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\\p{Script=FooBarBazInvalid}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated.js b/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated.js
new file mode 100644
index 0000000000..e6dfc72187
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent property values must not be supported in Unicode property
+  escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\\P{Script_Extensions=H_e_h}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions.js b/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions.js
new file mode 100644
index 0000000000..48fb76d50c
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent property values must not be supported in Unicode property
+  escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\\p{Script_Extensions=H_e_h}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-value-general-category.js b/test/built-ins/RegExp/property-escapes/non-existent-property-value-general-category.js
new file mode 100644
index 0000000000..9acdfe28d2
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/non-existent-property-value-general-category.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Non-existent property values must not be supported in Unicode property
+  escapes.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\\p{General_Category=WAT}/u;
diff --git a/test/built-ins/RegExp/property-escapes/non-existent-property-values.js b/test/built-ins/RegExp/property-escapes/non-existent-property-values.js
deleted file mode 100644
index aad28546ff..0000000000
--- a/test/built-ins/RegExp/property-escapes/non-existent-property-values.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2017 Mathias Bynens. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-author: Mathias Bynens
-description: >
-  Non-existent property values must not be supported in Unicode property
-  escapes.
-esid: sec-static-semantics-unicodematchproperty-p
-features: [regexp-unicode-property-escapes]
----*/
-
-assert.throws.early(SyntaxError, "/\\p{General_Category=WAT}/u");
-assert.throws.early(SyntaxError, "/\\P{Line_Breakz=WAT}/u");
-
-assert.throws.early(SyntaxError, "/\\p{Script=FooBarBazInvalid}/u");
-assert.throws.early(SyntaxError, "/\\P{Script=FooBarBazInvalid}/u");
-
-assert.throws.early(SyntaxError, "/\\p{Script_Extensions=H_e_h}/u");
-assert.throws.early(SyntaxError, "/\\P{Script_Extensions=H_e_h}/u");
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-properties.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-properties.js
deleted file mode 100644
index 1bc42847ba..0000000000
--- a/test/built-ins/RegExp/property-escapes/unsupported-binary-properties.js
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2017 Mathias Bynens. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-author: Mathias Bynens
-description: >
-  Some binary properties used to be part of the Unicode property escapes
-  proposal but were later removed. They must not be supported.
-esid: sec-static-semantics-unicodematchproperty-p
-features: [regexp-unicode-property-escapes]
----*/
-
-assert.throws.early(SyntaxError, "/\\p{Composition_Exclusion}/u");
-assert.throws.early(SyntaxError, "/\\P{Composition_Exclusion}/u");
-assert.throws.early(SyntaxError, "/\\p{Expands_On_NFC}/u");
-assert.throws.early(SyntaxError, "/\\P{Expands_On_NFC}/u");
-assert.throws.early(SyntaxError, "/\\p{Expands_On_NFD}/u");
-assert.throws.early(SyntaxError, "/\\P{Expands_On_NFD}/u");
-assert.throws.early(SyntaxError, "/\\p{Expands_On_NFKC}/u");
-assert.throws.early(SyntaxError, "/\\P{Expands_On_NFKC}/u");
-assert.throws.early(SyntaxError, "/\\p{Expands_On_NFKD}/u");
-assert.throws.early(SyntaxError, "/\\P{Expands_On_NFKD}/u");
-assert.throws.early(SyntaxError, "/\\p{Extended_Pictographic}/u");
-assert.throws.early(SyntaxError, "/\\P{Extended_Pictographic}/u");
-assert.throws.early(SyntaxError, "/\\p{FC_NFKC_Closure}/u");
-assert.throws.early(SyntaxError, "/\\P{FC_NFKC_Closure}/u");
-assert.throws.early(SyntaxError, "/\\p{Full_Composition_Exclusion}/u");
-assert.throws.early(SyntaxError, "/\\P{Full_Composition_Exclusion}/u");
-assert.throws.early(SyntaxError, "/\\p{Grapheme_Link}/u");
-assert.throws.early(SyntaxError, "/\\P{Grapheme_Link}/u");
-assert.throws.early(SyntaxError, "/\\p{Hyphen}/u");
-assert.throws.early(SyntaxError, "/\\P{Hyphen}/u");
-assert.throws.early(SyntaxError, "/\\p{Other_Alphabetic}/u");
-assert.throws.early(SyntaxError, "/\\P{Other_Alphabetic}/u");
-assert.throws.early(SyntaxError, "/\\p{Other_Default_Ignorable_Code_Point}/u");
-assert.throws.early(SyntaxError, "/\\P{Other_Default_Ignorable_Code_Point}/u");
-assert.throws.early(SyntaxError, "/\\p{Other_Grapheme_Extend}/u");
-assert.throws.early(SyntaxError, "/\\P{Other_Grapheme_Extend}/u");
-assert.throws.early(SyntaxError, "/\\p{Other_ID_Continue}/u");
-assert.throws.early(SyntaxError, "/\\P{Other_ID_Continue}/u");
-assert.throws.early(SyntaxError, "/\\p{Other_ID_Start}/u");
-assert.throws.early(SyntaxError, "/\\P{Other_ID_Start}/u");
-assert.throws.early(SyntaxError, "/\\p{Other_Lowercase}/u");
-assert.throws.early(SyntaxError, "/\\P{Other_Lowercase}/u");
-assert.throws.early(SyntaxError, "/\\p{Other_Math}/u");
-assert.throws.early(SyntaxError, "/\\P{Other_Math}/u");
-assert.throws.early(SyntaxError, "/\\p{Other_Uppercase}/u");
-assert.throws.early(SyntaxError, "/\\P{Other_Uppercase}/u");
-assert.throws.early(SyntaxError, "/\\p{Prepended_Concatenation_Mark}/u");
-assert.throws.early(SyntaxError, "/\\P{Prepended_Concatenation_Mark}/u");
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated.js
new file mode 100644
index 0000000000..99e45692d0
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Composition_Exclusion}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion.js
new file mode 100644
index 0000000000..9ed3d596d1
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Composition_Exclusion}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated.js
new file mode 100644
index 0000000000..3f533590e1
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Expands_On_NFC}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC.js
new file mode 100644
index 0000000000..c385fb52a5
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Expands_On_NFC}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated.js
new file mode 100644
index 0000000000..4ab48cffda
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Expands_On_NFD}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD.js
new file mode 100644
index 0000000000..426e45890b
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Expands_On_NFD}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated.js
new file mode 100644
index 0000000000..b00dba7b88
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Expands_On_NFKC}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC.js
new file mode 100644
index 0000000000..c37c246596
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Expands_On_NFKC}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated.js
new file mode 100644
index 0000000000..b53043a71a
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Expands_On_NFKD}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD.js
new file mode 100644
index 0000000000..97d2a16c28
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Expands_On_NFKD}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated.js
new file mode 100644
index 0000000000..7d8545ae62
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{FC_NFKC_Closure}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure.js
new file mode 100644
index 0000000000..f6eef54861
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{FC_NFKC_Closure}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated.js
new file mode 100644
index 0000000000..1be13eff61
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Full_Composition_Exclusion}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion.js
new file mode 100644
index 0000000000..a4c0648930
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Full_Composition_Exclusion}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated.js
new file mode 100644
index 0000000000..70e570811d
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Grapheme_Link}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link.js
new file mode 100644
index 0000000000..1699ff37bc
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Grapheme_Link}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated.js
new file mode 100644
index 0000000000..85af0ad93c
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Hyphen}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen.js
new file mode 100644
index 0000000000..1661ff0a93
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Hyphen}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated.js
new file mode 100644
index 0000000000..cf5f1bfb93
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Other_Alphabetic}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic.js
new file mode 100644
index 0000000000..40040e219f
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Other_Alphabetic}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated.js
new file mode 100644
index 0000000000..6d4f4a08ad
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Other_Default_Ignorable_Code_Point}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point.js
new file mode 100644
index 0000000000..ce183da1db
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Other_Default_Ignorable_Code_Point}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated.js
new file mode 100644
index 0000000000..61429dfbdb
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Other_Grapheme_Extend}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend.js
new file mode 100644
index 0000000000..e59fa88e84
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Other_Grapheme_Extend}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated.js
new file mode 100644
index 0000000000..ece245eec2
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Other_ID_Continue}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue.js
new file mode 100644
index 0000000000..e6ef9f7a4d
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Other_ID_Continue}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated.js
new file mode 100644
index 0000000000..9d286655f3
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Other_ID_Start}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start.js
new file mode 100644
index 0000000000..2a6d22d324
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Other_ID_Start}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated.js
new file mode 100644
index 0000000000..398316ac9f
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Other_Lowercase}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase.js
new file mode 100644
index 0000000000..95d92095a6
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Other_Lowercase}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated.js
new file mode 100644
index 0000000000..a4cfada0fd
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Other_Math}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math.js
new file mode 100644
index 0000000000..507e5f3e7d
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Other_Math}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated.js
new file mode 100644
index 0000000000..c9738dc055
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Other_Uppercase}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase.js
new file mode 100644
index 0000000000..fa90a7e9be
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Other_Uppercase}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated.js
new file mode 100644
index 0000000000..c6b40da2ff
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Prepended_Concatenation_Mark}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark.js b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark.js
new file mode 100644
index 0000000000..23cd6a9e7a
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Some binary properties used to be part of the Unicode property escapes
+  proposal but were later removed. They must not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Prepended_Concatenation_Mark}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-properties.js b/test/built-ins/RegExp/property-escapes/unsupported-properties.js
deleted file mode 100644
index efa85b1536..0000000000
--- a/test/built-ins/RegExp/property-escapes/unsupported-properties.js
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2017 Mathias Bynens. All rights reserved.
-// This code is governed by the BSD license found in the LICENSE file.
-
-/*---
-author: Mathias Bynens
-description: >
-  Properties not explicitly listed in the Unicode property escapes spec must
-  not be supported.
-esid: sec-static-semantics-unicodematchproperty-p
-features: [regexp-unicode-property-escapes]
----*/
-
-// Non-existent binary properties must not be supported.
-assert.throws.early(SyntaxError, "/\\p{UnknownBinaryProperty}/u");
-assert.throws.early(SyntaxError, "/\\P{UnknownBinaryProperty}/u");
-
-// Unlisted properties must not be supported.
-assert.throws.early(SyntaxError, "/\\p{Line_Break}/u");
-assert.throws.early(SyntaxError, "/\\P{Line_Break}/u");
-assert.throws.early(SyntaxError, "/\\p{Line_Break=Alphabetic}/u");
-assert.throws.early(SyntaxError, "/\\P{Line_Break=Alphabetic}/u");
-assert.throws.early(SyntaxError, "/\\p{FC_NFKC_Closure}/u");
-assert.throws.early(SyntaxError, "/\\P{FC_NFKC_Closure}/u");
-assert.throws.early(SyntaxError, "/\\p{Block=Adlam}/u");
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated.js
new file mode 100644
index 0000000000..b72bd13b99
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Properties not explicitly listed in the Unicode property escapes spec must
+  not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Block=Adlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value.js b/test/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value.js
new file mode 100644
index 0000000000..6eb1762355
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Properties not explicitly listed in the Unicode property escapes spec must
+  not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Block=Adlam}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated.js
new file mode 100644
index 0000000000..6f8cb3f861
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Properties not explicitly listed in the Unicode property escapes spec must
+  not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{FC_NFKC_Closure}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure.js b/test/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure.js
new file mode 100644
index 0000000000..ecec67ae58
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Properties not explicitly listed in the Unicode property escapes spec must
+  not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{FC_NFKC_Closure}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated.js
new file mode 100644
index 0000000000..4c4edf9f26
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Properties not explicitly listed in the Unicode property escapes spec must
+  not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Line_Break=Alphabetic}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated.js b/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated.js
new file mode 100644
index 0000000000..4c4edf9f26
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Properties not explicitly listed in the Unicode property escapes spec must
+  not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\P{Line_Break=Alphabetic}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value.js b/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value.js
new file mode 100644
index 0000000000..e404917ab2
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Properties not explicitly listed in the Unicode property escapes spec must
+  not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Line_Break=Alphabetic}/u;
diff --git a/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break.js b/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break.js
new file mode 100644
index 0000000000..38d259eba5
--- /dev/null
+++ b/test/built-ins/RegExp/property-escapes/unsupported-property-Line_Break.js
@@ -0,0 +1,18 @@
+// Copyright 2018 Mathias Bynens. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/*---
+author: Mathias Bynens
+description: >
+  Properties not explicitly listed in the Unicode property escapes spec must
+  not be supported.
+esid: sec-static-semantics-unicodematchproperty-p
+negative:
+  phase: parse
+  type: SyntaxError
+features: [regexp-unicode-property-escapes]
+---*/
+
+throw "Test262: This statement should not be evaluated.";
+
+/\p{Line_Break}/u;
-- 
GitLab