From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../test262/built-ins/RegExp/15.10.2.15-6-1.js | 16 + .../test262/built-ins/RegExp/15.10.2.5-3-1.js | 15 + .../tests/test262/built-ins/RegExp/15.10.4.1-1.js | 15 + .../tests/test262/built-ins/RegExp/15.10.4.1-2.js | 15 + .../tests/test262/built-ins/RegExp/15.10.4.1-3.js | 15 + .../tests/test262/built-ins/RegExp/15.10.4.1-4.js | 11 + .../RegExp/CharacterClassEscapes/browser.js | 0 .../character-class-digit-class-escape-flags-u.js | 66 + ...s-digit-class-escape-plus-quantifier-flags-u.js | 66 + ...ter-class-digit-class-escape-plus-quantifier.js | 66 + .../character-class-digit-class-escape.js | 66 + ...aracter-class-non-digit-class-escape-flags-u.js | 67 + ...n-digit-class-escape-plus-quantifier-flags-u.js | 67 + ...class-non-digit-class-escape-plus-quantifier.js | 67 + .../character-class-non-digit-class-escape.js | 67 + ...er-class-non-whitespace-class-escape-flags-u.js | 78 + ...tespace-class-escape-plus-quantifier-flags-u.js | 78 + ...-non-whitespace-class-escape-plus-quantifier.js | 78 + .../character-class-non-whitespace-class-escape.js | 78 + ...haracter-class-non-word-class-escape-flags-u.js | 71 + ...on-word-class-escape-plus-quantifier-flags-u.js | 71 + ...-class-non-word-class-escape-plus-quantifier.js | 71 + .../character-class-non-word-class-escape.js | 71 + ...racter-class-whitespace-class-escape-flags-u.js | 76 + ...tespace-class-escape-plus-quantifier-flags-u.js | 76 + ...lass-whitespace-class-escape-plus-quantifier.js | 76 + .../character-class-whitespace-class-escape.js | 76 + .../character-class-word-class-escape-flags-u.js | 68 + ...ss-word-class-escape-plus-quantifier-flags-u.js | 68 + ...cter-class-word-class-escape-plus-quantifier.js | 68 + .../character-class-word-class-escape.js | 68 + .../RegExp/CharacterClassEscapes/shell.js | 115 + .../test262/built-ins/RegExp/S15.10.1_A1_T1.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T10.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T11.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T12.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T13.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T14.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T15.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T16.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T2.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T3.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T4.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T5.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T6.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T7.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T8.js | 22 + .../test262/built-ins/RegExp/S15.10.1_A1_T9.js | 22 + .../built-ins/RegExp/S15.10.2.10_A1.1_T1.js | 22 + .../built-ins/RegExp/S15.10.2.10_A1.2_T1.js | 22 + .../built-ins/RegExp/S15.10.2.10_A1.3_T1.js | 22 + .../built-ins/RegExp/S15.10.2.10_A1.4_T1.js | 22 + .../built-ins/RegExp/S15.10.2.10_A1.5_T1.js | 22 + .../built-ins/RegExp/S15.10.2.10_A2.1_T1.js | 21 + .../built-ins/RegExp/S15.10.2.10_A2.1_T2.js | 21 + .../built-ins/RegExp/S15.10.2.10_A3.1_T1.js | 30 + .../built-ins/RegExp/S15.10.2.10_A3.1_T2.js | 34 + .../built-ins/RegExp/S15.10.2.10_A4.1_T1.js | 42 + .../built-ins/RegExp/S15.10.2.10_A4.1_T2.js | 38 + .../built-ins/RegExp/S15.10.2.10_A4.1_T3.js | 38 + .../built-ins/RegExp/S15.10.2.10_A5.1_T1.js | 19 + .../test262/built-ins/RegExp/S15.10.2.11_A1_T1.js | 22 + .../test262/built-ins/RegExp/S15.10.2.11_A1_T4.js | 20 + .../test262/built-ins/RegExp/S15.10.2.11_A1_T5.js | 20 + .../test262/built-ins/RegExp/S15.10.2.11_A1_T6.js | 24 + .../test262/built-ins/RegExp/S15.10.2.11_A1_T7.js | 24 + .../test262/built-ins/RegExp/S15.10.2.11_A1_T8.js | 22 + .../test262/built-ins/RegExp/S15.10.2.11_A1_T9.js | 22 + .../test262/built-ins/RegExp/S15.10.2.12_A3_T5.js | 29 + .../test262/built-ins/RegExp/S15.10.2.12_A4_T5.js | 29 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T1.js | 16 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T10.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T11.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T12.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T13.js | 47 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T14.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T15.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T17.js | 17 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T2.js | 16 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T3.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T4.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T5.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T6.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T7.js | 17 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T8.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A1_T9.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A2_T1.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A2_T2.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A2_T3.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A2_T4.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A2_T5.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A2_T6.js | 17 + .../test262/built-ins/RegExp/S15.10.2.13_A2_T7.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A2_T8.js | 45 + .../test262/built-ins/RegExp/S15.10.2.13_A3_T1.js | 42 + .../test262/built-ins/RegExp/S15.10.2.13_A3_T2.js | 42 + .../test262/built-ins/RegExp/S15.10.2.13_A3_T3.js | 42 + .../test262/built-ins/RegExp/S15.10.2.13_A3_T4.js | 42 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T1.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T10.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T11.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T12.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T13.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T14.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T15.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T16.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T17.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T18.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T19.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T2.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T20.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T21.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T22.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T23.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T24.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T25.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T26.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T27.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T28.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T29.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T3.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T30.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T31.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T32.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T33.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T34.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T35.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T36.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T37.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T38.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T39.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T4.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T40.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T41.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T5.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T6.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T7.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T8.js | 31 + .../test262/built-ins/RegExp/S15.10.2.15_A1_T9.js | 31 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T1.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T10.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T11.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T12.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T13.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T14.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T15.js | 47 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T16.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T17.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T2.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T3.js | 47 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T4.js | 47 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T5.js | 19 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T6.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T7.js | 17 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T8.js | 45 + .../test262/built-ins/RegExp/S15.10.2.3_A1_T9.js | 45 + .../test262/built-ins/RegExp/S15.10.2.5_A1_T1.js | 44 + .../test262/built-ins/RegExp/S15.10.2.5_A1_T2.js | 44 + .../test262/built-ins/RegExp/S15.10.2.5_A1_T3.js | 44 + .../test262/built-ins/RegExp/S15.10.2.5_A1_T4.js | 44 + .../test262/built-ins/RegExp/S15.10.2.5_A1_T5.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A1_T1.js | 16 + .../test262/built-ins/RegExp/S15.10.2.6_A1_T2.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A1_T3.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A1_T4.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A1_T5.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T1.js | 16 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T10.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T2.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T3.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T4.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T5.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T6.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T7.js | 16 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T8.js | 16 + .../test262/built-ins/RegExp/S15.10.2.6_A2_T9.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T1.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T10.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T11.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T12.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T13.js | 18 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T14.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T15.js | 18 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T2.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T3.js | 18 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T4.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T5.js | 18 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T6.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T7.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T8.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A3_T9.js | 18 + .../test262/built-ins/RegExp/S15.10.2.6_A4_T1.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A4_T2.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A4_T3.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A4_T4.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A4_T5.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A4_T6.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A4_T7.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A4_T8.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A5_T1.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A5_T2.js | 46 + .../test262/built-ins/RegExp/S15.10.2.6_A6_T1.js | 44 + .../test262/built-ins/RegExp/S15.10.2.6_A6_T2.js | 42 + .../test262/built-ins/RegExp/S15.10.2.6_A6_T3.js | 42 + .../test262/built-ins/RegExp/S15.10.2.6_A6_T4.js | 42 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T1.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T10.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T11.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T12.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T2.js | 16 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T3.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T4.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T5.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T6.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T7.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T8.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A1_T9.js | 16 + .../test262/built-ins/RegExp/S15.10.2.7_A2_T1.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A2_T2.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A2_T3.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A2_T4.js | 16 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T1.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T10.js | 16 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T11.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T12.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T13.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T14.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T2.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T3.js | 16 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T4.js | 16 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T5.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T6.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T7.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T8.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A3_T9.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T1.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T10.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T11.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T12.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T13.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T14.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T15.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T16.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T17.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T18.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T19.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T2.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T20.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T21.js | 16 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T3.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T4.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T5.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T6.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T7.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T8.js | 18 + .../test262/built-ins/RegExp/S15.10.2.7_A4_T9.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T1.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T10.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T11.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T12.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T2.js | 46 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T3.js | 18 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T4.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T5.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T6.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T7.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T8.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A5_T9.js | 44 + .../test262/built-ins/RegExp/S15.10.2.7_A6_T1.js | 45 + .../test262/built-ins/RegExp/S15.10.2.7_A6_T2.js | 17 + .../test262/built-ins/RegExp/S15.10.2.7_A6_T3.js | 45 + .../test262/built-ins/RegExp/S15.10.2.7_A6_T4.js | 45 + .../test262/built-ins/RegExp/S15.10.2.7_A6_T5.js | 45 + .../test262/built-ins/RegExp/S15.10.2.7_A6_T6.js | 45 + .../test262/built-ins/RegExp/S15.10.2.8_A1_T1.js | 45 + .../test262/built-ins/RegExp/S15.10.2.8_A1_T2.js | 45 + .../test262/built-ins/RegExp/S15.10.2.8_A1_T3.js | 47 + .../test262/built-ins/RegExp/S15.10.2.8_A1_T4.js | 47 + .../test262/built-ins/RegExp/S15.10.2.8_A1_T5.js | 19 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T1.js | 47 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T10.js | 45 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T11.js | 45 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T2.js | 47 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T3.js | 19 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T4.js | 19 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T5.js | 47 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T6.js | 45 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T7.js | 45 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T8.js | 17 + .../test262/built-ins/RegExp/S15.10.2.8_A2_T9.js | 45 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T1.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T10.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T11.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T12.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T13.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T14.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T15.js | 64 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T16.js | 62 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T17.js | 57 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T18.js | 20 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T19.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T2.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T20.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T21.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T22.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T23.js | 50 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T24.js | 50 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T25.js | 50 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T26.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T27.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T28.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T29.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T3.js | 21 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T30.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T31.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T32.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T33.js | 48 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T4.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T5.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T6.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T7.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T8.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A3_T9.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A4_T1.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A4_T2.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A4_T3.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A4_T4.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A4_T5.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A4_T6.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A4_T7.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A4_T8.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A4_T9.js | 46 + .../test262/built-ins/RegExp/S15.10.2.8_A5_T1.js | 45 + .../test262/built-ins/RegExp/S15.10.2.8_A5_T2.js | 45 + .../test262/built-ins/RegExp/S15.10.2.9_A1_T1.js | 47 + .../test262/built-ins/RegExp/S15.10.2.9_A1_T2.js | 48 + .../test262/built-ins/RegExp/S15.10.2.9_A1_T3.js | 48 + .../test262/built-ins/RegExp/S15.10.2.9_A1_T5.js | 45 + .../test262/built-ins/RegExp/S15.10.2_A1_T1.js | 89 + .../test262/built-ins/RegExp/S15.10.3.1_A1_T1.js | 18 + .../test262/built-ins/RegExp/S15.10.3.1_A1_T2.js | 18 + .../test262/built-ins/RegExp/S15.10.3.1_A1_T3.js | 22 + .../test262/built-ins/RegExp/S15.10.3.1_A1_T4.js | 18 + .../test262/built-ins/RegExp/S15.10.3.1_A1_T5.js | 18 + .../test262/built-ins/RegExp/S15.10.3.1_A2_T1.js | 26 + .../test262/built-ins/RegExp/S15.10.3.1_A2_T2.js | 28 + .../test262/built-ins/RegExp/S15.10.3.1_A3_T1.js | 23 + .../test262/built-ins/RegExp/S15.10.3.1_A3_T2.js | 24 + .../test262/built-ins/RegExp/S15.10.4.1_A1_T1.js | 39 + .../test262/built-ins/RegExp/S15.10.4.1_A1_T2.js | 43 + .../test262/built-ins/RegExp/S15.10.4.1_A1_T3.js | 39 + .../test262/built-ins/RegExp/S15.10.4.1_A1_T4.js | 39 + .../test262/built-ins/RegExp/S15.10.4.1_A1_T5.js | 41 + .../test262/built-ins/RegExp/S15.10.4.1_A2_T1.js | 17 + .../test262/built-ins/RegExp/S15.10.4.1_A2_T2.js | 27 + .../test262/built-ins/RegExp/S15.10.4.1_A3_T1.js | 16 + .../test262/built-ins/RegExp/S15.10.4.1_A3_T2.js | 16 + .../test262/built-ins/RegExp/S15.10.4.1_A3_T3.js | 18 + .../test262/built-ins/RegExp/S15.10.4.1_A3_T4.js | 16 + .../test262/built-ins/RegExp/S15.10.4.1_A3_T5.js | 16 + .../test262/built-ins/RegExp/S15.10.4.1_A4_T1.js | 17 + .../test262/built-ins/RegExp/S15.10.4.1_A4_T2.js | 16 + .../test262/built-ins/RegExp/S15.10.4.1_A4_T3.js | 16 + .../test262/built-ins/RegExp/S15.10.4.1_A4_T4.js | 17 + .../test262/built-ins/RegExp/S15.10.4.1_A4_T5.js | 16 + .../test262/built-ins/RegExp/S15.10.4.1_A5_T1.js | 24 + .../test262/built-ins/RegExp/S15.10.4.1_A5_T3.js | 24 + .../test262/built-ins/RegExp/S15.10.4.1_A5_T4.js | 24 + .../test262/built-ins/RegExp/S15.10.4.1_A5_T6.js | 26 + .../test262/built-ins/RegExp/S15.10.4.1_A5_T7.js | 24 + .../test262/built-ins/RegExp/S15.10.4.1_A5_T8.js | 26 + .../test262/built-ins/RegExp/S15.10.4.1_A5_T9.js | 26 + .../test262/built-ins/RegExp/S15.10.4.1_A6_T1.js | 15 + .../test262/built-ins/RegExp/S15.10.4.1_A7_T1.js | 20 + .../test262/built-ins/RegExp/S15.10.4.1_A7_T2.js | 21 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T1.js | 18 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T10.js | 18 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T11.js | 18 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T12.js | 20 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T13.js | 20 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T2.js | 18 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T3.js | 20 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T4.js | 20 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T5.js | 20 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T6.js | 20 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T7.js | 20 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T8.js | 20 + .../test262/built-ins/RegExp/S15.10.4.1_A8_T9.js | 18 + .../test262/built-ins/RegExp/S15.10.4.1_A9_T1.js | 24 + .../test262/built-ins/RegExp/S15.10.4.1_A9_T2.js | 24 + .../test262/built-ins/RegExp/S15.10.4.1_A9_T3.js | 24 + .../tests/test262/built-ins/RegExp/S15.10.5_A1.js | 11 + .../test262/built-ins/RegExp/S15.10.5_A2_T1.js | 17 + .../test262/built-ins/RegExp/S15.10.5_A2_T2.js | 18 + .../test262/built-ins/RegExp/S15.10.7_A1_T1.js | 22 + .../test262/built-ins/RegExp/S15.10.7_A1_T2.js | 22 + .../test262/built-ins/RegExp/S15.10.7_A2_T1.js | 22 + .../test262/built-ins/RegExp/S15.10.7_A2_T2.js | 22 + .../test262/built-ins/RegExp/S15.10.7_A3_T1.js | 23 + .../test262/built-ins/RegExp/S15.10.7_A3_T2.js | 23 + .../built-ins/RegExp/Symbol.species/browser.js | 0 .../built-ins/RegExp/Symbol.species/length.js | 34 + .../RegExp/Symbol.species/return-value.js | 16 + .../built-ins/RegExp/Symbol.species/shell.js | 0 .../RegExp/Symbol.species/symbol-species-name.js | 27 + .../RegExp/Symbol.species/symbol-species.js | 23 + js/src/tests/test262/built-ins/RegExp/browser.js | 0 .../call_with_non_regexp_same_constructor.js | 27 + .../RegExp/call_with_regexp_match_falsy.js | 25 + .../call_with_regexp_not_same_constructor.js | 24 + .../character-class-escape-non-whitespace-u180e.js | 24 + .../character-class-escape-non-whitespace.js | 57 + .../test262/built-ins/RegExp/dotall/browser.js | 0 .../tests/test262/built-ins/RegExp/dotall/shell.js | 0 .../built-ins/RegExp/dotall/with-dotall-unicode.js | 37 + .../test262/built-ins/RegExp/dotall/with-dotall.js | 37 + .../RegExp/dotall/without-dotall-unicode.js | 37 + .../built-ins/RegExp/dotall/without-dotall.js | 37 + .../test262/built-ins/RegExp/duplicate-flags.js | 34 + .../duplicate-named-capturing-groups-syntax.js | 21 + .../RegExp/from-regexp-like-flag-override.js | 69 + .../RegExp/from-regexp-like-get-ctor-err.js | 53 + .../RegExp/from-regexp-like-get-flags-err.js | 51 + .../RegExp/from-regexp-like-get-source-err.js | 55 + .../RegExp/from-regexp-like-short-circuit.js | 40 + .../test262/built-ins/RegExp/from-regexp-like.js | 58 + .../test262/built-ins/RegExp/is-a-constructor.js | 26 + js/src/tests/test262/built-ins/RegExp/lastIndex.js | 34 + .../built-ins/RegExp/lookBehind/alternations.js | 29 + .../lookBehind/back-references-to-captures.js | 31 + .../built-ins/RegExp/lookBehind/back-references.js | 45 + .../test262/built-ins/RegExp/lookBehind/browser.js | 0 .../RegExp/lookBehind/captures-negative.js | 27 + .../built-ins/RegExp/lookBehind/captures.js | 36 + .../RegExp/lookBehind/do-not-backtrack.js | 27 + .../built-ins/RegExp/lookBehind/greedy-loop.js | 28 + .../test262/built-ins/RegExp/lookBehind/misc.js | 39 + .../RegExp/lookBehind/mutual-recursive.js | 29 + .../built-ins/RegExp/lookBehind/negative.js | 34 + .../RegExp/lookBehind/nested-lookaround.js | 31 + .../test262/built-ins/RegExp/lookBehind/shell.js | 0 .../RegExp/lookBehind/simple-fixed-length.js | 42 + .../built-ins/RegExp/lookBehind/sliced-strings.js | 22 + .../built-ins/RegExp/lookBehind/start-of-line.js | 43 + .../test262/built-ins/RegExp/lookBehind/sticky.js | 32 + .../built-ins/RegExp/lookBehind/variable-length.js | 27 + .../built-ins/RegExp/lookBehind/word-boundary.js | 30 + .../RegExp/lookahead-quantifier-match-groups.js | 32 + .../built-ins/RegExp/match-indices/browser.js | 0 .../RegExp/match-indices/indices-array-element.js | 29 + .../RegExp/match-indices/indices-array-matched.js | 40 + .../indices-array-non-unicode-match.js | 81 + .../match-indices/indices-array-properties.js | 31 + .../match-indices/indices-array-unicode-match.js | 89 + .../indices-array-unicode-property-names.js | 22 + .../match-indices/indices-array-unmatched.js | 34 + .../RegExp/match-indices/indices-array.js | 20 + .../indices-groups-object-undefined.js | 28 + .../indices-groups-object-unmatched.js | 22 + .../RegExp/match-indices/indices-groups-object.js | 41 + .../match-indices/indices-groups-properties.js | 37 + .../RegExp/match-indices/indices-property.js | 34 + .../RegExp/match-indices/no-indices-array.js | 21 + .../built-ins/RegExp/match-indices/shell.js | 329 ++ .../built-ins/RegExp/named-groups/browser.js | 0 .../RegExp/named-groups/duplicate-names-exec.js | 38 + ...icate-names-group-property-enumeration-order.js | 27 + .../named-groups/duplicate-names-match-indices.js | 18 + .../RegExp/named-groups/duplicate-names-match.js | 38 + .../named-groups/duplicate-names-matchall.js | 31 + .../RegExp/named-groups/duplicate-names-replace.js | 20 + .../named-groups/duplicate-names-replaceall.js | 18 + .../RegExp/named-groups/duplicate-names-search.js | 14 + .../RegExp/named-groups/duplicate-names-split.js | 15 + .../RegExp/named-groups/duplicate-names-test.js | 23 + .../named-groups/functional-replace-global.js | 58 + .../named-groups/functional-replace-non-global.js | 45 + .../named-groups/groups-object-subclass-sans.js | 38 + .../RegExp/named-groups/groups-object-subclass.js | 36 + .../RegExp/named-groups/groups-object-undefined.js | 35 + .../RegExp/named-groups/groups-object-unmatched.js | 37 + .../built-ins/RegExp/named-groups/groups-object.js | 41 + .../RegExp/named-groups/groups-properties.js | 34 + .../built-ins/RegExp/named-groups/lookbehind.js | 47 + .../RegExp/named-groups/non-unicode-match.js | 44 + .../non-unicode-property-names-invalid.js | 57 + .../non-unicode-property-names-valid.js | 96 + .../named-groups/non-unicode-property-names.js | 25 + .../RegExp/named-groups/non-unicode-references.js | 36 + .../test262/built-ins/RegExp/named-groups/shell.js | 37 + .../RegExp/named-groups/string-replace-escaped.js | 26 + .../RegExp/named-groups/string-replace-get.js | 31 + .../RegExp/named-groups/string-replace-missing.js | 26 + .../named-groups/string-replace-nocaptures.js | 34 + .../RegExp/named-groups/string-replace-numbered.js | 31 + .../RegExp/named-groups/string-replace-unclosed.js | 22 + .../named-groups/string-replace-undefined.js | 30 + .../built-ins/RegExp/named-groups/unicode-match.js | 48 + .../named-groups/unicode-property-names-invalid.js | 57 + .../named-groups/unicode-property-names-valid.js | 102 + .../RegExp/named-groups/unicode-property-names.js | 32 + .../RegExp/named-groups/unicode-references.js | 49 + js/src/tests/test262/built-ins/RegExp/prop-desc.js | 18 + ...binary-property-with-value-ASCII_-_F-negated.js | 19 + .../binary-property-with-value-ASCII_-_F.js | 19 + ...-property-with-value-ASCII_-_Invalid-negated.js | 19 + .../binary-property-with-value-ASCII_-_Invalid.js | 19 + ...binary-property-with-value-ASCII_-_N-negated.js | 19 + .../binary-property-with-value-ASCII_-_N.js | 19 + ...inary-property-with-value-ASCII_-_No-negated.js | 19 + .../binary-property-with-value-ASCII_-_No.js | 19 + ...binary-property-with-value-ASCII_-_T-negated.js | 19 + .../binary-property-with-value-ASCII_-_T.js | 19 + ...binary-property-with-value-ASCII_-_Y-negated.js | 19 + .../binary-property-with-value-ASCII_-_Y.js | 19 + ...nary-property-with-value-ASCII_-_Yes-negated.js | 19 + .../binary-property-with-value-ASCII_-_Yes.js | 19 + .../built-ins/RegExp/property-escapes/browser.js | 0 .../property-escapes/character-class-range-end.js | 21 + .../character-class-range-no-dash-end.js | 21 + .../character-class-range-no-dash-start.js | 21 + .../character-class-range-start.js | 21 + .../RegExp/property-escapes/character-class.js | 19 + .../RegExp/property-escapes/generated/ASCII.js | 42 + .../property-escapes/generated/ASCII_Hex_Digit.js | 57 + .../property-escapes/generated/Alphabetic.js | 1517 ++++++++ .../RegExp/property-escapes/generated/Any.js | 35 + .../RegExp/property-escapes/generated/Assigned.js | 1456 ++++++++ .../property-escapes/generated/Bidi_Control.js | 60 + .../property-escapes/generated/Bidi_Mirrored.js | 281 ++ .../property-escapes/generated/Case_Ignorable.js | 927 +++++ .../RegExp/property-escapes/generated/Cased.js | 357 ++ .../generated/Changes_When_Casefolded.js | 1297 +++++++ .../generated/Changes_When_Casemapped.js | 315 ++ .../generated/Changes_When_Lowercased.js | 1271 +++++++ .../generated/Changes_When_NFKC_Casefolded.js | 1731 +++++++++ .../generated/Changes_When_Titlecased.js | 1305 +++++++ .../generated/Changes_When_Uppercased.js | 1307 +++++++ .../RegExp/property-escapes/generated/Dash.js | 88 + .../generated/Default_Ignorable_Code_Point.js | 86 + .../property-escapes/generated/Deprecated.js | 69 + .../RegExp/property-escapes/generated/Diacritic.js | 443 +++ .../RegExp/property-escapes/generated/Emoji.js | 345 ++ .../property-escapes/generated/Emoji_Component.js | 72 + .../property-escapes/generated/Emoji_Modifier.js | 53 + .../generated/Emoji_Modifier_Base.js | 133 + .../generated/Emoji_Presentation.js | 215 ++ .../generated/Extended_Pictographic.js | 209 ++ .../RegExp/property-escapes/generated/Extender.js | 119 + .../generated/General_Category_-_Cased_Letter.js | 379 ++ .../General_Category_-_Close_Punctuation.js | 245 ++ .../General_Category_-_Connector_Punctuation.js | 104 + .../generated/General_Category_-_Control.js | 124 + .../General_Category_-_Currency_Symbol.js | 134 + .../General_Category_-_Dash_Punctuation.js | 130 + .../generated/General_Category_-_Decimal_Number.js | 249 ++ .../generated/General_Category_-_Enclosing_Mark.js | 103 + .../General_Category_-_Final_Punctuation.js | 112 + .../generated/General_Category_-_Format.js | 135 + .../General_Category_-_Initial_Punctuation.js | 115 + .../generated/General_Category_-_Letter.js | 1411 ++++++++ .../generated/General_Category_-_Letter_Number.js | 116 + .../generated/General_Category_-_Line_Separator.js | 93 + .../General_Category_-_Lowercase_Letter.js | 1409 ++++++++ .../generated/General_Category_-_Mark.js | 743 ++++ .../generated/General_Category_-_Math_Symbol.js | 221 ++ .../General_Category_-_Modifier_Letter.js | 235 ++ .../General_Category_-_Modifier_Symbol.js | 155 + .../General_Category_-_Nonspacing_Mark.js | 785 +++++ .../generated/General_Category_-_Number.js | 367 ++ .../General_Category_-_Open_Punctuation.js | 250 ++ .../generated/General_Category_-_Other.js | 1515 ++++++++ .../generated/General_Category_-_Other_Letter.js | 1113 ++++++ .../generated/General_Category_-_Other_Number.js | 237 ++ .../General_Category_-_Other_Punctuation.js | 467 +++ .../generated/General_Category_-_Other_Symbol.js | 461 +++ .../General_Category_-_Paragraph_Separator.js | 93 + .../generated/General_Category_-_Private_Use.js | 96 + .../generated/General_Category_-_Punctuation.js | 505 +++ .../generated/General_Category_-_Separator.js | 108 + .../General_Category_-_Space_Separator.js | 106 + .../generated/General_Category_-_Spacing_Mark.js | 457 +++ .../generated/General_Category_-_Surrogate.js | 92 + .../generated/General_Category_-_Symbol.js | 557 +++ .../General_Category_-_Titlecase_Letter.js | 112 + .../generated/General_Category_-_Unassigned.js | 1506 ++++++++ .../General_Category_-_Uppercase_Letter.js | 1385 ++++++++ .../property-escapes/generated/Grapheme_Base.js | 1803 ++++++++++ .../property-escapes/generated/Grapheme_Extend.js | 779 ++++ .../RegExp/property-escapes/generated/Hex_Digit.js | 63 + .../generated/IDS_Binary_Operator.js | 55 + .../generated/IDS_Trinary_Operator.js | 53 + .../property-escapes/generated/ID_Continue.js | 1589 +++++++++ .../RegExp/property-escapes/generated/ID_Start.js | 1371 ++++++++ .../property-escapes/generated/Ideographic.js | 92 + .../property-escapes/generated/Join_Control.js | 53 + .../generated/Logical_Order_Exception.js | 67 + .../RegExp/property-escapes/generated/Lowercase.js | 1395 ++++++++ .../RegExp/property-escapes/generated/Math.js | 319 ++ .../generated/Noncharacter_Code_Point.js | 86 + .../property-escapes/generated/Pattern_Syntax.js | 109 + .../generated/Pattern_White_Space.js | 62 + .../property-escapes/generated/Quotation_Mark.js | 78 + .../RegExp/property-escapes/generated/Radical.js | 48 + .../generated/Regional_Indicator.js | 53 + .../property-escapes/generated/Script_-_Adlam.js | 77 + .../property-escapes/generated/Script_-_Ahom.js | 77 + .../generated/Script_-_Anatolian_Hieroglyphs.js | 73 + .../property-escapes/generated/Script_-_Arabic.js | 189 + .../generated/Script_-_Armenian.js | 79 + .../property-escapes/generated/Script_-_Avestan.js | 75 + .../generated/Script_-_Balinese.js | 75 + .../property-escapes/generated/Script_-_Bamum.js | 75 + .../generated/Script_-_Bassa_Vah.js | 75 + .../property-escapes/generated/Script_-_Batak.js | 75 + .../property-escapes/generated/Script_-_Bengali.js | 101 + .../generated/Script_-_Bhaiksuki.js | 80 + .../generated/Script_-_Bopomofo.js | 77 + .../property-escapes/generated/Script_-_Brahmi.js | 78 + .../property-escapes/generated/Script_-_Braille.js | 73 + .../generated/Script_-_Buginese.js | 75 + .../property-escapes/generated/Script_-_Buhid.js | 73 + .../generated/Script_-_Canadian_Aboriginal.js | 77 + .../property-escapes/generated/Script_-_Carian.js | 73 + .../generated/Script_-_Caucasian_Albanian.js | 76 + .../property-escapes/generated/Script_-_Chakma.js | 76 + .../property-escapes/generated/Script_-_Cham.js | 79 + .../generated/Script_-_Cherokee.js | 77 + .../generated/Script_-_Chorasmian.js | 73 + .../property-escapes/generated/Script_-_Common.js | 418 +++ .../property-escapes/generated/Script_-_Coptic.js | 97 + .../generated/Script_-_Cuneiform.js | 80 + .../property-escapes/generated/Script_-_Cypriot.js | 85 + .../generated/Script_-_Cypro_Minoan.js | 73 + .../generated/Script_-_Cyrillic.js | 92 + .../property-escapes/generated/Script_-_Deseret.js | 73 + .../generated/Script_-_Devanagari.js | 81 + .../generated/Script_-_Dives_Akuru.js | 89 + .../property-escapes/generated/Script_-_Dogra.js | 73 + .../generated/Script_-_Duployan.js | 81 + .../generated/Script_-_Egyptian_Hieroglyphs.js | 73 + .../property-escapes/generated/Script_-_Elbasan.js | 73 + .../property-escapes/generated/Script_-_Elymaic.js | 73 + .../generated/Script_-_Ethiopic.js | 145 + .../generated/Script_-_Georgian.js | 93 + .../generated/Script_-_Glagolitic.js | 84 + .../property-escapes/generated/Script_-_Gothic.js | 73 + .../property-escapes/generated/Script_-_Grantha.js | 103 + .../property-escapes/generated/Script_-_Greek.js | 145 + .../generated/Script_-_Gujarati.js | 101 + .../generated/Script_-_Gunjala_Gondi.js | 84 + .../generated/Script_-_Gurmukhi.js | 105 + .../property-escapes/generated/Script_-_Han.js | 115 + .../property-escapes/generated/Script_-_Hangul.js | 99 + .../generated/Script_-_Hanifi_Rohingya.js | 75 + .../property-escapes/generated/Script_-_Hanunoo.js | 73 + .../property-escapes/generated/Script_-_Hatran.js | 78 + .../property-escapes/generated/Script_-_Hebrew.js | 91 + .../generated/Script_-_Hiragana.js | 84 + .../generated/Script_-_Imperial_Aramaic.js | 76 + .../generated/Script_-_Inherited.js | 151 + .../generated/Script_-_Inscriptional_Pahlavi.js | 75 + .../generated/Script_-_Inscriptional_Parthian.js | 75 + .../generated/Script_-_Javanese.js | 77 + .../property-escapes/generated/Script_-_Kaithi.js | 76 + .../property-escapes/generated/Script_-_Kannada.js | 98 + .../generated/Script_-_Katakana.js | 101 + .../property-escapes/generated/Script_-_Kawi.js | 78 + .../generated/Script_-_Kayah_Li.js | 77 + .../generated/Script_-_Kharoshthi.js | 88 + .../generated/Script_-_Khitan_Small_Script.js | 76 + .../property-escapes/generated/Script_-_Khmer.js | 79 + .../property-escapes/generated/Script_-_Khojki.js | 76 + .../generated/Script_-_Khudawadi.js | 75 + .../property-escapes/generated/Script_-_Lao.js | 95 + .../property-escapes/generated/Script_-_Latin.js | 151 + .../property-escapes/generated/Script_-_Lepcha.js | 77 + .../property-escapes/generated/Script_-_Limbu.js | 83 + .../generated/Script_-_Linear_A.js | 77 + .../generated/Script_-_Linear_B.js | 86 + .../property-escapes/generated/Script_-_Lisu.js | 76 + .../property-escapes/generated/Script_-_Lycian.js | 73 + .../property-escapes/generated/Script_-_Lydian.js | 76 + .../generated/Script_-_Mahajani.js | 73 + .../property-escapes/generated/Script_-_Makasar.js | 73 + .../generated/Script_-_Malayalam.js | 86 + .../property-escapes/generated/Script_-_Mandaic.js | 76 + .../generated/Script_-_Manichaean.js | 75 + .../property-escapes/generated/Script_-_Marchen.js | 78 + .../generated/Script_-_Masaram_Gondi.js | 87 + .../generated/Script_-_Medefaidrin.js | 73 + .../generated/Script_-_Meetei_Mayek.js | 77 + .../generated/Script_-_Mende_Kikakui.js | 75 + .../generated/Script_-_Meroitic_Cursive.js | 77 + .../generated/Script_-_Meroitic_Hieroglyphs.js | 73 + .../property-escapes/generated/Script_-_Miao.js | 77 + .../property-escapes/generated/Script_-_Modi.js | 75 + .../generated/Script_-_Mongolian.js | 85 + .../property-escapes/generated/Script_-_Mro.js | 78 + .../property-escapes/generated/Script_-_Multani.js | 83 + .../property-escapes/generated/Script_-_Myanmar.js | 77 + .../generated/Script_-_Nabataean.js | 75 + .../generated/Script_-_Nag_Mundari.js | 73 + .../generated/Script_-_Nandinagari.js | 77 + .../generated/Script_-_New_Tai_Lue.js | 79 + .../property-escapes/generated/Script_-_Newa.js | 76 + .../property-escapes/generated/Script_-_Nko.js | 75 + .../property-escapes/generated/Script_-_Nushu.js | 76 + .../generated/Script_-_Nyiakeng_Puachue_Hmong.js | 79 + .../property-escapes/generated/Script_-_Ogham.js | 73 + .../generated/Script_-_Ol_Chiki.js | 73 + .../generated/Script_-_Old_Hungarian.js | 77 + .../generated/Script_-_Old_Italic.js | 75 + .../generated/Script_-_Old_North_Arabian.js | 73 + .../generated/Script_-_Old_Permic.js | 73 + .../generated/Script_-_Old_Persian.js | 75 + .../generated/Script_-_Old_Sogdian.js | 73 + .../generated/Script_-_Old_South_Arabian.js | 73 + .../generated/Script_-_Old_Turkic.js | 73 + .../generated/Script_-_Old_Uyghur.js | 73 + .../property-escapes/generated/Script_-_Oriya.js | 100 + .../property-escapes/generated/Script_-_Osage.js | 75 + .../property-escapes/generated/Script_-_Osmanya.js | 75 + .../generated/Script_-_Pahawh_Hmong.js | 82 + .../generated/Script_-_Palmyrene.js | 73 + .../generated/Script_-_Pau_Cin_Hau.js | 73 + .../generated/Script_-_Phags_Pa.js | 73 + .../generated/Script_-_Phoenician.js | 76 + .../generated/Script_-_Psalter_Pahlavi.js | 77 + .../property-escapes/generated/Script_-_Rejang.js | 76 + .../property-escapes/generated/Script_-_Runic.js | 75 + .../generated/Script_-_Samaritan.js | 75 + .../generated/Script_-_Saurashtra.js | 75 + .../property-escapes/generated/Script_-_Sharada.js | 73 + .../property-escapes/generated/Script_-_Shavian.js | 73 + .../property-escapes/generated/Script_-_Siddham.js | 75 + .../generated/Script_-_SignWriting.js | 78 + .../property-escapes/generated/Script_-_Sinhala.js | 99 + .../property-escapes/generated/Script_-_Sogdian.js | 73 + .../generated/Script_-_Sora_Sompeng.js | 75 + .../property-escapes/generated/Script_-_Soyombo.js | 73 + .../generated/Script_-_Sundanese.js | 75 + .../generated/Script_-_Syloti_Nagri.js | 73 + .../property-escapes/generated/Script_-_Syriac.js | 80 + .../property-escapes/generated/Script_-_Tagalog.js | 76 + .../generated/Script_-_Tagbanwa.js | 78 + .../property-escapes/generated/Script_-_Tai_Le.js | 75 + .../generated/Script_-_Tai_Tham.js | 82 + .../generated/Script_-_Tai_Viet.js | 75 + .../property-escapes/generated/Script_-_Takri.js | 75 + .../property-escapes/generated/Script_-_Tamil.js | 109 + .../property-escapes/generated/Script_-_Tangsa.js | 76 + .../property-escapes/generated/Script_-_Tangut.js | 80 + .../property-escapes/generated/Script_-_Telugu.js | 99 + .../property-escapes/generated/Script_-_Thaana.js | 73 + .../property-escapes/generated/Script_-_Thai.js | 75 + .../property-escapes/generated/Script_-_Tibetan.js | 86 + .../generated/Script_-_Tifinagh.js | 78 + .../property-escapes/generated/Script_-_Tirhuta.js | 75 + .../property-escapes/generated/Script_-_Toto.js | 73 + .../generated/Script_-_Ugaritic.js | 77 + .../property-escapes/generated/Script_-_Vai.js | 73 + .../generated/Script_-_Vithkuqi.js | 88 + .../property-escapes/generated/Script_-_Wancho.js | 76 + .../generated/Script_-_Warang_Citi.js | 76 + .../property-escapes/generated/Script_-_Yezidi.js | 78 + .../property-escapes/generated/Script_-_Yi.js | 75 + .../generated/Script_-_Zanabazar_Square.js | 73 + .../generated/Script_Extensions_-_Adlam.js | 82 + .../generated/Script_Extensions_-_Ahom.js | 77 + .../Script_Extensions_-_Anatolian_Hieroglyphs.js | 73 + .../generated/Script_Extensions_-_Arabic.js | 177 + .../generated/Script_Extensions_-_Armenian.js | 79 + .../generated/Script_Extensions_-_Avestan.js | 75 + .../generated/Script_Extensions_-_Balinese.js | 75 + .../generated/Script_Extensions_-_Bamum.js | 75 + .../generated/Script_Extensions_-_Bassa_Vah.js | 75 + .../generated/Script_Extensions_-_Batak.js | 75 + .../generated/Script_Extensions_-_Bengali.js | 125 + .../generated/Script_Extensions_-_Bhaiksuki.js | 80 + .../generated/Script_Extensions_-_Bopomofo.js | 97 + .../generated/Script_Extensions_-_Brahmi.js | 78 + .../generated/Script_Extensions_-_Braille.js | 73 + .../generated/Script_Extensions_-_Buginese.js | 78 + .../generated/Script_Extensions_-_Buhid.js | 75 + .../Script_Extensions_-_Canadian_Aboriginal.js | 77 + .../generated/Script_Extensions_-_Carian.js | 73 + .../Script_Extensions_-_Caucasian_Albanian.js | 76 + .../generated/Script_Extensions_-_Chakma.js | 80 + .../generated/Script_Extensions_-_Cham.js | 79 + .../generated/Script_Extensions_-_Cherokee.js | 77 + .../generated/Script_Extensions_-_Chorasmian.js | 73 + .../generated/Script_Extensions_-_Common.js | 366 ++ .../generated/Script_Extensions_-_Coptic.js | 99 + .../generated/Script_Extensions_-_Cuneiform.js | 80 + .../generated/Script_Extensions_-_Cypriot.js | 91 + .../generated/Script_Extensions_-_Cypro_Minoan.js | 75 + .../generated/Script_Extensions_-_Cyrillic.js | 94 + .../generated/Script_Extensions_-_Deseret.js | 73 + .../generated/Script_Extensions_-_Devanagari.js | 89 + .../generated/Script_Extensions_-_Dives_Akuru.js | 89 + .../generated/Script_Extensions_-_Dogra.js | 77 + .../generated/Script_Extensions_-_Duployan.js | 81 + .../Script_Extensions_-_Egyptian_Hieroglyphs.js | 73 + .../generated/Script_Extensions_-_Elbasan.js | 73 + .../generated/Script_Extensions_-_Elymaic.js | 73 + .../generated/Script_Extensions_-_Ethiopic.js | 145 + .../generated/Script_Extensions_-_Georgian.js | 91 + .../generated/Script_Extensions_-_Glagolitic.js | 93 + .../generated/Script_Extensions_-_Gothic.js | 73 + .../generated/Script_Extensions_-_Grantha.js | 123 + .../generated/Script_Extensions_-_Greek.js | 149 + .../generated/Script_Extensions_-_Gujarati.js | 107 + .../generated/Script_Extensions_-_Gunjala_Gondi.js | 86 + .../generated/Script_Extensions_-_Gurmukhi.js | 111 + .../generated/Script_Extensions_-_Han.js | 149 + .../generated/Script_Extensions_-_Hangul.js | 115 + .../Script_Extensions_-_Hanifi_Rohingya.js | 86 + .../generated/Script_Extensions_-_Hanunoo.js | 73 + .../generated/Script_Extensions_-_Hatran.js | 78 + .../generated/Script_Extensions_-_Hebrew.js | 91 + .../generated/Script_Extensions_-_Hiragana.js | 107 + .../Script_Extensions_-_Imperial_Aramaic.js | 76 + .../generated/Script_Extensions_-_Inherited.js | 133 + .../Script_Extensions_-_Inscriptional_Pahlavi.js | 75 + .../Script_Extensions_-_Inscriptional_Parthian.js | 75 + .../generated/Script_Extensions_-_Javanese.js | 78 + .../generated/Script_Extensions_-_Kaithi.js | 80 + .../generated/Script_Extensions_-_Kannada.js | 115 + .../generated/Script_Extensions_-_Katakana.js | 113 + .../generated/Script_Extensions_-_Kawi.js | 78 + .../generated/Script_Extensions_-_Kayah_Li.js | 73 + .../generated/Script_Extensions_-_Kharoshthi.js | 88 + .../Script_Extensions_-_Khitan_Small_Script.js | 76 + .../generated/Script_Extensions_-_Khmer.js | 79 + .../generated/Script_Extensions_-_Khojki.js | 80 + .../generated/Script_Extensions_-_Khudawadi.js | 79 + .../generated/Script_Extensions_-_Lao.js | 95 + .../generated/Script_Extensions_-_Latin.js | 167 + .../generated/Script_Extensions_-_Lepcha.js | 77 + .../generated/Script_Extensions_-_Limbu.js | 85 + .../generated/Script_Extensions_-_Linear_A.js | 79 + .../generated/Script_Extensions_-_Linear_B.js | 92 + .../generated/Script_Extensions_-_Lisu.js | 76 + .../generated/Script_Extensions_-_Lycian.js | 73 + .../generated/Script_Extensions_-_Lydian.js | 76 + .../generated/Script_Extensions_-_Mahajani.js | 77 + .../generated/Script_Extensions_-_Makasar.js | 73 + .../generated/Script_Extensions_-_Malayalam.js | 95 + .../generated/Script_Extensions_-_Mandaic.js | 78 + .../generated/Script_Extensions_-_Manichaean.js | 78 + .../generated/Script_Extensions_-_Marchen.js | 78 + .../generated/Script_Extensions_-_Masaram_Gondi.js | 89 + .../generated/Script_Extensions_-_Medefaidrin.js | 73 + .../generated/Script_Extensions_-_Meetei_Mayek.js | 77 + .../generated/Script_Extensions_-_Mende_Kikakui.js | 75 + .../Script_Extensions_-_Meroitic_Cursive.js | 77 + .../Script_Extensions_-_Meroitic_Hieroglyphs.js | 73 + .../generated/Script_Extensions_-_Miao.js | 77 + .../generated/Script_Extensions_-_Modi.js | 77 + .../generated/Script_Extensions_-_Mongolian.js | 82 + .../generated/Script_Extensions_-_Mro.js | 78 + .../generated/Script_Extensions_-_Multani.js | 85 + .../generated/Script_Extensions_-_Myanmar.js | 80 + .../generated/Script_Extensions_-_Nabataean.js | 75 + .../generated/Script_Extensions_-_Nag_Mundari.js | 73 + .../generated/Script_Extensions_-_Nandinagari.js | 90 + .../generated/Script_Extensions_-_New_Tai_Lue.js | 79 + .../generated/Script_Extensions_-_Newa.js | 76 + .../generated/Script_Extensions_-_Nko.js | 84 + .../generated/Script_Extensions_-_Nushu.js | 76 + .../Script_Extensions_-_Nyiakeng_Puachue_Hmong.js | 79 + .../generated/Script_Extensions_-_Ogham.js | 73 + .../generated/Script_Extensions_-_Ol_Chiki.js | 73 + .../generated/Script_Extensions_-_Old_Hungarian.js | 77 + .../generated/Script_Extensions_-_Old_Italic.js | 75 + .../Script_Extensions_-_Old_North_Arabian.js | 73 + .../generated/Script_Extensions_-_Old_Permic.js | 76 + .../generated/Script_Extensions_-_Old_Persian.js | 75 + .../generated/Script_Extensions_-_Old_Sogdian.js | 73 + .../Script_Extensions_-_Old_South_Arabian.js | 73 + .../generated/Script_Extensions_-_Old_Turkic.js | 73 + .../generated/Script_Extensions_-_Old_Uyghur.js | 78 + .../generated/Script_Extensions_-_Oriya.js | 109 + .../generated/Script_Extensions_-_Osage.js | 75 + .../generated/Script_Extensions_-_Osmanya.js | 75 + .../generated/Script_Extensions_-_Pahawh_Hmong.js | 82 + .../generated/Script_Extensions_-_Palmyrene.js | 73 + .../generated/Script_Extensions_-_Pau_Cin_Hau.js | 73 + .../generated/Script_Extensions_-_Phags_Pa.js | 79 + .../generated/Script_Extensions_-_Phoenician.js | 76 + .../Script_Extensions_-_Psalter_Pahlavi.js | 80 + .../generated/Script_Extensions_-_Rejang.js | 76 + .../generated/Script_Extensions_-_Runic.js | 75 + .../generated/Script_Extensions_-_Samaritan.js | 75 + .../generated/Script_Extensions_-_Saurashtra.js | 75 + .../generated/Script_Extensions_-_Sharada.js | 85 + .../generated/Script_Extensions_-_Shavian.js | 73 + .../generated/Script_Extensions_-_Siddham.js | 75 + .../generated/Script_Extensions_-_SignWriting.js | 78 + .../generated/Script_Extensions_-_Sinhala.js | 101 + .../generated/Script_Extensions_-_Sogdian.js | 76 + .../generated/Script_Extensions_-_Sora_Sompeng.js | 75 + .../generated/Script_Extensions_-_Soyombo.js | 73 + .../generated/Script_Extensions_-_Sundanese.js | 75 + .../generated/Script_Extensions_-_Syloti_Nagri.js | 77 + .../generated/Script_Extensions_-_Syriac.js | 97 + .../generated/Script_Extensions_-_Tagalog.js | 78 + .../generated/Script_Extensions_-_Tagbanwa.js | 80 + .../generated/Script_Extensions_-_Tai_Le.js | 77 + .../generated/Script_Extensions_-_Tai_Tham.js | 82 + .../generated/Script_Extensions_-_Tai_Viet.js | 75 + .../generated/Script_Extensions_-_Takri.js | 79 + .../generated/Script_Extensions_-_Tamil.js | 123 + .../generated/Script_Extensions_-_Tangsa.js | 76 + .../generated/Script_Extensions_-_Tangut.js | 80 + .../generated/Script_Extensions_-_Telugu.js | 107 + .../generated/Script_Extensions_-_Thaana.js | 86 + .../generated/Script_Extensions_-_Thai.js | 75 + .../generated/Script_Extensions_-_Tibetan.js | 86 + .../generated/Script_Extensions_-_Tifinagh.js | 78 + .../generated/Script_Extensions_-_Tirhuta.js | 84 + .../generated/Script_Extensions_-_Toto.js | 73 + .../generated/Script_Extensions_-_Ugaritic.js | 77 + .../generated/Script_Extensions_-_Vai.js | 73 + .../generated/Script_Extensions_-_Vithkuqi.js | 88 + .../generated/Script_Extensions_-_Wancho.js | 76 + .../generated/Script_Extensions_-_Warang_Citi.js | 76 + .../generated/Script_Extensions_-_Yezidi.js | 87 + .../generated/Script_Extensions_-_Yi.js | 86 + .../Script_Extensions_-_Zanabazar_Square.js | 73 + .../generated/Sentence_Terminal.js | 213 ++ .../property-escapes/generated/Soft_Dotted.js | 121 + .../generated/Terminal_Punctuation.js | 269 ++ .../generated/Unified_Ideograph.js | 85 + .../RegExp/property-escapes/generated/Uppercase.js | 1355 +++++++ .../generated/Variation_Selector.js | 61 + .../property-escapes/generated/White_Space.js | 72 + .../property-escapes/generated/XID_Continue.js | 1603 +++++++++ .../RegExp/property-escapes/generated/XID_Start.js | 1385 ++++++++ .../RegExp/property-escapes/generated/browser.js | 0 .../RegExp/property-escapes/generated/shell.js | 115 + .../strings/Basic_Emoji-negative-CharacterClass.js | 21 + .../generated/strings/Basic_Emoji-negative-P.js | 21 + .../generated/strings/Basic_Emoji-negative-u.js | 21 + .../generated/strings/Basic_Emoji.js | 1421 ++++++++ ...moji_Keycap_Sequence-negative-CharacterClass.js | 21 + .../strings/Emoji_Keycap_Sequence-negative-P.js | 21 + .../strings/Emoji_Keycap_Sequence-negative-u.js | 21 + .../generated/strings/Emoji_Keycap_Sequence.js | 52 + .../strings/RGI_Emoji-negative-CharacterClass.js | 21 + .../generated/strings/RGI_Emoji-negative-P.js | 21 + .../generated/strings/RGI_Emoji-negative-u.js | 21 + .../generated/strings/RGI_Emoji.js | 3704 ++++++++++++++++++++ ..._Emoji_Flag_Sequence-negative-CharacterClass.js | 21 + .../strings/RGI_Emoji_Flag_Sequence-negative-P.js | 21 + .../strings/RGI_Emoji_Flag_Sequence-negative-u.js | 21 + .../generated/strings/RGI_Emoji_Flag_Sequence.js | 293 ++ ...ji_Modifier_Sequence-negative-CharacterClass.js | 21 + .../RGI_Emoji_Modifier_Sequence-negative-P.js | 21 + .../RGI_Emoji_Modifier_Sequence-negative-u.js | 21 + .../strings/RGI_Emoji_Modifier_Sequence.js | 690 ++++ ...I_Emoji_Tag_Sequence-negative-CharacterClass.js | 21 + .../strings/RGI_Emoji_Tag_Sequence-negative-P.js | 21 + .../strings/RGI_Emoji_Tag_Sequence-negative-u.js | 21 + .../generated/strings/RGI_Emoji_Tag_Sequence.js | 37 + ...I_Emoji_ZWJ_Sequence-negative-CharacterClass.js | 21 + .../strings/RGI_Emoji_ZWJ_Sequence-negative-P.js | 21 + .../strings/RGI_Emoji_ZWJ_Sequence-negative-u.js | 21 + .../generated/strings/RGI_Emoji_ZWJ_Sequence.js | 1390 ++++++++ .../property-escapes/generated/strings/browser.js | 0 .../property-escapes/generated/strings/shell.js | 0 ...r-extension-In-prefix-Block-implicit-negated.js | 22 + .../grammar-extension-In-prefix-Block-implicit.js | 22 + ...-extension-In-prefix-Script-implicit-negated.js | 22 + .../grammar-extension-In-prefix-Script-implicit.js | 22 + .../grammar-extension-In-prefix-Script-negated.js | 22 + .../grammar-extension-In-prefix-Script.js | 22 + .../grammar-extension-Is-prefix-Script-negated.js | 22 + .../grammar-extension-Is-prefix-Script.js | 22 + ...rammar-extension-circumflex-negation-negated.js | 22 + .../grammar-extension-circumflex-negation.js | 22 + .../grammar-extension-empty-negated.js | 22 + .../property-escapes/grammar-extension-empty.js | 22 + .../grammar-extension-invalid-negated.js | 22 + .../property-escapes/grammar-extension-invalid.js | 22 + .../grammar-extension-no-braces-negated.js | 22 + .../grammar-extension-no-braces-value-negated.js | 22 + .../grammar-extension-no-braces-value.js | 22 + .../grammar-extension-no-braces.js | 22 + ...r-extension-separator-and-value-only-negated.js | 22 + .../grammar-extension-separator-and-value-only.js | 22 + .../grammar-extension-separator-negated.js | 22 + .../grammar-extension-separator-only-negated.js | 22 + .../grammar-extension-separator-only.js | 22 + .../grammar-extension-separator.js | 22 + .../grammar-extension-unclosed-negated.js | 22 + .../property-escapes/grammar-extension-unclosed.js | 22 + .../grammar-extension-unopened-negated.js | 22 + .../property-escapes/grammar-extension-unopened.js | 22 + .../property-escapes/loose-matching-01-negated.js | 19 + .../RegExp/property-escapes/loose-matching-01.js | 19 + .../property-escapes/loose-matching-02-negated.js | 19 + .../RegExp/property-escapes/loose-matching-02.js | 19 + .../property-escapes/loose-matching-03-negated.js | 19 + .../RegExp/property-escapes/loose-matching-03.js | 19 + .../property-escapes/loose-matching-04-negated.js | 19 + .../RegExp/property-escapes/loose-matching-04.js | 19 + .../property-escapes/loose-matching-05-negated.js | 19 + .../RegExp/property-escapes/loose-matching-05.js | 19 + .../property-escapes/loose-matching-06-negated.js | 19 + .../RegExp/property-escapes/loose-matching-06.js | 19 + .../property-escapes/loose-matching-07-negated.js | 19 + .../RegExp/property-escapes/loose-matching-07.js | 19 + .../property-escapes/loose-matching-08-negated.js | 19 + .../RegExp/property-escapes/loose-matching-08.js | 19 + .../property-escapes/loose-matching-09-negated.js | 19 + .../RegExp/property-escapes/loose-matching-09.js | 19 + .../property-escapes/loose-matching-10-negated.js | 19 + .../RegExp/property-escapes/loose-matching-10.js | 19 + .../property-escapes/loose-matching-11-negated.js | 19 + .../RegExp/property-escapes/loose-matching-11.js | 19 + .../property-escapes/loose-matching-12-negated.js | 19 + .../RegExp/property-escapes/loose-matching-12.js | 19 + .../property-escapes/loose-matching-13-negated.js | 19 + .../RegExp/property-escapes/loose-matching-13.js | 19 + .../property-escapes/loose-matching-14-negated.js | 19 + .../RegExp/property-escapes/loose-matching-14.js | 19 + ...ithout-value-General_Category-equals-negated.js | 18 + ...operty-without-value-General_Category-equals.js | 18 + ...perty-without-value-General_Category-negated.js | 18 + ...nary-property-without-value-General_Category.js | 18 + ...property-without-value-Script-equals-negated.js | 18 + ...-binary-property-without-value-Script-equals.js | 18 + ...binary-property-without-value-Script-negated.js | 18 + .../non-binary-property-without-value-Script.js | 18 + ...thout-value-Script_Extensions-equals-negated.js | 18 + ...perty-without-value-Script_Extensions-equals.js | 18 + ...erty-without-value-Script_Extensions-negated.js | 18 + ...ary-property-without-value-Script_Extensions.js | 18 + .../non-existent-binary-property-negated.js | 18 + .../non-existent-binary-property.js | 18 + .../non-existent-property-and-value-negated.js | 19 + .../non-existent-property-and-value.js | 19 + ...non-existent-property-existing-value-negated.js | 18 + .../non-existent-property-existing-value.js | 18 + ...tent-property-value-General_Category-negated.js | 19 + .../non-existent-property-value-Script-negated.js | 19 + .../non-existent-property-value-Script.js | 19 + ...ent-property-value-Script_Extensions-negated.js | 19 + ...on-existent-property-value-Script_Extensions.js | 19 + ...non-existent-property-value-general-category.js | 19 + .../built-ins/RegExp/property-escapes/shell.js | 0 ...inary-property-Composition_Exclusion-negated.js | 19 + ...ported-binary-property-Composition_Exclusion.js | 19 + ...orted-binary-property-Expands_On_NFC-negated.js | 19 + .../unsupported-binary-property-Expands_On_NFC.js | 19 + ...orted-binary-property-Expands_On_NFD-negated.js | 19 + .../unsupported-binary-property-Expands_On_NFD.js | 19 + ...rted-binary-property-Expands_On_NFKC-negated.js | 19 + .../unsupported-binary-property-Expands_On_NFKC.js | 19 + ...rted-binary-property-Expands_On_NFKD-negated.js | 19 + .../unsupported-binary-property-Expands_On_NFKD.js | 19 + ...rted-binary-property-FC_NFKC_Closure-negated.js | 19 + .../unsupported-binary-property-FC_NFKC_Closure.js | 19 + ...-property-Full_Composition_Exclusion-negated.js | 19 + ...d-binary-property-Full_Composition_Exclusion.js | 19 + ...ported-binary-property-Grapheme_Link-negated.js | 19 + .../unsupported-binary-property-Grapheme_Link.js | 19 + .../unsupported-binary-property-Hyphen-negated.js | 19 + .../unsupported-binary-property-Hyphen.js | 19 + ...ted-binary-property-Other_Alphabetic-negated.js | 19 + ...unsupported-binary-property-Other_Alphabetic.js | 19 + ...y-Other_Default_Ignorable_Code_Point-negated.js | 19 + ...-property-Other_Default_Ignorable_Code_Point.js | 19 + ...inary-property-Other_Grapheme_Extend-negated.js | 19 + ...ported-binary-property-Other_Grapheme_Extend.js | 19 + ...ed-binary-property-Other_ID_Continue-negated.js | 19 + ...nsupported-binary-property-Other_ID_Continue.js | 19 + ...orted-binary-property-Other_ID_Start-negated.js | 19 + .../unsupported-binary-property-Other_ID_Start.js | 19 + ...rted-binary-property-Other_Lowercase-negated.js | 19 + .../unsupported-binary-property-Other_Lowercase.js | 19 + ...supported-binary-property-Other_Math-negated.js | 19 + .../unsupported-binary-property-Other_Math.js | 19 + ...rted-binary-property-Other_Uppercase-negated.js | 19 + .../unsupported-binary-property-Other_Uppercase.js | 19 + ...roperty-Prepended_Concatenation_Mark-negated.js | 19 + ...binary-property-Prepended_Concatenation_Mark.js | 19 + ...nsupported-property-Block-with-value-negated.js | 19 + .../unsupported-property-Block-with-value.js | 19 + ...unsupported-property-FC_NFKC_Closure-negated.js | 19 + .../unsupported-property-FC_NFKC_Closure.js | 19 + .../unsupported-property-Line_Break-negated.js | 19 + ...orted-property-Line_Break-with-value-negated.js | 19 + .../unsupported-property-Line_Break-with-value.js | 19 + .../unsupported-property-Line_Break.js | 19 + .../built-ins/RegExp/proto-from-ctor-realm.js | 32 + .../test262/built-ins/RegExp/prototype/15.10.6.js | 13 + .../built-ins/RegExp/prototype/S15.10.5.1_A1.js | 11 + .../built-ins/RegExp/prototype/S15.10.5.1_A2.js | 28 + .../built-ins/RegExp/prototype/S15.10.5.1_A3.js | 30 + .../built-ins/RegExp/prototype/S15.10.5.1_A4.js | 20 + .../built-ins/RegExp/prototype/S15.10.6.1_A1_T1.js | 17 + .../built-ins/RegExp/prototype/S15.10.6.1_A1_T2.js | 30 + .../built-ins/RegExp/prototype/S15.10.6_A1_T1.js | 17 + .../built-ins/RegExp/prototype/S15.10.6_A1_T2.js | 18 + .../RegExp/prototype/Symbol.match/browser.js | 0 .../Symbol.match/builtin-coerce-lastindex.js | 35 + .../builtin-failure-g-set-lastindex-err.js | 41 + .../builtin-failure-g-set-lastindex.js | 40 + .../Symbol.match/builtin-failure-return-val.js | 38 + .../Symbol.match/builtin-failure-y-return-val.js | 37 + .../builtin-failure-y-set-lastindex-err.js | 44 + .../builtin-failure-y-set-lastindex.js | 40 + .../Symbol.match/builtin-infer-unicode.js | 40 + .../builtin-success-g-set-lastindex-err.js | 54 + .../builtin-success-g-set-lastindex.js | 41 + .../builtin-success-return-val-groups.js | 51 + .../Symbol.match/builtin-success-return-val.js | 42 + .../builtin-success-u-return-val-groups.js | 53 + .../builtin-success-y-set-lastindex-err.js | 38 + .../builtin-success-y-set-lastindex.js | 35 + .../Symbol.match/builtin-y-coerce-lastindex-err.js | 36 + .../prototype/Symbol.match/coerce-arg-err.js | 27 + .../RegExp/prototype/Symbol.match/coerce-arg.js | 27 + .../RegExp/prototype/Symbol.match/coerce-global.js | 87 + .../RegExp/prototype/Symbol.match/exec-err.js | 31 + .../prototype/Symbol.match/exec-invocation.js | 43 + .../Symbol.match/exec-return-type-invalid.js | 58 + .../Symbol.match/exec-return-type-valid.js | 36 + .../prototype/Symbol.match/flags-tostring-error.js | 45 + .../prototype/Symbol.match/g-coerce-result-err.js | 37 + .../prototype/Symbol.match/g-get-exec-err.js | 39 + .../prototype/Symbol.match/g-get-result-err.js | 37 + .../prototype/Symbol.match/g-init-lastindex-err.js | 24 + .../prototype/Symbol.match/g-init-lastindex.js | 22 + .../g-match-empty-advance-lastindex.js | 38 + .../g-match-empty-coerce-lastindex-err.js | 52 + .../g-match-empty-set-lastindex-err.js | 49 + .../Symbol.match/g-match-no-coerce-lastindex.js | 49 + .../Symbol.match/g-match-no-set-lastindex.js | 45 + .../prototype/Symbol.match/g-success-return-val.js | 48 + .../prototype/Symbol.match/g-zero-matches.js | 23 + .../RegExp/prototype/Symbol.match/get-exec-err.js | 32 + .../RegExp/prototype/Symbol.match/get-flags-err.js | 34 + .../prototype/Symbol.match/get-global-err.js | 30 + .../prototype/Symbol.match/get-unicode-error.js | 39 + .../RegExp/prototype/Symbol.match/length.js | 28 + .../RegExp/prototype/Symbol.match/name.js | 26 + .../prototype/Symbol.match/not-a-constructor.js | 35 + .../RegExp/prototype/Symbol.match/prop-desc.js | 21 + .../RegExp/prototype/Symbol.match/shell.js | 0 .../prototype/Symbol.match/this-val-non-obj.js | 37 + .../prototype/Symbol.match/this-val-non-regexp.js | 38 + .../Symbol.match/u-advance-after-empty.js | 32 + .../prototype/Symbol.match/y-fail-global-return.js | 49 + .../Symbol.match/y-fail-lastindex-no-write.js | 42 + .../prototype/Symbol.match/y-fail-lastindex.js | 39 + .../RegExp/prototype/Symbol.match/y-fail-return.js | 35 + .../prototype/Symbol.match/y-init-lastindex.js | 37 + .../prototype/Symbol.match/y-set-lastindex.js | 31 + .../RegExp/prototype/Symbol.matchAll/browser.js | 0 .../Symbol.matchAll/isregexp-called-once.js | 59 + .../Symbol.matchAll/isregexp-this-throws.js | 28 + .../RegExp/prototype/Symbol.matchAll/length.js | 32 + .../RegExp/prototype/Symbol.matchAll/name.js | 30 + .../prototype/Symbol.matchAll/not-a-constructor.js | 35 + .../RegExp/prototype/Symbol.matchAll/prop-desc.js | 24 + .../Symbol.matchAll/regexpcreate-this-throws.js | 32 + .../RegExp/prototype/Symbol.matchAll/shell.js | 152 + .../species-constructor-get-constructor-throws.js | 34 + .../species-constructor-get-species-throws.js | 33 + .../species-constructor-is-not-object-throws.js | 43 + .../species-constructor-is-undefined.js | 33 + ...ecies-constructor-species-is-not-constructor.js | 47 + ...ies-constructor-species-is-null-or-undefined.js | 43 + .../species-constructor-species-throws.js | 31 + .../Symbol.matchAll/species-constructor.js | 42 + .../species-regexp-get-global-throws.js | 33 + .../species-regexp-get-unicode-throws.js | 33 + .../Symbol.matchAll/string-tostring-throws.js | 29 + .../prototype/Symbol.matchAll/string-tostring.js | 31 + .../Symbol.matchAll/this-get-flags-throws.js | 30 + .../prototype/Symbol.matchAll/this-get-flags.js | 31 + .../Symbol.matchAll/this-lastindex-cached.js | 38 + .../Symbol.matchAll/this-not-object-throws.js | 33 + .../this-tolength-lastindex-throws.js | 30 + .../Symbol.matchAll/this-tostring-flags-throws.js | 35 + .../Symbol.matchAll/this-tostring-flags.js | 35 + .../prototype/Symbol.replace/arg-1-coerce-err.js | 26 + .../prototype/Symbol.replace/arg-1-coerce.js | 27 + .../prototype/Symbol.replace/arg-2-coerce-err.js | 28 + .../prototype/Symbol.replace/arg-2-coerce.js | 29 + .../RegExp/prototype/Symbol.replace/browser.js | 0 .../prototype/Symbol.replace/coerce-global.js | 75 + .../Symbol.replace/coerce-lastindex-err.js | 53 + .../prototype/Symbol.replace/coerce-lastindex.js | 54 + .../prototype/Symbol.replace/coerce-unicode.js | 50 + .../RegExp/prototype/Symbol.replace/exec-err.js | 35 + .../prototype/Symbol.replace/exec-invocation.js | 46 + .../Symbol.replace/flags-tostring-error.js | 49 + .../Symbol.replace/fn-coerce-replacement-err.js | 36 + .../Symbol.replace/fn-coerce-replacement.js | 34 + .../RegExp/prototype/Symbol.replace/fn-err.js | 31 + .../Symbol.replace/fn-invoke-args-empty-result.js | 43 + .../prototype/Symbol.replace/fn-invoke-args.js | 35 + .../Symbol.replace/fn-invoke-this-no-strict.js | 31 + .../Symbol.replace/fn-invoke-this-strict-strict.js | 32 + .../Symbol.replace/g-init-lastindex-err.js | 31 + .../prototype/Symbol.replace/g-init-lastindex.js | 24 + .../prototype/Symbol.replace/g-pos-decrement.js | 43 + .../prototype/Symbol.replace/g-pos-increment.js | 43 + .../prototype/Symbol.replace/get-exec-err.js | 35 + .../prototype/Symbol.replace/get-flags-err.js | 38 + .../prototype/Symbol.replace/get-global-err.js | 34 + .../prototype/Symbol.replace/get-unicode-error.js | 43 + .../RegExp/prototype/Symbol.replace/length.js | 28 + .../prototype/Symbol.replace/match-failure.js | 29 + .../RegExp/prototype/Symbol.replace/name.js | 26 + .../prototype/Symbol.replace/named-groups-fn.js | 61 + .../prototype/Symbol.replace/named-groups.js | 46 + .../prototype/Symbol.replace/not-a-constructor.js | 35 + .../prototype/Symbol.replace/poisoned-stdlib.js | 45 + .../RegExp/prototype/Symbol.replace/prop-desc.js | 21 + .../Symbol.replace/replace-with-trailing.js | 26 + .../Symbol.replace/replace-without-trailing.js | 18 + .../Symbol.replace/result-coerce-capture-err.js | 41 + .../Symbol.replace/result-coerce-capture.js | 46 + .../Symbol.replace/result-coerce-groups-err.js | 40 + .../result-coerce-groups-prop-err.js | 69 + .../Symbol.replace/result-coerce-groups-prop.js | 72 + .../Symbol.replace/result-coerce-groups.js | 38 + .../Symbol.replace/result-coerce-index-err.js | 37 + .../result-coerce-index-undefined.js | 43 + .../Symbol.replace/result-coerce-index.js | 45 + .../Symbol.replace/result-coerce-length-err.js | 36 + .../Symbol.replace/result-coerce-length.js | 37 + .../Symbol.replace/result-coerce-matched-err.js | 36 + .../Symbol.replace/result-coerce-matched-global.js | 55 + .../Symbol.replace/result-coerce-matched.js | 42 + .../Symbol.replace/result-get-capture-err.js | 36 + .../Symbol.replace/result-get-groups-err.js | 36 + .../Symbol.replace/result-get-groups-prop-err.js | 64 + .../Symbol.replace/result-get-index-err.js | 34 + .../Symbol.replace/result-get-length-err.js | 33 + .../Symbol.replace/result-get-matched-err.js | 34 + .../RegExp/prototype/Symbol.replace/shell.js | 0 .../RegExp/prototype/Symbol.replace/subst-after.js | 34 + .../prototype/Symbol.replace/subst-before.js | 34 + .../Symbol.replace/subst-capture-idx-1.js | 39 + .../Symbol.replace/subst-capture-idx-2.js | 43 + .../prototype/Symbol.replace/subst-dollar.js | 45 + .../prototype/Symbol.replace/subst-matched.js | 28 + .../prototype/Symbol.replace/this-val-non-obj.js | 41 + .../Symbol.replace/u-advance-after-empty.js | 32 + .../Symbol.replace/y-fail-global-return.js | 41 + .../Symbol.replace/y-fail-lastindex-no-write.js | 40 + .../prototype/Symbol.replace/y-fail-lastindex.js | 37 + .../prototype/Symbol.replace/y-fail-return.js | 33 + .../prototype/Symbol.replace/y-init-lastindex.js | 29 + .../prototype/Symbol.replace/y-set-lastindex.js | 30 + .../RegExp/prototype/Symbol.search/browser.js | 0 .../prototype/Symbol.search/coerce-string-err.js | 28 + .../prototype/Symbol.search/coerce-string.js | 22 + .../Symbol.search/cstm-exec-return-index.js | 34 + .../Symbol.search/cstm-exec-return-invalid.js | 58 + .../prototype/Symbol.search/failure-return-val.js | 15 + .../prototype/Symbol.search/get-lastindex-err.js | 24 + .../Symbol.search/lastindex-no-restore.js | 67 + .../RegExp/prototype/Symbol.search/length.js | 29 + .../RegExp/prototype/Symbol.search/match-err.js | 27 + .../RegExp/prototype/Symbol.search/name.js | 26 + .../prototype/Symbol.search/not-a-constructor.js | 35 + .../RegExp/prototype/Symbol.search/prop-desc.js | 21 + .../Symbol.search/set-lastindex-init-err.js | 54 + .../Symbol.search/set-lastindex-init-samevalue.js | 32 + .../prototype/Symbol.search/set-lastindex-init.js | 30 + .../Symbol.search/set-lastindex-restore-err.js | 52 + .../set-lastindex-restore-samevalue.js | 29 + .../Symbol.search/set-lastindex-restore.js | 36 + .../RegExp/prototype/Symbol.search/shell.js | 0 .../Symbol.search/success-get-index-err.js | 29 + .../prototype/Symbol.search/success-return-val.js | 17 + .../prototype/Symbol.search/this-val-non-obj.js | 41 + .../prototype/Symbol.search/u-lastindex-advance.js | 25 + .../prototype/Symbol.search/y-fail-return.js | 32 + .../RegExp/prototype/Symbol.split/browser.js | 0 .../prototype/Symbol.split/coerce-flags-err.js | 34 + .../RegExp/prototype/Symbol.split/coerce-flags.js | 36 + .../prototype/Symbol.split/coerce-limit-err.js | 29 + .../RegExp/prototype/Symbol.split/coerce-limit.js | 30 + .../prototype/Symbol.split/coerce-string-err.js | 28 + .../RegExp/prototype/Symbol.split/coerce-string.js | 28 + .../RegExp/prototype/Symbol.split/get-flags-err.js | 24 + .../Symbol.split/last-index-exceeds-str-size.js | 34 + .../RegExp/prototype/Symbol.split/length.js | 26 + .../RegExp/prototype/Symbol.split/limit-0-bail.js | 30 + .../RegExp/prototype/Symbol.split/name.js | 26 + .../prototype/Symbol.split/not-a-constructor.js | 35 + .../RegExp/prototype/Symbol.split/prop-desc.js | 21 + .../RegExp/prototype/Symbol.split/shell.js | 0 .../Symbol.split/species-ctor-ctor-get-err.js | 30 + .../Symbol.split/species-ctor-ctor-non-obj.js | 52 + .../Symbol.split/species-ctor-ctor-undef.js | 33 + .../prototype/Symbol.split/species-ctor-err.js | 38 + .../Symbol.split/species-ctor-species-get-err.js | 37 + .../Symbol.split/species-ctor-species-non-ctor.js | 59 + .../Symbol.split/species-ctor-species-undef.js | 50 + .../prototype/Symbol.split/species-ctor-y.js | 47 + .../RegExp/prototype/Symbol.split/species-ctor.js | 50 + .../Symbol.split/splitter-proto-from-ctor-realm.js | 33 + .../Symbol.split/str-adv-thru-empty-match.js | 31 + .../Symbol.split/str-coerce-lastindex-err.js | 51 + .../prototype/Symbol.split/str-coerce-lastindex.js | 48 + .../prototype/Symbol.split/str-empty-match-err.js | 30 + .../prototype/Symbol.split/str-empty-match.js | 21 + .../prototype/Symbol.split/str-empty-no-match.js | 26 + .../Symbol.split/str-get-lastindex-err.js | 46 + .../prototype/Symbol.split/str-limit-capturing.js | 31 + .../RegExp/prototype/Symbol.split/str-limit.js | 32 + .../RegExp/prototype/Symbol.split/str-match-err.js | 32 + .../Symbol.split/str-result-coerce-length-err.js | 52 + .../Symbol.split/str-result-coerce-length.js | 54 + .../Symbol.split/str-result-get-capture-err.js | 51 + .../Symbol.split/str-result-get-length-err.js | 45 + .../Symbol.split/str-set-lastindex-err.js | 37 + .../Symbol.split/str-set-lastindex-match.js | 51 + .../Symbol.split/str-set-lastindex-no-match.js | 37 + .../prototype/Symbol.split/str-trailing-chars.js | 24 + .../prototype/Symbol.split/this-val-non-obj.js | 41 + .../Symbol.split/u-lastindex-adv-thru-failure.js | 30 + .../Symbol.split/u-lastindex-adv-thru-match.js | 36 + .../test262/built-ins/RegExp/prototype/browser.js | 0 .../built-ins/RegExp/prototype/dotAll/browser.js | 0 .../RegExp/prototype/dotAll/cross-realm.js | 31 + .../built-ins/RegExp/prototype/dotAll/length.js | 36 + .../built-ins/RegExp/prototype/dotAll/name.js | 29 + .../built-ins/RegExp/prototype/dotAll/prop-desc.js | 31 + .../built-ins/RegExp/prototype/dotAll/shell.js | 0 .../prototype/dotAll/this-val-invalid-obj.js | 36 + .../RegExp/prototype/dotAll/this-val-non-obj.js | 46 + .../prototype/dotAll/this-val-regexp-prototype.js | 21 + .../RegExp/prototype/dotAll/this-val-regexp.js | 41 + .../RegExp/prototype/exec/15.10.6.2-9-e-1.js | 18 + .../RegExp/prototype/exec/S15.10.6.2_A10.js | 28 + .../RegExp/prototype/exec/S15.10.6.2_A11.js | 17 + .../RegExp/prototype/exec/S15.10.6.2_A12.js | 15 + .../RegExp/prototype/exec/S15.10.6.2_A1_T1.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T10.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T11.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T12.js | 52 + .../RegExp/prototype/exec/S15.10.6.2_A1_T13.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T14.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T15.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T16.js | 15 + .../RegExp/prototype/exec/S15.10.6.2_A1_T17.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T18.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T19.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T2.js | 51 + .../RegExp/prototype/exec/S15.10.6.2_A1_T20.js | 52 + .../RegExp/prototype/exec/S15.10.6.2_A1_T21.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T3.js | 50 + .../RegExp/prototype/exec/S15.10.6.2_A1_T4.js | 52 + .../RegExp/prototype/exec/S15.10.6.2_A1_T5.js | 53 + .../RegExp/prototype/exec/S15.10.6.2_A1_T6.js | 52 + .../RegExp/prototype/exec/S15.10.6.2_A1_T7.js | 22 + .../RegExp/prototype/exec/S15.10.6.2_A1_T8.js | 22 + .../RegExp/prototype/exec/S15.10.6.2_A1_T9.js | 19 + .../RegExp/prototype/exec/S15.10.6.2_A2_T1.js | 28 + .../RegExp/prototype/exec/S15.10.6.2_A2_T10.js | 26 + .../RegExp/prototype/exec/S15.10.6.2_A2_T2.js | 29 + .../RegExp/prototype/exec/S15.10.6.2_A2_T3.js | 29 + .../RegExp/prototype/exec/S15.10.6.2_A2_T4.js | 28 + .../RegExp/prototype/exec/S15.10.6.2_A2_T5.js | 28 + .../RegExp/prototype/exec/S15.10.6.2_A2_T6.js | 28 + .../RegExp/prototype/exec/S15.10.6.2_A2_T7.js | 28 + .../RegExp/prototype/exec/S15.10.6.2_A2_T8.js | 28 + .../RegExp/prototype/exec/S15.10.6.2_A2_T9.js | 28 + .../RegExp/prototype/exec/S15.10.6.2_A3_T1.js | 42 + .../RegExp/prototype/exec/S15.10.6.2_A3_T2.js | 153 + .../RegExp/prototype/exec/S15.10.6.2_A3_T3.js | 157 + .../RegExp/prototype/exec/S15.10.6.2_A3_T4.js | 159 + .../RegExp/prototype/exec/S15.10.6.2_A3_T5.js | 42 + .../RegExp/prototype/exec/S15.10.6.2_A3_T6.js | 42 + .../RegExp/prototype/exec/S15.10.6.2_A3_T7.js | 42 + .../RegExp/prototype/exec/S15.10.6.2_A4_T1.js | 80 + .../RegExp/prototype/exec/S15.10.6.2_A4_T10.js | 84 + .../RegExp/prototype/exec/S15.10.6.2_A4_T11.js | 60 + .../RegExp/prototype/exec/S15.10.6.2_A4_T12.js | 85 + .../RegExp/prototype/exec/S15.10.6.2_A4_T2.js | 82 + .../RegExp/prototype/exec/S15.10.6.2_A4_T3.js | 80 + .../RegExp/prototype/exec/S15.10.6.2_A4_T4.js | 80 + .../RegExp/prototype/exec/S15.10.6.2_A4_T5.js | 84 + .../RegExp/prototype/exec/S15.10.6.2_A4_T6.js | 80 + .../RegExp/prototype/exec/S15.10.6.2_A4_T7.js | 82 + .../RegExp/prototype/exec/S15.10.6.2_A4_T8.js | 80 + .../RegExp/prototype/exec/S15.10.6.2_A4_T9.js | 82 + .../RegExp/prototype/exec/S15.10.6.2_A5_T1.js | 53 + .../RegExp/prototype/exec/S15.10.6.2_A5_T2.js | 20 + .../RegExp/prototype/exec/S15.10.6.2_A5_T3.js | 26 + .../RegExp/prototype/exec/S15.10.6.2_A6.js | 15 + .../RegExp/prototype/exec/S15.10.6.2_A7.js | 25 + .../RegExp/prototype/exec/S15.10.6.2_A8.js | 35 + .../RegExp/prototype/exec/S15.10.6.2_A9.js | 33 + .../built-ins/RegExp/prototype/exec/browser.js | 0 .../exec/duplicate-named-groups-properties.js | 39 + .../duplicate-named-indices-groups-properties.js | 39 + .../prototype/exec/failure-g-lastindex-reset.js | 54 + .../prototype/exec/failure-lastindex-access.js | 38 + .../RegExp/prototype/exec/failure-lastindex-set.js | 74 + .../built-ins/RegExp/prototype/exec/name.js | 28 + .../RegExp/prototype/exec/not-a-constructor.js | 35 + .../built-ins/RegExp/prototype/exec/shell.js | 0 .../exec/success-g-lastindex-no-access.js | 35 + .../prototype/exec/success-lastindex-access.js | 38 + .../RegExp/prototype/exec/u-captured-value.js | 35 + .../RegExp/prototype/exec/u-lastindex-adv.js | 24 + .../RegExp/prototype/exec/u-lastindex-value.js | 32 + .../prototype/exec/y-fail-lastindex-no-write.js | 38 + .../RegExp/prototype/exec/y-fail-lastindex.js | 35 + .../RegExp/prototype/exec/y-fail-return.js | 31 + .../RegExp/prototype/exec/y-init-lastindex.js | 33 + .../RegExp/prototype/exec/y-set-lastindex.js | 27 + .../built-ins/RegExp/prototype/flags/browser.js | 0 .../RegExp/prototype/flags/coercion-dotall.js | 47 + .../RegExp/prototype/flags/coercion-global.js | 47 + .../RegExp/prototype/flags/coercion-hasIndices.js | 47 + .../RegExp/prototype/flags/coercion-ignoreCase.js | 47 + .../RegExp/prototype/flags/coercion-multiline.js | 47 + .../RegExp/prototype/flags/coercion-sticky.js | 47 + .../RegExp/prototype/flags/coercion-unicode.js | 47 + .../built-ins/RegExp/prototype/flags/get-order.js | 51 + .../built-ins/RegExp/prototype/flags/length.js | 34 + .../built-ins/RegExp/prototype/flags/name.js | 31 + .../built-ins/RegExp/prototype/flags/prop-desc.js | 26 + .../built-ins/RegExp/prototype/flags/rethrow.js | 79 + .../RegExp/prototype/flags/return-order.js | 29 + .../built-ins/RegExp/prototype/flags/shell.js | 0 .../RegExp/prototype/flags/this-val-non-obj.js | 43 + .../prototype/flags/this-val-regexp-prototype.js | 29 + .../RegExp/prototype/flags/this-val-regexp.js | 38 + .../RegExp/prototype/global/15.10.7.2-2.js | 19 + .../RegExp/prototype/global/S15.10.7.2_A10.js | 22 + .../RegExp/prototype/global/S15.10.7.2_A8.js | 33 + .../RegExp/prototype/global/S15.10.7.2_A9.js | 20 + .../built-ins/RegExp/prototype/global/browser.js | 0 .../RegExp/prototype/global/cross-realm.js | 28 + .../built-ins/RegExp/prototype/global/length.js | 33 + .../built-ins/RegExp/prototype/global/name.js | 26 + .../built-ins/RegExp/prototype/global/shell.js | 0 .../prototype/global/this-val-invalid-obj.js | 32 + .../RegExp/prototype/global/this-val-non-obj.js | 43 + .../prototype/global/this-val-regexp-prototype.js | 19 + .../RegExp/prototype/hasIndices/browser.js | 0 .../RegExp/prototype/hasIndices/cross-realm.js | 31 + .../RegExp/prototype/hasIndices/length.js | 36 + .../built-ins/RegExp/prototype/hasIndices/name.js | 29 + .../RegExp/prototype/hasIndices/prop-desc.js | 31 + .../built-ins/RegExp/prototype/hasIndices/shell.js | 0 .../prototype/hasIndices/this-val-invalid-obj.js | 36 + .../prototype/hasIndices/this-val-non-obj.js | 46 + .../hasIndices/this-val-regexp-prototype.js | 21 + .../RegExp/prototype/hasIndices/this-val-regexp.js | 49 + .../RegExp/prototype/ignoreCase/15.10.7.3-2.js | 19 + .../RegExp/prototype/ignoreCase/S15.10.7.3_A10.js | 26 + .../RegExp/prototype/ignoreCase/S15.10.7.3_A8.js | 33 + .../RegExp/prototype/ignoreCase/S15.10.7.3_A9.js | 20 + .../RegExp/prototype/ignoreCase/browser.js | 0 .../RegExp/prototype/ignoreCase/cross-realm.js | 28 + .../RegExp/prototype/ignoreCase/length.js | 33 + .../built-ins/RegExp/prototype/ignoreCase/name.js | 26 + .../built-ins/RegExp/prototype/ignoreCase/shell.js | 0 .../prototype/ignoreCase/this-val-invalid-obj.js | 32 + .../prototype/ignoreCase/this-val-non-obj.js | 43 + .../ignoreCase/this-val-regexp-prototype.js | 19 + .../RegExp/prototype/multiline/15.10.7.4-2.js | 19 + .../RegExp/prototype/multiline/S15.10.7.4_A10.js | 22 + .../RegExp/prototype/multiline/S15.10.7.4_A8.js | 33 + .../RegExp/prototype/multiline/S15.10.7.4_A9.js | 20 + .../RegExp/prototype/multiline/browser.js | 0 .../RegExp/prototype/multiline/cross-realm.js | 28 + .../built-ins/RegExp/prototype/multiline/length.js | 33 + .../built-ins/RegExp/prototype/multiline/name.js | 26 + .../built-ins/RegExp/prototype/multiline/shell.js | 0 .../prototype/multiline/this-val-invalid-obj.js | 32 + .../RegExp/prototype/multiline/this-val-non-obj.js | 43 + .../multiline/this-val-regexp-prototype.js | 19 + .../RegExp/prototype/no-regexp-matcher.js | 24 + .../test262/built-ins/RegExp/prototype/shell.js | 0 .../built-ins/RegExp/prototype/source/browser.js | 0 .../RegExp/prototype/source/cross-realm.js | 28 + .../built-ins/RegExp/prototype/source/length.js | 34 + .../built-ins/RegExp/prototype/source/name.js | 31 + .../built-ins/RegExp/prototype/source/prop-desc.js | 22 + .../built-ins/RegExp/prototype/source/shell.js | 0 .../prototype/source/this-val-invalid-obj.js | 32 + .../RegExp/prototype/source/this-val-non-obj.js | 43 + .../prototype/source/this-val-regexp-prototype.js | 18 + .../RegExp/prototype/source/value-empty.js | 26 + .../prototype/source/value-line-terminator.js | 30 + .../RegExp/prototype/source/value-slash.js | 28 + .../built-ins/RegExp/prototype/source/value-u.js | 34 + .../built-ins/RegExp/prototype/source/value.js | 36 + .../built-ins/RegExp/prototype/sticky/browser.js | 0 .../RegExp/prototype/sticky/cross-realm.js | 30 + .../built-ins/RegExp/prototype/sticky/length.js | 33 + .../built-ins/RegExp/prototype/sticky/name.js | 26 + .../built-ins/RegExp/prototype/sticky/prop-desc.js | 17 + .../built-ins/RegExp/prototype/sticky/shell.js | 0 .../prototype/sticky/this-val-invalid-obj.js | 34 + .../RegExp/prototype/sticky/this-val-non-obj.js | 46 + .../prototype/sticky/this-val-regexp-prototype.js | 19 + .../RegExp/prototype/sticky/this-val-regexp.js | 26 + .../RegExp/prototype/test/S15.10.6.3_A10.js | 28 + .../RegExp/prototype/test/S15.10.6.3_A11.js | 17 + .../RegExp/prototype/test/S15.10.6.3_A1_T1.js | 19 + .../RegExp/prototype/test/S15.10.6.3_A1_T10.js | 19 + .../RegExp/prototype/test/S15.10.6.3_A1_T11.js | 19 + .../RegExp/prototype/test/S15.10.6.3_A1_T12.js | 21 + .../RegExp/prototype/test/S15.10.6.3_A1_T13.js | 19 + .../RegExp/prototype/test/S15.10.6.3_A1_T14.js | 19 + .../RegExp/prototype/test/S15.10.6.3_A1_T15.js | 21 + .../RegExp/prototype/test/S15.10.6.3_A1_T16.js | 14 + .../RegExp/prototype/test/S15.10.6.3_A1_T17.js | 14 + .../RegExp/prototype/test/S15.10.6.3_A1_T18.js | 18 + .../RegExp/prototype/test/S15.10.6.3_A1_T19.js | 18 + .../RegExp/prototype/test/S15.10.6.3_A1_T2.js | 21 + .../RegExp/prototype/test/S15.10.6.3_A1_T20.js | 16 + .../RegExp/prototype/test/S15.10.6.3_A1_T21.js | 20 + .../RegExp/prototype/test/S15.10.6.3_A1_T22.js | 26 + .../RegExp/prototype/test/S15.10.6.3_A1_T3.js | 21 + .../RegExp/prototype/test/S15.10.6.3_A1_T4.js | 21 + .../RegExp/prototype/test/S15.10.6.3_A1_T5.js | 22 + .../RegExp/prototype/test/S15.10.6.3_A1_T6.js | 20 + .../RegExp/prototype/test/S15.10.6.3_A1_T7.js | 20 + .../RegExp/prototype/test/S15.10.6.3_A1_T8.js | 20 + .../RegExp/prototype/test/S15.10.6.3_A1_T9.js | 21 + .../RegExp/prototype/test/S15.10.6.3_A2_T1.js | 28 + .../RegExp/prototype/test/S15.10.6.3_A2_T10.js | 26 + .../RegExp/prototype/test/S15.10.6.3_A2_T2.js | 29 + .../RegExp/prototype/test/S15.10.6.3_A2_T3.js | 29 + .../RegExp/prototype/test/S15.10.6.3_A2_T4.js | 28 + .../RegExp/prototype/test/S15.10.6.3_A2_T5.js | 28 + .../RegExp/prototype/test/S15.10.6.3_A2_T6.js | 28 + .../RegExp/prototype/test/S15.10.6.3_A2_T7.js | 28 + .../RegExp/prototype/test/S15.10.6.3_A2_T8.js | 28 + .../RegExp/prototype/test/S15.10.6.3_A2_T9.js | 28 + .../RegExp/prototype/test/S15.10.6.3_A6.js | 15 + .../RegExp/prototype/test/S15.10.6.3_A7.js | 25 + .../RegExp/prototype/test/S15.10.6.3_A8.js | 35 + .../RegExp/prototype/test/S15.10.6.3_A9.js | 31 + .../built-ins/RegExp/prototype/test/browser.js | 0 .../built-ins/RegExp/prototype/test/name.js | 28 + .../RegExp/prototype/test/not-a-constructor.js | 35 + .../built-ins/RegExp/prototype/test/shell.js | 0 .../prototype/test/y-fail-lastindex-no-write.js | 38 + .../RegExp/prototype/test/y-fail-lastindex.js | 35 + .../RegExp/prototype/test/y-fail-return.js | 31 + .../RegExp/prototype/test/y-init-lastindex.js | 28 + .../RegExp/prototype/test/y-set-lastindex.js | 28 + .../RegExp/prototype/toString/S15.10.6.4_A10.js | 30 + .../RegExp/prototype/toString/S15.10.6.4_A11.js | 21 + .../RegExp/prototype/toString/S15.10.6.4_A6.js | 23 + .../RegExp/prototype/toString/S15.10.6.4_A7.js | 33 + .../RegExp/prototype/toString/S15.10.6.4_A8.js | 35 + .../RegExp/prototype/toString/S15.10.6.4_A9.js | 33 + .../built-ins/RegExp/prototype/toString/browser.js | 0 .../prototype/toString/called-as-function.js | 34 + .../built-ins/RegExp/prototype/toString/name.js | 28 + .../RegExp/prototype/toString/not-a-constructor.js | 35 + .../built-ins/RegExp/prototype/toString/shell.js | 0 .../built-ins/RegExp/prototype/unicode/browser.js | 0 .../RegExp/prototype/unicode/cross-realm.js | 30 + .../built-ins/RegExp/prototype/unicode/length.js | 30 + .../built-ins/RegExp/prototype/unicode/name.js | 37 + .../RegExp/prototype/unicode/prop-desc.js | 17 + .../built-ins/RegExp/prototype/unicode/shell.js | 0 .../prototype/unicode/this-val-invalid-obj.js | 34 + .../RegExp/prototype/unicode/this-val-non-obj.js | 46 + .../prototype/unicode/this-val-regexp-prototype.js | 19 + .../RegExp/prototype/unicode/this-val-regexp.js | 27 + .../unicodeSets/breaking-change-from-u-to-v-01.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-02.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-03.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-04.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-05.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-06.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-07.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-08.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-09.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-10.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-11.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-12.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-13.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-14.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-15.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-16.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-17.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-18.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-19.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-20.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-21.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-22.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-23.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-24.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-25.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-26.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-27.js | 20 + .../unicodeSets/breaking-change-from-u-to-v-28.js | 20 + .../RegExp/prototype/unicodeSets/browser.js | 0 .../RegExp/prototype/unicodeSets/cross-realm.js | 31 + .../RegExp/prototype/unicodeSets/length.js | 36 + .../built-ins/RegExp/prototype/unicodeSets/name.js | 29 + .../RegExp/prototype/unicodeSets/prop-desc.js | 31 + .../RegExp/prototype/unicodeSets/shell.js | 0 .../prototype/unicodeSets/this-val-invalid-obj.js | 36 + .../prototype/unicodeSets/this-val-non-obj.js | 46 + .../unicodeSets/this-val-regexp-prototype.js | 23 + .../prototype/unicodeSets/this-val-regexp.js | 53 + .../prototype/unicodeSets/uv-flags-constructor.js | 16 + .../RegExp/prototype/unicodeSets/uv-flags.js | 18 + .../built-ins/RegExp/quantifier-integer-limit.js | 38 + .../test262/built-ins/RegExp/regexp-class-chars.js | 31 + js/src/tests/test262/built-ins/RegExp/shell.js | 24 + js/src/tests/test262/built-ins/RegExp/u180e.js | 28 + .../built-ins/RegExp/unicodeSets/browser.js | 0 .../RegExp/unicodeSets/generated/browser.js | 0 ...cter-class-difference-character-class-escape.js | 41 + .../character-class-difference-character-class.js | 41 + ...r-class-difference-character-property-escape.js | 41 + .../character-class-difference-character.js | 42 + ...-class-difference-property-of-strings-escape.js | 42 + .../character-class-difference-string-literal.js | 42 + ...ass-escape-difference-character-class-escape.js | 41 + ...cter-class-escape-difference-character-class.js | 41 + ...-escape-difference-character-property-escape.js | 41 + .../character-class-escape-difference-character.js | 42 + ...escape-difference-property-of-strings-escape.js | 42 + ...acter-class-escape-difference-string-literal.js | 42 + ...s-escape-intersection-character-class-escape.js | 42 + ...er-class-escape-intersection-character-class.js | 42 + ...scape-intersection-character-property-escape.js | 42 + ...haracter-class-escape-intersection-character.js | 41 + ...cape-intersection-property-of-strings-escape.js | 41 + ...ter-class-escape-intersection-string-literal.js | 42 + ...er-class-escape-union-character-class-escape.js | 42 + ...character-class-escape-union-character-class.js | 42 + ...class-escape-union-character-property-escape.js | 53 + .../character-class-escape-union-character.js | 43 + ...lass-escape-union-property-of-strings-escape.js | 52 + .../character-class-escape-union-string-literal.js | 42 + ...er-class-intersection-character-class-escape.js | 42 + ...character-class-intersection-character-class.js | 42 + ...class-intersection-character-property-escape.js | 42 + .../character-class-intersection-character.js | 41 + ...lass-intersection-property-of-strings-escape.js | 41 + .../character-class-intersection-string-literal.js | 42 + ...character-class-union-character-class-escape.js | 42 + .../character-class-union-character-class.js | 42 + ...racter-class-union-character-property-escape.js | 53 + .../generated/character-class-union-character.js | 43 + ...acter-class-union-property-of-strings-escape.js | 52 + .../character-class-union-string-literal.js | 42 + .../character-difference-character-class-escape.js | 34 + .../character-difference-character-class.js | 34 + ...aracter-difference-character-property-escape.js | 34 + .../generated/character-difference-character.js | 33 + ...racter-difference-property-of-strings-escape.js | 34 + .../character-difference-string-literal.js | 34 + ...haracter-intersection-character-class-escape.js | 33 + .../character-intersection-character-class.js | 33 + ...acter-intersection-character-property-escape.js | 33 + .../generated/character-intersection-character.js | 34 + ...cter-intersection-property-of-strings-escape.js | 33 + .../character-intersection-string-literal.js | 33 + ...rty-escape-difference-character-class-escape.js | 53 + ...r-property-escape-difference-character-class.js | 53 + ...-escape-difference-character-property-escape.js | 52 + ...aracter-property-escape-difference-character.js | 53 + ...escape-difference-property-of-strings-escape.js | 53 + ...er-property-escape-difference-string-literal.js | 53 + ...y-escape-intersection-character-class-escape.js | 53 + ...property-escape-intersection-character-class.js | 53 + ...scape-intersection-character-property-escape.js | 53 + ...acter-property-escape-intersection-character.js | 52 + ...cape-intersection-property-of-strings-escape.js | 52 + ...-property-escape-intersection-string-literal.js | 53 + ...property-escape-union-character-class-escape.js | 53 + ...racter-property-escape-union-character-class.js | 53 + ...perty-escape-union-character-property-escape.js | 53 + .../character-property-escape-union-character.js | 54 + ...erty-escape-union-property-of-strings-escape.js | 63 + ...aracter-property-escape-union-string-literal.js | 53 + .../character-union-character-class-escape.js | 43 + .../generated/character-union-character-class.js | 43 + .../character-union-character-property-escape.js | 54 + .../generated/character-union-character.js | 34 + .../character-union-property-of-strings-escape.js | 44 + .../generated/character-union-string-literal.js | 37 + ...ngs-escape-difference-character-class-escape.js | 43 + ...of-strings-escape-difference-character-class.js | 43 + ...-escape-difference-character-property-escape.js | 43 + ...perty-of-strings-escape-difference-character.js | 43 + ...escape-difference-property-of-strings-escape.js | 42 + ...-of-strings-escape-difference-string-literal.js | 43 + ...s-escape-intersection-character-class-escape.js | 42 + ...-strings-escape-intersection-character-class.js | 42 + ...scape-intersection-character-property-escape.js | 42 + ...rty-of-strings-escape-intersection-character.js | 42 + ...cape-intersection-property-of-strings-escape.js | 43 + ...f-strings-escape-intersection-string-literal.js | 43 + ...-strings-escape-union-character-class-escape.js | 52 + ...erty-of-strings-escape-union-character-class.js | 52 + ...rings-escape-union-character-property-escape.js | 63 + .../property-of-strings-escape-union-character.js | 44 + ...ings-escape-union-property-of-strings-escape.js | 43 + ...perty-of-strings-escape-union-string-literal.js | 46 + .../RegExp/unicodeSets/generated/rgi-emoji-13.1.js | 240 ++ .../RegExp/unicodeSets/generated/rgi-emoji-14.0.js | 135 + .../RegExp/unicodeSets/generated/rgi-emoji-15.0.js | 54 + .../RegExp/unicodeSets/generated/rgi-emoji-15.1.js | 141 + .../RegExp/unicodeSets/generated/shell.js | 115 + ...ng-literal-difference-character-class-escape.js | 36 + .../string-literal-difference-character-class.js | 36 + ...literal-difference-character-property-escape.js | 36 + .../string-literal-difference-character.js | 36 + ...iteral-difference-property-of-strings-escape.js | 36 + .../string-literal-difference-string-literal.js | 35 + ...-literal-intersection-character-class-escape.js | 36 + .../string-literal-intersection-character-class.js | 36 + ...teral-intersection-character-property-escape.js | 36 + .../string-literal-intersection-character.js | 35 + ...eral-intersection-property-of-strings-escape.js | 36 + .../string-literal-intersection-string-literal.js | 36 + .../string-literal-union-character-class-escape.js | 42 + .../string-literal-union-character-class.js | 42 + ...ring-literal-union-character-property-escape.js | 53 + .../generated/string-literal-union-character.js | 37 + ...ing-literal-union-property-of-strings-escape.js | 46 + .../string-literal-union-string-literal.js | 36 + .../test262/built-ins/RegExp/unicodeSets/shell.js | 0 .../unicode_character_class_backspace_escape.js | 22 + .../built-ins/RegExp/unicode_full_case_folding.js | 27 + .../built-ins/RegExp/unicode_identity_escape.js | 55 + .../RegExp/unicode_restricted_brackets.js | 33 + .../unicode_restricted_character_class_escape.js | 75 + .../RegExp/unicode_restricted_identity_escape.js | 67 + .../unicode_restricted_identity_escape_alpha.js | 102 + .../RegExp/unicode_restricted_identity_escape_c.js | 47 + .../RegExp/unicode_restricted_identity_escape_u.js | 78 + .../RegExp/unicode_restricted_identity_escape_x.js | 36 + .../unicode_restricted_incomplete_quantifier.js | 42 + .../RegExp/unicode_restricted_octal_escape.js | 150 + .../unicode_restricted_quantifiable_assertion.js | 96 + .../unicode_restricted_quantifier_without_atom.js | 54 + .../test262/built-ins/RegExp/valid-flags-y.js | 26 + 1757 files changed, 124342 insertions(+) create mode 100644 js/src/tests/test262/built-ins/RegExp/15.10.2.15-6-1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/15.10.2.5-3-1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/15.10.4.1-1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/15.10.4.1-2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/15.10.4.1-3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/15.10.4.1-4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-plus-quantifier-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-plus-quantifier.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-plus-quantifier-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-plus-quantifier.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-plus-quantifier-flags-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-plus-quantifier.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T16.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.3_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.4_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.5_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A2.1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A2.1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A3.1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A3.1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A5.1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.12_A3_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.12_A4_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T17.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T16.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T17.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T18.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T19.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T20.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T21.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T22.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T23.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T24.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T25.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T26.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T27.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T28.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T29.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T30.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T31.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T32.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T33.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T34.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T35.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T36.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T37.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T38.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T39.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T40.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T41.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T16.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T17.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A5_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A5_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T16.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T17.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T18.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T19.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T20.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T21.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T16.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T17.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T18.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T19.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T20.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T21.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T22.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T23.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T24.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T25.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T26.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T27.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T28.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T29.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T30.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T31.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T32.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T33.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A5_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A5_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.2_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A3_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A3_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A6_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A7_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A7_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.5_A1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.5_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.5_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.7_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.7_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.7_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.7_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.7_A3_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/S15.10.7_A3_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/Symbol.species/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/Symbol.species/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/Symbol.species/return-value.js create mode 100644 js/src/tests/test262/built-ins/RegExp/Symbol.species/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/Symbol.species/symbol-species-name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/Symbol.species/symbol-species.js create mode 100644 js/src/tests/test262/built-ins/RegExp/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/call_with_non_regexp_same_constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/call_with_regexp_match_falsy.js create mode 100644 js/src/tests/test262/built-ins/RegExp/call_with_regexp_not_same_constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/character-class-escape-non-whitespace-u180e.js create mode 100644 js/src/tests/test262/built-ins/RegExp/character-class-escape-non-whitespace.js create mode 100644 js/src/tests/test262/built-ins/RegExp/dotall/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/dotall/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/dotall/with-dotall-unicode.js create mode 100644 js/src/tests/test262/built-ins/RegExp/dotall/with-dotall.js create mode 100644 js/src/tests/test262/built-ins/RegExp/dotall/without-dotall-unicode.js create mode 100644 js/src/tests/test262/built-ins/RegExp/dotall/without-dotall.js create mode 100644 js/src/tests/test262/built-ins/RegExp/duplicate-flags.js create mode 100644 js/src/tests/test262/built-ins/RegExp/duplicate-named-capturing-groups-syntax.js create mode 100644 js/src/tests/test262/built-ins/RegExp/from-regexp-like-flag-override.js create mode 100644 js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-ctor-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-flags-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-source-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/from-regexp-like-short-circuit.js create mode 100644 js/src/tests/test262/built-ins/RegExp/from-regexp-like.js create mode 100644 js/src/tests/test262/built-ins/RegExp/is-a-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lastIndex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/alternations.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/back-references-to-captures.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/back-references.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/captures-negative.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/captures.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/do-not-backtrack.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/greedy-loop.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/misc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/mutual-recursive.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/negative.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/nested-lookaround.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/simple-fixed-length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/sliced-strings.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/start-of-line.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/sticky.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/variable-length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookBehind/word-boundary.js create mode 100644 js/src/tests/test262/built-ins/RegExp/lookahead-quantifier-match-groups.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-element.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-matched.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-non-unicode-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-properties.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unicode-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unicode-property-names.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unmatched.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-array.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object-undefined.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object-unmatched.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-properties.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/indices-property.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/no-indices-array.js create mode 100644 js/src/tests/test262/built-ins/RegExp/match-indices/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-exec.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-group-property-enumeration-order.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-match-indices.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-matchall.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-replace.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-replaceall.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-search.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-split.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-test.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/functional-replace-global.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/functional-replace-non-global.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-subclass-sans.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-subclass.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-undefined.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-unmatched.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/groups-object.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/lookbehind.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names-invalid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names-valid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-references.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-escaped.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-get.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-missing.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-nocaptures.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-numbered.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-unclosed.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-undefined.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/unicode-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names-invalid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names-valid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names.js create mode 100644 js/src/tests/test262/built-ins/RegExp/named-groups/unicode-references.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-end.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-no-dash-end.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-no-dash-start.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-start.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ASCII.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Alphabetic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Any.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Assigned.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Bidi_Control.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Cased.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Dash.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Deprecated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Diacritic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Component.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Extender.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Hex_Digit.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ID_Continue.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ID_Start.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Ideographic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Join_Control.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Lowercase.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Math.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Radical.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Common.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Han.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Uppercase.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Variation_Selector.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/White_Space.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/XID_Continue.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/XID_Start.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-empty-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-empty.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-invalid-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-invalid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-only.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unclosed.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unopened-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unopened.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-01-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-01.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-02-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-02.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-03-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-03.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-04-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-04.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-05-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-05.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-06-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-06.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-07-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-07.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-08-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-08.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-09-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-09.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-10-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-11-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-12-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-13-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-14-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-binary-property-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-binary-property.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-and-value-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-and-value.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-existing-value.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-general-category.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value.js create mode 100644 js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break.js create mode 100644 js/src/tests/test262/built-ins/RegExp/proto-from-ctor-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/15.10.6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6.1_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6.1_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-coerce-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-g-set-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-g-set-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-return-val.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-return-val.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-set-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-set-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-infer-unicode.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-g-set-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-g-set-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-return-val-groups.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-return-val.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-u-return-val-groups.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-y-set-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-y-set-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-y-coerce-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-arg-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-arg.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-global.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-invocation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-return-type-invalid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-return-type-valid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/flags-tostring-error.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-coerce-result-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-get-exec-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-get-result-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-init-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-init-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-advance-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-coerce-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-set-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-no-coerce-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-no-set-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-success-return-val.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-zero-matches.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-exec-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-flags-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-global-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-unicode-error.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/not-a-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/this-val-non-regexp.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/u-advance-after-empty.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-global-return.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-lastindex-no-write.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-return.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-init-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-set-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-called-once.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-this-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/not-a-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/regexpcreate-this-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-constructor-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-species-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-not-object-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-undefined.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-not-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-null-or-undefined.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-global-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-unicode-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-lastindex-cached.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-not-object-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tolength-lastindex-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags-throws.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-1-coerce-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-1-coerce.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-2-coerce-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-2-coerce.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-global.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-unicode.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-invocation.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/flags-tostring-error.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-coerce-replacement-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-coerce-replacement.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-args-empty-result.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-args.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-no-strict.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-strict-strict.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-init-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-init-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-pos-decrement.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-pos-increment.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-exec-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-flags-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-global-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-unicode-error.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/match-failure.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/named-groups-fn.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/named-groups.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/not-a-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/replace-with-trailing.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/replace-without-trailing.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-capture-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-capture.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index-undefined.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-length-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched-global.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-capture-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-groups-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-groups-prop-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-index-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-length-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-matched-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-after.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-before.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-capture-idx-1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-capture-idx-2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-dollar.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-matched.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/u-advance-after-empty.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-global-return.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex-no-write.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-return.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-init-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-set-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/coerce-string-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/coerce-string.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/cstm-exec-return-index.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/cstm-exec-return-invalid.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/failure-return-val.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/get-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/lastindex-no-restore.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/match-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/not-a-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init-samevalue.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-samevalue.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/success-get-index-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/success-return-val.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/u-lastindex-advance.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/y-fail-return.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-flags-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-flags.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-limit-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-limit.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-string-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-string.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/get-flags-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/last-index-exceeds-str-size.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/limit-0-bail.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/not-a-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-get-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-undef.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-get-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-non-ctor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-undef.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-y.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/splitter-proto-from-ctor-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-adv-thru-empty-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-coerce-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-coerce-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-match-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-no-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-get-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-limit-capturing.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-limit.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-match-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-coerce-length-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-coerce-length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-get-capture-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-get-length-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-err.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-no-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-trailing-chars.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/u-lastindex-adv-thru-failure.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/u-lastindex-adv-thru-match.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/cross-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-invalid-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-regexp.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/15.10.6.2-9-e-1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T16.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T17.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T18.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T19.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T20.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T21.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/duplicate-named-groups-properties.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/duplicate-named-indices-groups-properties.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-g-lastindex-reset.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-lastindex-access.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-lastindex-set.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/not-a-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/success-g-lastindex-no-access.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/success-lastindex-access.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/u-captured-value.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/u-lastindex-adv.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/u-lastindex-value.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-lastindex-no-write.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-return.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/y-init-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/exec/y-set-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-dotall.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-global.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-hasIndices.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-ignoreCase.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-multiline.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-sticky.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-unicode.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/get-order.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/rethrow.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/return-order.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-regexp.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/15.10.7.2-2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/cross-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-invalid-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/cross-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-invalid-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-regexp.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/15.10.7.3-2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/cross-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-invalid-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/15.10.7.4-2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/cross-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-invalid-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/no-regexp-matcher.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/cross-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-invalid-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/value-empty.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/value-line-terminator.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/value-slash.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/value-u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/source/value.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/cross-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-invalid-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-regexp.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T16.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T17.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T18.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T19.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T20.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T21.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T22.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T2.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T3.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T4.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T5.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/not-a-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-lastindex-no-write.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-return.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/y-init-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/test/y-set-lastindex.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A6.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A7.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A8.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A9.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/called-as-function.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/not-a-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/toString/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/cross-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-invalid-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-regexp.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-01.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-02.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-03.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-04.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-05.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-06.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-07.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-08.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-09.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-10.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-11.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-12.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-13.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-14.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-15.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-16.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-17.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-18.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-19.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-20.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-21.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-22.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-23.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-24.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-25.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-26.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-27.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-28.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/cross-realm.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/length.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/name.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/prop-desc.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-invalid-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-non-obj.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-regexp-prototype.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-regexp.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/uv-flags-constructor.js create mode 100644 js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/uv-flags.js create mode 100644 js/src/tests/test262/built-ins/RegExp/quantifier-integer-limit.js create mode 100644 js/src/tests/test262/built-ins/RegExp/regexp-class-chars.js create mode 100644 js/src/tests/test262/built-ins/RegExp/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/u180e.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/browser.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-13.1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-14.0.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.0.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.1.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicodeSets/shell.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_character_class_backspace_escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_full_case_folding.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_identity_escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_brackets.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_character_class_escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_alpha.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_c.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_u.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_x.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_incomplete_quantifier.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_octal_escape.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_quantifiable_assertion.js create mode 100644 js/src/tests/test262/built-ins/RegExp/unicode_restricted_quantifier_without_atom.js create mode 100644 js/src/tests/test262/built-ins/RegExp/valid-flags-y.js (limited to 'js/src/tests/test262/built-ins/RegExp') diff --git a/js/src/tests/test262/built-ins/RegExp/15.10.2.15-6-1.js b/js/src/tests/test262/built-ins/RegExp/15.10.2.15-6-1.js new file mode 100644 index 0000000000..8ab41f3d98 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/15.10.2.15-6-1.js @@ -0,0 +1,16 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.2.15-6-1 +description: > + Pattern - SyntaxError was thrown when one character in CharSet 'A' + greater than one character in CharSet 'B' (15.10.2.15 + CharacterRange step 6) +---*/ + +assert.throws(SyntaxError, function() { + var regExp = new RegExp("^[z-a]$"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/15.10.2.5-3-1.js b/js/src/tests/test262/built-ins/RegExp/15.10.2.5-3-1.js new file mode 100644 index 0000000000..ed5e7426b8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/15.10.2.5-3-1.js @@ -0,0 +1,15 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.2.5-3-1 +description: > + Term - SyntaxError was thrown when max is finite and less than min + (15.10.2.5 step 3) +---*/ + +assert.throws(SyntaxError, function() { + var regExp = new RegExp("0{2,1}"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/15.10.4.1-1.js b/js/src/tests/test262/built-ins/RegExp/15.10.4.1-1.js new file mode 100644 index 0000000000..2af70bb48d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/15.10.4.1-1.js @@ -0,0 +1,15 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.4.1-1 +description: > + RegExp - no TypeError is thrown when pattern is an object and + has a [[RegExpMatcher]] internal slot, and flags is not undefined +---*/ + +var regObj = new RegExp(); +var regExpObj = new RegExp(regObj, "g"); +assert(regExpObj.global); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/15.10.4.1-2.js b/js/src/tests/test262/built-ins/RegExp/15.10.4.1-2.js new file mode 100644 index 0000000000..c8ed03fa98 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/15.10.4.1-2.js @@ -0,0 +1,15 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.4.1-2 +description: > + RegExp - the thrown error is SyntaxError instead of RegExpError + when the characters of 'P' do not have the syntactic form Pattern +---*/ + +assert.throws(SyntaxError, function() { + var regExpObj = new RegExp('\\'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/15.10.4.1-3.js b/js/src/tests/test262/built-ins/RegExp/15.10.4.1-3.js new file mode 100644 index 0000000000..d50ca8bb1d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/15.10.4.1-3.js @@ -0,0 +1,15 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.4.1-3 +description: > + RegExp - the thrown error is SyntaxError instead of RegExpError + when 'F' contains any character other than 'g', 'i', or 'm' +---*/ + +assert.throws(SyntaxError, function() { + var regExpObj = new RegExp('abc', 'a'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/15.10.4.1-4.js b/js/src/tests/test262/built-ins/RegExp/15.10.4.1-4.js new file mode 100644 index 0000000000..3a0ab84321 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/15.10.4.1-4.js @@ -0,0 +1,11 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.4.1-4 +description: RegExp - the SyntaxError is not thrown when flags is 'gim' +---*/ + +var regExpObj = new RegExp('abc', 'gim'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/browser.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-flags-u.js new file mode 100644 index 0000000000..20d13f9283 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-flags-u.js @@ -0,0 +1,66 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for digit class escape \d with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x0030, 0x0039], + ], +}); + +const re = /\d/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-plus-quantifier-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-plus-quantifier-flags-u.js new file mode 100644 index 0000000000..54cb356792 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-plus-quantifier-flags-u.js @@ -0,0 +1,66 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for digit class escape \d+ with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x0030, 0x0039], + ], +}); + +const re = /\d+/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-plus-quantifier.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-plus-quantifier.js new file mode 100644 index 0000000000..aba4e33ca9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape-plus-quantifier.js @@ -0,0 +1,66 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for digit class escape \d+ with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x0030, 0x0039], + ], +}); + +const re = /\d+/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape.js new file mode 100644 index 0000000000..e541572ba5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-digit-class-escape.js @@ -0,0 +1,66 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for digit class escape \d with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x0030, 0x0039], + ], +}); + +const re = /\d/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-flags-u.js new file mode 100644 index 0000000000..8ab26f2945 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-flags-u.js @@ -0,0 +1,67 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-digit class escape \D with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x000000, 0x00002F], + [0x00003A, 0x10FFFF], + ], +}); + +const re = /\D/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier-flags-u.js new file mode 100644 index 0000000000..411d71f4bf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier-flags-u.js @@ -0,0 +1,67 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-digit class escape \D+ with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x000000, 0x00002F], + [0x00003A, 0x10FFFF], + ], +}); + +const re = /\D+/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier.js new file mode 100644 index 0000000000..f1a9cd7cc4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape-plus-quantifier.js @@ -0,0 +1,67 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-digit class escape \D+ with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x000000, 0x00002F], + [0x00003A, 0x00FFFF], + ], +}); + +const re = /\D+/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape.js new file mode 100644 index 0000000000..0c1e438333 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-digit-class-escape.js @@ -0,0 +1,67 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-digit class escape \D with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x000000, 0x00002F], + [0x00003A, 0x00FFFF], + ], +}); + +const re = /\D/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-flags-u.js new file mode 100644 index 0000000000..0a52b4f6a4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-flags-u.js @@ -0,0 +1,78 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-whitespace class escape \S with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000008], + [0x00000E, 0x00001F], + [0x000021, 0x00009F], + [0x0000A1, 0x00167F], + [0x001681, 0x001FFF], + [0x00200B, 0x002027], + [0x00202A, 0x00202E], + [0x002030, 0x00205E], + [0x002060, 0x002FFF], + [0x003001, 0x00DBFF], + [0x00E000, 0x00FEFE], + [0x00FF00, 0x10FFFF], + ], +}); + +const re = /\S/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier-flags-u.js new file mode 100644 index 0000000000..962888f885 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier-flags-u.js @@ -0,0 +1,78 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-whitespace class escape \S+ with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000008], + [0x00000E, 0x00001F], + [0x000021, 0x00009F], + [0x0000A1, 0x00167F], + [0x001681, 0x001FFF], + [0x00200B, 0x002027], + [0x00202A, 0x00202E], + [0x002030, 0x00205E], + [0x002060, 0x002FFF], + [0x003001, 0x00DBFF], + [0x00E000, 0x00FEFE], + [0x00FF00, 0x10FFFF], + ], +}); + +const re = /\S+/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier.js new file mode 100644 index 0000000000..af82575ec4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape-plus-quantifier.js @@ -0,0 +1,78 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-whitespace class escape \S+ with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000008], + [0x00000E, 0x00001F], + [0x000021, 0x00009F], + [0x0000A1, 0x00167F], + [0x001681, 0x001FFF], + [0x00200B, 0x002027], + [0x00202A, 0x00202E], + [0x002030, 0x00205E], + [0x002060, 0x002FFF], + [0x003001, 0x00DBFF], + [0x00E000, 0x00FEFE], + [0x00FF00, 0x00FFFF], + ], +}); + +const re = /\S+/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape.js new file mode 100644 index 0000000000..785b398eb6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-whitespace-class-escape.js @@ -0,0 +1,78 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-whitespace class escape \S with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000008], + [0x00000E, 0x00001F], + [0x000021, 0x00009F], + [0x0000A1, 0x00167F], + [0x001681, 0x001FFF], + [0x00200B, 0x002027], + [0x00202A, 0x00202E], + [0x002030, 0x00205E], + [0x002060, 0x002FFF], + [0x003001, 0x00DBFF], + [0x00E000, 0x00FEFE], + [0x00FF00, 0x00FFFF], + ], +}); + +const re = /\S/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-flags-u.js new file mode 100644 index 0000000000..93f822b3db --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-flags-u.js @@ -0,0 +1,71 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-word class escape \W with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [0x000060], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x000040], + [0x00005B, 0x00005E], + [0x00007B, 0x00DBFF], + [0x00E000, 0x10FFFF], + ], +}); + +const re = /\W/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier-flags-u.js new file mode 100644 index 0000000000..724df67ea3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier-flags-u.js @@ -0,0 +1,71 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-word class escape \W+ with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [0x000060], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x000040], + [0x00005B, 0x00005E], + [0x00007B, 0x00DBFF], + [0x00E000, 0x10FFFF], + ], +}); + +const re = /\W+/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier.js new file mode 100644 index 0000000000..2e69ad39ac --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape-plus-quantifier.js @@ -0,0 +1,71 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-word class escape \W+ with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [0x000060], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x000040], + [0x00005B, 0x00005E], + [0x00007B, 0x00DBFF], + [0x00E000, 0x00FFFF], + ], +}); + +const re = /\W+/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape.js new file mode 100644 index 0000000000..a0d191b327 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-non-word-class-escape.js @@ -0,0 +1,71 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for non-word class escape \W with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [0x000060], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x000040], + [0x00005B, 0x00005E], + [0x00007B, 0x00DBFF], + [0x00E000, 0x00FFFF], + ], +}); + +const re = /\W/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-flags-u.js new file mode 100644 index 0000000000..b5fee5f056 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-flags-u.js @@ -0,0 +1,76 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for whitespace class escape \s with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [ + 0x000020, + 0x0000A0, + 0x001680, + 0x00202F, + 0x00205F, + 0x003000, + 0x00FEFF, + ], + ranges: [ + [0x000009, 0x00000D], + [0x002000, 0x00200A], + [0x002028, 0x002029], + ], +}); + +const re = /\s/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-plus-quantifier-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-plus-quantifier-flags-u.js new file mode 100644 index 0000000000..1ec1485039 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-plus-quantifier-flags-u.js @@ -0,0 +1,76 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for whitespace class escape \s+ with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [ + 0x000020, + 0x0000A0, + 0x001680, + 0x00202F, + 0x00205F, + 0x003000, + 0x00FEFF, + ], + ranges: [ + [0x000009, 0x00000D], + [0x002000, 0x00200A], + [0x002028, 0x002029], + ], +}); + +const re = /\s+/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-plus-quantifier.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-plus-quantifier.js new file mode 100644 index 0000000000..c83bb60dd4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape-plus-quantifier.js @@ -0,0 +1,76 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for whitespace class escape \s+ with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [ + 0x000020, + 0x0000A0, + 0x001680, + 0x00202F, + 0x00205F, + 0x003000, + 0x00FEFF, + ], + ranges: [ + [0x000009, 0x00000D], + [0x002000, 0x00200A], + [0x002028, 0x002029], + ], +}); + +const re = /\s+/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape.js new file mode 100644 index 0000000000..b63c03686c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-whitespace-class-escape.js @@ -0,0 +1,76 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for whitespace class escape \s with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [ + 0x000020, + 0x0000A0, + 0x001680, + 0x00202F, + 0x00205F, + 0x003000, + 0x00FEFF, + ], + ranges: [ + [0x000009, 0x00000D], + [0x002000, 0x00200A], + [0x002028, 0x002029], + ], +}); + +const re = /\s/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-flags-u.js new file mode 100644 index 0000000000..85f990bdd3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-flags-u.js @@ -0,0 +1,68 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for word class escape \w with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [0x00005F], + ranges: [ + [0x000030, 0x000039], + [0x000041, 0x00005A], + [0x000061, 0x00007A], + ], +}); + +const re = /\w/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-plus-quantifier-flags-u.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-plus-quantifier-flags-u.js new file mode 100644 index 0000000000..27f667229a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-plus-quantifier-flags-u.js @@ -0,0 +1,68 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for word class escape \w+ with flags ug +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [0x00005F], + ranges: [ + [0x000030, 0x000039], + [0x000041, 0x00005A], + [0x000061, 0x00007A], + ], +}); + +const re = /\w+/ug; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-plus-quantifier.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-plus-quantifier.js new file mode 100644 index 0000000000..092e9e6ea7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape-plus-quantifier.js @@ -0,0 +1,68 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for word class escape \w+ with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [0x00005F], + ranges: [ + [0x000030, 0x000039], + [0x000041, 0x00005A], + [0x000061, 0x00007A], + ], +}); + +const re = /\w+/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape.js new file mode 100644 index 0000000000..35bea6ea4b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/character-class-word-class-escape.js @@ -0,0 +1,68 @@ +// Copyright (C) 2018 Leo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + Compare range for word class escape \w with flags g +info: | + This is a generated test. Please check out + https://github.com/bocoup/test262-regexp-generator + for any changes. + + CharacterClassEscape[U] :: + d + D + s + S + w + W + + 21.2.2.12 CharacterClassEscape + + The production CharacterClassEscape :: d evaluates as follows: + Return the ten-element set of characters containing the characters 0 through 9 inclusive. + The production CharacterClassEscape :: D evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: d. + The production CharacterClassEscape :: s evaluates as follows: + Return the set of characters containing the characters that are on the right-hand side of + the WhiteSpace or LineTerminator productions. + The production CharacterClassEscape :: S evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: s. + The production CharacterClassEscape :: w evaluates as follows: + Return the set of all characters returned by WordCharacters(). + The production CharacterClassEscape :: W evaluates as follows: + Return the set of all characters not included in the set returned by CharacterClassEscape :: w. +features: [String.fromCodePoint] +includes: [regExpUtils.js] +---*/ + +const str = buildString({ + loneCodePoints: [0x00005F], + ranges: [ + [0x000030, 0x000039], + [0x000041, 0x00005A], + [0x000061, 0x00007A], + ], +}); + +const re = /\w/g; + +const errors = []; + +if (!re.test(str)) { + // Error, let's find out where + for (const char of str) { + if (!re.test(char)) { + errors.push('0x' + char.codePointAt(0).toString(16)); + } + } +} + +assert.sameValue( + errors.length, + 0, + 'Expected matching code points, but received: ' + errors.join(',') +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js new file mode 100644 index 0000000000..591d3924c3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/CharacterClassEscapes/shell.js @@ -0,0 +1,115 @@ +// GENERATED, DO NOT EDIT +// file: regExpUtils.js +// Copyright (C) 2017 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: | + Collection of functions used to assert the correctness of RegExp objects. +defines: [buildString, testPropertyEscapes, testPropertyOfStrings, testExtendedCharacterClass, matchValidator] +---*/ + +function buildString(args) { + // Use member expressions rather than destructuring `args` for improved + // compatibility with engines that only implement assignment patterns + // partially or not at all. + const loneCodePoints = args.loneCodePoints; + const ranges = args.ranges; + const CHUNK_SIZE = 10000; + let result = Reflect.apply(String.fromCodePoint, null, loneCodePoints); + for (let i = 0; i < ranges.length; i++) { + const range = ranges[i]; + const start = range[0]; + const end = range[1]; + const codePoints = []; + for (let length = 0, codePoint = start; codePoint <= end; codePoint++) { + codePoints[length++] = codePoint; + if (length === CHUNK_SIZE) { + result += Reflect.apply(String.fromCodePoint, null, codePoints); + codePoints.length = length = 0; + } + } + result += Reflect.apply(String.fromCodePoint, null, codePoints); + } + return result; +} + +function printCodePoint(codePoint) { + const hex = codePoint + .toString(16) + .toUpperCase() + .padStart(6, "0"); + return `U+${hex}`; +} + +function printStringCodePoints(string) { + const buf = []; + for (const symbol of string) { + const formatted = printCodePoint(symbol.codePointAt(0)); + buf.push(formatted); + } + return buf.join(' '); +} + +function testPropertyEscapes(regExp, string, expression) { + if (!regExp.test(string)) { + for (const symbol of string) { + const formatted = printCodePoint(symbol.codePointAt(0)); + assert( + regExp.test(symbol), + `\`${ expression }\` should match ${ formatted } (\`${ symbol }\`)` + ); + } + } +} + +function testPropertyOfStrings(args) { + // Use member expressions rather than destructuring `args` for improved + // compatibility with engines that only implement assignment patterns + // partially or not at all. + const regExp = args.regExp; + const expression = args.expression; + const matchStrings = args.matchStrings; + const nonMatchStrings = args.nonMatchStrings; + const allStrings = matchStrings.join(''); + if (!regExp.test(allStrings)) { + for (const string of matchStrings) { + assert( + regExp.test(string), + `\`${ expression }\` should match ${ string } (${ printStringCodePoints(string) })` + ); + } + } + + if (!nonMatchStrings) return; + + const allNonMatchStrings = nonMatchStrings.join(''); + if (regExp.test(allNonMatchStrings)) { + for (const string of nonMatchStrings) { + assert( + !regExp.test(string), + `\`${ expression }\` should not match ${ string } (${ printStringCodePoints(string) })` + ); + } + } +} + +// The exact same logic can be used to test extended character classes +// as enabled through the RegExp `v` flag. This is useful to test not +// just standalone properties of strings, but also string literals, and +// set operations. +const testExtendedCharacterClass = testPropertyOfStrings; + +// Returns a function that validates a RegExp match result. +// +// Example: +// +// var validate = matchValidator(['b'], 1, 'abc'); +// validate(/b/.exec('abc')); +// +function matchValidator(expectedEntries, expectedIndex, expectedInput) { + return function(match) { + assert.compareArray(match, expectedEntries, 'Match entries'); + assert.sameValue(match.index, expectedIndex, 'Match index'); + assert.sameValue(match.input, expectedInput, 'Match input'); + } +} diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T1.js new file mode 100644 index 0000000000..e2f3444095 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T1 +description: Tested RegExp is "a**" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("a**") throw SyntaxError. Actual: ' + (new RegExp("a**"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T10.js new file mode 100644 index 0000000000..646a0ef2d5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T10.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T10 +description: Tested RegExp is "++a" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("++a") throw SyntaxError. Actual: ' + (new RegExp("++a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T11.js new file mode 100644 index 0000000000..af48741fb2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T11.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T11 +description: Tested RegExp is "?a" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("?a") throw SyntaxError. Actual: ' + (new RegExp("?a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T12.js new file mode 100644 index 0000000000..2ed3c6942e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T12.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T12 +description: Tested RegExp is "??a" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("??a") throw SyntaxError. Actual: ' + (new RegExp("??a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T13.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T13.js new file mode 100644 index 0000000000..5d2177b2fa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T13.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T13 +description: Tested RegExp is "x{1}{1,}" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("x{1}{1,}") throw SyntaxError. Actual: ' + (new RegExp("x{1}{1,}"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T14.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T14.js new file mode 100644 index 0000000000..ca498b4c87 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T14.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T14 +description: Tested RegExp is "x{1,2}{1}" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("x{1,2}{1}") throw SyntaxError. Actual: ' + (new RegExp("x{1,2}{1}"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T15.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T15.js new file mode 100644 index 0000000000..8146357734 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T15.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T15 +description: Tested RegExp is "x{1,}{1}" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("x{1,}{1}") throw SyntaxError. Actual: ' + (new RegExp("x{1,}{1}"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T16.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T16.js new file mode 100644 index 0000000000..2c0e2b2623 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T16.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T16 +description: Tested RegExp is "x{0,1}{1,}" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("x{0,1}{1,}") throw SyntaxError. Actual: ' + (new RegExp("x{0,1}{1,}"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T2.js new file mode 100644 index 0000000000..579e63f433 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T2.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T2 +description: Tested RegExp is "a***" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("a***") throw SyntaxError. Actual: ' + (new RegExp("a***"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T3.js new file mode 100644 index 0000000000..a4d8955adb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T3.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T3 +description: Tested RegExp is "a++" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("a++") throw SyntaxError. Actual: ' + (new RegExp("a++"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T4.js new file mode 100644 index 0000000000..6032464c56 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T4.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T4 +description: Tested RegExp is "a+++" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("a+++") throw SyntaxError. Actual: ' + (new RegExp("a+++"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T5.js new file mode 100644 index 0000000000..ffe44746ba --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T5.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T5 +description: Tested RegExp is "a???" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("a???") throw SyntaxError. Actual: ' + (new RegExp("a???"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T6.js new file mode 100644 index 0000000000..d5f8dc4feb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T6.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T6 +description: Tested RegExp is "a????" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("a????") throw SyntaxError. Actual: ' + (new RegExp("a????"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T7.js new file mode 100644 index 0000000000..25a7541cd4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T7.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T7 +description: Tested RegExp is "*a" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("*a") throw SyntaxError. Actual: ' + (new RegExp("*a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T8.js new file mode 100644 index 0000000000..34897392e5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T8.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T8 +description: Tested RegExp is "**a" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("**a") throw SyntaxError. Actual: ' + (new RegExp("**a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T9.js new file mode 100644 index 0000000000..f4b6e47fd8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.1_A1_T9.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp syntax errors must be caught when matcher(s) compiles +es5id: 15.10.1_A1_T9 +description: Tested RegExp is "+a" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("+a") throw SyntaxError. Actual: ' + (new RegExp("+a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.1_T1.js new file mode 100644 index 0000000000..18e2455db7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.1_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterEscape :: t evaluates by returning + the character \u0009 +es5id: 15.10.2.10_A1.1_T1 +description: Use \t in RegExp and \u0009 in tested string +---*/ + +var arr = /\t/.exec("\u0009"); +if ((arr === null) || (arr[0] !== "\u0009")) { + throw new Test262Error('#1: var arr = /\\t/.exec("\\u0009"); arr[0] === "\\u0009". Actual. ' + (arr && arr[0])); +} + +var arr = /\t\t/.exec("a\u0009\u0009b"); +if ((arr === null) || (arr[0] !== "\u0009\u0009")) { + throw new Test262Error('#2: var arr = /\\t\\t/.exec("a\\u0009\\u0009b"); arr[0] === "\\u0009\\u0009". Actual. ' + (arr && arr[0])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.2_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.2_T1.js new file mode 100644 index 0000000000..0ca647f8ed --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.2_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterEscape :: n evaluates by returning + the character \u000A +es5id: 15.10.2.10_A1.2_T1 +description: Use \n in RegExp and \u000A in tested string +---*/ + +var arr = /\n/.exec("\u000A"); +if ((arr === null) || (arr[0] !== "\u000A")) { + throw new Test262Error('#1: var arr = /\\n/.exec("\\u000A"); arr[0] === "\\u000A". Actual. ' + (arr && arr[0])); +} + +var arr = /\n\n/.exec("a\u000A\u000Ab"); +if ((arr === null) || (arr[0] !== "\u000A\u000A")) { + throw new Test262Error('#2: var arr = /\\n\\n/.exec("a\\u000A\\u000Ab"); arr[0] === "\\u000A\\u000A". Actual. ' + (arr && arr[0])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.3_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.3_T1.js new file mode 100644 index 0000000000..f27ebb19ef --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.3_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterEscape :: v evaluates by returning + the character \u000B +es5id: 15.10.2.10_A1.3_T1 +description: Use \v in RegExp and \u000B in tested string +---*/ + +var arr = /\v/.exec("\u000B"); +if ((arr === null) || (arr[0] !== "\u000B")) { + throw new Test262Error('#1: var arr = /\\v/.exec("\\u000B"); arr[0] === "\\u000B". Actual. ' + (arr && arr[0])); +} + +var arr = /\v\v/.exec("a\u000B\u000Bb"); +if ((arr === null) || (arr[0] !== "\u000B\u000B")) { + throw new Test262Error('#2: var arr = /\\v\\v/.exec("a\\u000B\\u000Bb"); arr[0] === "\\u000B\\u000B". Actual. ' + (arr && arr[0])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.4_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.4_T1.js new file mode 100644 index 0000000000..27d31424ec --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.4_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterEscape :: f evaluates by returning + the character \u000C +es5id: 15.10.2.10_A1.4_T1 +description: Use \f in RegExp and \u000C in tested string +---*/ + +var arr = /\f/.exec("\u000C"); +if ((arr === null) || (arr[0] !== "\u000C")) { + throw new Test262Error('#1: var arr = /\\f/.exec("\\u000C"); arr[0] === "\\u000C". Actual. ' + (arr && arr[0])); +} + +var arr = /\f\f/.exec("a\u000C\u000Cb"); +if ((arr === null) || (arr[0] !== "\u000C\u000C")) { + throw new Test262Error('#2: var arr = /\\f\\f/.exec("a\\u000C\\u000Cb"); arr[0] === "\\u000C\\u000C". Actual. ' + (arr && arr[0])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.5_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.5_T1.js new file mode 100644 index 0000000000..86658679d1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A1.5_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterEscape :: r evaluates by returning + the character \u000D +es5id: 15.10.2.10_A1.5_T1 +description: Use \r in RegExp and \u000D in tested string +---*/ + +var arr = /\r/.exec("\u000D"); +if ((arr === null) || (arr[0] !== "\u000D")) { + throw new Test262Error('#1: var arr = /\\r/.exec("\\u000D"); arr[0] === "\\u000D". Actual. ' + (arr && arr[0])); +} + +var arr = /\r\r/.exec("a\u000D\u000Db"); +if ((arr === null) || (arr[0] !== "\u000D\u000D")) { + throw new Test262Error('#2: var arr = /\\r\\r/.exec("a\\u000D\\u000Db"); arr[0] === "\\u000D\\u000D". Actual. ' + (arr && arr[0])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A2.1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A2.1_T1.js new file mode 100644 index 0000000000..5ccba14719 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A2.1_T1.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "CharacterEscape :: c ControlLetter" +es5id: 15.10.2.10_A2.1_T1 +description: "ControlLetter :: A - Z" +---*/ + +var result = true; +for (var alpha = 0x0041; alpha <= 0x005A; alpha++) { + var str = String.fromCharCode(alpha % 32); + var arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str); + if ((arr === null) || (arr[0] !== str)) { + result = false; + } +} + +assert.sameValue(result, true, 'The value of result is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A2.1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A2.1_T2.js new file mode 100644 index 0000000000..a2506137ba --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A2.1_T2.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "CharacterEscape :: c ControlLetter" +es5id: 15.10.2.10_A2.1_T2 +description: "ControlLetter :: a - z" +---*/ + +var result = true; +for (var alpha = 0x0061; alpha <= 0x007A; alpha++) { + var str = String.fromCharCode(alpha % 32); + var arr = (new RegExp("\\c" + String.fromCharCode(alpha))).exec(str); + if ((arr === null) || (arr[0] !== str)) { + result = false; + } +} + +assert.sameValue(result, true, 'The value of result is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A3.1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A3.1_T1.js new file mode 100644 index 0000000000..005de2849d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A3.1_T1.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "CharacterEscape :: HexEscapeSequence :: x HexDigit HexDigit" +es5id: 15.10.2.10_A3.1_T1 +description: Tested string include equal unicode symbols +---*/ + +var arr = /\x00/.exec("\u0000"); +if ((arr === null) || (arr[0] !== "\u0000")) { + throw new Test262Error('#0: var arr = /\\x00/.exec(\\u0000); arr[0] === "\\u0000". Actual. ' + (arr && arr[0])); +} + +var arr = /\x01/.exec("\u0001"); +if ((arr === null) || (arr[0] !== "\u0001")) { + throw new Test262Error('#1: var arr = /\\x01/.exec(\\u0001); arr[0] === "\\u0001". Actual. ' + (arr && arr[0])); +} + +var arr = /\x0A/.exec("\u000A"); +if ((arr === null) || (arr[0] !== "\u000A")) { + throw new Test262Error('#2: var arr = /\\x0A/.exec(\\u000A); arr[0] === "\\u000A". Actual. ' + (arr && arr[0])); +} + +var arr = /\xFF/.exec("\u00FF"); +if ((arr === null) || (arr[0] !== "\u00FF")) { + throw new Test262Error('#3: var arr = /\\xFF/.exec(\\u00FF); arr[0] === "\\u00FF". Actual. ' + (arr && arr[0])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A3.1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A3.1_T2.js new file mode 100644 index 0000000000..11b7ff7e40 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A3.1_T2.js @@ -0,0 +1,34 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "CharacterEscape :: HexEscapeSequence :: x HexDigit HexDigit" +es5id: 15.10.2.10_A3.1_T2 +description: Checking ENGLISH CAPITAL ALPHABET and english small alphabet +---*/ + +var hex = ["\\x41", "\\x42", "\\x43", "\\x44", "\\x45", "\\x46", "\\x47", "\\x48", "\\x49", "\\x4A", "\\x4B", "\\x4C", "\\x4D", "\\x4E", "\\x4F", "\\x50", "\\x51", "\\x52", "\\x53", "\\x54", "\\x55", "\\x56", "\\x57", "\\x58", "\\x59", "\\x5A"]; +var character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]; +var result = true; +for (var index = 0; index < hex.length; index++) { + var arr = (new RegExp(hex[index])).exec(character[index]); + if ((arr === null) || (arr[0] !== character[index])) { + result = false; + } +} + +assert.sameValue(result, true, 'The value of result is expected to be true'); + +hex = ["\\x61", "\\x62", "\\x63", "\\x64", "\\x65", "\\x66", "\\x67", "\\x68", "\\x69", "\\x6A", "\\x6B", "\\x6C", "\\x6D", "\\x6E", "\\x6F", "\\x70", "\\x71", "\\x72", "\\x73", "\\x74", "\\x75", "\\x76", "\\x77", "\\x78", "\\x79", "\\x7A"]; +character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; +var result = true; +for (index = 0; index < hex.length; index++) { + arr = (new RegExp(hex[index])).exec(character[index]); + if ((arr === null) || (arr[0] !== character[index])) { + result = false; + } +} + +assert.sameValue(result, true, 'The value of result is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T1.js new file mode 100644 index 0000000000..e5c056a859 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + CharacterEscape :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit + HexDigit +es5id: 15.10.2.10_A4.1_T1 +description: RegExp and tested string include uncode symbols +---*/ + +var arr = /\u0000/.exec("\u0000"); +if ((arr === null) || (arr[0] !== "\u0000")) { + throw new Test262Error('#0: var arr = /\\u0000/.exec(\\u0000); arr[0] === "\\u0000". Actual. ' + (arr && arr[0])); +} + +var arr = /\u0001/.exec("\u0001"); +if ((arr === null) || (arr[0] !== "\u0001")) { + throw new Test262Error('#1: var arr = /\\u0001/.exec(\\u0001); arr[0] === "\\u0001". Actual. ' + (arr && arr[0])); +} + +var arr = /\u000A/.exec("\u000A"); +if ((arr === null) || (arr[0] !== "\u000A")) { + throw new Test262Error('#2: var arr = /\\u000A/.exec(\\u000A); arr[0] === "\\u000A". Actual. ' + (arr && arr[0])); +} + +var arr = /\u00FF/.exec("\u00FF"); +if ((arr === null) || (arr[0] !== "\u00FF")) { + throw new Test262Error('#3: var arr = /\\u00FF/.exec(\\u00FF); arr[0] === "\\u00FF". Actual. ' + (arr && arr[0])); +} + +var arr = /\u0FFF/.exec("\u0FFF"); +if ((arr === null) || (arr[0] !== "\u0FFF")) { + throw new Test262Error('#4: var arr = /\\u0FFF/.exec(\\u0FFF); arr[0] === "\\u0FFF". Actual. ' + (arr && arr[0])); +} + +var arr = /\uFFFF/.exec("\uFFFF"); +if ((arr === null) || (arr[0] !== "\uFFFF")) { + throw new Test262Error('#5: var arr = /\\uFFFF/.exec(\\uFFFF); arr[0] === "\\uFFFF". Actual. ' + (arr && arr[0])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T2.js new file mode 100644 index 0000000000..7cb62b2d52 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T2.js @@ -0,0 +1,38 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + CharacterEscape :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit + HexDigit +es5id: 15.10.2.10_A4.1_T2 +description: > + Tested string include ENGLISH CAPITAL ALPHABET and english small + alphabet +---*/ + +var hex = ["\\u0041", "\\u0042", "\\u0043", "\\u0044", "\\u0045", "\\u0046", "\\u0047", "\\u0048", "\\u0049", "\\u004A", "\\u004B", "\\u004C", "\\u004D", "\\u004E", "\\u004F", "\\u0050", "\\u0051", "\\u0052", "\\u0053", "\\u0054", "\\u0055", "\\u0056", "\\u0057", "\\u0058", "\\u0059", "\\u005A"]; +var character = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]; +var result = true; +for (var index = 0; index < hex.length; index++) { + var arr = (new RegExp(hex[index])).exec(character[index]); + if ((arr === null) || (arr[0] !== character[index])) { + result = false; + } +} + +assert.sameValue(result, true, 'The value of result is expected to be true'); + +hex = ["\\u0061", "\\u0062", "\\u0063", "\\u0064", "\\u0065", "\\u0066", "\\u0067", "\\u0068", "\\u0069", "\\u006A", "\\u006B", "\\u006C", "\\u006D", "\\u006E", "\\u006F", "\\u0070", "\\u0071", "\\u0072", "\\u0073", "\\u0074", "\\u0075", "\\u0076", "\\u0077", "\\u0078", "\\u0079", "\\u007A"]; +character = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; +var result = true; +for (index = 0; index < hex.length; index++) { + arr = (new RegExp(hex[index])).exec(character[index]); + if ((arr === null) || (arr[0] !== character[index])) { + result = false; + } +} + +assert.sameValue(result, true, 'The value of result is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T3.js new file mode 100644 index 0000000000..e10f55ec27 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A4.1_T3.js @@ -0,0 +1,38 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + CharacterEscape :: UnicodeEscapeSequence :: u HexDigit HexDigit HexDigit + HexDigit +es5id: 15.10.2.10_A4.1_T3 +description: > + Tested string include RUSSIAN CAPITAL ALPHABET and russian small + alphabet in unicode notation +---*/ + +var hex = ["\\u0410", "\\u0411", "\\u0412", "\\u0413", "\\u0414", "\\u0415", "\\u0416", "\\u0417", "\\u0418", "\\u0419", "\\u041A", "\\u041B", "\\u041C", "\\u041D", "\\u041E", "\\u041F", "\\u0420", "\\u0421", "\\u0422", "\\u0423", "\\u0424", "\\u0425", "\\u0426", "\\u0427", "\\u0428", "\\u0429", "\\u042A", "\\u042B", "\\u042C", "\\u042D", "\\u042E", "\\u042F", "\\u0401"]; +var character = ["\u0410", "\u0411", "\u0412", "\u0413", "\u0414", "\u0415", "\u0416", "\u0417", "\u0418", "\u0419", "\u041A", "\u041B", "\u041C", "\u041D", "\u041E", "\u041F", "\u0420", "\u0421", "\u0422", "\u0423", "\u0424", "\u0425", "\u0426", "\u0427", "\u0428", "\u0429", "\u042A", "\u042B", "\u042C", "\u042D", "\u042E", "\u042F", "\u0401"]; +var result = true; +for (var index = 0; index < hex.length; index++) { + var arr = (new RegExp(hex[index])).exec(character[index]); + if ((arr === null) || (arr[0] !== character[index])) { + result = false; + } +} + +assert.sameValue(result, true, 'The value of result is expected to be true'); + +hex = ["\\u0430", "\\u0431", "\\u0432", "\\u0433", "\\u0434", "\\u0435", "\\u0436", "\\u0437", "\\u0438", "\\u0439", "\\u043A", "\\u043B", "\\u043C", "\\u043D", "\\u043E", "\\u043F", "\\u0440", "\\u0441", "\\u0442", "\\u0443", "\\u0444", "\\u0445", "\\u0446", "\\u0447", "\\u0448", "\\u0449", "\\u044A", "\\u044B", "\\u044C", "\\u044D", "\\u044E", "\\u044F", "\\u0451"]; +character = ["\u0430", "\u0431", "\u0432", "\u0433", "\u0434", "\u0435", "\u0436", "\u0437", "\u0438", "\u0439", "\u043A", "\u043B", "\u043C", "\u043D", "\u043E", "\u043F", "\u0440", "\u0441", "\u0442", "\u0443", "\u0444", "\u0445", "\u0446", "\u0447", "\u0448", "\u0449", "\u044A", "\u044B", "\u044C", "\u044D", "\u044E", "\u044F", "\u0451"]; +var result = true; +for (index = 0; index < hex.length; index++) { + arr = (new RegExp(hex[index])).exec(character[index]); + if ((arr === null) || (arr[0] !== character[index])) { + result = false; + } +} + +assert.sameValue(result, true, 'The value of result is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A5.1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A5.1_T1.js new file mode 100644 index 0000000000..fdd568379c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.10_A5.1_T1.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + CharacterEscape :: IdentityEscapeSequence :: SourceCharacter but not + IdentifierPart +es5id: 15.10.2.10_A5.1_T1 +description: "Tested string is \"~`!@#$%^&*()-+={[}]|\\\\:;'<,>./?\" + '\"'" +---*/ + +var non_ident = "~`!@#$%^&*()-+={[}]|\\:;'<,>./?" + '"'; +for (var k = 0; k < non_ident.length; ++k) { + var arr = new RegExp("\\" + non_ident[k], "g").exec(non_ident); + assert.notSameValue(arr, null, "No match for character: " + non_ident[k]); + assert.sameValue(arr[0], non_ident[k]); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T1.js new file mode 100644 index 0000000000..d9cdd5f2ce --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit]" +es5id: 15.10.2.11_A1_T1 +description: > + DecimalEscape :: 0. If i is zero, return the EscapeValue + consisting of a character (Unicodevalue0000) +---*/ + +var arr = /\0/.exec("\u0000"); +if ((arr === null) || (arr[0] !== "\u0000")) { + throw new Test262Error('#1: var arr = /\\0/.exec(\\u0000); arr[0] === "\\u0000". Actual. ' + (arr && arr[0])); +} + +var arr = (new RegExp("\\0")).exec("\u0000"); +if ((arr === null) || (arr[0] !== "\u0000")) { + throw new Test262Error('#2: var arr = (new RegExp("\\0")).exec(\\u0000); arr[0] === "\\u0000". Actual. ' + (arr && arr[0])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T4.js new file mode 100644 index 0000000000..107cf8b119 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T4.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit]" +es5id: 15.10.2.11_A1_T4 +description: DecimalIntegerLiteral is not 0 +---*/ + +var arr = /(A)\1/.exec("AA"); + +if ((arr === null) || (arr[0] !== "AA")) { + throw new Test262Error('#1: var arr = (/(A)\\1/.exec("AA")); arr[0] === "AA". Actual. ' + (arr && arr[0])); +} + +if ((arr === null) || (arr[1] !== "A")) { + throw new Test262Error('#2: var arr = (/(A)\\1/.exec("AA")); arr[1] === "A". Actual. ' + (arr && arr[1])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T5.js new file mode 100644 index 0000000000..b1565c418c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T5.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit]" +es5id: 15.10.2.11_A1_T5 +description: DecimalIntegerLiteral is not 0 +---*/ + +var arr = /\1(A)/.exec("AA"); + +if ((arr === null) || (arr[0] !== "A")) { + throw new Test262Error('#1: var arr = (/\\1(A)/.exec("AA")); arr[0] === "A". Actual. ' + (arr && arr[0])); +} + +if ((arr === null) || (arr[1] !== "A")) { + throw new Test262Error('#2: var arr = (/\\1(A)/.exec("AA")); arr[1] === "A". Actual. ' + (arr && arr[1])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T6.js new file mode 100644 index 0000000000..7c42d31a1d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T6.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit]" +es5id: 15.10.2.11_A1_T6 +description: DecimalIntegerLiteral is not 0 +---*/ + +var arr = /(A)\1(B)\2/.exec("AABB"); + +if ((arr === null) || (arr[0] !== "AABB")) { + throw new Test262Error('#1: var arr = /(A)\\1(B)\\2/.exec("AABB"); arr[0] === "AABB". Actual. ' + (arr && arr[0])); +} + +if ((arr === null) || (arr[1] !== "A")) { + throw new Test262Error('#2: var arr = /(A)\\1(B)\\2/.exec("AABB"); arr[1] === "A". Actual. ' + (arr && arr[1])); +} + +if ((arr === null) || (arr[2] !== "B")) { + throw new Test262Error('#3: var arr = /(A)\\1(B)\\2/.exec("AABB"); arr[2] === "B". Actual. ' + (arr && arr[2])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T7.js new file mode 100644 index 0000000000..7e1f5d9dd5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T7.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit]" +es5id: 15.10.2.11_A1_T7 +description: DecimalIntegerLiteral is not 0 +---*/ + +var arr = /\1(A)(B)\2/.exec("ABB"); + +if ((arr === null) || (arr[0] !== "ABB")) { + throw new Test262Error('#1: var arr = /\\1(A)(B)\\2/.exec("ABB"); arr[0] === "ABB". Actual. ' + (arr && arr[0])); +} + +if ((arr === null) || (arr[1] !== "A")) { + throw new Test262Error('#2: var arr = /\\1(A)(B)\\2/.exec("ABB"); arr[1] === "A". Actual. ' + (arr && arr[1])); +} + +if ((arr === null) || (arr[2] !== "B")) { + throw new Test262Error('#3: var arr = /\\1(A)(B)\\2/.exec("ABB"); arr[2] === "B". Actual. ' + (arr && arr[2])); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T8.js new file mode 100644 index 0000000000..51b516c8a1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T8.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit]" +es5id: 15.10.2.11_A1_T8 +description: DecimalIntegerLiteral is not 0 +---*/ + +var arr = /((((((((((A))))))))))\1\2\3\4\5\6\7\8\9\10/.exec("AAAAAAAAAAA"); + +if ((arr === null) || (arr[0] !== "AAAAAAAAAAA")) { + throw new Test262Error('#1: var arr = /((((((((((A))))))))))\\1\\2\\3\\4\\5\\6\\7\\8\\9\\10/.exec("AAAAAAAAAAA"); arr[0] === "AAAAAAAAAAA". Actual. ' + (arr && arr[0])); +} + +for (var i = 1; i <= 10; i++) { + if ((arr === null) || (arr[i] !== "A")) { + throw new Test262Error('#2: var arr = /((((((((((A))))))))))\\1\\2\\3\\4\\5\\6\\7\\8\\9\\10/.exec("AAAAAAAAAAA"); arr[' + i + '] === "A". Actual. ' + (arr && arr[i])); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T9.js new file mode 100644 index 0000000000..0ed36cd7e9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.11_A1_T9.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: "DecimalEscape :: DecimalIntegerLiteral [lookahead not in DecimalDigit]" +es5id: 15.10.2.11_A1_T9 +description: DecimalIntegerLiteral is not 0 +---*/ + +var arr = /((((((((((A))))))))))\10\9\8\7\6\5\4\3\2\1/.exec("AAAAAAAAAAA"); + +if ((arr === null) || (arr[0] !== "AAAAAAAAAAA")) { + throw new Test262Error('#1: var arr = /((((((((((A))))))))))\\10\\9\\8\\7\\6\\5\\4\\3\\2\\1/.exec("AAAAAAAAAAA"); arr[0] === "AAAAAAAAAAA". Actual. ' + (arr && arr[0])); +} + +for (var i = 1; i <= 10; i++) { + if ((arr === null) || (arr[i] !== "A")) { + throw new Test262Error('#2: var arr = /((((((((((A))))))))))\\10\\9\\8\\7\\6\\5\\4\\3\\2\\1/.exec("AAAAAAAAAAA"); arr[' + i + '] === "A". Actual. ' + (arr && arr[i])); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.12_A3_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.12_A3_T5.js new file mode 100644 index 0000000000..d4dcdc3f04 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.12_A3_T5.js @@ -0,0 +1,29 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClassEscape :: w evaluates by returning the set of characters containing the sixty-three characters: + a - z, A - Z, 0 - 9, _ +es5id: 15.10.2.12_A3_T5 +description: non-w +---*/ + +var non_w = "\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"'; + +assert.sameValue( + /\w/.exec(non_w), + null, + '/w/.exec(""fnrtv~`!@#$%^&*()-+={[}]|:;\'<,>./? " + \'"\'") must return null' +); + +var non_W = "_0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; +var regexp_w = /\w/g; +var k = 0; +while (regexp_w.exec(non_W) !== null) { + k++; +} + +assert.sameValue(non_W.length, k, 'The value of non_W.length is expected to equal the value of k'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.12_A4_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.12_A4_T5.js new file mode 100644 index 0000000000..f3bcc0c6d0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.12_A4_T5.js @@ -0,0 +1,29 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClassEscape :: W evaluates by returning the set of all characters not + included in the set returned by CharacterClassEscape :: w +es5id: 15.10.2.12_A4_T5 +description: non-w +---*/ + +var non_w = "\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"'; +var regexp_W = /\W/g; +var k = 0; +while (regexp_W.exec(non_w) !== null) { + k++; +} + +assert.sameValue(non_w.length, k, 'The value of non_w.length is expected to equal the value of k'); + +var non_W = "_0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + +assert.sameValue( + /\W/.exec(non_W), + null, + '/W/.exec(""_0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"") must return null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T1.js new file mode 100644 index 0000000000..9b535a2e3f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T1.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T1 +description: Execute /[]a/.test("\0a\0a") and check results +---*/ + +var __executed = /[]a/.test("\0a\0a"); +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T10.js new file mode 100644 index 0000000000..aa816075ad --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T10.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T10 +description: Execute /[a-c\d]+/.exec("\n\n\abc324234\n") and check results +---*/ + +var __executed = /[a-c\d]+/.exec("\n\n\abc324234\n"); + +var __expected = ["abc324234"]; +__expected.index = 2; +__expected.input = "\n\n\abc324234\n"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T11.js new file mode 100644 index 0000000000..1c490e122e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T11.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T11 +description: Execute /ab[.]?c/.exec("abc") and check results +---*/ + +var __executed = /ab[.]?c/.exec("abc"); + +var __expected = ["abc"]; +__expected.index = 0; +__expected.input = "abc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T12.js new file mode 100644 index 0000000000..20f9efd7d8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T12.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T12 +description: Execute /a[b]c/.exec("abc") and check results +---*/ + +var __executed = /a[b]c/.exec("abc"); + +var __expected = ["abc"]; +__expected.index = 0; +__expected.input = "abc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T13.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T13.js new file mode 100644 index 0000000000..944e396867 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T13.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T13 +description: > + Execute /[a-z][^1-9][a-z]/.exec("a1b b2c c3d def f4g") and + check results +---*/ + +var __executed = /[a-z][^1-9][a-z]/.exec("a1b b2c c3d def f4g"); + +var __expected = ["def"]; +__expected.index = 15; +__expected.input = "a1b b2c c3d def f4g"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T14.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T14.js new file mode 100644 index 0000000000..dc9072d835 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T14.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T14 +description: Execute /[*&$]{3}/.exec("123*&$abc") and check results +---*/ + +var __executed = /[*&$]{3}/.exec("123*&$abc"); + +var __expected = ["*&$"]; +__expected.index = 3; +__expected.input = "123*&$abc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T15.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T15.js new file mode 100644 index 0000000000..2a0a1f1fe8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T15.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T15 +description: Execute /[\d][\n][^\d]/.exec("line1\nline2") and check results +---*/ + +var __executed = /[\d][\n][^\d]/.exec("line1\nline2"); + +var __expected = ["1\nl"]; +__expected.index = 4; +__expected.input = "line1\nline2"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T17.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T17.js new file mode 100644 index 0000000000..e41ac621f6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T17.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T17 +description: Execute /[]/.exec("a[b\n[]\tc]d") and check results +---*/ + +var __executed = /[]/.exec("a[b\n[]\tc]d"); + +assert.sameValue(__executed, null, 'The value of __executed is expected to be null'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T2.js new file mode 100644 index 0000000000..8bc8d7feb7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T2.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T2 +description: Execute /a[]/.test("\0a\0a") and check results +---*/ + +var __executed = /a[]/.test("\0a\0a"); +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T3.js new file mode 100644 index 0000000000..68a70433c2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T3.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T3 +description: Execute /q[ax-zb](?=\s+)/.exec("qYqy ") and check results +---*/ + +var __executed = /q[ax-zb](?=\s+)/.exec("qYqy "); + +var __expected = ["qy"]; +__expected.index = 2; +__expected.input = "qYqy "; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T4.js new file mode 100644 index 0000000000..60d7939f0f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T4.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T4 +description: Execute /q[ax-zb](?=\s+)/.exec("tqaqy ") and check results +---*/ + +var __executed = /q[ax-zb](?=\s+)/.exec("tqaqy "); + +var __expected = ["qy"]; +__expected.index = 3; +__expected.input = "tqaqy "; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T5.js new file mode 100644 index 0000000000..04a47f75b8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T5.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T5 +description: Execute /q[ax-zb](?=\s+)/.exec("tqa\t qy ") and check results +---*/ + +var __executed = /q[ax-zb](?=\s+)/.exec("tqa\t qy "); + +var __expected = ["qa"]; +__expected.index = 1; +__expected.input = "tqa\t qy "; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T6.js new file mode 100644 index 0000000000..e7ef9156b8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T6.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T6 +description: Execute /ab[ercst]de/.exec("abcde") and check results +---*/ + +var __executed = /ab[ercst]de/.exec("abcde"); + +var __expected = ["abcde"]; +__expected.index = 0; +__expected.input = "abcde"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T7.js new file mode 100644 index 0000000000..bbef9f124b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T7.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T7 +description: Execute /ab[erst]de/.test("abcde") and check results +---*/ + +var __executed = /ab[erst]de/.test("abcde"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T8.js new file mode 100644 index 0000000000..5d616fca72 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T8.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T8 +description: Execute /[d-h]+/.exec("abcdefghijkl") and check results +---*/ + +var __executed = /[d-h]+/.exec("abcdefghijkl"); + +var __expected = ["defgh"]; +__expected.index = 3; +__expected.input = "abcdefghijkl"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T9.js new file mode 100644 index 0000000000..eca4bdcd14 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A1_T9.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ [lookahead \notin {^}] ClassRanges ] + evaluates by evaluating ClassRanges to obtain a CharSet and returning + that CharSet and the boolean false +es5id: 15.10.2.13_A1_T9 +description: Execute /[1234567].{2}/.exec("abc6defghijkl") and check results +---*/ + +var __executed = /[1234567].{2}/.exec("abc6defghijkl"); + +var __expected = ["6de"]; +__expected.index = 3; +__expected.input = "abc6defghijkl"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T1.js new file mode 100644 index 0000000000..3c9b4032e0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T1.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ ^ ClassRanges ] evaluates by + evaluating ClassRanges to obtain a CharSet and returning that CharSet + and the boolean true +es5id: 15.10.2.13_A2_T1 +description: Execute /[^]a/m.exec("a\naba") and check results +---*/ + +var __executed = /[^]a/m.exec("a\naba"); + +var __expected = ["\na"]; +__expected.index = 1; +__expected.input = "a\naba"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T2.js new file mode 100644 index 0000000000..2ac8ff3c4a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T2.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ ^ ClassRanges ] evaluates by + evaluating ClassRanges to obtain a CharSet and returning that CharSet + and the boolean true +es5id: 15.10.2.13_A2_T2 +description: Execute /a[^]/.exec(" a\t\n") and check results +---*/ + +var __executed = /a[^]/.exec(" a\t\n"); + +var __expected = ["a\t"]; +__expected.index = 3; +__expected.input = " a\t\n"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T3.js new file mode 100644 index 0000000000..42161ba17d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T3.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ ^ ClassRanges ] evaluates by + evaluating ClassRanges to obtain a CharSet and returning that CharSet + and the boolean true +es5id: 15.10.2.13_A2_T3 +description: Execute /a[^b-z]\s+/.exec("ab an az aY n") and check results +---*/ + +var __executed = /a[^b-z]\s+/.exec("ab an az aY n"); + +var __expected = ["aY "]; +__expected.index = 9; +__expected.input = "ab an az aY n"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T4.js new file mode 100644 index 0000000000..7c204f12ae --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T4.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ ^ ClassRanges ] evaluates by + evaluating ClassRanges to obtain a CharSet and returning that CharSet + and the boolean true +es5id: 15.10.2.13_A2_T4 +description: Execute /[^\b]+/g.exec("easy\bto\u0008ride") and check results +---*/ + +var __executed = /[^\b]+/g.exec("easy\bto\u0008ride"); + +var __expected = ["easy"]; +__expected.index = 0; +__expected.input = "easy\bto\u0008ride"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T5.js new file mode 100644 index 0000000000..d2ed2187aa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T5.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ ^ ClassRanges ] evaluates by + evaluating ClassRanges to obtain a CharSet and returning that CharSet + and the boolean true +es5id: 15.10.2.13_A2_T5 +description: Execute /a[^1-9]c/.exec("abc") and check results +---*/ + +var __executed = /a[^1-9]c/.exec("abc"); + +var __expected = ["abc"]; +__expected.index = 0; +__expected.input = "abc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T6.js new file mode 100644 index 0000000000..46aefd0f03 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T6.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ ^ ClassRanges ] evaluates by + evaluating ClassRanges to obtain a CharSet and returning that CharSet + and the boolean true +es5id: 15.10.2.13_A2_T6 +description: Execute /a[^b]c/.test("abc") and check results +---*/ + +var __executed = /a[^b]c/.test("abc"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T7.js new file mode 100644 index 0000000000..cc9c45060f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T7.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ ^ ClassRanges ] evaluates by + evaluating ClassRanges to obtain a CharSet and returning that CharSet + and the boolean true +es5id: 15.10.2.13_A2_T7 +description: Execute /[^a-z]{4}/.exec("abc#$%def%&*@ghi") and check results +---*/ + +var __executed = /[^a-z]{4}/.exec("abc#$%def%&*@ghi"); + +var __expected = ["%&*@"]; +__expected.index = 9; +__expected.input = "abc#$%def%&*@ghi"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T8.js new file mode 100644 index 0000000000..16b262456d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A2_T8.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production CharacterClass :: [ ^ ClassRanges ] evaluates by + evaluating ClassRanges to obtain a CharSet and returning that CharSet + and the boolean true +es5id: 15.10.2.13_A2_T8 +description: Execute /[^]/.exec("abc#$%def%&*@ghi") and check results +---*/ + +var __executed = /[^]/.exec("abc#$%def%&*@ghi"); + +var __expected = ["a"]; +__expected.index = 0; +__expected.input = "abc#$%def%&*@ghi"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T1.js new file mode 100644 index 0000000000..f7410bc10b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Inside a CharacterClass, \b means the backspace character +es5id: 15.10.2.13_A3_T1 +description: Execute /.[\b]./.exec("abc\bdef") and check results +---*/ + +var __executed = /.[\b]./.exec("abc\bdef"); + +var __expected = ["c\bd"]; +__expected.index = 2; +__expected.input = "abc\bdef"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T2.js new file mode 100644 index 0000000000..693278004b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T2.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Inside a CharacterClass, \b means the backspace character +es5id: 15.10.2.13_A3_T2 +description: Execute /c[\b]{3}d/.exec("abc\b\b\bdef") and check results +---*/ + +var __executed = /c[\b]{3}d/.exec("abc\b\b\bdef"); + +var __expected = ["c\b\b\bd"]; +__expected.index = 2; +__expected.input = "abc\b\b\bdef"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T3.js new file mode 100644 index 0000000000..10dbcc25bd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Inside a CharacterClass, \b means the backspace character +es5id: 15.10.2.13_A3_T3 +description: Execute /[^\[\b\]]+/.exec("abc\bdef") and check results +---*/ + +var __executed = /[^\[\b\]]+/.exec("abc\bdef"); + +var __expected = ["abc"]; +__expected.index = 0; +__expected.input = "abc\bdef"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T4.js new file mode 100644 index 0000000000..b158386550 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.13_A3_T4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Inside a CharacterClass, \b means the backspace character +es5id: 15.10.2.13_A3_T4 +description: Execute /[^\[\b\]]+/.exec("abcdef") and check results +---*/ + +var __executed = /[^\[\b\]]+/.exec("abcdef"); + +var __expected = ["abcdef"]; +__expected.index = 0; +__expected.input = "abcdef"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T1.js new file mode 100644 index 0000000000..cdcf0e9f42 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T1.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T1 +description: > + Checking if execution of "/[b-ac-e]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[b-ac-e]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-ac-e]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T10.js new file mode 100644 index 0000000000..ceedfbbad1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T10.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T10 +description: > + Checking if execution of "/[\10b-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\10b-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\10b-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T11.js new file mode 100644 index 0000000000..a936f005ea --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T11.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T11 +description: > + Checking if execution of "/[\bd-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\bd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\bd-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T12.js new file mode 100644 index 0000000000..0adc1f2575 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T12.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T12 +description: > + Checking if execution of "/[\Bd-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\Bd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\Bd-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T13.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T13.js new file mode 100644 index 0000000000..f159e9cbb4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T13.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T13 +description: > + Checking if execution of "/[\td-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\td-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\td-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T14.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T14.js new file mode 100644 index 0000000000..8a10b56954 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T14.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T14 +description: > + Checking if execution of "/[\nd-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\nd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\nd-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T15.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T15.js new file mode 100644 index 0000000000..801266013d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T15.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T15 +description: > + Checking if execution of "/[\vd-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\vd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\vd-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T16.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T16.js new file mode 100644 index 0000000000..79d78cbb72 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T16.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T16 +description: > + Checking if execution of "/[\fd-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\fd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\fd-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T17.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T17.js new file mode 100644 index 0000000000..76bea152fb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T17.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T17 +description: > + Checking if execution of "/[\rd-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\rd-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\rd-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T18.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T18.js new file mode 100644 index 0000000000..71d67c1455 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T18.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T18 +description: > + Checking if execution of "/[\c0001d-G]/.exec("1")" leads to + throwing the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\c0001d-G]/.exec("1") throw SyntaxError. Actual: ' + (new RegExp("[\\c0001d-G]").exec("1"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T19.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T19.js new file mode 100644 index 0000000000..dde7055f70 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T19.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T19 +description: > + Checking if execution of "/[\x0061d-G]/.exec("1")" leads to + throwing the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\x0061d-G]/.exec("1") throw SyntaxError. Actual: ' + (new RegExp("[\\x0061d-G]").exec("1"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T2.js new file mode 100644 index 0000000000..9237c603d7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T2.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T2 +description: > + Checking if execution of "/[a-dc-b]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[a-dc-b]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[a-dc-b]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T20.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T20.js new file mode 100644 index 0000000000..f5e5ef3658 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T20.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T20 +description: > + Checking if execution of "/[\u0061d-G]/.exec("a")" leads to + throwing the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\u0061d-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\u0061d-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T21.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T21.js new file mode 100644 index 0000000000..8e1e6f505e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T21.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T21 +description: > + Checking if execution of "/[\ad-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\ad-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\ad-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T22.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T22.js new file mode 100644 index 0000000000..83386db9aa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T22.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T22 +description: > + Checking if execution of "/[c-eb-a]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[c-eb-a]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[c-eb-a]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T23.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T23.js new file mode 100644 index 0000000000..25940b01bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T23.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T23 +description: > + Checking if execution of "/[b-G\d]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[b-G\\d]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\d]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T24.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T24.js new file mode 100644 index 0000000000..705b88d66b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T24.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T24 +description: > + Checking if execution of "/[b-G\D]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[b-G\\D]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\D]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T25.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T25.js new file mode 100644 index 0000000000..89adf8be03 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T25.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T25 +description: > + Checking if execution of "/[b-G\s]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[b-G\\s]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\s]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T26.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T26.js new file mode 100644 index 0000000000..a7c25bf686 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T26.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T26 +description: > + Checking if execution of "/[b-G\S]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[b-G\\S]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\S]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T27.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T27.js new file mode 100644 index 0000000000..5c4186280a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T27.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T27 +description: > + Checking if execution of "/[b-G\w]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[b-G\\w]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\w]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T28.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T28.js new file mode 100644 index 0000000000..07ae0e85f9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T28.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T28 +description: > + Checking if execution of "/[b-G\W]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[b-G\\W]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\W]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T29.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T29.js new file mode 100644 index 0000000000..0d14d5df02 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T29.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T29 +description: > + Checking if execution of "/[b-G\0]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[b-G\\0]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\0]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T3.js new file mode 100644 index 0000000000..8c3d9e8b66 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T3.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T3 +description: > + Checking if execution of "/[\db-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\db-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\db-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T30.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T30.js new file mode 100644 index 0000000000..32219f1133 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T30.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T30 +description: > + Checking if execution of "/[b-G\10]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[b-G\\10]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[b-G\\10]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T31.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T31.js new file mode 100644 index 0000000000..a7280a204c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T31.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T31 +description: > + Checking if execution of "/[d-G\b]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\b]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\b]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T32.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T32.js new file mode 100644 index 0000000000..47805bf1b3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T32.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T32 +description: > + Checking if execution of "/[d-G\B]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\B]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\B]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T33.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T33.js new file mode 100644 index 0000000000..d2c55d0a79 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T33.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T33 +description: > + Checking if execution of "/[d-G\t]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\t]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\t]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T34.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T34.js new file mode 100644 index 0000000000..51d8cb00d0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T34.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T34 +description: > + Checking if execution of "/[d-G\n]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\n]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\n]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T35.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T35.js new file mode 100644 index 0000000000..f89adc57b0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T35.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T35 +description: > + Checking if execution of "/[d-G\v]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\v]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\v]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T36.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T36.js new file mode 100644 index 0000000000..8234169341 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T36.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T36 +description: > + Checking if execution of "/[d-G\f]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\f]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\f]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T37.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T37.js new file mode 100644 index 0000000000..84660c6633 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T37.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T37 +description: > + Checking if execution of "/[d-G\r]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\r]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\r]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T38.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T38.js new file mode 100644 index 0000000000..9bc2fd2c0e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T38.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T38 +description: > + Checking if execution of "/[d-G\c0001]/.exec("1")" leads to + throwing the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\c0001]/.exec("1") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\c0001]").exec("1"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T39.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T39.js new file mode 100644 index 0000000000..7e9776e80f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T39.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T39 +description: > + Checking if execution of "/[d-G\x0061]/.exec("1")" leads to + throwing the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\x0061]/.exec("1") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\x0061]").exec("1"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T4.js new file mode 100644 index 0000000000..3d2f9c7940 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T4.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T4 +description: > + Checking if execution of "/[\Db-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\Db-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\Db-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T40.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T40.js new file mode 100644 index 0000000000..484e4f7a3e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T40.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T40 +description: > + Checking if execution of "/[d-G\u0061]/.exec("a")" leads to + throwing the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\u0061]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\u0061]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T41.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T41.js new file mode 100644 index 0000000000..b7602ed2d5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T41.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T41 +description: > + Checking if execution of "/[d-G\a]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[d-G\\a]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[d-G\\a]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T5.js new file mode 100644 index 0000000000..784c14f8e8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T5.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T5 +description: > + Checking if execution of "/[\sb-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\sb-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\sb-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T6.js new file mode 100644 index 0000000000..4e8925c196 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T6.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T6 +description: > + Checking if execution of "/[\Sb-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\Sb-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\Sb-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T7.js new file mode 100644 index 0000000000..1a54c701d6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T7.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T7 +description: > + Checking if execution of "/[\wb-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\wb-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\wb-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T8.js new file mode 100644 index 0000000000..e11bce529c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T8.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T8 +description: > + Checking if execution of "/[\Wb-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\Wb-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\Wb-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T9.js new file mode 100644 index 0000000000..cc05a2123d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.15_A1_T9.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The internal helper function CharacterRange takes two CharSet parameters A and B and performs the + following: + 2. Let a be the one character in CharSet A. + 3. Let b be the one character in CharSet B. + 4. Let i be the character value of character a. + 5. Let j be the character value of character b. + 6. If i > j, throw a SyntaxError exception. +es5id: 15.10.2.15_A1_T9 +description: > + Checking if execution of "/[\0b-G]/.exec("a")" leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: /[\\0b-G]/.exec("a") throw SyntaxError. Actual: ' + (new RegExp("[\\0b-G]").exec("a"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T1.js new file mode 100644 index 0000000000..b1a3d5728b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T1.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T1 +description: Execute /a|ab/.exec("abc") and check results +---*/ + +var __executed = /a|ab/.exec("abc"); + +var __expected = ["a"]; +__expected.index = 0; +__expected.input = "abc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T10.js new file mode 100644 index 0000000000..eedbe81f06 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T10.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T10 +description: "Execute /(?:ab|cd)+|ef/i.exec(\"AEKeFCDab\") and check results" +---*/ + +var __executed = /(?:ab|cd)+|ef/i.exec("AEKeFCDab"); + +var __expected = ["eF"]; +__expected.index = 3; +__expected.input = "AEKeFCDab"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T11.js new file mode 100644 index 0000000000..67cce12424 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T11.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T11 +description: Execute /11111|111/.exec("1111111111111111") and check results +---*/ + +var __executed = /11111|111/.exec("1111111111111111"); + +var __expected = ["11111"]; +__expected.index = 0; +__expected.input = "1111111111111111"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T12.js new file mode 100644 index 0000000000..54834ab06f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T12.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T12 +description: Execute /xyz|.../.exec("abc") and check results +---*/ + +var __executed = /xyz|.../.exec("abc"); + +var __expected = ["abc"]; +__expected.index = 0; +__expected.input = "abc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T13.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T13.js new file mode 100644 index 0000000000..525d5ac028 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T13.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T13 +description: Execute /(.)..|abc/.exec("abc") and check results +---*/ + +var __executed = /(.)..|abc/.exec("abc"); + +var __expected = ["abc","a"]; +__expected.index = 0; +__expected.input = "abc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T14.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T14.js new file mode 100644 index 0000000000..a758b725ab --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T14.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T14 +description: "Execute /.+: gr(a|e)y/.exec(\"color: grey\") and check results" +---*/ + +var __executed = /.+: gr(a|e)y/.exec("color: grey"); + +var __expected = ["color: grey","e"]; +__expected.index = 0; +__expected.input = "color: grey"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T15.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T15.js new file mode 100644 index 0000000000..88f68b83e7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T15.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T15 +description: > + Execute /(Rob)|(Bob)|(Robert)|(Bobby)/.exec("Hi Bob") and check + results +---*/ + +var __executed = /(Rob)|(Bob)|(Robert)|(Bobby)/.exec("Hi Bob"); + +var __expected = ["Bob",undefined,"Bob", undefined, undefined]; +__expected.index = 3; +__expected.input = "Hi Bob"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T16.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T16.js new file mode 100644 index 0000000000..500d24ed45 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T16.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T16 +description: Execute /()|/.exec("") and check results +---*/ + +var __executed = /()|/.exec(""); + +var __expected = ["",""]; +__expected.index = 0; +__expected.input = ""; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T17.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T17.js new file mode 100644 index 0000000000..4780213347 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T17.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T17 +description: Execute /|()/.exec("") and check results +---*/ + +var __executed = /|()/.exec(""); + +var __expected = ["",undefined]; +__expected.index = 0; +__expected.input = ""; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T2.js new file mode 100644 index 0000000000..e48da33a03 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T2.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T2 +description: Execute /((a)|(ab))((c)|(bc))/.exec("abc") and check results +---*/ + +var __executed = /((a)|(ab))((c)|(bc))/.exec("abc"); + +var __expected = ["abc", "a", "a", undefined, "bc", undefined, "bc"]; +__expected.index = 0; +__expected.input = "abc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T3.js new file mode 100644 index 0000000000..cc627d8c60 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T3.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T3 +description: > + Execute /\d{3}|[a-z]{4}/.exec("2, 12 and of course repeat 12") and + check results +---*/ + +var __executed = /\d{3}|[a-z]{4}/.exec("2, 12 and of course repeat 12"); + +var __expected = ["cour"]; +__expected.index = 13; +__expected.input = "2, 12 and of course repeat 12"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T4.js new file mode 100644 index 0000000000..47827a0409 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T4.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T4 +description: > + Execute /\d{3}|[a-z]{4}/.exec("2, 12 and 234 AND of course repeat + 12") and check results +---*/ + +var __executed = /\d{3}|[a-z]{4}/.exec("2, 12 and 234 AND of course repeat 12"); + +var __expected = ["234"]; +__expected.index = 10; +__expected.input = "2, 12 and 234 AND of course repeat 12"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T5.js new file mode 100644 index 0000000000..db7b6bc3f4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T5.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T5 +description: > + Execute /\d{3}|[a-z]{4}/.test("2, 12 and 23 AND 0.00.1") and check + results +---*/ + +var __executed = /\d{3}|[a-z]{4}/.test("2, 12 and 23 AND 0.00.1"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T6.js new file mode 100644 index 0000000000..dbc9adec68 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T6.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T6 +description: Execute /ab|cd|ef/i.exec("AEKFCD") and check results +---*/ + +var __executed = /ab|cd|ef/i.exec("AEKFCD"); + +var __expected = ["CD"]; +__expected.index = 4; +__expected.input = "AEKFCD"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T7.js new file mode 100644 index 0000000000..4c239a847e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T7.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T7 +description: Execute /ab|cd|ef/.test("AEKFCD") and check results +---*/ + +var __executed = /ab|cd|ef/.test("AEKFCD"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T8.js new file mode 100644 index 0000000000..d8657663ea --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T8.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T8 +description: "Execute /(?:ab|cd)+|ef/i.exec(\"AEKFCD\") and check results" +---*/ + +var __executed = /(?:ab|cd)+|ef/i.exec("AEKFCD"); + +var __expected = ["CD"]; +__expected.index = 4; +__expected.input = "AEKFCD"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T9.js new file mode 100644 index 0000000000..58ff15a8c3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.3_A1_T9.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The | regular expression operator separates two alternatives. + The pattern first tries to match the left Alternative (followed by the sequel of the regular expression). + If it fails, it tries to match the right Disjunction (followed by the sequel of the regular expression) +es5id: 15.10.2.3_A1_T9 +description: "Execute /(?:ab|cd)+|ef/i.exec(\"AEKFCDab\") and check results" +---*/ + +var __executed = /(?:ab|cd)+|ef/i.exec("AEKFCDab"); + +var __expected = ["CDab"]; +__expected.index = 4; +__expected.input = "AEKFCDab"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T1.js new file mode 100644 index 0000000000..dcb7f09d43 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T1.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + An Atom followed by a Quantifier is repeated the number of times + specified by the Quantifier +es5id: 15.10.2.5_A1_T1 +description: Execute /a[a-z]{2,4}/.exec("abcdefghi") and check results +---*/ + +var __executed = /a[a-z]{2,4}/.exec("abcdefghi"); + +var __expected = ["abcde"]; +__expected.index = 0; +__expected.input = "abcdefghi"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T2.js new file mode 100644 index 0000000000..3e88151228 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T2.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + An Atom followed by a Quantifier is repeated the number of times + specified by the Quantifier +es5id: 15.10.2.5_A1_T2 +description: Execute /a[a-z]{2,4}?/.exec("abcdefghi") and check results +---*/ + +var __executed = /a[a-z]{2,4}?/.exec("abcdefghi"); + +var __expected = ["abc"]; +__expected.index = 0; +__expected.input = "abcdefghi"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T3.js new file mode 100644 index 0000000000..f395719dfc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T3.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + An Atom followed by a Quantifier is repeated the number of times + specified by the Quantifier +es5id: 15.10.2.5_A1_T3 +description: Execute /(aa|aabaac|ba|b|c)* /.exec("aabaac") and check results +---*/ + +var __executed = /(aa|aabaac|ba|b|c)*/.exec("aabaac"); + +var __expected = ["aaba", "ba"]; +__expected.index = 0; +__expected.input = "aabaac"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T4.js new file mode 100644 index 0000000000..e3ef4d8640 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T4.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + An Atom followed by a Quantifier is repeated the number of times + specified by the Quantifier +es5id: 15.10.2.5_A1_T4 +description: Execute /(z)((a+)?(b+)?(c))* /.exec("zaacbbbcac") and check results +---*/ + +var __executed = /(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac"); + +var __expected = ["zaacbbbcac", "z", "ac", "a", undefined, "c"]; +__expected.index = 0; +__expected.input = "zaacbbbcac"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T5.js new file mode 100644 index 0000000000..2ffe40efd2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.5_A1_T5.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + An Atom followed by a Quantifier is repeated the number of times + specified by the Quantifier +es5id: 15.10.2.5_A1_T5 +description: Execute /(a*)b\1+/.exec("baaaac") and check results +---*/ + +var __executed = /(a*)b\1+/.exec("baaaac"); + +var __expected = ["b", ""]; +__expected.index = 0; +__expected.input = "baaaac"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T1.js new file mode 100644 index 0000000000..3ba6f1a880 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T1.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: $ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A1_T1 +description: Execute /s$/.test("pairs\nmakes\tdouble") and check results +---*/ + +var __executed = /s$/.test("pairs\nmakes\tdouble"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T2.js new file mode 100644 index 0000000000..d314d096bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T2.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: $ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A1_T2 +description: Execute /e$/.exec("pairs\nmakes\tdouble") and check results +---*/ + +var __executed = /e$/.exec("pairs\nmakes\tdouble"); + +var __expected = ["e"]; +__expected.index = 17; +__expected.input = "pairs\nmakes\tdouble"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T3.js new file mode 100644 index 0000000000..16dee37640 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T3.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: $ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A1_T3 +description: Execute /s$/m.exec("pairs\nmakes\tdouble") and check results +---*/ + +var __executed = /s$/m.exec("pairs\nmakes\tdouble"); + +var __expected = ["s"]; +__expected.index = 4; +__expected.input = "pairs\nmakes\tdouble"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T4.js new file mode 100644 index 0000000000..34109058e1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T4.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: $ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A1_T4 +description: Execute /[^e]$/mg.exec("pairs\nmakes\tdouble") and check results +---*/ + +var __executed = /[^e]$/mg.exec("pairs\nmakes\tdouble"); + +var __expected = ["s"]; +__expected.index = 4; +__expected.input = "pairs\nmakes\tdouble"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T5.js new file mode 100644 index 0000000000..da6610d97a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A1_T5.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: $ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A1_T5 +description: > + Execute /es$/mg.exec("pairs\nmakes\tdoubl\u0065s") and check + results +---*/ + +var __executed = /es$/mg.exec("pairs\nmakes\tdoubl\u0065s"); + +var __expected = ["es"]; +__expected.index = 17; +__expected.input = "pairs\nmakes\tdoubles"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T1.js new file mode 100644 index 0000000000..8af0b6fe9a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T1.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T1 +description: Execute /^m/.test("pairs\nmakes\tdouble") and check results +---*/ + +var __executed = /^m/.test("pairs\nmakes\tdouble"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T10.js new file mode 100644 index 0000000000..b8d18b59c1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T10.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T10 +description: Execute /^\d+/m.exec("abc\n123xyz") and check results +---*/ + +var __executed = /^\d+/m.exec("abc\n123xyz"); + +var __expected = ["123"]; +__expected.index = 4; +__expected.input = "abc\n123xyz"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T2.js new file mode 100644 index 0000000000..a9884c5c50 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T2.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T2 +description: Execute /^m/m.exec("pairs\nmakes\tdouble") and check results +---*/ + +var __executed = /^m/m.exec("pairs\nmakes\tdouble"); + +var __expected = ["m"]; +__expected.index = 6; +__expected.input = "pairs\nmakes\tdouble"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T3.js new file mode 100644 index 0000000000..aeb06cccdb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T3.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T3 +description: > + Execute /^p[a-z]/.exec("pairs\nmakes\tdouble\npesos") and check + results +---*/ + +var __executed = /^p[a-z]/.exec("pairs\nmakes\tdouble\npesos"); + +var __expected = ["pa"]; +__expected.index = 0; +__expected.input = "pairs\nmakes\tdouble\npesos"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T4.js new file mode 100644 index 0000000000..df304897e4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T4.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T4 +description: > + Execute /^p[a-z]/m.exec("pairs\nmakes\tdouble\npesos") and check + results +---*/ + +var __executed = /^p[b-z]/m.exec("pairs\nmakes\tdouble\npesos"); + +var __expected = ["pe"]; +__expected.index = 19; +__expected.input = "pairs\nmakes\tdouble\npesos"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T5.js new file mode 100644 index 0000000000..546bf531a3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T5.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T5 +description: > + Execute /^[^p]/m.exec("pairs\nmakes\tdouble\npesos") and check + results +---*/ + +var __executed = /^[^p]/m.exec("pairs\nmakes\tdouble\npesos"); + +var __expected = ["m"]; +__expected.index = 6; +__expected.input = "pairs\nmakes\tdouble\npesos"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T6.js new file mode 100644 index 0000000000..49e4ba2cc4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T6.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T6 +description: Execute /^ab/.exec("abcde") and check results +---*/ + +var __executed = /^ab/.exec("abcde"); + +var __expected = ["ab"]; +__expected.index = 0; +__expected.input = "abcde"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T7.js new file mode 100644 index 0000000000..4d346246bc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T7.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T7 +description: Execute /^..^e/.test("ab\ncde") and check results +---*/ + +var __executed = /^..^e/.test("ab\ncde"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T8.js new file mode 100644 index 0000000000..e56cf8b957 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T8.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T8 +description: Execute /^xxx/.test("yyyyy") and check results +---*/ + +var __executed = /^xxx/.test("yyyyy"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T9.js new file mode 100644 index 0000000000..6587eb1bbc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A2_T9.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: ^ evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A2_T9 +description: Execute /^\^+/.exec("^^^x") and check results +---*/ + +var __executed = /^\^+/.exec("^^^x"); + +var __expected = ["^^^"]; +__expected.index = 0; +__expected.input = "^^^x"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T1.js new file mode 100644 index 0000000000..9b50a149cf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T1.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T1 +description: > + Execute /\bp/.exec("pilot\nsoviet robot\topenoffice") and check + results +---*/ + +var __executed = /\bp/.exec("pilot\nsoviet robot\topenoffice"); + +var __expected = ["p"]; +__expected.index = 0; +__expected.input = "pilot\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T10.js new file mode 100644 index 0000000000..873b729522 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T10.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T10 +description: > + Execute /\brobot\b/.exec("pilot\nsoviet robot\topenoffice") and + check results +---*/ + +var __executed = /\brobot\b/.exec("pilot\nsoviet robot\topenoffice"); + +var __expected = ["robot"]; +__expected.index = 13; +__expected.input = "pilot\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T11.js new file mode 100644 index 0000000000..17e48b1d85 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T11.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T11 +description: > + Execute /\b\w{5}\b/.exec("pilot\nsoviet robot\topenoffice") and + check results +---*/ + +var __executed = /\b\w{5}\b/.exec("pilot\nsoviet robot\topenoffice"); + +var __expected = ["pilot"]; +__expected.index = 0; +__expected.input = "pilot\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T12.js new file mode 100644 index 0000000000..cfcde0a257 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T12.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T12 +description: > + Execute /\bop/.exec("pilot\nsoviet robot\topenoffice") and check + results +---*/ + +var __executed = /\bop/.exec("pilot\nsoviet robot\topenoffice"); + +var __expected = ["op"]; +__expected.index = 19; +__expected.input = "pilot\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T13.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T13.js new file mode 100644 index 0000000000..ec17f59bc4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T13.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T13 +description: > + Execute /op\b/.test("pilot\nsoviet robot\topenoffice") and check + results +---*/ + +var __executed = /op\b/.test("pilot\nsoviet robot\topenoffice"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T14.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T14.js new file mode 100644 index 0000000000..e899c72c1b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T14.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T14 +description: > + Execute /e\b/.exec("pilot\nsoviet robot\topenoffic\u0065") and + check results +---*/ + +var __executed = /e\b/.exec("pilot\nsoviet robot\topenoffic\u0065"); + +var __expected = ["e"]; +__expected.index = 28; +__expected.input = "pilot\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T15.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T15.js new file mode 100644 index 0000000000..9b450811e8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T15.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T15 +description: > + Execute /\be/.test("pilot\nsoviet robot\topenoffic\u0065") and + check results +---*/ + +var __executed = /\be/.test("pilot\nsoviet robot\topenoffic\u0065"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T2.js new file mode 100644 index 0000000000..2c4bedaa68 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T2.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T2 +description: > + Execute /ot\b/.exec("pilot\nsoviet robot\topenoffice") and check + results +---*/ + +var __executed = /ot\b/.exec("pilot\nsoviet robot\topenoffice"); + +var __expected = ["ot"]; +__expected.index = 3; +__expected.input = "pilot\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T3.js new file mode 100644 index 0000000000..edb7b1a9f6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T3.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T3 +description: > + Execute /\bot/.test("pilot\nsoviet robot\topenoffice") and check + results +---*/ + +var __executed = /\bot/.test("pilot\nsoviet robot\topenoffice"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T4.js new file mode 100644 index 0000000000..02cbed9dd0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T4.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T4 +description: > + Execute /\bso/.exec("pilot\nsoviet robot\topenoffice") and check + results +---*/ + +var __executed = /\bso/.exec("pilot\nsoviet robot\topenoffice"); + +var __expected = ["so"]; +__expected.index = 6; +__expected.input = "pilot\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T5.js new file mode 100644 index 0000000000..de857fe73a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T5.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T5 +description: > + Execute /so\b/.test("pilot\nsoviet robot\topenoffice") and check + results +---*/ + +var __executed = /so\b/.test("pilot\nsoviet robot\topenoffice"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T6.js new file mode 100644 index 0000000000..36c5708757 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T6.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T6 +description: > + Execute /[^o]t\b/.exec("pilOt\nsoviet robot\topenoffice") and + check results +---*/ + +var __executed = /[^o]t\b/.exec("pilOt\nsoviet robot\topenoffice"); + +var __expected = ["Ot"]; +__expected.index = 3; +__expected.input = "pilOt\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T7.js new file mode 100644 index 0000000000..ff918dfa2e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T7.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T7 +description: > + Execute /[^o]t\b/i.exec("pilOt\nsoviet robot\topenoffice") and + check results +---*/ + +var __executed = /[^o]t\b/i.exec("pilOt\nsoviet robot\topenoffice"); + +var __expected = ["et"]; +__expected.index = 10; +__expected.input = "pilOt\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T8.js new file mode 100644 index 0000000000..2a1cdb82cb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T8.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T8 +description: > + Execute /\bro/.exec("pilot\nsoviet robot\topenoffice") and check + results +---*/ + +var __executed = /\bro/.exec("pilot\nsoviet robot\topenoffice"); + +var __expected = ["ro"]; +__expected.index = 13; +__expected.input = "pilot\nsoviet robot\topenoffice"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T9.js new file mode 100644 index 0000000000..98da926ed4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A3_T9.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \b evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A3_T9 +description: > + Execute /r\b/.exec("pilot\nsoviet robot\topenoffice") and check + results +---*/ + +var __executed = /r\b/.test("pilot\nsoviet robot\topenoffice"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T1.js new file mode 100644 index 0000000000..6714880306 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T1.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \B evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A4_T1 +description: > + Execute /\Bevil\B/.exec("devils arise\tfor\nevil") and check + results +---*/ + +var __executed = /\Bevil\B/.exec("devils arise\tfor\nevil"); + +var __expected = ["evil"]; +__expected.index = 1; +__expected.input = "devils arise\tfor\nevil"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T2.js new file mode 100644 index 0000000000..19f5f976f4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T2.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \B evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A4_T2 +description: > + Execute /[f-z]e\B/.exec("devils arise\tfor\nevil") and check + results +---*/ + +var __executed = /[f-z]e\B/.exec("devils arise\tfor\nrevil"); + +var __expected = ["re"]; +__expected.index = 17; +__expected.input = "devils arise\tfor\nrevil"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T3.js new file mode 100644 index 0000000000..cb9b12e484 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T3.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \B evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A4_T3 +description: Execute /\Bo\B/.exec("devils arise\tfor\nevil") and check results +---*/ + +var __executed = /\Bo\B/i.exec("devils arise\tfOr\nrevil"); + +var __expected = ["O"]; +__expected.index = 14; +__expected.input = "devils arise\tfOr\nrevil"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T4.js new file mode 100644 index 0000000000..696fa8745a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T4.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \B evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A4_T4 +description: Execute /\B\w\B/.exec("devils arise\tfor\nevil") and check results +---*/ + +var __executed = /\B\w\B/.exec("devils arise\tfor\nrevil"); + +var __expected = ["e"]; +__expected.index = 1; +__expected.input = "devils arise\tfor\nrevil"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T5.js new file mode 100644 index 0000000000..68a46190c7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T5.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \B evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A4_T5 +description: Execute /\w\B/.exec("devils arise\tfor\nevil") and check results +---*/ + +var __executed = /\w\B/.exec("devils arise\tfor\nrevil"); + +var __expected = ["d"]; +__expected.index = 0; +__expected.input = "devils arise\tfor\nrevil"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T6.js new file mode 100644 index 0000000000..fef789b367 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T6.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \B evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A4_T6 +description: Execute /\B\w/.exec("devils arise\tfor\nevil") and check results +---*/ + +var __executed = /\B\w/.exec("devils arise\tfor\nrevil"); + +var __expected = ["e"]; +__expected.index = 1; +__expected.input = "devils arise\tfor\nrevil"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T7.js new file mode 100644 index 0000000000..1da61dbe06 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T7.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \B evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A4_T7 +description: > + Execute /\B[^z]{4}\B/.exec("devil arise\tforzzx\nevils") and + check results +---*/ + +var __executed = /\B[^z]{4}\B/.exec("devil arise\tforzzx\nevils"); + +var __expected = ["il a"]; +__expected.index = 3; +__expected.input = "devil arise\tforzzx\nevils"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T8.js new file mode 100644 index 0000000000..486eeac080 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A4_T8.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Assertion :: \B evaluates by returning an internal + AssertionTester closure that takes a State argument x and performs the ... +es5id: 15.10.2.6_A4_T8 +description: > + Execute /\B\w{4}\B/.exec("devil arise\tforzzx\nevils") and check + results +---*/ + +var __executed = /\B\w{4}\B/.exec("devil arise\tforzzx\nevils"); + +var __expected = ["orzz"]; +__expected.index = 13; +__expected.input = "devil arise\tforzzx\nevils"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A5_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A5_T1.js new file mode 100644 index 0000000000..23b8899285 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A5_T1.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Since assertion evaluating do not change endIndex repetition of assertion + does the same result +es5id: 15.10.2.6_A5_T1 +description: Execute /^^^^^^^robot$$$$/.exec("robot") and check results +---*/ + +var __executed = /^^^^^^^robot$$$$/.exec("robot"); + +var __expected = ["robot"]; +__expected.index = 0; +__expected.input = "robot"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A5_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A5_T2.js new file mode 100644 index 0000000000..75b64eb6c4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A5_T2.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Since assertion evaluating do not change endIndex repetition of assertion + does the same result +es5id: 15.10.2.6_A5_T2 +description: > + Execute /\B\B\B\B\B\Bbot\b\b\b\b\b\b\b/.exec("robot wall-e") and + check results +---*/ + +var __executed = /\B\B\B\B\B\Bbot\b\b\b\b\b\b\b/.exec("robot wall-e"); + +var __expected = ["bot"]; +__expected.index = 2; +__expected.input = "robot wall-e"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T1.js new file mode 100644 index 0000000000..0a20bbd8de --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T1.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Assertions in combination +es5id: 15.10.2.6_A6_T1 +description: > + while asterix is non greedy it is run till the end because of + dollar assertion +---*/ + +var __executed = /^.*?$/.exec("Hello World"); + +var __expected = ["Hello World"]; +__expected.index = 0; +__expected.input = "Hello World"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T2.js new file mode 100644 index 0000000000..0bbaf8cb71 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T2.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Assertions in combination +es5id: 15.10.2.6_A6_T2 +description: Execute /^.*?/.exec("Hello World") and check results +---*/ + +var __executed = /^.*?/.exec("Hello World"); + +var __expected = [""]; +__expected.index = 0; +__expected.input = "Hello World"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T3.js new file mode 100644 index 0000000000..c7c25431ce --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T3.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Assertions in combination +es5id: 15.10.2.6_A6_T3 +description: while asterix is non greedy it is run till matches end or colon +---*/ + +var __executed = /^.*?(:|$)/.exec("Hello: World"); + +var __expected = ["Hello:", ":"]; +__expected.index = 0; +__expected.input = "Hello: World"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T4.js new file mode 100644 index 0000000000..8dbaa0ba08 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.6_A6_T4.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Assertions in combination +es5id: 15.10.2.6_A6_T4 +description: "Execute /^.*(:|$)/.exec(\"Hello: World\") and check results" +---*/ + +var __executed = /^.*(:|$)/.exec("Hello: World"); + +var __expected = ["Hello: World", ""]; +__expected.index = 0; +__expected.input = "Hello: World"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T1.js new file mode 100644 index 0000000000..e8072e7423 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T1.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T1 +description: Execute /\d{2,4}/.exec("the answer is 42") and check results +---*/ + +var __executed = /\d{2,4}/.exec("the answer is 42"); + +var __expected = ["42"]; +__expected.index = 14; +__expected.input = "the answer is 42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T10.js new file mode 100644 index 0000000000..10983028b7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T10.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T10 +description: Execute /b{0,93}c/.exec("aaabbbbcccddeeeefffff") and check results +---*/ + +var __executed = /b{0,93}c/.exec("aaabbbbcccddeeeefffff"); + +var __expected = ["bbbbc"]; +__expected.index = 3; +__expected.input = "aaabbbbcccddeeeefffff"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T11.js new file mode 100644 index 0000000000..89a51c5b76 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T11.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T11 +description: Execute /bx{0,93}c/.exec("aaabbbbcccddeeeefffff") and check results +---*/ + +var __executed = /bx{0,93}c/.exec("aaabbbbcccddeeeefffff"); + +var __expected = ["bc"]; +__expected.index = 6; +__expected.input = "aaabbbbcccddeeeefffff"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T12.js new file mode 100644 index 0000000000..6f01e39452 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T12.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T12 +description: Execute /.{0,93}/.exec("weirwerdf") and check results +---*/ + +var __executed = /.{0,93}/.exec("weirwerdf"); + +var __expected = ["weirwerdf"]; +__expected.index = 0; +__expected.input = "weirwerdf"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T2.js new file mode 100644 index 0000000000..9f57db24d3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T2.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T2 +description: Execute /\d{2,4}/.test("the 7 movie") and check results +---*/ + +var __executed = /\d{2,4}/.test("the 7 movie"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T3.js new file mode 100644 index 0000000000..bd101cb36e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T3.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T3 +description: > + Execute /\d{2,4}/.exec("the 20000 Leagues Under the Sea book") and + check results +---*/ + +var __executed = /\d{2,4}/.exec("the 20000 Leagues Under the Sea book"); + +var __expected = ["2000"]; +__expected.index = 4; +__expected.input = "the 20000 Leagues Under the Sea book"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T4.js new file mode 100644 index 0000000000..f6fac80150 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T4.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T4 +description: Execute /\d{2,4}/.exec("the Fahrenheit 451 book") and check results +---*/ + +var __executed = /\d{2,4}/.exec("the Fahrenheit 451 book"); + +var __expected = ["451"]; +__expected.index = 15; +__expected.input = "the Fahrenheit 451 book"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T5.js new file mode 100644 index 0000000000..fa380832b6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T5.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T5 +description: Execute /\d{2,4}/.exec("the 1984 novel") and check results +---*/ + +var __executed = /\d{2,4}/.exec("the 1984 novel"); + +var __expected = ["1984"]; +__expected.index = 4; +__expected.input = "the 1984 novel"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T6.js new file mode 100644 index 0000000000..1ea6f51f11 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T6.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T6 +description: Execute /\d{2,4}/.exec("0a0\u0031\u0031b") and check results +---*/ + +var __executed = /\d{2,4}/.exec("0a0\u0031\u0031b"); + +var __expected = ["011"]; +__expected.index = 2; +__expected.input = "0a011b"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T7.js new file mode 100644 index 0000000000..9c99440b79 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T7.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T7 +description: Execute /\d{2,4}/.exec("0a0\u0031\u003122b") and check results +---*/ + +var __executed = /\d{2,4}/.exec("0a0\u0031\u003122b"); + +var __expected = ["0112"]; +__expected.index = 2; +__expected.input = "0a01122b"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T8.js new file mode 100644 index 0000000000..e0bb7ef121 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T8.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T8 +description: Execute /b{2,3}c/.exec("aaabbbbcccddeeeefffff") and check results +---*/ + +var __executed = /b{2,3}c/.exec("aaabbbbcccddeeeefffff"); + +var __expected = ["bbbc"]; +__expected.index = 4; +__expected.input = "aaabbbbcccddeeeefffff"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T9.js new file mode 100644 index 0000000000..a6fab5cedb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A1_T9.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , DecimalDigits } + evaluates as ... +es5id: 15.10.2.7_A1_T9 +description: Execute /b{42,93}c/.exec("aaabbbbcccddeeeefffff") and check results +---*/ + +var __executed = /b{42,93}c/.test("aaabbbbcccddeeeefffff"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T1.js new file mode 100644 index 0000000000..f44569d91b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T1.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + i) The production QuantifierPrefix :: { DecimalDigits } evaluates... + ii) The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1 +es5id: 15.10.2.7_A2_T1 +description: Execute /\w{3}\d?/.exec("CE\uFFFFL\uFFDDbox127") and check results +---*/ + +var __executed = /\w{3}\d?/.exec("CE\uFFFFL\uFFDDbox127"); + +var __expected = ["box1"]; +__expected.index = 5; +__expected.input = "CE\uFFFFL\uFFDDbox127"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T2.js new file mode 100644 index 0000000000..c32caec3cb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T2.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + i) The production QuantifierPrefix :: { DecimalDigits } evaluates... + ii) The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1 +es5id: 15.10.2.7_A2_T2 +description: Execute /\w{3}\d?/.exec("CELL\uFFDDbox127") and check results +---*/ + +var __executed = /\w{3}\d?/.exec("CELL\uFFDDbox127"); + +var __expected = ["CEL"]; +__expected.index = 0; +__expected.input = "CELL\uFFDDbox127"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T3.js new file mode 100644 index 0000000000..e54ef03785 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T3.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + i) The production QuantifierPrefix :: { DecimalDigits } evaluates... + ii) The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1 +es5id: 15.10.2.7_A2_T3 +description: Execute /b{2}c/.exec("aaabbbbcccddeeeefffff") and check results +---*/ + +var __executed = /b{2}c/.exec("aaabbbbcccddeeeefffff"); + +var __expected = ["bbc"]; +__expected.index = 5; +__expected.input = "aaabbbbcccddeeeefffff"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T4.js new file mode 100644 index 0000000000..e11162cc6c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A2_T4.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + i) The production QuantifierPrefix :: { DecimalDigits } evaluates... + ii) The production QuantifierPrefix :: ? evaluates by returning the two results 0 and 1 +es5id: 15.10.2.7_A2_T4 +description: Execute /b{8}c/.test("aaabbbbcccddeeeefffff") and check results +---*/ + +var __executed = /b{8}/.test("aaabbbbcccddeeeefffff"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T1.js new file mode 100644 index 0000000000..072d081318 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T1.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T1 +description: Execute /\s+java\s+/.exec("language java\n") and check results +---*/ + +var __executed = /\s+java\s+/.exec("language java\n"); + +var __expected = [" java\n"]; +__expected.index = 8; +__expected.input = "language java\n"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T10.js new file mode 100644 index 0000000000..4315cc7f54 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T10.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T10 +description: Execute /o+/.test("abcdefg") and check results +---*/ + +var __executed = /o+/.test("abcdefg"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T11.js new file mode 100644 index 0000000000..c0f1d1ce9c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T11.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T11 +description: Execute /d+/.exec("abcdefg") and check results +---*/ + +var __executed = /d+/.exec("abcdefg"); + +var __expected = ["d"]; +__expected.index = 3; +__expected.input = "abcdefg"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T12.js new file mode 100644 index 0000000000..2e135ae152 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T12.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T12 +description: Execute /(b+)(b+)(b+)/.exec("abbbbbbbc") and check results +---*/ + +var __executed = /(b+)(b+)(b+)/.exec("abbbbbbbc"); + +var __expected = ["bbbbbbb","bbbbb","b","b"]; +__expected.index = 1; +__expected.input = "abbbbbbbc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T13.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T13.js new file mode 100644 index 0000000000..5515362667 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T13.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T13 +description: Execute /(b+)(b*)/.exec("abbbbbbbc") and check results +---*/ + +var __executed = /(b+)(b*)/.exec("abbbbbbbc"); + +var __expected = ["bbbbbbb","bbbbbbb",""]; +__expected.index = 1; +__expected.input = "abbbbbbbc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T14.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T14.js new file mode 100644 index 0000000000..0b5fba3cc0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T14.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T14 +description: Execute /b*b+/.exec("abbbbbbbc") and check results +---*/ + +var __executed = /b*b+/.exec("abbbbbbbc"); + +var __expected = ["bbbbbbb"]; +__expected.index = 1; +__expected.input = "abbbbbbbc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T2.js new file mode 100644 index 0000000000..a39ca721cc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T2.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T2 +description: Execute /\s+java\s+/.exec("\t java object") and check results +---*/ + +var __executed = /\s+java\s+/.exec("\t java object"); + +var __expected = ["\t java "]; +__expected.index = 0; +__expected.input = "\t java object"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T3.js new file mode 100644 index 0000000000..1aeef1d1e5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T3.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T3 +description: Execute /\s+java\s+/.test("\t javax package") and check results +---*/ + +var __executed = /\s+java\s+/.test("\t javax package"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T4.js new file mode 100644 index 0000000000..31a6563c49 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T4.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T4 +description: Execute /\s+java\s+/.test("java\n\nobject") and check results +---*/ + +var __executed = /\s+java\s+/.test("java\n\nobject"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T5.js new file mode 100644 index 0000000000..5470c84056 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T5.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T5 +description: > + Execute /[a-z]+\d+/.exec("x 2 ff 55 x2 as1 z12 abc12.0") and check + results +---*/ + +var __executed = /[a-z]+\d+/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); + +var __expected = ["x2"]; +__expected.index = 10; +__expected.input = "x 2 ff 55 x2 as1 z12 abc12.0"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T6.js new file mode 100644 index 0000000000..82fdad1ebb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T6.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T6 +description: Execute /[a-z]+\d+/.exec("__abc123.0") and check results +---*/ + +var __executed = /[a-z]+\d+/.exec("__abc123.0"); + +var __expected = ["abc123"]; +__expected.index = 2; +__expected.input = "__abc123.0"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T7.js new file mode 100644 index 0000000000..5b40564801 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T7.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T7 +description: > + Execute /[a-z]+(\d+)/.exec("x 2 ff 55 x2 as1 z12 abc12.0") and + check results +---*/ + +var __executed = /[a-z]+(\d+)/.exec("x 2 ff 55 x2 as1 z12 abc12.0"); + +var __expected = ["x2","2"]; +__expected.index = 10; +__expected.input = "x 2 ff 55 x2 as1 z12 abc12.0"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T8.js new file mode 100644 index 0000000000..bac3261480 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T8.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T8 +description: Execute /[a-z]+(\d+)/.exec("__abc123.0") and check results +---*/ + +var __executed = /[a-z]+(\d+)/.exec("__abc123.0"); + +var __expected = ["abc123","123"]; +__expected.index = 2; +__expected.input = "__abc123.0"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T9.js new file mode 100644 index 0000000000..3b10792323 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A3_T9.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: + evaluates by returning the two + results 1 and \infty +es5id: 15.10.2.7_A3_T9 +description: Execute /d+/.exec("abcdddddefg") and check results +---*/ + +var __executed = /d+/.exec("abcdddddefg"); + +var __expected = ["ddddd"]; +__expected.index = 3; +__expected.input = "abcdddddefg"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T1.js new file mode 100644 index 0000000000..f0cd20dee5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T1.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T1 +description: Execute /[^"]* /.exec('"beast"-nickname') and check results +---*/ + +var __executed = /[^"]*/.exec('"beast"-nickname'); + +var __expected = [""]; +__expected.index = 0; +__expected.input = '"beast"-nickname'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T10.js new file mode 100644 index 0000000000..948d57a348 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T10.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T10 +description: Execute /d* /.exec('abcddddefg') and check results +---*/ + +var __executed = /d*/.exec('abcddddefg'); + +var __expected = [""]; +__expected.index = 0; +__expected.input = 'abcddddefg'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T11.js new file mode 100644 index 0000000000..b681718210 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T11.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T11 +description: Execute /cd* /.exec('abcddddefg') and check results +---*/ + +var __executed = /cd*/.exec('abcddddefg'); + +var __expected = ["cdddd"]; +__expected.index = 2; +__expected.input = 'abcddddefg'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T12.js new file mode 100644 index 0000000000..395efeb782 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T12.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T12 +description: Execute /cx*d/.exec('abcdefg') and check results +---*/ + +var __executed = /cx*d/.exec('abcdefg'); + +var __expected = ["cd"]; +__expected.index = 2; +__expected.input = 'abcdefg'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T13.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T13.js new file mode 100644 index 0000000000..3923e10cea --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T13.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T13 +description: Execute /(x*)(x+)/.exec('xxxxxxx') and check results +---*/ + +var __executed = /(x*)(x+)/.exec('xxxxxxx'); + +var __expected = ["xxxxxxx","xxxxxx","x"]; +__expected.index = 0; +__expected.input = 'xxxxxxx'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T14.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T14.js new file mode 100644 index 0000000000..b2c67150d2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T14.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T14 +description: Execute /(\d*)(\d+)/.exec('1234567890') and check results +---*/ + +var __executed = /(\d*)(\d+)/.exec('1234567890'); + +var __expected = ["1234567890","123456789","0"]; +__expected.index = 0; +__expected.input = '1234567890'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T15.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T15.js new file mode 100644 index 0000000000..17d1e74011 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T15.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T15 +description: Execute /(\d*)\d(\d+)/.exec('1234567890') and check results +---*/ + +var __executed = /(\d*)\d(\d+)/.exec('1234567890'); + +var __expected = ["1234567890","12345678","0"]; +__expected.index = 0; +__expected.input = '1234567890'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T16.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T16.js new file mode 100644 index 0000000000..7a6fb47f58 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T16.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T16 +description: Execute /(x+)(x*)/.exec('xxxxxxx') and check results +---*/ + +var __executed = /(x+)(x*)/.exec('xxxxxxx'); + +var __expected = ["xxxxxxx","xxxxxxx",""]; +__expected.index = 0; +__expected.input = 'xxxxxxx'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T17.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T17.js new file mode 100644 index 0000000000..3b101535fd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T17.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T17 +description: Execute /x*y+$/.exec('xxxxxxyyyyyy') and check results +---*/ + +var __executed = /x*y+$/.exec('xxxxxxyyyyyy'); + +var __expected = ["xxxxxxyyyyyy"]; +__expected.index = 0; +__expected.input = 'xxxxxxyyyyyy'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T18.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T18.js new file mode 100644 index 0000000000..7a0bc65cde --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T18.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T18 +description: Execute /[\d]*[\s]*bc./.exec('abcdef') and check results +---*/ + +var __executed = /[\d]*[\s]*bc./.exec('abcdef'); + +var __expected = ["bcd"]; +__expected.index = 1; +__expected.input = 'abcdef'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T19.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T19.js new file mode 100644 index 0000000000..602e50140a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T19.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T19 +description: Execute /bc..[\d]*[\s]* /.exec('abcdef') and check results +---*/ + +var __executed = /bc..[\d]*[\s]*/.exec('abcdef'); + +var __expected = ["bcde"]; +__expected.index = 1; +__expected.input = 'abcdef'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T2.js new file mode 100644 index 0000000000..58d918c352 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T2.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T2 +description: "Execute /[^\"]* /.exec('alice said: \"don\\'t\"') and check results" +---*/ + +var __executed = /[^"]*/.exec('alice said: "don\'t"'); + +var __expected = ["alice said: "]; +__expected.index = 0; +__expected.input = 'alice said: "don\'t"'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T20.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T20.js new file mode 100644 index 0000000000..63b815f24f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T20.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T20 +description: Execute /.* /.exec('a1b2c3') and check results +---*/ + +var __executed = /.*/.exec('a1b2c3'); + +var __expected = ["a1b2c3"]; +__expected.index = 0; +__expected.input = 'a1b2c3'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T21.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T21.js new file mode 100644 index 0000000000..cf968dbe01 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T21.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T21 +description: Execute /[xyz]*1/.test('a0.b2.c3') and check results +---*/ + +var __executed = /[xyz]*1/.test('a0.b2.c3'); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T3.js new file mode 100644 index 0000000000..52bacbcce1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T3.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T3 +description: Execute /[^"]* /.exec("before\'i\'start") and check results +---*/ + +var __executed = /[^"]*/.exec("before\'i\'start"); + +var __expected = ["before\'i\'start"]; +__expected.index = 0; +__expected.input = "before\'i\'start"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T4.js new file mode 100644 index 0000000000..2b54118720 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T4.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T4 +description: > + Execute /[^"]* /.exec('alice \"sweep\": "don\'t"') and check + results +---*/ + +var __executed = /[^"]*/.exec('alice \"sweep\": "don\'t"'); + +var __expected = ["alice "]; +__expected.index = 0; +__expected.input = 'alice \"sweep\": "don\'t"'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T5.js new file mode 100644 index 0000000000..23a729ff41 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T5.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T5 +description: > + Execute /[^"]* /.exec('alice \u0022sweep\u0022: "don\'t"') and + check results +---*/ + +var __executed = /[^"]*/.exec('alice \u0022sweep\u0022: "don\'t"'); + +var __expected = ["alice "]; +__expected.index = 0; +__expected.input = 'alice "sweep": "don\'t"'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T6.js new file mode 100644 index 0000000000..c4a1af3672 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T6.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T6 +description: > + Execute /["'][^"']*["']/.exec('alice \u0022sweep\u0022: "don\'t"') + and check results +---*/ + +var __executed = /["'][^"']*["']/.exec('alice \u0022sweep\u0022: "don\'t"'); + +var __expected = ["\"sweep\""]; +__expected.index = 6; +__expected.input = 'alice "sweep": "don\'t"'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T7.js new file mode 100644 index 0000000000..da460ae8c4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T7.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T7 +description: > + Execute /["'][^"']*["']/.exec('alice cries out: \'don\'t\'') and + check results +---*/ + +var __executed = /["'][^"']*["']/.exec('alice cries out: \'don\'t\''); + +var __expected = ["\'don\'"]; +__expected.index = 17; +__expected.input = 'alice cries out: \'don\'t\''; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T8.js new file mode 100644 index 0000000000..e8c14f6abc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T8.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T8 +description: > + Execute /["'][^"']*["']/.test('alice cries out: don\'t') and check + results +---*/ + +var __executed = /["'][^"']*["']/.test('alice cries out: don\'t'); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T9.js new file mode 100644 index 0000000000..fe9bb09679 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A4_T9.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: * evaluates by returning the two + results 0 and \infty +es5id: 15.10.2.7_A4_T9 +description: > + Execute /["'][^"']*["']/.exec('alice cries out:\"\"') and check + results +---*/ + +var __executed = /["'][^"']*["']/.exec('alice cries out:\"\"'); + +var __expected = ['\"\"']; +__expected.index = 16; +__expected.input = 'alice cries out:\"\"'; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T1.js new file mode 100644 index 0000000000..5e3c767f9a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T1.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T1 +description: > + Execute /java(script)?/.exec("state: javascript is extension of + ecma script") and check results +---*/ + +var __executed = /java(script)?/.exec("state: javascript is extension of ecma script"); + +var __expected = ["javascript", "script"]; +__expected.index = 7; +__expected.input = "state: javascript is extension of ecma script"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T10.js new file mode 100644 index 0000000000..ef584ffdd5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T10.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T10 +description: Execute /ab?c?d?x?y?z/.exec("123az789") and check results +---*/ + +var __executed = /ab?c?d?x?y?z/.exec("123az789"); + +var __expected = ["az"]; +__expected.index = 3; +__expected.input = "123az789"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T11.js new file mode 100644 index 0000000000..ff6e848627 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T11.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T11 +description: Execute /\??\??\??\??\??/.exec("?????") and check results +---*/ + +var __executed = /\??\??\??\??\??/.exec("?????"); + +var __expected = ["?????"]; +__expected.index = 0; +__expected.input = "?????"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T12.js new file mode 100644 index 0000000000..26ea7cf5f8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T12.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T12 +description: Execute /.?.?.?.?.?.?.?/.exec("test") and check results +---*/ + +var __executed = /.?.?.?.?.?.?.?/.exec("test"); + +var __expected = ["test"]; +__expected.index = 0; +__expected.input = "test"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T2.js new file mode 100644 index 0000000000..c564977263 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T2.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T2 +description: > + Execute /java(script)?/.exec("state: java and javascript are + vastly different") and check results +---*/ + +var __executed = /java(script)?/.exec("state: java and javascript are vastly different"); + +var __expected = ["java", undefined]; +__expected.index = 7; +__expected.input = "state: java and javascript are vastly different"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T3.js new file mode 100644 index 0000000000..e1ffbf274d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T3.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T3 +description: > + Execute /java(script)?/.test("state: both Java and JavaScript used + in web development") and check results +---*/ + +var __executed = /java(script)?/.test("state: both Java and JavaScript used in web development"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T4.js new file mode 100644 index 0000000000..2d92531837 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T4.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T4 +description: Execute /cd?e/.exec("abcdef") and check results +---*/ + +var __executed = /cd?e/.exec("abcdef"); + +var __expected = ["cde"]; +__expected.index = 2; +__expected.input = "abcdef"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T5.js new file mode 100644 index 0000000000..e82cf268ec --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T5.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T5 +description: Execute /cdx?e/.exec("abcdef") and check results +---*/ + +var __executed = /cdx?e/.exec("abcdef"); + +var __expected = ["cde"]; +__expected.index = 2; +__expected.input = "abcdef"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T6.js new file mode 100644 index 0000000000..866129d5ca --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T6.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T6 +description: Execute /o?pqrst/.exec("pqrstuvw") and check results +---*/ + +var __executed = /o?pqrst/.exec("pqrstuvw"); + +var __expected = ["pqrst"]; +__expected.index = 0; +__expected.input = "pqrstuvw"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T7.js new file mode 100644 index 0000000000..2744ff1d60 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T7.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T7 +description: Execute /x?y?z?/.exec("abcd") and check results +---*/ + +var __executed = /x?y?z?/.exec("abcd"); + +var __expected = [""]; +__expected.index = 0; +__expected.input = "abcd"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T8.js new file mode 100644 index 0000000000..7198133279 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T8.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T8 +description: Execute /x?ay?bz?c/.exec("abcd") and check results +---*/ + +var __executed = /x?ay?bz?c/.exec("abcd"); + +var __expected = ["abc"]; +__expected.index = 0; +__expected.input = "abcd"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T9.js new file mode 100644 index 0000000000..400828d583 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A5_T9.js @@ -0,0 +1,44 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: ? evaluates by returning the two + results 0 and 1 +es5id: 15.10.2.7_A5_T9 +description: Execute /b?b?b?b/.exec("abbbbc") and check results +---*/ + +var __executed = /b?b?b?b/.exec("abbbbc"); + +var __expected = ["bbbb"]; +__expected.index = 1; +__expected.input = "abbbbc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T1.js new file mode 100644 index 0000000000..54c1647ee7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T1.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows: + i) Let i be the MV of DecimalDigits + ii) Return the two results i and \infty +es5id: 15.10.2.7_A6_T1 +description: Execute /b{2,}c/.exec("aaabbbbcccddeeeefffff") and check results +---*/ + +var __executed = /b{2,}c/.exec("aaabbbbcccddeeeefffff"); + +var __expected = ["bbbbc"]; +__expected.index = 3; +__expected.input = "aaabbbbcccddeeeefffff"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T2.js new file mode 100644 index 0000000000..92975448cf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T2.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows: + i) Let i be the MV of DecimalDigits + ii) Return the two results i and \infty +es5id: 15.10.2.7_A6_T2 +description: Execute /b{8,}c/.test("aaabbbbcccddeeeefffff") and check results +---*/ + +var __executed = /b{8,}c/.test("aaabbbbcccddeeeefffff"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T3.js new file mode 100644 index 0000000000..3262cab91e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T3.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows: + i) Let i be the MV of DecimalDigits + ii) Return the two results i and \infty +es5id: 15.10.2.7_A6_T3 +description: Execute /\d{1,}/.exec("wqe456646dsff") and check results +---*/ + +var __executed = /\d{1,}/.exec("wqe456646dsff"); + +var __expected = ["456646"]; +__expected.index = 3; +__expected.input = "wqe456646dsff"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T4.js new file mode 100644 index 0000000000..fad3bca88b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T4.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows: + i) Let i be the MV of DecimalDigits + ii) Return the two results i and \infty +es5id: 15.10.2.7_A6_T4 +description: Execute /(123){1,}/.exec("123123") and check results +---*/ + +var __executed = /(123){1,}/.exec("123123"); + +var __expected = ["123123","123"]; +__expected.index = 0; +__expected.input = "123123"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T5.js new file mode 100644 index 0000000000..96fa2c7f79 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T5.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows: + i) Let i be the MV of DecimalDigits + ii) Return the two results i and \infty +es5id: 15.10.2.7_A6_T5 +description: Execute /(123){1,}x\1/.exec("123123x123") and check results +---*/ + +var __executed = /(123){1,}x\1/.exec("123123x123"); + +var __expected = ["123123x123","123"]; +__expected.index = 0; +__expected.input = "123123x123"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T6.js new file mode 100644 index 0000000000..32ede9c0a7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.7_A6_T6.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production QuantifierPrefix :: { DecimalDigits , }evaluates as follows: + i) Let i be the MV of DecimalDigits + ii) Return the two results i and \infty +es5id: 15.10.2.7_A6_T6 +description: Execute /x{1,2}x{1,}/.exec("xxxxxxx") and check results +---*/ + +var __executed = /x{1,2}x{1,}/.exec("xxxxxxx"); + +var __expected = ["xxxxxxx"]; +__expected.index = 0; +__expected.input = "xxxxxxx"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T1.js new file mode 100644 index 0000000000..29b1ff56af --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T1.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?= Disjunction ) specifies a zero-width positive lookahead. + In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel. + If Disjunction can match at the current position in several ways, only the first one is tried +es5id: 15.10.2.8_A1_T1 +description: Execute /(?=(a+))/.exec("baaabac") and check results +---*/ + +var __executed = /(?=(a+))/.exec("baaabac"); + +var __expected = ["", "aaa"]; +__expected.index = 1; +__expected.input = "baaabac"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T2.js new file mode 100644 index 0000000000..2b7bb21a44 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T2.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?= Disjunction ) specifies a zero-width positive lookahead. + In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel. + If Disjunction can match at the current position in several ways, only the first one is tried +es5id: 15.10.2.8_A1_T2 +description: Execute /(?=(a+))a*b\1/.exec("baaabac") and check results +---*/ + +var __executed = /(?=(a+))a*b\1/.exec("baaabac"); + +var __expected = ["aba", "a"]; +__expected.index = 3; +__expected.input = "baaabac"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T3.js new file mode 100644 index 0000000000..1c016971a6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T3.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?= Disjunction ) specifies a zero-width positive lookahead. + In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel. + If Disjunction can match at the current position in several ways, only the first one is tried +es5id: 15.10.2.8_A1_T3 +description: > + Execute /[Jj]ava([Ss]cript)?(?=\:)/.exec("just Javascript: the way + af jedi") and check results +---*/ + +var __executed = /[Jj]ava([Ss]cript)?(?=\:)/.exec("just Javascript: the way af jedi"); + +var __expected = ["Javascript", "script"]; +__expected.index = 5; +__expected.input = "just Javascript: the way af jedi"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T4.js new file mode 100644 index 0000000000..250f19027c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T4.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?= Disjunction ) specifies a zero-width positive lookahead. + In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel. + If Disjunction can match at the current position in several ways, only the first one is tried +es5id: 15.10.2.8_A1_T4 +description: > + Execute /[Jj]ava([Ss]cript)?(?=\:)/.exec("taste of java: the + cookbook ") and check results +---*/ + +var __executed = /[Jj]ava([Ss]cript)?(?=\:)/.exec("taste of java: the cookbook "); + +var __expected = ["java", undefined]; +__expected.index = 9; +__expected.input = "taste of java: the cookbook "; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T5.js new file mode 100644 index 0000000000..4115251998 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A1_T5.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?= Disjunction ) specifies a zero-width positive lookahead. + In order for it to succeed, the pattern inside Disjunction must match at the current position, but the current position is not advanced before matching the sequel. + If Disjunction can match at the current position in several ways, only the first one is tried +es5id: 15.10.2.8_A1_T5 +description: > + Execute /[Jj]ava([Ss]cript)?(?=\:)/.test("rhino is JavaScript + engine") and check results +---*/ + +var __executed = /[Jj]ava([Ss]cript)?(?=\:)/.test("rhino is JavaScript engine"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T1.js new file mode 100644 index 0000000000..97af14fa67 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T1.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T1 +description: > + Execute /(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac") and check + results +---*/ + +var __executed = /(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac"); + +var __expected = ["baaabaac", "ba", undefined, "abaac"]; +__expected.index = 0; +__expected.input = "baaabaac"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T10.js new file mode 100644 index 0000000000..4bf35f2a06 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T10.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T10 +description: Execute /(?!a|b)|c/.exec("bc") and check results +---*/ + +var __executed = /(?!a|b)|c/.exec("bc"); + +var __expected = [""]; +__expected.index = 1; +__expected.input = "bc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T11.js new file mode 100644 index 0000000000..11ac98acbe --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T11.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T11 +description: Execute /(?!a|b)|c/.exec("d") and check results +---*/ + +var __executed = /(?!a|b)|c/.exec("d"); + +var __expected = [""]; +__expected.index = 0; +__expected.input = "d"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T2.js new file mode 100644 index 0000000000..d6b8b49fde --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T2.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T2 +description: > + Execute /Java(?!Script)([A-Z]\w*)/.exec("using of JavaBeans + technology") and check results +---*/ + +var __executed = /Java(?!Script)([A-Z]\w*)/.exec("using of JavaBeans technology"); + +var __expected = ["JavaBeans", "Beans"]; +__expected.index = 9; +__expected.input = "using of JavaBeans technology"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T3.js new file mode 100644 index 0000000000..79cc4000a9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T3.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T3 +description: > + Execute /Java(?!Script)([A-Z]\w*)/.test("using of Java language") + and check results +---*/ + +var __executed = /Java(?!Script)([A-Z]\w*)/.test("using of Java language"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T4.js new file mode 100644 index 0000000000..1739ef884c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T4.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T4 +description: > + Execute /Java(?!Script)([A-Z]\w*)/.test("i'm a JavaScripter ") and + check results +---*/ + +var __executed = /Java(?!Script)([A-Z]\w*)/.test("i'm a JavaScripter "); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T5.js new file mode 100644 index 0000000000..19941de311 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T5.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T5 +description: > + Execute /Java(?!Script)([A-Z]\w*)/.exec("JavaScr oops ipt ") and + check results +---*/ + +var __executed = /Java(?!Script)([A-Z]\w*)/.exec("JavaScr oops ipt "); + +var __expected = ["JavaScr", "Scr"]; +__expected.index = 0; +__expected.input = "JavaScr oops ipt "; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T6.js new file mode 100644 index 0000000000..6422a3f641 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T6.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T6 +description: Execute /(\.(?!com|org)|\/)/.exec("ah.info") and check results +---*/ + +var __executed = /(\.(?!com|org)|\/)/.exec("ah.info"); + +var __expected = ['.', '.']; +__expected.index = 2; +__expected.input = "ah.info"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T7.js new file mode 100644 index 0000000000..50a6ab57b1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T7.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T7 +description: Execute /(\.(?!com|org)|\/)/.exec("ah/info") and check results +---*/ + +var __executed = /(\.(?!com|org)|\/)/.exec("ah/info"); + +var __expected = ['/', '/']; +__expected.index = 2; +__expected.input = "ah/info"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T8.js new file mode 100644 index 0000000000..6ae39b2fd6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T8.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T8 +description: Execute /(\.(?!com|org)|\/)/.test("ah.com") and check results +---*/ + +var __executed = /(\.(?!com|org)|\/)/.test("ah.com"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T9.js new file mode 100644 index 0000000000..5450143ebd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A2_T9.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The form (?! Disjunction ) specifies a zero-width negative lookahead. + In order for it to succeed, the pattern inside Disjunction must fail to match at the current position. + The current position is not advanced before matching the sequel +es5id: 15.10.2.8_A2_T9 +description: Execute /(?!a|b)|c/.exec("") and check results +---*/ + +var __executed = /(?!a|b)|c/.exec(""); + +var __expected = [""]; +__expected.index = 0; +__expected.input = ""; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T1.js new file mode 100644 index 0000000000..cf6d753d75 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T1.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T1 +description: > + Execute /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.exec("Learning + javaScript is funny, really") and check results +---*/ + +var __executed = /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.exec("Learning javaScript is funny, really"); + +var __expected = ["javaScript is funny","javaScript","Script","funny"]; +__expected.index = 9; +__expected.input = "Learning javaScript is funny, really"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T10.js new file mode 100644 index 0000000000..5277cdb721 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T10.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T10 +description: Execute /(\d{3})(\d{3})\1\2/.exec("123456123456") and check results +---*/ + +var __executed = /(\d{3})(\d{3})\1\2/.exec("123456123456"); + +var __expected = ["123456123456","123","456"]; +__expected.index = 0; +__expected.input = "123456123456"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T11.js new file mode 100644 index 0000000000..8ef2996ce6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T11.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T11 +description: Execute /a(..(..)..)/.exec("abcdefgh") and check results +---*/ + +var __executed = /a(..(..)..)/.exec("abcdefgh"); + +var __expected = ["abcdefg","bcdefg","de"]; +__expected.index = 0; +__expected.input = "abcdefgh"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T12.js new file mode 100644 index 0000000000..ecd8901659 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T12.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T12 +description: Execute /(a(b(c)))(d(e(f)))/.exec("xabcdefg") and check results +---*/ + +var __executed = /(a(b(c)))(d(e(f)))/.exec("xabcdefg"); + +var __expected = ["abcdef","abc","bc","c","def","ef","f"]; +__expected.index = 1; +__expected.input = "xabcdefg"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T13.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T13.js new file mode 100644 index 0000000000..c16fe9f704 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T13.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T13 +description: > + Execute /(a(b(c)))(d(e(f)))\2\5/.exec("xabcdefbcefg") and check + results +---*/ + +var __executed = /(a(b(c)))(d(e(f)))\2\5/.exec("xabcdefbcefg"); + +var __expected = ["abcdefbcef","abc","bc","c","def","ef","f"]; +__expected.index = 1; +__expected.input = "xabcdefbcefg"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T14.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T14.js new file mode 100644 index 0000000000..c0bfcf6127 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T14.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T14 +description: Execute /a(.?)b\1c\1d\1/.exec("abcd") and check results +---*/ + +var __executed = /a(.?)b\1c\1d\1/.exec("abcd"); + +var __expected = ["abcd",""]; +__expected.index = 0; +__expected.input = "abcd"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T15.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T15.js new file mode 100644 index 0000000000..07133691c1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T15.js @@ -0,0 +1,64 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T15 +description: "see bug http:bugzilla.mozilla.org/show_bug.cgi?id=119909" +---*/ + +var __strOriginal = "hello"; +var __openParen = '('; +var __closeParen = ')'; +var __pattern = ''; +var numParens = 200; + +for (var i=0; i((.*\n?)*?)<\/body>/i.exec(__html); + +var __expected = [__body, '\n

Kibology for all

\n

All for Kibology

\n', '

All for Kibology

\n']; +__expected.index = 7; +__expected.input = __html; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T18.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T18.js new file mode 100644 index 0000000000..d5a6abd516 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T18.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T18 +description: "see bug http:bugzilla.mozilla.org/show_bug.cgi?id=169534" +---*/ + +var __replaced = "To sign up click |here|https:www.xxxx.org/subscribe.htm|".replace(/(\|)([\w\x81-\xff ]*)(\|)([\/a-z][\w:\/\.]*\.[a-z]{3,4})(\|)/ig, '$2'); + +var __expected = 'To sign up click here'; + +assert.sameValue(__replaced, __expected, 'The value of __replaced is expected to equal the value of __expected'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T19.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T19.js new file mode 100644 index 0000000000..d4ceeb9749 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T19.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T19 +description: > + Execute /([\S]+([ \t]+[\S]+)*)[ \t]*=[ + \t]*[\S]+/.exec("Course_Creator = Test") and check results +---*/ + +var __executed = /([\S]+([ \t]+[\S]+)*)[ \t]*=[ \t]*[\S]+/.exec("Course_Creator = Test"); + +var __expected = ["Course_Creator = Test","Course_Creator",undefined]; +__expected.index = 0; +__expected.input = "Course_Creator = Test"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T2.js new file mode 100644 index 0000000000..370a1abc26 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T2.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T2 +description: > + Execute /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.exec("Developing + with Java is fun, try it") and check results +---*/ + +var __executed = /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.exec("Developing with Java is fun, try it"); + +var __expected = ["Java is fun","Java",undefined,"fun"]; +__expected.index = 16; +__expected.input = "Developing with Java is fun, try it"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T20.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T20.js new file mode 100644 index 0000000000..71c30023d1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T20.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T20 +description: Execute /^(A)?(A.*)$/.exec("AAA") and check results +---*/ + +var __executed = /^(A)?(A.*)$/.exec("AAA"); + +var __expected = ["AAA","A","AA"]; +__expected.index = 0; +__expected.input = "AAA"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T21.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T21.js new file mode 100644 index 0000000000..0d4447f054 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T21.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T21 +description: Execute /^(A)?(A.*)$/.exec("AA") and check results +---*/ + +var __executed = /^(A)?(A.*)$/.exec("AA"); + +var __expected = ["AA","A","A"]; +__expected.index = 0; +__expected.input = "AA"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T22.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T22.js new file mode 100644 index 0000000000..4f1c2aad1d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T22.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T22 +description: Execute /^(A)?(A.*)$/.exec("A") and check results +---*/ + +var __executed = /^(A)?(A.*)$/.exec("A"); + +var __expected = ["A",undefined,"A"]; +__expected.index = 0; +__expected.input = "A"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T23.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T23.js new file mode 100644 index 0000000000..36fe0946a0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T23.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T23 +description: > + Execute /(A)?(A.*)/.exec("zxcasd;fl\\\ ^AAAaaAAaaaf;lrlrzs") and + check results +---*/ + +var __string = "zxcasd;fl\\\ ^AAAaaAAaaaf;lrlrzs"; + +var __executed = /(A)?(A.*)/.exec(__string); + +var __expected = ["AAAaaAAaaaf;lrlrzs","A","AAaaAAaaaf;lrlrzs"]; +__expected.index = 13; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T24.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T24.js new file mode 100644 index 0000000000..f77fcd6d4b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T24.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T24 +description: > + Execute /(A)?(A.*)/.exec("zxcasd;fl\\\ ^AAaaAAaaaf;lrlrzs") and + check results +---*/ + +var __string = "zxcasd;fl\\\ ^AAaaAAaaaf;lrlrzs"; + +var __executed = /(A)?(A.*)/.exec(__string); + +var __expected = ["AAaaAAaaaf;lrlrzs","A","AaaAAaaaf;lrlrzs"]; +__expected.index = 13; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T25.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T25.js new file mode 100644 index 0000000000..bb7309293b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T25.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T25 +description: > + Execute /(A)?(A.*)/.exec("zxcasd;fl\\\ ^AaaAAaaaf;lrlrzs") and + check results +---*/ + +var __string = "zxcasd;fl\\\ ^AaaAAaaaf;lrlrzs"; + +var __executed = /(A)?(A.*)/.exec(__string); + +var __expected = ["AaaAAaaaf;lrlrzs",undefined,"AaaAAaaaf;lrlrzs"]; +__expected.index = 13; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T26.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T26.js new file mode 100644 index 0000000000..f87e8e9421 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T26.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T26 +description: Execute /(a)?a/.exec("a") and check results +---*/ + +var __string = "a"; + +var __executed = /(a)?a/.exec(__string); + +var __expected = ["a",undefined]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T27.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T27.js new file mode 100644 index 0000000000..2cd86fb3e8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T27.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T27 +description: Execute /a|(b)/.exec("a") and check results +---*/ + +var __string = "a"; + +var __executed = /a|(b)/.exec(__string); + +var __expected = ["a",undefined]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T28.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T28.js new file mode 100644 index 0000000000..08d6919c8a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T28.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T28 +description: Execute /(a)?(a)/.exec("a") and check results +---*/ + +var __string = "a"; + +var __executed = /(a)?(a)/.exec(__string); + +var __expected = ['a', undefined, 'a']; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T29.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T29.js new file mode 100644 index 0000000000..b0e0906fe1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T29.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T29 +description: "See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353" +---*/ + +var __string = "a"; + +var __executed = /^([a-z]+)*[a-z]$/.exec(__string); + +var __expected = ['a', undefined]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T3.js new file mode 100644 index 0000000000..2a8065a982 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T3.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T3 +description: > + Execute /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.test("Developing + with JavaScript is dangerous, do not try it without assistance") + and check results +---*/ + +var __executed = /([Jj]ava([Ss]cript)?)\sis\s(fun\w*)/.test("Developing with JavaScript is dangerous, do not try it without assistance"); + +assert(!__executed, 'The value of !__executed is expected to be true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T30.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T30.js new file mode 100644 index 0000000000..2eeccafe13 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T30.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T30 +description: "See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353" +---*/ + +var __string = "ab"; + +var __executed = /^([a-z]+)*[a-z]$/.exec(__string); + +var __expected = ['ab', "a"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T31.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T31.js new file mode 100644 index 0000000000..0ea67e6548 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T31.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T31 +description: "See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353" +---*/ + +var __string = "abc"; + +var __executed = /^([a-z]+)*[a-z]$/.exec(__string); + +var __expected = ['abc', "ab"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T32.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T32.js new file mode 100644 index 0000000000..82df62b732 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T32.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T32 +description: "See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353" +---*/ + +var __string = "www.netscape.com"; + +var __executed = /^(([a-z]+)*[a-z]\.)+[a-z]{2,}$/.exec(__string); + +var __expected = ['www.netscape.com', 'netscape.', 'netscap']; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T33.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T33.js new file mode 100644 index 0000000000..8d4c4ca701 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T33.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T33 +description: "See bug http:bugzilla.mozilla.org/show_bug.cgi?id=165353" +---*/ + +var __string = "www.netscape.com"; + +var __executed = /^(([a-z]+)*([a-z])\.)+[a-z]{2,}$/.exec(__string); + +var __expected = ['www.netscape.com', 'netscape.', 'netscap', 'e']; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T4.js new file mode 100644 index 0000000000..c5cc745c44 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T4.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T4 +description: Execute /(abc)/.exec("abc") and check results +---*/ + +var __executed = /(abc)/.exec("abc"); + +var __expected = ["abc","abc"]; +__expected.index = 0; +__expected.input = "abc"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T5.js new file mode 100644 index 0000000000..c7653979c3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T5.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T5 +description: Execute /a(bc)d(ef)g/.exec("abcdefg") and check results +---*/ + +var __executed = /a(bc)d(ef)g/.exec("abcdefg"); + +var __expected = ["abcdefg","bc","ef"]; +__expected.index = 0; +__expected.input = "abcdefg"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T6.js new file mode 100644 index 0000000000..ef359a9be9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T6.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T6 +description: Execute /(.{3})(.{4})/.exec("abcdefgh") and check results +---*/ + +var __executed = /(.{3})(.{4})/.exec("abcdefgh"); + +var __expected = ["abcdefg","abc","defg"]; +__expected.index = 0; +__expected.input = "abcdefgh"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T7.js new file mode 100644 index 0000000000..97ba72a590 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T7.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T7 +description: Execute /(aa)bcd\1/.exec("aabcdaabcd") and check results +---*/ + +var __executed = /(aa)bcd\1/.exec("aabcdaabcd"); + +var __expected = ["aabcdaa","aa"]; +__expected.index = 0; +__expected.input = "aabcdaabcd"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T8.js new file mode 100644 index 0000000000..6432cbbec9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T8.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T8 +description: Execute /(aa).+\1/.exec("aabcdaabcd") and check results +---*/ + +var __executed = /(aa).+\1/.exec("aabcdaabcd"); + +var __expected = ["aabcdaa","aa"]; +__expected.index = 0; +__expected.input = "aabcdaabcd"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T9.js new file mode 100644 index 0000000000..5d59ba7bdf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A3_T9.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + Parentheses of the form ( Disjunction ) serve both to group the components of the Disjunction pattern together and to save the result of the match. + The result can be used either in a backreference (\ followed by a nonzero decimal number), + referenced in a replace string, + or returned as part of an array from the regular expression matching function +es5id: 15.10.2.8_A3_T9 +description: Execute /(.{2}).+\1/.exec("aabcdaabcd") and check results +---*/ + +var __executed = /(.{2}).+\1/.exec("aabcdaabcd"); + +var __expected = ["aabcdaa","aa"]; +__expected.index = 0; +__expected.input = "aabcdaabcd"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T1.js new file mode 100644 index 0000000000..4553d6d264 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T1.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Atom :: . evaluates as follows: + i) Let A be the set of all characters except the four line terminator characters , , , or + ii) Call CharacterSetMatcher(A, false) and return its Matcher result +es5id: 15.10.2.8_A4_T1 +description: Execute /ab.de/.exec("abcde") and check results +---*/ + +var __string = "abcde"; +var __executed = /ab.de/.exec(__string); + +var __expected = ["abcde"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T2.js new file mode 100644 index 0000000000..d455db1226 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T2.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Atom :: . evaluates as follows: + i) Let A be the set of all characters except the four line terminator characters , , , or + ii) Call CharacterSetMatcher(A, false) and return its Matcher result +es5id: 15.10.2.8_A4_T2 +description: Execute /.+/.exec("line 1\nline 2") and check results +---*/ + +var __string = "line 1\nline 2"; +var __executed = /.+/.exec(__string); + +var __expected = ["line 1"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T3.js new file mode 100644 index 0000000000..57a9cc0b95 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T3.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Atom :: . evaluates as follows: + i) Let A be the set of all characters except the four line terminator characters , , , or + ii) Call CharacterSetMatcher(A, false) and return its Matcher result +es5id: 15.10.2.8_A4_T3 +description: Execute /.*a.* /.exec("this is a test") and check results +---*/ + +var __string = "this is a test"; +var __executed = /.*a.*/.exec(__string); + +var __expected = ["this is a test"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T4.js new file mode 100644 index 0000000000..eb141a1878 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T4.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Atom :: . evaluates as follows: + i) Let A be the set of all characters except the four line terminator characters , , , or + ii) Call CharacterSetMatcher(A, false) and return its Matcher result +es5id: 15.10.2.8_A4_T4 +description: Execute /.+/.exec("this is a *&^%$# test") and check results +---*/ + +var __string = "this is a *&^%$# test"; +var __executed = /.+/.exec(__string); + +var __expected = ["this is a *&^%$# test"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T5.js new file mode 100644 index 0000000000..1beaa1ebad --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T5.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Atom :: . evaluates as follows: + i) Let A be the set of all characters except the four line terminator characters , , , or + ii) Call CharacterSetMatcher(A, false) and return its Matcher result +es5id: 15.10.2.8_A4_T5 +description: Execute /.+/.exec("....") and check results +---*/ + +var __string = "...."; +var __executed = /.+/.exec(__string); + +var __expected = ["...."]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T6.js new file mode 100644 index 0000000000..eaa7d66da1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T6.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Atom :: . evaluates as follows: + i) Let A be the set of all characters except the four line terminator characters , , , or + ii) Call CharacterSetMatcher(A, false) and return its Matcher result +es5id: 15.10.2.8_A4_T6 +description: Execute /.+/.exec("abcdefghijklmnopqrstuvwxyz") and check results +---*/ + +var __string = "abcdefghijklmnopqrstuvwxyz"; +var __executed = /.+/.exec(__string); + +var __expected = ["abcdefghijklmnopqrstuvwxyz"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T7.js new file mode 100644 index 0000000000..227a1d577c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T7.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Atom :: . evaluates as follows: + i) Let A be the set of all characters except the four line terminator characters , , , or + ii) Call CharacterSetMatcher(A, false) and return its Matcher result +es5id: 15.10.2.8_A4_T7 +description: Execute /.+/.exec("ABCDEFGHIJKLMNOPQRSTUVWXYZ") and check results +---*/ + +var __string = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; +var __executed = /.+/.exec(__string); + +var __expected = ["ABCDEFGHIJKLMNOPQRSTUVWXYZ"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T8.js new file mode 100644 index 0000000000..8b94b062d0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T8.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Atom :: . evaluates as follows: + i) Let A be the set of all characters except the four line terminator characters , , , or + ii) Call CharacterSetMatcher(A, false) and return its Matcher result +es5id: 15.10.2.8_A4_T8 +description: Execute /.+/.exec("`1234567890-=~!@#$%^&*()_+") and check results +---*/ + +var __string = "`1234567890-=~!@#$%^&*()_+"; +var __executed = /.+/.exec(__string); + +var __expected = ["`1234567890-=~!@#$%^&*()_+"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T9.js new file mode 100644 index 0000000000..3b5060ff54 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A4_T9.js @@ -0,0 +1,46 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The production Atom :: . evaluates as follows: + i) Let A be the set of all characters except the four line terminator characters , , , or + ii) Call CharacterSetMatcher(A, false) and return its Matcher result +es5id: 15.10.2.8_A4_T9 +description: "Execute /.+/.exec(\"|\\\\[{]};:\\\"\\',<>.?/\") and check results" +---*/ + +var __string = "|\\[{]};:\"\',<>.?/"; +var __executed = /.+/.exec(__string); + +var __expected = ["|\\[{]};:\"\',<>.?/"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A5_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A5_T1.js new file mode 100644 index 0000000000..f68b8c0ff9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A5_T1.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + In case-insignificant matches all characters are implicitly converted to + upper case immediately before they are compared +es5id: 15.10.2.8_A5_T1 +description: Execute /[a-z]+/ig.exec("ABC def ghi") and check results +---*/ + +var __string = "ABC def ghi"; +var __executed = /[a-z]+/ig.exec(__string); + +var __expected = ["ABC"]; +__expected.index = 0; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A5_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A5_T2.js new file mode 100644 index 0000000000..e193e1c6dc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.8_A5_T2.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + In case-insignificant matches all characters are implicitly converted to + upper case immediately before they are compared +es5id: 15.10.2.8_A5_T2 +description: Execute /[a-z]+/.exec("ABC def ghi") and check results +---*/ + +var __string = "ABC def ghi"; +var __executed = /[a-z]+/.exec(__string); + +var __expected = ["def"]; +__expected.index = 4; +__expected.input = __string; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T1.js new file mode 100644 index 0000000000..dd3b69b516 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T1.js @@ -0,0 +1,47 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + An escape sequence of the form \ followed by a nonzero decimal number n + matches the result of the nth set of capturing parentheses (see + 15.10.2.11) +es5id: 15.10.2.9_A1_T1 +description: > + Execute /\b(\w+) \1\b/.exec("do you listen the the band") and + check results +---*/ + +var __executed = /\b(\w+) \1\b/.exec("do you listen the the band"); + +var __expected = ["the the", "the"]; +__expected.index = 14; +__expected.input = "do you listen the the band"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T2.js new file mode 100644 index 0000000000..cf1749de1b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T2.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + An escape sequence of the form \ followed by a nonzero decimal number n + matches the result of the nth set of capturing parentheses (see + 15.10.2.11) +es5id: 15.10.2.9_A1_T2 +description: > + Execute + /([xu]\d{2}([A-H]{2})?)\1/.exec("x09x12x01x01u00FFu00FFx04x04x23") + and check results +---*/ + +var __executed = /([xu]\d{2}([A-H]{2})?)\1/.exec("x09x12x01x01u00FFu00FFx04x04x23"); + +var __expected = ["x01x01", "x01", undefined]; +__expected.index = 6; +__expected.input = "x09x12x01x01u00FFu00FFx04x04x23"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T3.js new file mode 100644 index 0000000000..a85b267c4b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T3.js @@ -0,0 +1,48 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + An escape sequence of the form \ followed by a nonzero decimal number n + matches the result of the nth set of capturing parentheses (see + 15.10.2.11) +es5id: 15.10.2.9_A1_T3 +description: > + Execute + /([xu]\d{2}([A-H]{2})?)\1/.exec("x09x12x01x05u00FFu00FFx04x04x23") + and check results +---*/ + +var __executed = /([xu]\d{2}([A-H]{2})?)\1/.exec("x09x12x01x05u00FFu00FFx04x04x23"); + +var __expected = ["u00FFu00FF", "u00FF", "FF"]; +__expected.index = 12; +__expected.input = "x09x12x01x05u00FFu00FFx04x04x23"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T5.js new file mode 100644 index 0000000000..b7b229137d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2.9_A1_T5.js @@ -0,0 +1,45 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + An escape sequence of the form \ followed by a nonzero decimal number n + matches the result of the nth set of capturing parentheses (see + 15.10.2.11) +es5id: 15.10.2.9_A1_T5 +description: Execute /(a*)b\1+/.exec("baaac") and check results +---*/ + +var __executed = /(a*)b\1+/.exec("baaac"); + +var __expected = ["b", ""]; +__expected.index = 0; +__expected.input = "baaac"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.2_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.2_A1_T1.js new file mode 100644 index 0000000000..3e12893222 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.2_A1_T1.js @@ -0,0 +1,89 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: XML Shallow Parsing with Regular Expressions +es5id: 15.10.2_A1_T1 +description: "See bug http://bugzilla.mozilla.org/show_bug.cgi?id=103087" +---*/ + +// REX/Javascript 1.0 +// Robert D. Cameron "REX: XML Shallow Parsing with Regular Expressions", +// Technical Report TR 1998-17, School of Computing Science, Simon Fraser +// University, November, 1998. +// Copyright (c) 1998, Robert D. Cameron. +// The following code may be freely used and distributed provided that +// this copyright and citation notice remains intact and that modifications +// or additions are clearly identified. + +var TextSE = "[^<]+"; +var UntilHyphen = "[^-]*-"; +var Until2Hyphens = UntilHyphen + "([^-]" + UntilHyphen + ")*-"; +var CommentCE = Until2Hyphens + ">?"; +var UntilRSBs = "[^\\]]*\\]([^\\]]+\\])*\\]+"; +var CDATA_CE = UntilRSBs + "([^\\]>]" + UntilRSBs + ")*>"; +var S = "[ \\n\\t\\r]+"; +var NameStrt = "[A-Za-z_:]|[^\\x00-\\x7F]"; +var NameChar = "[A-Za-z0-9_:.-]|[^\\x00-\\x7F]"; +var Name = "(" + NameStrt + ")(" + NameChar + ")*"; +var QuoteSE = '"[^"]' + "*" + '"' + "|'[^']*'"; +var DT_IdentSE = S + Name + "(" + S + "(" + Name + "|" + QuoteSE + "))*"; +var MarkupDeclCE = "([^\\]\"'><]+|" + QuoteSE + ")*>"; +var S1 = "[\\n\\r\\t ]"; +var UntilQMs = "[^?]*\\?+"; +var PI_Tail = "\\?>|" + S1 + UntilQMs + "([^>?]" + UntilQMs + ")*>"; +var DT_ItemSE = "<(!(--" + Until2Hyphens + ">|[^-]" + MarkupDeclCE + ")|\\?" + Name + "(" + PI_Tail + "))|%" + Name + ";|" + S; +var DocTypeCE = DT_IdentSE + "(" + S + ")?(\\[(" + DT_ItemSE + ")*\\](" + S + ")?)?>?"; +var DeclCE = "--(" + CommentCE + ")?|\\[CDATA\\[(" + CDATA_CE + ")?|DOCTYPE(" + DocTypeCE + ")?"; +var PI_CE = Name + "(" + PI_Tail + ")?"; +var EndTagCE = Name + "(" + S + ")?>?"; +var AttValSE = '"[^<"]' + "*" + '"' + "|'[^<']*'"; +var ElemTagCE = Name + "(" + S + Name + "(" + S + ")?=(" + S + ")?(" + AttValSE + "))*(" + S + ")?/?>?"; +var MarkupSPE = "<(!(" + DeclCE + ")?|\\?(" + PI_CE + ")?|/(" + EndTagCE + ")?|(" + ElemTagCE + ")?)"; +var XML_SPE = TextSE + "|" + MarkupSPE; + +/// +//// +///// + +var __patterns = [TextSE,UntilHyphen,Until2Hyphens,CommentCE,UntilRSBs,CDATA_CE,S,NameStrt, NameChar, +Name, QuoteSE, DT_IdentSE, MarkupDeclCE, S1,UntilQMs, PI_Tail, DT_ItemSE, DocTypeCE, DeclCE, +PI_CE, EndTagCE, AttValSE, ElemTagCE, MarkupSPE, XML_SPE]; + +var __html=""+ +'\n' + +' Three Namespaces\n' + +' \n' + +'

An Ellipse and a Rectangle

\n' + +' \n' + +' \n' + +' \n' + +' \n' + +'

\n' + +' More about ellipses\n' + +'

\n' + +'

\n' + +' More about rectangles\n' + +'

\n' + +'
\n' + +'

Last Modified February 13, 2000

\n' + +' \n' + +''; + +////////////////////////////////////////////////////////////////////////////// +try { + for(var index=0; index<__patterns.length; index++) { + var __re = new RegExp(__patterns[index]); + __re.test(__html); + } +} catch (e) { + throw new Test262Error('#'+index+": XML Shallow Parsing with Regular Expression: "+__patterns[index]); +} +// +////////////////////////////////////////////////////////////////////////////// + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T1.js new file mode 100644 index 0000000000..8f8f6684db --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T1.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags + is undefined, then return R unchanged +es5id: 15.10.3.1_A1_T1 +description: R is /x/i and instance is RegExp(R) +---*/ + +var __re = /x/i; +var __instance = RegExp(__re); +__re.indicator = 1; + +assert.sameValue(__instance.indicator, 1, 'The value of __instance.indicator is expected to be 1'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T2.js new file mode 100644 index 0000000000..11475d9489 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T2.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags + is undefined, then return R unchanged +es5id: 15.10.3.1_A1_T2 +description: R is new RegExp and instance is RegExp(R, function(){}()) +---*/ + +var __re = new RegExp; +var __instance = RegExp(__re, function(){}()); +__re.indicator = 1; + +assert.sameValue(__instance.indicator, 1, 'The value of __instance.indicator is expected to be 1'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T3.js new file mode 100644 index 0000000000..1a874b169d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T3.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags + is undefined, then return R unchanged +es5id: 15.10.3.1_A1_T3 +description: > + R is new RegExp() and instance is RegExp(R, x), where x is + undefined variable +---*/ + +var __re = new RegExp(); +var __instance = RegExp(__re, x); +__re.indicator = 1; + +assert.sameValue(__instance.indicator, 1, 'The value of __instance.indicator is expected to be 1'); + +var x; + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T4.js new file mode 100644 index 0000000000..8f8d32b5a4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T4.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags + is undefined, then return R unchanged +es5id: 15.10.3.1_A1_T4 +description: R is new RegExp() and instance is RegExp(R, void 0) +---*/ + +var __re = RegExp(); +var __instance = RegExp(__re, void 0); +__re.indicator = 1; + +assert.sameValue(__instance.indicator, 1, 'The value of __instance.indicator is expected to be 1'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T5.js new file mode 100644 index 0000000000..cd727579ea --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A1_T5.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags + is undefined, then return R unchanged +es5id: 15.10.3.1_A1_T5 +description: R is /\b/m and instance is RegExp(R, undefined) +---*/ + +var __re = /\b/m; +var __instance = RegExp(__re, undefined); +__re.indicator = 1; + +assert.sameValue(__instance.indicator, 1, 'The value of __instance.indicator is expected to be 1'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A2_T1.js new file mode 100644 index 0000000000..c0665191da --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A2_T1.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags is defined, then + call the RegExp constructor (15.10.4.1), passing it the pattern and flags arguments and return the object constructed by that constructor +es5id: 15.10.3.1_A2_T1 +description: > + Checking if using "1" as flags leads to throwing the correct + exception +---*/ + +try { + throw new Test262Error('#1.1: RegExp(new RegExp("\\d"), "1")) throw SyntaxError. Actual: ' + (RegExp(new RegExp("\d"), "1"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A2_T2.js new file mode 100644 index 0000000000..9b4b4c8bc1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A2_T2.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags is defined, then + call the RegExp constructor (15.10.4.1), passing it the pattern and flags arguments and return the object constructed by that constructor +es5id: 15.10.3.1_A2_T2 +description: > + Checking if using dafined variable "x = 1" as flags leads to + throwing the correct exception +---*/ + +var x = 1; + +try { + throw new Test262Error('#1.1: var x = 1; RegExp(/[a-b]?/, x) throw SyntaxError. Actual: ' + (RegExp(/[a-b]?/, x))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A3_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A3_T1.js new file mode 100644 index 0000000000..cedc3e13e7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A3_T1.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern and flags are defined, then + call the RegExp constructor (15.10.4.1), passing it the pattern and flags arguments and return the object constructed by that constructor +es5id: 15.10.3.1_A3_T1 +description: R is "d+" and instance is RegExp(R,"i") +---*/ + +var __re = "d+"; +var __instance = RegExp(__re, "i"); + +assert.sameValue( + __instance.constructor, + RegExp, + 'The value of __instance.constructor is expected to equal the value of RegExp' +); + +assert.sameValue(__instance.source, __re, 'The value of __instance.source is expected to equal the value of __re'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A3_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A3_T2.js new file mode 100644 index 0000000000..85cc4f867b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.3.1_A3_T2.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern and flags are defined, then + call the RegExp constructor (15.10.4.1), passing it the pattern and flags arguments and return the object constructed by that constructor +es5id: 15.10.3.1_A3_T2 +description: > + R is {toString:function(){return "[a-c]*";}} and instance is + RegExp(R,"gm") +---*/ + +var __instance = RegExp({toString:function(){return "[a-c]*";}}, "gm"); + +assert.sameValue( + __instance.constructor, + RegExp, + 'The value of __instance.constructor is expected to equal the value of RegExp' +); + +assert.sameValue(__instance.source, "[a-c]*", 'The value of __instance.source is expected to be "[a-c]*"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T1.js new file mode 100644 index 0000000000..ae28f243d3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T1.js @@ -0,0 +1,39 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be + the pattern used to construct R and let F be the flags used to construct R +es5id: 15.10.4.1_A1_T1 +description: Pattern is /./i and RegExp is new RegExp(pattern) +---*/ + +var __pattern = /./i; +var __re = new RegExp(__pattern); + +assert.sameValue( + __re.source, + __pattern.source, + 'The value of __re.source is expected to equal the value of __pattern.source' +); + +assert.sameValue( + __re.multiline, + __pattern.multiline, + 'The value of __re.multiline is expected to equal the value of __pattern.multiline' +); + +assert.sameValue( + __re.global, + __pattern.global, + 'The value of __re.global is expected to equal the value of __pattern.global' +); + +assert.sameValue( + __re.ignoreCase, + __pattern.ignoreCase, + 'The value of __re.ignoreCase is expected to equal the value of __pattern.ignoreCase' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T2.js new file mode 100644 index 0000000000..00c78df977 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T2.js @@ -0,0 +1,43 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be + the pattern used to construct R and let F be the flags used to construct R +es5id: 15.10.4.1_A1_T2 +description: > + Pattern is /\t/m and RegExp is new RegExp(pattern,x), where x is + undefined variable +---*/ + +var __pattern = /\t/m; +var __re = new RegExp(__pattern, x); + +assert.sameValue( + __re.source, + __pattern.source, + 'The value of __re.source is expected to equal the value of __pattern.source' +); + +assert.sameValue( + __re.multiline, + __pattern.multiline, + 'The value of __re.multiline is expected to equal the value of __pattern.multiline' +); + +assert.sameValue( + __re.global, + __pattern.global, + 'The value of __re.global is expected to equal the value of __pattern.global' +); + +assert.sameValue( + __re.ignoreCase, + __pattern.ignoreCase, + 'The value of __re.ignoreCase is expected to equal the value of __pattern.ignoreCase' +); + +var x; + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T3.js new file mode 100644 index 0000000000..10162ef282 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T3.js @@ -0,0 +1,39 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be + the pattern used to construct R and let F be the flags used to construct R +es5id: 15.10.4.1_A1_T3 +description: Pattern is /[a-b]/g and RegExp is new RegExp(pattern,void 0) +---*/ + +var __pattern = /[a-b]/g; +var __re = new RegExp(__pattern, void 0); + +assert.sameValue( + __re.source, + __pattern.source, + 'The value of __re.source is expected to equal the value of __pattern.source' +); + +assert.sameValue( + __re.multiline, + __pattern.multiline, + 'The value of __re.multiline is expected to equal the value of __pattern.multiline' +); + +assert.sameValue( + __re.global, + __pattern.global, + 'The value of __re.global is expected to equal the value of __pattern.global' +); + +assert.sameValue( + __re.ignoreCase, + __pattern.ignoreCase, + 'The value of __re.ignoreCase is expected to equal the value of __pattern.ignoreCase' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T4.js new file mode 100644 index 0000000000..a66ead1e94 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T4.js @@ -0,0 +1,39 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be + the pattern used to construct R and let F be the flags used to construct R +es5id: 15.10.4.1_A1_T4 +description: Pattern is new RegExp and RegExp is new RegExp(pattern,undefined) +---*/ + +var __pattern = new RegExp; +var __re = new RegExp(__pattern, undefined); + +assert.sameValue( + __re.source, + __pattern.source, + 'The value of __re.source is expected to equal the value of __pattern.source' +); + +assert.sameValue( + __re.multiline, + __pattern.multiline, + 'The value of __re.multiline is expected to equal the value of __pattern.multiline' +); + +assert.sameValue( + __re.global, + __pattern.global, + 'The value of __re.global is expected to equal the value of __pattern.global' +); + +assert.sameValue( + __re.ignoreCase, + __pattern.ignoreCase, + 'The value of __re.ignoreCase is expected to equal the value of __pattern.ignoreCase' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T5.js new file mode 100644 index 0000000000..226928eed8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A1_T5.js @@ -0,0 +1,41 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If pattern is an object R whose [[Class]] property is "RegExp" and flags is undefined, then let P be + the pattern used to construct R and let F be the flags used to construct R +es5id: 15.10.4.1_A1_T5 +description: > + Pattern is RegExp("1?","mig") and RegExp is new + RegExp(pattern,(function(){})()) +---*/ + +var __pattern = RegExp("1?","mig"); +var __re = new RegExp(__pattern, (function(){})()); + +assert.sameValue( + __re.source, + __pattern.source, + 'The value of __re.source is expected to equal the value of __pattern.source' +); + +assert.sameValue( + __re.multiline, + __pattern.multiline, + 'The value of __re.multiline is expected to equal the value of __pattern.multiline' +); + +assert.sameValue( + __re.global, + __pattern.global, + 'The value of __re.global is expected to equal the value of __pattern.global' +); + +assert.sameValue( + __re.ignoreCase, + __pattern.ignoreCase, + 'The value of __re.ignoreCase is expected to equal the value of __pattern.ignoreCase' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A2_T1.js new file mode 100644 index 0000000000..87ebc9ab9a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A2_T1.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + pattern is an object R whose [[Class]] property is "RegExp" and flags + is not undefined +es5id: 15.10.4.1_A2_T1 +description: > + Checking if execution of "new RegExp(pattern, "i")", where the + pattern is "/\u0042/i", does not fail +---*/ + +var regExpObj = new RegExp(/\u0042/i, "i"); +assert(regExpObj.ignoreCase); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A2_T2.js new file mode 100644 index 0000000000..16b8117f17 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A2_T2.js @@ -0,0 +1,27 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + pattern is an object R whose [[Class]] property is "RegExp" and flags + is not undefined. If ToString(pattern) is not a valid flags arguments, + then throw a SyntaxError exception +es5id: 15.10.4.1_A2_T2 +description: > + Checking if execution of "new RegExp(pattern, {})", where the + pattern is "/1?1/mig", fails +---*/ + +try { + throw new Test262Error('#1.1: new RegExp(/1?1/mig, {}) throw SyntaxError. Actual: ' + (new RegExp(/1?1/mig, {}))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T1.js new file mode 100644 index 0000000000..a183be27f8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T1.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be the empty string if pattern is undefined +es5id: 15.10.4.1_A3_T1 +description: RegExp is new RegExp +---*/ + +var __re = new RegExp; + +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T2.js new file mode 100644 index 0000000000..725d2df8f4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T2.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be the empty string if pattern is undefined +es5id: 15.10.4.1_A3_T2 +description: RegExp is new RegExp(void 0) +---*/ + +var __re = new RegExp(void 0); + +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T3.js new file mode 100644 index 0000000000..0e6d50a054 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T3.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be the empty string if pattern is undefined +es5id: 15.10.4.1_A3_T3 +description: RegExp is new RegExp(x), where x is undefined variable +---*/ + +var __re = new RegExp(x); + +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +var x; + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T4.js new file mode 100644 index 0000000000..9e90bd2c8c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T4.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be the empty string if pattern is undefined +es5id: 15.10.4.1_A3_T4 +description: RegExp is new RegExp(undefined) +---*/ + +var __re = new RegExp(undefined); + +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T5.js new file mode 100644 index 0000000000..158ee29c55 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A3_T5.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be the empty string if pattern is undefined +es5id: 15.10.4.1_A3_T5 +description: RegExp is new RegExp((function(){})()) +---*/ + +var __re = new RegExp((function(){})()); + +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T1.js new file mode 100644 index 0000000000..5a26e2ecee --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T1.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let F be the empty string if flags is undefined +es5id: 15.10.4.1_A4_T1 +description: RegExp is new RegExp(undefined) +---*/ + +var __re = new RegExp(null, void 0); + +assert.sameValue(__re.source, "null", 'The value of __re.source is expected to be "null"'); +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T2.js new file mode 100644 index 0000000000..260be26a6d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T2.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let F be the empty string if flags is undefined +es5id: 15.10.4.1_A4_T2 +description: RegExp is new RegExp(undefined,undefined) +---*/ + +var __re = new RegExp(undefined, undefined); + +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T3.js new file mode 100644 index 0000000000..18a1f4b2d5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T3.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let F be the empty string if flags is undefined +es5id: 15.10.4.1_A4_T3 +description: Use undefined properties of object as flags of RegExp +---*/ + +var __re = new RegExp({}.p, {}.q); + +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T4.js new file mode 100644 index 0000000000..49e69243eb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T4.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let F be the empty string if flags is undefined +es5id: 15.10.4.1_A4_T4 +description: RegExp is new RegExp(null,void 0) +---*/ + +var __re = new RegExp(null, void 0); + +assert.sameValue(__re.source, "null", 'The value of __re.source is expected to be "null"'); +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T5.js new file mode 100644 index 0000000000..b80072b70f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A4_T5.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let F be the empty string if flags is undefined +es5id: 15.10.4.1_A4_T5 +description: RegExp is new RegExp("",(function(){})()) +---*/ + +var __re = new RegExp("", (function(){})()); + +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T1.js new file mode 100644 index 0000000000..9cf576d2e0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T1.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If F contains any character other than 'g', 'i', or 'm', or if it + contains the same one more than once, then throw a SyntaxError exception +es5id: 15.10.4.1_A5_T1 +description: Checking if using "ii" as F leads to throwing the correct exception +---*/ + +try { + throw new Test262Error('#1.1: new RegExp(undefined,"ii") throw SyntaxError. Actual: ' + (new RegExp(undefined,"ii"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T3.js new file mode 100644 index 0000000000..cd5f9408da --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T3.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If F contains any character other than 'g', 'i', or 'm', or if it + contains the same one more than once, then throw a SyntaxError exception +es5id: 15.10.4.1_A5_T3 +description: Checking by using eval, try to use eval("\"migr\"") as F +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("",eval("\\"migr\\"")) throw SyntaxError. Actual: ' + (new RegExp("",eval("\"migr\"")))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T4.js new file mode 100644 index 0000000000..79a64437da --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T4.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If F contains any character other than 'g', 'i', or 'm', or if it + contains the same one more than once, then throw a SyntaxError exception +es5id: 15.10.4.1_A5_T4 +description: Checking if using "z" as F leads to throwing the correct exception +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("a|b","z") throw SyntaxError. Actual: ' + (new RegExp("a|b","z"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T6.js new file mode 100644 index 0000000000..9fbf1e496f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T6.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If F contains any character other than 'g', 'i', or 'm', or if it + contains the same one more than once, then throw a SyntaxError exception +es5id: 15.10.4.1_A5_T6 +description: > + Checking if using "null" as F leads to throwing the correct + exception +---*/ + +try { + throw new Test262Error('#1.1: new RegExp(".",null) throw SyntaxError. Actual: ' + (new RegExp(".",null))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T7.js new file mode 100644 index 0000000000..af6bcd43c4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T7.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If F contains any character other than 'g', 'i', or 'm', or if it + contains the same one more than once, then throw a SyntaxError exception +es5id: 15.10.4.1_A5_T7 +description: Checking if using 1.0 as F leads to throwing the correct exception +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("^",1.0) throw SyntaxError. Actual: ' + (new RegExp("^",1.0))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T8.js new file mode 100644 index 0000000000..9457a6f641 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T8.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If F contains any character other than 'g', 'i', or 'm', or if it + contains the same one more than once, then throw a SyntaxError exception +es5id: 15.10.4.1_A5_T8 +description: > + Checking if using "true" as F leads to throwing the correct + exception +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("|",true) throw SyntaxError. Actual: ' + (new RegExp("|",true))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T9.js new file mode 100644 index 0000000000..e752f8ffbf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A5_T9.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If F contains any character other than 'g', 'i', or 'm', or if it + contains the same one more than once, then throw a SyntaxError exception +es5id: 15.10.4.1_A5_T9 +description: > + Checking if using "{toString:function(){}}" as F leads to throwing + the correct exception +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("$sup",{toString:function(){}}) throw SyntaxError. Actual: ' + (new RegExp("$sup",{toString:function(){}}))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A6_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A6_T1.js new file mode 100644 index 0000000000..f69a1a04fd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A6_T1.js @@ -0,0 +1,15 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The [[Class]] property of the newly constructed object is set to "RegExp" +es5id: 15.10.4.1_A6_T1 +description: Checking [[Class]] property of the newly constructed object +---*/ + +var __re = new RegExp; +__re.toString = Object.prototype.toString; + +assert.sameValue(__re.toString(), "[object "+"RegExp"+"]", '__re.toString() must return "[object "+"RegExp"+"]"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A7_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A7_T1.js new file mode 100644 index 0000000000..aaed68b46b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A7_T1.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The [[Prototype]] property of the newly constructed object is set to the + original RegExp prototype object, the one that is the initial value of + RegExp.prototype +es5id: 15.10.4.1_A7_T1 +description: > + Add new property to [[Prototype]] of REgExp and check this + property of the newly constructed object +---*/ + +var __re = new RegExp; +RegExp.prototype.indicator = 1; + +assert.sameValue(__re.indicator, 1, 'The value of __re.indicator is expected to be 1'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A7_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A7_T2.js new file mode 100644 index 0000000000..d5e50cf780 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A7_T2.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The [[Prototype]] property of the newly constructed object is set to the + original RegExp prototype object, the one that is the initial value of + RegExp.prototype +es5id: 15.10.4.1_A7_T2 +description: Checking [[Prototype]] property of the newly constructed object +---*/ + +var __re = new RegExp(); + +assert.sameValue( + RegExp.prototype.isPrototypeOf(__re), + true, + 'RegExp.prototype.isPrototypeOf(new RegExp()) must return true' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T1.js new file mode 100644 index 0000000000..129f2f6973 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T1.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T1 +description: Pattern is "a|b" and flags is "i" +---*/ + +var __re = new RegExp("a|b","i"); + +assert.sameValue(__re.ignoreCase, true, 'The value of __re.ignoreCase is expected to be true'); +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); +assert.notSameValue(typeof __re.source, "undefined", 'The value of typeof __re.source is not "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T10.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T10.js new file mode 100644 index 0000000000..a7e4d64f09 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T10.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T10 +description: Pattern is true and flags is "m" +---*/ + +var __re = new RegExp(true,"m"); + +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); +assert.sameValue(__re.multiline, true, 'The value of __re.multiline is expected to be true'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); +assert.notSameValue(typeof __re.source, "undefined", 'The value of typeof __re.source is not "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T11.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T11.js new file mode 100644 index 0000000000..fa3071355e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T11.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T11 +description: Checking by using eval, pattern is Math and flags is eval("\"g\"") +---*/ + +var __re = new RegExp(Math,eval("\"g\"")); + +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, true, 'The value of __re.global is expected to be true'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); +assert.notSameValue(typeof __re.source, "undefined", 'The value of typeof __re.source is not "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T12.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T12.js new file mode 100644 index 0000000000..a180108d15 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T12.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T12 +description: > + Pattern is "\u0042" and flags is {toString:void 0, + valueOf:function(){throw "invalof";} } +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("\\u0042", {toString:void 0, valueOf:function(){throw "invalof";}}) throw "invalof". Actual: ' + (new RegExp("\u0042", {toString:void 0, valueOf:function(){throw "invalof";}}))); +} catch (e) { + assert.sameValue(e, "invalof", 'The value of e is expected to be "invalof"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T13.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T13.js new file mode 100644 index 0000000000..c61d99a950 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T13.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T13 +description: > + Pattern is "1" and flags is {toString:function(){throw "intostr";} + } +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("1", {toString:function(){throw "intostr";}}) throw "intostr". Actual: ' + (new RegExp("1", {toString:function(){throw "intostr";}}))); +} catch (e) { + assert.sameValue(e, "intostr", 'The value of e is expected to be "intostr"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T2.js new file mode 100644 index 0000000000..dd91000ceb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T2.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T2 +description: Pattern is function(){return "a|b|[]";}() and flags is "ig" +---*/ + +var __re = new RegExp(function(){return "a|b|[]";}(),"ig"); + +assert.sameValue(__re.ignoreCase, true, 'The value of __re.ignoreCase is expected to be true'); +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, true, 'The value of __re.global is expected to be true'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); +assert.notSameValue(typeof __re.source, "undefined", 'The value of typeof __re.source is not "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T3.js new file mode 100644 index 0000000000..518410e0c6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T3.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T3 +description: > + Pattern is {toString:function(){return "[0-9]";}} and flags is + (function(){return "m";})() +---*/ + +var __re = new RegExp({toString:function(){return "[0-9]";}}, (function(){return "m";})()); + +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); +assert.sameValue(__re.multiline, true, 'The value of __re.multiline is expected to be true'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); +assert.notSameValue(typeof __re.source, "undefined", 'The value of typeof __re.source is not "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T4.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T4.js new file mode 100644 index 0000000000..1a69326139 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T4.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T4 +description: > + Pattern is {toString:void 0,valueOf:function(){return "[z-z]";}} + and flags is {toString:void 0,valueOf:function(){return "mig";}} +---*/ + +var __re = new RegExp({toString:void 0,valueOf:function(){return "[z-z]";}}, {toString:void 0,valueOf:function(){return "mig";}}); + +assert.sameValue(__re.ignoreCase, true, 'The value of __re.ignoreCase is expected to be true'); +assert.sameValue(__re.multiline, true, 'The value of __re.multiline is expected to be true'); +assert.sameValue(__re.global, true, 'The value of __re.global is expected to be true'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); +assert.notSameValue(typeof __re.source, "undefined", 'The value of typeof __re.source is not "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T5.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T5.js new file mode 100644 index 0000000000..dee87d5e66 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T5.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T5 +description: > + Pattern is new Object("abc{1}") and flags is + {toString:function(){return "";}} +---*/ + +var __re = new RegExp(new Object("abc{1}"), {toString:function(){return "";}}); + +assert.sameValue(__re.ignoreCase, false, 'The value of __re.ignoreCase is expected to be false'); +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, false, 'The value of __re.global is expected to be false'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); +assert.notSameValue(typeof __re.source, "undefined", 'The value of typeof __re.source is not "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T6.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T6.js new file mode 100644 index 0000000000..0a810c3d09 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T6.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T6 +description: > + Pattern is {toString:function(){throw "intostr";} } and flags is + "i" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp({toString:function(){throw "intostr";}}, "i") throw "intostr". Actual: ' + (new RegExp({toString:function(){throw "intostr";}}, "i"))); +} catch (e) { + assert.sameValue(e, "intostr", 'The value of e is expected to be "intostr"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T7.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T7.js new file mode 100644 index 0000000000..94265063db --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T7.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T7 +description: > + Pattern is {toString:void 0, valueOf:function(){throw "invalof";} + } and flags is "i" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp({toString:void 0, valueOf:function(){throw "invalof";}}) throw "invalof". Actual: ' + (new RegExp({toString:void 0, valueOf:function(){throw "invalof";}}))); +} catch (e) { + assert.sameValue(e, "invalof", 'The value of e is expected to be "invalof"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T8.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T8.js new file mode 100644 index 0000000000..f97e2c6f9c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T8.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T8 +description: > + Pattern is {toString:function(){throw "intostr";} } and flags is + "error" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp({toString:function(){throw "intostr";}}, "error") throw "intostr". Actual: ' + (new RegExp({toString:function(){throw "intostr";}}, "error"))); +} catch (e) { + assert.sameValue(e, "intostr", 'The value of e is expected to be "intostr"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T9.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T9.js new file mode 100644 index 0000000000..c42f79e4c4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A8_T9.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: let P be ToString(pattern) and let F be ToString(flags) +es5id: 15.10.4.1_A8_T9 +description: Pattern is 1 and flags is new Object("gi") +---*/ + +var __re = new RegExp(1, new Object("gi")); + +assert.sameValue(__re.ignoreCase, true, 'The value of __re.ignoreCase is expected to be true'); +assert.sameValue(__re.multiline, false, 'The value of __re.multiline is expected to be false'); +assert.sameValue(__re.global, true, 'The value of __re.global is expected to be true'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); +assert.notSameValue(typeof __re.source, "undefined", 'The value of typeof __re.source is not "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T1.js new file mode 100644 index 0000000000..f8a44404da --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T1.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If P's characters do not have the form Pattern, then throw a SyntaxError + exception +es5id: 15.10.4.1_A9_T1 +description: Pattern is "??" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("??") throw SyntaxError. Actual: ' + (new RegExp("??"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T2.js new file mode 100644 index 0000000000..8b77e39b35 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T2.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If P's characters do not have the form Pattern, then throw a SyntaxError + exception +es5id: 15.10.4.1_A9_T2 +description: Pattern is "[{-z]" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("[{-z]") throw SyntaxError. Actual: ' + (new RegExp("[{-z]"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T3.js b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T3.js new file mode 100644 index 0000000000..847ae1ab1b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.4.1_A9_T3.js @@ -0,0 +1,24 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + If P's characters do not have the form Pattern, then throw a SyntaxError + exception +es5id: 15.10.4.1_A9_T3 +description: Pattern is "[a--z]" +---*/ + +try { + throw new Test262Error('#1.1: new RegExp("[a--z]") throw SyntaxError. Actual: ' + (new RegExp("[a--z]"))); +} catch (e) { + assert.sameValue( + e instanceof SyntaxError, + true, + 'The result of evaluating (e instanceof SyntaxError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.5_A1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.5_A1.js new file mode 100644 index 0000000000..9288221078 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.5_A1.js @@ -0,0 +1,11 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp constructor has length property whose value is 2 +es5id: 15.10.5_A1 +description: Checking RegExp.length property +---*/ +assert.sameValue(RegExp.length, 2, 'The value of RegExp.length is expected to be 2'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.5_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.5_A2_T1.js new file mode 100644 index 0000000000..c081cf7175 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.5_A2_T1.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The value of the internal [[Prototype]] property of the RegExp + constructor is the Function prototype object +es5id: 15.10.5_A2_T1 +description: Checking Function.prototype.isPrototypeOf(RegExp) +---*/ +assert.sameValue( + Function.prototype.isPrototypeOf(RegExp), + true, + 'Function.prototype.isPrototypeOf(RegExp) must return true' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.5_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.5_A2_T2.js new file mode 100644 index 0000000000..d63649431a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.5_A2_T2.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The value of the internal [[Prototype]] property of the RegExp + constructor is the Function prototype object +es5id: 15.10.5_A2_T2 +description: > + Add new property to Function.prototype and then check this + property of RegExp +---*/ + +Function.prototype.indicator = 1; + +assert.sameValue(RegExp.indicator, 1, 'The value of RegExp.indicator is expected to be 1'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.7_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A1_T1.js new file mode 100644 index 0000000000..eb138e590e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A1_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp instance has no [[Call]] internal method +es5id: 15.10.7_A1_T1 +description: Checking if call of RegExp instance fails +---*/ + +try { + throw new Test262Error('#1.1: /[^a]*/() throw TypeError. Actual: ' + (/[^a]*/())); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.7_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A1_T2.js new file mode 100644 index 0000000000..5ae0061f9a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A1_T2.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp instance has no [[Call]] internal method +es5id: 15.10.7_A1_T2 +description: Checking if call of RegExp("a|b","g")() fails +---*/ + +try { + throw new Test262Error('#1.1: RegExp("a|b","g")() throw TypeError. Actual: ' + (RegExp("a|b","g")())); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.7_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A2_T1.js new file mode 100644 index 0000000000..b0df3705a2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A2_T1.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp instance has no [[Construct]] internal method +es5id: 15.10.7_A2_T1 +description: Checking if creating new RegExp instance fails +---*/ + +try { + throw new Test262Error('#1.1: new /z/() throw TypeError. Actual: ' + (new /z/())); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.7_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A2_T2.js new file mode 100644 index 0000000000..e966a1421d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A2_T2.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp instance has no [[Construct]] internal method +es5id: 15.10.7_A2_T2 +description: Checking if creating "new RegExp" instance fails +---*/ + +try { + throw new Test262Error('#1.1: new new RegExp throw TypeError. Actual: ' + (new new RegExp)); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.7_A3_T1.js b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A3_T1.js new file mode 100644 index 0000000000..68d7c293f0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A3_T1.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp instance type is RegExp +es5id: 15.10.7_A3_T1 +description: > + Checking type of RegExp instance with operators typeof, instanceof + and check it constructor. RegExp instance is /[^a]* / +---*/ + +var __re = /[^a]*/; + +assert.sameValue(typeof __re, "object", 'The value of `typeof __re` is expected to be "object"'); +assert.sameValue(__re.constructor, RegExp, 'The value of __re.constructor is expected to equal the value of RegExp'); + +assert.sameValue( + __re instanceof RegExp, + true, + 'The result of evaluating (__re instanceof RegExp) is expected to be true' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/S15.10.7_A3_T2.js b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A3_T2.js new file mode 100644 index 0000000000..ad62441e4f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/S15.10.7_A3_T2.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp instance type is RegExp +es5id: 15.10.7_A3_T2 +description: > + Checking type of RegExp instance with operators typeof, instanceof + and check it constructor. RegExp instance is new RegExp +---*/ + +var __re = new RegExp; + +assert.sameValue(typeof __re, "object", 'The value of `typeof __re` is expected to be "object"'); +assert.sameValue(__re.constructor, RegExp, 'The value of __re.constructor is expected to equal the value of RegExp'); + +assert.sameValue( + __re instanceof RegExp, + true, + 'The result of evaluating (__re instanceof RegExp) is expected to be true' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/Symbol.species/browser.js b/js/src/tests/test262/built-ins/RegExp/Symbol.species/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/Symbol.species/length.js b/js/src/tests/test262/built-ins/RegExp/Symbol.species/length.js new file mode 100644 index 0000000000..c38cb495a3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/Symbol.species/length.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.4.2 +description: > + get RegExp [ @@species ].length is 0. +info: | + get RegExp [ @@species ] + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [Symbol.species] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp, Symbol.species); + +assert.sameValue(desc.get.length, 0); + +verifyNotEnumerable(desc.get, "length"); +verifyNotWritable(desc.get, "length"); +verifyConfigurable(desc.get, "length"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/Symbol.species/return-value.js b/js/src/tests/test262/built-ins/RegExp/Symbol.species/return-value.js new file mode 100644 index 0000000000..5eec628c6b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/Symbol.species/return-value.js @@ -0,0 +1,16 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp-@@species +description: Return value of @@species accessor method +info: | + 1. Return the this value. +features: [Symbol.species] +---*/ + +var thisVal = {}; +var accessor = Object.getOwnPropertyDescriptor(RegExp, Symbol.species).get; + +assert.sameValue(accessor.call(thisVal), thisVal); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/Symbol.species/shell.js b/js/src/tests/test262/built-ins/RegExp/Symbol.species/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/Symbol.species/symbol-species-name.js b/js/src/tests/test262/built-ins/RegExp/Symbol.species/symbol-species-name.js new file mode 100644 index 0000000000..c7069365a6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/Symbol.species/symbol-species-name.js @@ -0,0 +1,27 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.4.2 +description: > + RegExp[Symbol.species] accessor property get name +info: | + 21.2.4.2 get RegExp [ @@species ] + + ... + The value of the name property of this function is "get [Symbol.species]". +features: [Symbol.species] +includes: [propertyHelper.js] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(RegExp, Symbol.species); + +assert.sameValue( + descriptor.get.name, + 'get [Symbol.species]' +); + +verifyNotEnumerable(descriptor.get, 'name'); +verifyNotWritable(descriptor.get, 'name'); +verifyConfigurable(descriptor.get, 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/Symbol.species/symbol-species.js b/js/src/tests/test262/built-ins/RegExp/Symbol.species/symbol-species.js new file mode 100644 index 0000000000..8a2a8be11d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/Symbol.species/symbol-species.js @@ -0,0 +1,23 @@ +// Copyright 2015 Cubane Canada, Inc. All rights reserved. +// See LICENSE for details. + +/*--- +info: | + RegExp has a property at `Symbol.species` +esid: sec-get-regexp-@@species +author: Sam Mikes +description: RegExp[Symbol.species] exists per spec +includes: [propertyHelper.js] +features: [Symbol.species] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp, Symbol.species); + +assert.sameValue(desc.set, undefined); +assert.sameValue(typeof desc.get, 'function'); + +verifyNotWritable(RegExp, Symbol.species, Symbol.species); +verifyNotEnumerable(RegExp, Symbol.species); +verifyConfigurable(RegExp, Symbol.species); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/browser.js b/js/src/tests/test262/built-ins/RegExp/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/call_with_non_regexp_same_constructor.js b/js/src/tests/test262/built-ins/RegExp/call_with_non_regexp_same_constructor.js new file mode 100644 index 0000000000..c50a5a202b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/call_with_non_regexp_same_constructor.js @@ -0,0 +1,27 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: RegExp returns its input argument if constructor is same-value +info: | + 21.2.3.1 RegExp ( pattern, flags ) + + ... + 4. Else, + a. Let newTarget be the active function object. + b. If patternIsRegExp is true and flags is undefined, then + i. Let patternConstructor be Get(pattern, "constructor"). + ii. ReturnIfAbrupt(patternConstructor). + iii. If SameValue(newTarget, patternConstructor) is true, return pattern. +es6id: 21.2.3.1 +features: [Symbol.match] +---*/ + +var obj = { + constructor: RegExp +}; +obj[Symbol.match] = true; + +assert.sameValue(RegExp(obj), obj, "RegExp returns its input argument"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/call_with_regexp_match_falsy.js b/js/src/tests/test262/built-ins/RegExp/call_with_regexp_match_falsy.js new file mode 100644 index 0000000000..15dca37be3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/call_with_regexp_match_falsy.js @@ -0,0 +1,25 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: RegExp returns a new object if constructor is not same-value +info: | + 21.2.3.1 RegExp ( pattern, flags ) + + ... + 4. Else, + a. Let newTarget be the active function object. + b. If patternIsRegExp is true and flags is undefined, then + i. Let patternConstructor be Get(pattern, "constructor"). + ii. ReturnIfAbrupt(patternConstructor). + iii. If SameValue(newTarget, patternConstructor) is true, return pattern. +es6id: 21.2.3.1 +features: [Symbol.match] +---*/ + +var regExpObj = /(?:)/; +regExpObj[Symbol.match] = false; + +assert.notSameValue(RegExp(regExpObj), regExpObj, "RegExp returns new object"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/call_with_regexp_not_same_constructor.js b/js/src/tests/test262/built-ins/RegExp/call_with_regexp_not_same_constructor.js new file mode 100644 index 0000000000..92569c6e52 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/call_with_regexp_not_same_constructor.js @@ -0,0 +1,24 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: RegExp returns a new object if constructor is not same-value +info: | + 21.2.3.1 RegExp ( pattern, flags ) + + ... + 4. Else, + a. Let newTarget be the active function object. + b. If patternIsRegExp is true and flags is undefined, then + i. Let patternConstructor be Get(pattern, "constructor"). + ii. ReturnIfAbrupt(patternConstructor). + iii. If SameValue(newTarget, patternConstructor) is true, return pattern. +es6id: 21.2.3.1 +---*/ + +var regExpObj = /(?:)/; +regExpObj.constructor = null; + +assert.notSameValue(RegExp(regExpObj), regExpObj, "RegExp returns new object"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/character-class-escape-non-whitespace-u180e.js b/js/src/tests/test262/built-ins/RegExp/character-class-escape-non-whitespace-u180e.js new file mode 100644 index 0000000000..d7d51c4c71 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/character-class-escape-non-whitespace-u180e.js @@ -0,0 +1,24 @@ +// Copyright 2018 Leonardo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-characterclassescape +description: Detect non WhiteSpace using \S+ +info: | + The production CharacterClassEscape :: S evaluates by returning + the set of all characters not included in the set returned by + CharacterClassEscape :: s + + The Mongolian Vowel Separator (u180e) became a non whitespace character + since Unicode 6.3.0 +features: [u180e] +---*/ + +var str = String.fromCharCode(0x180E); +assert.sameValue( + str.replace(/\S+/g, "test262"), + "test262", + "Non WhiteSpace character: \\u180E" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/character-class-escape-non-whitespace.js b/js/src/tests/test262/built-ins/RegExp/character-class-escape-non-whitespace.js new file mode 100644 index 0000000000..0db2ab6ae3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/character-class-escape-non-whitespace.js @@ -0,0 +1,57 @@ +// Copyright 2018 Leonardo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-characterclassescape +description: Detect non WhiteSpace using \S+ +info: | + The production CharacterClassEscape :: S evaluates by returning + the set of all characters not included in the set returned by + CharacterClassEscape :: s +---*/ + +var j; +var i; +var str; +var res; + +var whitespaceChars = [ + 0x0009, + 0x000A, + 0x000B, + 0x000C, + 0x000D, + 0x0020, + 0x00A0, + 0x1680, + 0x2000, + 0x2001, + 0x2002, + 0x2003, + 0x2004, + 0x2005, + 0x2006, + 0x2007, + 0x2008, + 0x2009, + 0x200A, + 0x2028, + 0x2029, + 0x202F, + 0x205F, + 0x3000, +]; + +for (j = 0x0000; j < 0x10000; j++) { + if (j === 0x180E) { continue; } // Skip 0x180E, current test in a separate file + if (j === 0xFEFF) { continue; } // Ignore BOM + str = String.fromCharCode(j); + res = str.replace(/\S+/g, "test262"); + if (whitespaceChars.indexOf(j) >= 0) { + assert.sameValue(res, str, "WhiteSpace character, charCode: " + j); + } else { + assert.sameValue(res, "test262", "Non WhiteSpace character, charCode: " + j); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/dotall/browser.js b/js/src/tests/test262/built-ins/RegExp/dotall/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/dotall/shell.js b/js/src/tests/test262/built-ins/RegExp/dotall/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/dotall/with-dotall-unicode.js b/js/src/tests/test262/built-ins/RegExp/dotall/with-dotall-unicode.js new file mode 100644 index 0000000000..f0d4995b2c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/dotall/with-dotall-unicode.js @@ -0,0 +1,37 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test the characters included by . in dotAll and unicode mode +info: | + 21.2.2.8 Atom + The production Atom::. evaluates as follows: + 1. If DotAll is true, then + a. Let A be the set of all characters. + 2. Otherwise, let A be the set of all characters except LineTerminator. + 3. Call CharacterSetMatcher(A, false) and return its Matcher result. + +esid: sec-atom +features: [regexp-dotall, u180e] +---*/ + +// The behavior is the same regardless of the m flag +for (let re of [/^.$/su, /^.$/sum]) { + assert(re.test("a")); + assert(re.test("3")); + assert(re.test("π")); + assert(re.test("\u2027")); + assert(re.test("\u0085")); + assert(re.test("\v")); + assert(re.test("\f")); + assert(re.test("\u180E")); + assert(re.test("\u{10300}"), "Supplementary plane matched by a single ."); + assert(re.test("\n")); + assert(re.test("\r")); + assert(re.test("\u2028")); + assert(re.test("\u2029")); + assert(re.test("\uD800")); + assert(re.test("\uDFFF")); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/dotall/with-dotall.js b/js/src/tests/test262/built-ins/RegExp/dotall/with-dotall.js new file mode 100644 index 0000000000..d56fc6f3a4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/dotall/with-dotall.js @@ -0,0 +1,37 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test the characters included by . in dotAll and non-unicode mode +info: | + 21.2.2.8 Atom + The production Atom::. evaluates as follows: + 1. If DotAll is true, then + a. Let A be the set of all characters. + 2. Otherwise, let A be the set of all characters except LineTerminator. + 3. Call CharacterSetMatcher(A, false) and return its Matcher result. + +esid: sec-atom +features: [regexp-dotall, u180e] +---*/ + +// The behavior is the same regardless of the m flag +for (let re of [/^.$/s, /^.$/sm]) { + assert(re.test("a")); + assert(re.test("3")); + assert(re.test("π")); + assert(re.test("\u2027")); + assert(re.test("\u0085")); + assert(re.test("\v")); + assert(re.test("\f")); + assert(re.test("\u180E")); + assert(!re.test("\u{10300}"), "Supplementary plane not matched by a single ."); + assert(re.test("\n")); + assert(re.test("\r")); + assert(re.test("\u2028")); + assert(re.test("\u2029")); + assert(re.test("\uD800")); + assert(re.test("\uDFFF")); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/dotall/without-dotall-unicode.js b/js/src/tests/test262/built-ins/RegExp/dotall/without-dotall-unicode.js new file mode 100644 index 0000000000..d8b61272be --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/dotall/without-dotall-unicode.js @@ -0,0 +1,37 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Without the dotAll flag, . does not match newlines in Unicode mode +info: | + 21.2.2.8 Atom + The production Atom::. evaluates as follows: + 1. If DotAll is true, then + a. Let A be the set of all characters. + 2. Otherwise, let A be the set of all characters except LineTerminator. + 3. Call CharacterSetMatcher(A, false) and return its Matcher result. + +esid: sec-atom +features: [u180e] +---*/ + +// The behavior is the same regardless of the m flag +for (let re of [/^.$/u, /^.$/um]) { + assert(re.test("a")); + assert(re.test("3")); + assert(re.test("π")); + assert(re.test("\u2027")); + assert(re.test("\u0085")); + assert(re.test("\v")); + assert(re.test("\f")); + assert(re.test("\u180E")); + assert(re.test("\u{10300}"), "Supplementary plane matched by a single ."); + assert(!re.test("\n")); + assert(!re.test("\r")); + assert(!re.test("\u2028")); + assert(!re.test("\u2029")); + assert(re.test("\uD800")); + assert(re.test("\uDFFF")); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/dotall/without-dotall.js b/js/src/tests/test262/built-ins/RegExp/dotall/without-dotall.js new file mode 100644 index 0000000000..6e27e8081e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/dotall/without-dotall.js @@ -0,0 +1,37 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Without the dotAll flag, . does not match newlines +info: | + 21.2.2.8 Atom + The production Atom::. evaluates as follows: + 1. If DotAll is true, then + a. Let A be the set of all characters. + 2. Otherwise, let A be the set of all characters except LineTerminator. + 3. Call CharacterSetMatcher(A, false) and return its Matcher result. + +esid: sec-atom +features: [u180e] +---*/ + +// The behavior is the same regardless of the m flag +for (let re of [/^.$/, /^.$/m]) { + assert(re.test("a")); + assert(re.test("3")); + assert(re.test("π")); + assert(re.test("\u2027")); + assert(re.test("\u0085")); + assert(re.test("\v")); + assert(re.test("\f")); + assert(re.test("\u180E")); + assert(!re.test("\u{10300}"), "Supplementary plane matched by a single ."); + assert(!re.test("\n")); + assert(!re.test("\r")); + assert(!re.test("\u2028")); + assert(!re.test("\u2029")); + assert(re.test("\uD800")); + assert(re.test("\uDFFF")); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/duplicate-flags.js b/js/src/tests/test262/built-ins/RegExp/duplicate-flags.js new file mode 100644 index 0000000000..a36c45fa49 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/duplicate-flags.js @@ -0,0 +1,34 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExpInitialize ( obj, pattern, flags ) + 5. If F contains any code unit other than "g", "i", "m", "s", "u", or "y" or if it contains the same code unit more than once, throw a SyntaxError exception. +esid: sec-regexpinitialize +description: Check that duplicate RegExp flags are disallowed +features: [regexp-dotall, regexp-match-indices] +---*/ + +new RegExp("", "mig"); // single g will not throw SyntaxError +assert.throws(SyntaxError, () => new RegExp("", "migg"), "duplicate g"); + +new RegExp("", "i"); // single i will not throw SyntaxError +assert.throws(SyntaxError, () => new RegExp("", "ii"), "duplicate i"); + +new RegExp("", "m"); // single m will not throw SyntaxError +assert.throws(SyntaxError, () => new RegExp("", "mm"), "duplicate m"); + +new RegExp("", "s"); // single s will not throw SyntaxError +assert.throws(SyntaxError, () => new RegExp("", "ss"), "duplicate s"); + +new RegExp("", "u"); // single u will not throw SyntaxError +assert.throws(SyntaxError, () => new RegExp("", "uu"), "duplicate u"); + +new RegExp("", "y"); // single y will not throw SyntaxError +assert.throws(SyntaxError, () => new RegExp("", "yy"), "duplicate y"); + +new RegExp("", "d"); // single d will not throw SyntaxError +assert.throws(SyntaxError, () => new RegExp("", "dd"), "duplicate d"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/duplicate-named-capturing-groups-syntax.js b/js/src/tests/test262/built-ins/RegExp/duplicate-named-capturing-groups-syntax.js new file mode 100644 index 0000000000..4064af92a3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/duplicate-named-capturing-groups-syntax.js @@ -0,0 +1,21 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp-pattern-flags +description: Runtime parsing of syntax for duplicate named capturing groups +features: [regexp-duplicate-named-groups] +---*/ + +assert.throws( + SyntaxError, + () => new RegExp("(?a)(?b)"), + "Duplicate named capturing groups in the same alternative do not parse" +); + +let source = "(?a)|(?b)"; +let parsed = new RegExp(source); +assert.sameValue(parsed.source, source, "Duplicate named capturing groups in separate alternatives parse correctly"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/from-regexp-like-flag-override.js b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-flag-override.js new file mode 100644 index 0000000000..09bc9e01a7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-flag-override.js @@ -0,0 +1,69 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Initialization from a RegExp-like object (with flag overrides) +es6id: 21.2.3.1 +info: | + 1. Let patternIsRegExp be IsRegExp(pattern). + [...] + 6. Else if patternIsRegExp is true, then + a. Let P be Get(pattern, "source"). + b. ReturnIfAbrupt(P). + c. If flags is undefined, then + [...] + d. Else, let F be flags. + [...] + 10. Return RegExpInitialize(O, P, F). +features: [Symbol, Symbol.match] +---*/ + +var obj = { + source: 'source text' +}; +var result; + +Object.defineProperty(obj, 'flags', { + get: function() { + throw new Test262Error('The `flags` property value should not be referenced.'); + } +}); + +obj[Symbol.match] = true; +result = new RegExp(obj, 'g'); +assert.sameValue( + result.source, 'source text', '@@match specified as a primitive boolean' +); +assert.sameValue( + result.flags, 'g', '@@match specified as a primitive boolean' +); + +obj[Symbol.match] = 'string'; +result = new RegExp(obj, 'g'); +assert.sameValue( + result.source, 'source text', '@@match specified as a primitive string' +); +assert.sameValue(result.flags, 'g', '@@match specified as a primitive string'); + +obj[Symbol.match] = []; +result = new RegExp(obj, 'g'); +assert.sameValue( + result.source, 'source text', '@@match specified as an array' +); +assert.sameValue(result.flags, 'g', '@@match specified as an array'); + +obj[Symbol.match] = Symbol(); +result = new RegExp(obj, 'g'); +assert.sameValue( + result.source, 'source text', '@@match specified as a Symbol' +); +assert.sameValue(result.flags, 'g', '@@match specified as a Symbol'); + +obj[Symbol.match] = 86; +result = new RegExp(obj, 'g'); +assert.sameValue( + result.source, 'source text', '@@match specified as a primitive number' +); +assert.sameValue(result.flags, 'g', '@@match specified as a primitive number'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-ctor-err.js b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-ctor-err.js new file mode 100644 index 0000000000..cc905363ec --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-ctor-err.js @@ -0,0 +1,53 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when accessing `constructor` property of RegExp-like objects +es6id: 21.2.3.1 +info: | + 1. Let patternIsRegExp be IsRegExp(pattern). + [...] + 3. If NewTarget is not undefined, let newTarget be NewTarget. + 4. Else, + a. Let newTarget be the active function object. + b. If patternIsRegExp is true and flags is undefined, then + i. Let patternConstructor be Get(pattern, "constructor"). + ii. ReturnIfAbrupt(patternConstructor). + iii. If SameValue(newTarget, patternConstructor) is true, return + pattern. +features: [Symbol, Symbol.match] +---*/ + +var obj = Object.defineProperty({}, 'constructor', { + get: function() { + throw new Test262Error(); + } +}); + +obj[Symbol.match] = true; +assert.throws(Test262Error, function() { + RegExp(obj); +}); + +obj[Symbol.match] = 'string'; +assert.throws(Test262Error, function() { + RegExp(obj); +}); + +obj[Symbol.match] = []; +assert.throws(Test262Error, function() { + RegExp(obj); +}); + +obj[Symbol.match] = Symbol() +assert.throws(Test262Error, function() { + RegExp(obj); +}); + +obj[Symbol.match] = 86; +assert.throws(Test262Error, function() { + RegExp(obj); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-flags-err.js b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-flags-err.js new file mode 100644 index 0000000000..11c81f0894 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-flags-err.js @@ -0,0 +1,51 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error thrown from `flags` property of a RegExp-like object +es6id: 21.2.3.1 +info: | + 1. Let patternIsRegExp be IsRegExp(pattern). + [...] + 6. Else if patternIsRegExp is true, then + [...] + c. If flags is undefined, then + i. Let F be Get(pattern, "flags"). + ii. ReturnIfAbrupt(F). +features: [Symbol, Symbol.match] +---*/ + +var obj = {}; +Object.defineProperty(obj, 'flags', { + get: function() { + throw new Test262Error(); + } +}); + +obj[Symbol.match] = true; +assert.throws(Test262Error, function() { + new RegExp(obj); +}); + +obj[Symbol.match] = 'string'; +assert.throws(Test262Error, function() { + new RegExp(obj); +}); + +obj[Symbol.match] = []; +assert.throws(Test262Error, function() { + new RegExp(obj); +}); + +obj[Symbol.match] = Symbol(); +assert.throws(Test262Error, function() { + new RegExp(obj); +}); + +obj[Symbol.match] = 86; +assert.throws(Test262Error, function() { + new RegExp(obj); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-source-err.js b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-source-err.js new file mode 100644 index 0000000000..a660202dd2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-get-source-err.js @@ -0,0 +1,55 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error thrown from `source` property of a RegExp-like object +es6id: 21.2.3.1 +info: | + 1. Let patternIsRegExp be IsRegExp(pattern). + [...] + 6. Else if patternIsRegExp is true, then + a. Let P be Get(pattern, "source"). + b. ReturnIfAbrupt(P). +features: [Symbol, Symbol.match] +---*/ + +var obj = {}; +function CustomError() {} +Object.defineProperty(obj, 'source', { + get: function() { + throw new CustomError(); + } +}); +Object.defineProperty(obj, 'flags', { + get: function() { + throw new Test262Error('the `flags` property should not be referenced before `source`'); + } +}); + +obj[Symbol.match] = true; +assert.throws(CustomError, function() { + new RegExp(obj); +}); + +obj[Symbol.match] = 'string'; +assert.throws(CustomError, function() { + new RegExp(obj); +}); + +obj[Symbol.match] = []; +assert.throws(CustomError, function() { + new RegExp(obj); +}); + +obj[Symbol.match] = Symbol(); +assert.throws(CustomError, function() { + new RegExp(obj); +}); + +obj[Symbol.match] = 86; +assert.throws(CustomError, function() { + new RegExp(obj); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/from-regexp-like-short-circuit.js b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-short-circuit.js new file mode 100644 index 0000000000..f3ddd01bcf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/from-regexp-like-short-circuit.js @@ -0,0 +1,40 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Skipping construction from RegExp-like objects +es6id: 21.2.3.1 +info: | + 1. Let patternIsRegExp be IsRegExp(pattern). + [...] + 3. If NewTarget is not undefined, let newTarget be NewTarget. + 4. Else, + a. Let newTarget be the active function object. + b. If patternIsRegExp is true and flags is undefined, then + i. Let patternConstructor be Get(pattern, "constructor"). + ii. ReturnIfAbrupt(patternConstructor). + iii. If SameValue(newTarget, patternConstructor) is true, return + pattern. +features: [Symbol, Symbol.match] +---*/ + +var obj = { + constructor: RegExp +}; + +obj[Symbol.match] = true; +assert.sameValue(RegExp(obj), obj); + +obj[Symbol.match] = 'string'; +assert.sameValue(RegExp(obj), obj); + +obj[Symbol.match] = []; +assert.sameValue(RegExp(obj), obj); + +obj[Symbol.match] = Symbol(); +assert.sameValue(RegExp(obj), obj); + +obj[Symbol.match] = 86; +assert.sameValue(RegExp(obj), obj); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/from-regexp-like.js b/js/src/tests/test262/built-ins/RegExp/from-regexp-like.js new file mode 100644 index 0000000000..27a124e3d5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/from-regexp-like.js @@ -0,0 +1,58 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Initialization from a RegExp-like object +es6id: 21.2.3.1 +info: | + 1. Let patternIsRegExp be IsRegExp(pattern). + [...] + 6. Else if patternIsRegExp is true, then + a. Let P be Get(pattern, "source"). + b. ReturnIfAbrupt(P). + c. If flags is undefined, then + i. Let F be Get(pattern, "flags"). + ii. ReturnIfAbrupt(F). + d. Else, let F be flags. + [...] + 10. Return RegExpInitialize(O, P, F). +features: [Symbol, Symbol.match] +---*/ + +var obj = { + source: 'source text', + flags: 'i' +}; +var result; + +obj[Symbol.match] = true; +result = new RegExp(obj); +assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); +assert.sameValue(result.source, 'source text'); +assert.sameValue(result.flags, 'i'); + +obj[Symbol.match] = 'string'; +result = new RegExp(obj); +assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); +assert.sameValue(result.source, 'source text'); +assert.sameValue(result.flags, 'i'); + +obj[Symbol.match] = []; +result = new RegExp(obj); +assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); +assert.sameValue(result.source, 'source text'); +assert.sameValue(result.flags, 'i'); + +obj[Symbol.match] = Symbol(); +result = new RegExp(obj); +assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); +assert.sameValue(result.source, 'source text'); +assert.sameValue(result.flags, 'i'); + +obj[Symbol.match] = 86; +result = new RegExp(obj); +assert.sameValue(Object.getPrototypeOf(result), RegExp.prototype); +assert.sameValue(result.source, 'source text'); +assert.sameValue(result.flags, 'i'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/is-a-constructor.js b/js/src/tests/test262/built-ins/RegExp/is-a-constructor.js new file mode 100644 index 0000000000..3c0b70951d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/is-a-constructor.js @@ -0,0 +1,26 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + The RegExp constructor implements [[Construct]] +info: | + IsConstructor ( argument ) + + The abstract operation IsConstructor takes argument argument (an ECMAScript language value). + It determines if argument is a function object with a [[Construct]] internal method. + It performs the following steps when called: + + If Type(argument) is not Object, return false. + If argument has a [[Construct]] internal method, return true. + Return false. +includes: [isConstructor.js] +features: [Reflect.construct] +---*/ + +assert.sameValue(isConstructor(RegExp), true, 'isConstructor(RegExp) must return true'); +new RegExp(''); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/lastIndex.js b/js/src/tests/test262/built-ins/RegExp/lastIndex.js new file mode 100644 index 0000000000..77df89e5ab --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/lastIndex.js @@ -0,0 +1,34 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-regexp-pattern-flags +description: Initial state of the `lastIndex` property +info: | + [...] + 7. Let O be ? RegExpAlloc(newTarget). + 8. Return ? RegExpInitialize(O, P, F). + + 21.2.3.2.2 Runtime Semantics: RegExpInitialize + + [...] + 12. Perform ? Set(obj, "lastIndex", 0, true). + [...] + + 21.2.3.2.1 Runtime Semantics: RegExpAlloc + + [...] + 2. Perform ! DefinePropertyOrThrow(obj, "lastIndex", PropertyDescriptor + {[[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: false}). + [...] +includes: [propertyHelper.js] +---*/ + +var re = new RegExp(''); + +assert.sameValue(re.lastIndex, 0); + +verifyNotEnumerable(re, 'lastIndex'); +verifyWritable(re, 'lastIndex'); +verifyNotConfigurable(re, 'lastIndex'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/lookBehind/alternations.js b/js/src/tests/test262/built-ins/RegExp/lookBehind/alternations.js new file mode 100644 index 0000000000..64c4247043 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/lookBehind/alternations.js @@ -0,0 +1,29 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assertion +description: Alternations are tried left to right, and we do not backtrack into a lookbehind. +info: | + The production Assertion :: (?<=Disjunction) evaluates as follows: + 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m. + 2. Return an internal Matcher closure that takes two arguments, a State x and a Continuation + c, and performs the following steps: + a. Let d be a Continuation that always returns its State argument as a successful MatchResult. + b. Call m(x, d) and let r be its result. + c. If r is failure, return failure. + d. Let y be r's State. + e. Let cap be y's captures List. + f. Let xe be x's endIndex. + g. Let z be the State (xe, cap). + h. Call c(z) and return its result. +features: [regexp-lookbehind] +includes: [compareArray.js] +---*/ + +assert.compareArray("xabcd".match(/.*(?<=(..|...|....))(.*)/), ["xabcd", "cd", ""], "#1"); +assert.compareArray("xabcd".match(/.*(?<=(xx|...|....))(.*)/), ["xabcd", "bcd", ""], "#2"); +assert.compareArray("xxabcd".match(/.*(?<=(xx|...))(.*)/), ["xxabcd", "bcd", ""], "#3"); +assert.compareArray("xxabcd".match(/.*(?<=(xx|xxx))(.*)/), ["xxabcd", "xx", "abcd"], "#4"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/lookBehind/back-references-to-captures.js b/js/src/tests/test262/built-ins/RegExp/lookBehind/back-references-to-captures.js new file mode 100644 index 0000000000..0f1f853ecc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/lookBehind/back-references-to-captures.js @@ -0,0 +1,31 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assertion +description: Back references to captures inside the lookbehind. +info: | + The production Assertion :: (?<=Disjunction) evaluates as follows: + 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m. + 2. Return an internal Matcher closure that takes two arguments, a State x and a Continuation + c, and performs the following steps: + a. Let d be a Continuation that always returns its State argument as a successful MatchResult. + b. Call m(x, d) and let r be its result. + c. If r is failure, return failure. + d. Let y be r's State. + e. Let cap be y's captures List. + f. Let xe be x's endIndex. + g. Let z be the State (xe, cap). + h. Call c(z) and return its result. +features: [regexp-lookbehind] +includes: [compareArray.js] +---*/ + +assert.compareArray("abcCd".match(/(?<=\1(\w))d/i), ["d", "C"], "#1"); +assert.compareArray("abxxd".match(/(?<=\1([abx]))d/), ["d", "x"], "#2"); +assert.compareArray("ababc".match(/(?<=\1(\w+))c/), ["c", "ab"], "#3"); +assert.compareArray("ababbc".match(/(?<=\1(\w+))c/), ["c", "b"], "#4"); +assert.sameValue("ababdc".match(/(?<=\1(\w+))c/), null, "#5"); +assert.compareArray("ababc".match(/(?<=(\w+)\1)c/), ["c", "abab"], "#6"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/lookBehind/back-references.js b/js/src/tests/test262/built-ins/RegExp/lookBehind/back-references.js new file mode 100644 index 0000000000..f6a3f7c842 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/lookBehind/back-references.js @@ -0,0 +1,45 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assertion +description: Back references +info: | + The production Assertion :: (?<=Disjunction) evaluates as follows: + 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m. + 2. Return an internal Matcher closure that takes two arguments, a State x and a Continuation + c, and performs the following steps: + a. Let d be a Continuation that always returns its State argument as a successful MatchResult. + b. Call m(x, d) and let r be its result. + c. If r is failure, return failure. + d. Let y be r's State. + e. Let cap be y's captures List. + f. Let xe be x's endIndex. + g. Let z be the State (xe, cap). + h. Call c(z) and return its result. +features: [regexp-lookbehind] +includes: [compareArray.js] +---*/ + +assert.compareArray("abb".match(/(.)(?<=(\1\1))/), ["b", "b", "bb"], "#1"); +assert.compareArray("abB".match(/(.)(?<=(\1\1))/i), ["B", "B", "bB"], "#2"); +assert.compareArray("aabAaBa".match(/((\w)\w)(?<=\1\2\1)/i), ["aB", "aB", "a"], "#3"); +assert.compareArray("aabAaBa".match(/(\w(\w))(?<=\1\2\1)/i), ["Ba", "Ba", "a"], "#4"); +assert.compareArray("abaBbAa".match(/(?=(\w))(?<=(\1))./i), ["b", "b", "B"], "#5"); +assert.compareArray(" 'foo' ".match(/(?<=(.))(\w+)(?=\1)/), ["foo", "'", "foo"], "#6"); +assert.compareArray(" \"foo\" ".match(/(?<=(.))(\w+)(?=\1)/), ["foo", "\"", "foo"], "#7"); +assert.compareArray("abbb".match(/(.)(?<=\1\1\1)/), ["b", "b"], "#8"); +assert.compareArray("fababab".match(/(..)(?<=\1\1\1)/), ["ab", "ab"], "#9"); + +assert.sameValue(" .foo\" ".match(/(?<=(.))(\w+)(?=\1)/), null, "#10"); +assert.sameValue("ab".match(/(.)(?<=\1\1\1)/), null, "#11"); +assert.sameValue("abb".match(/(.)(?<=\1\1\1)/), null, "#12"); +assert.sameValue("ab".match(/(..)(?<=\1\1\1)/), null, "#13"); +assert.sameValue("abb".match(/(..)(?<=\1\1\1)/), null, "#14"); +assert.sameValue("aabb".match(/(..)(?<=\1\1\1)/), null, "#15"); +assert.sameValue("abab".match(/(..)(?<=\1\1\1)/), null, "#16"); +assert.sameValue("fabxbab".match(/(..)(?<=\1\1\1)/), null, "#17"); +assert.sameValue("faxabab".match(/(..)(?<=\1\1\1)/), null, "#18"); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/lookBehind/browser.js b/js/src/tests/test262/built-ins/RegExp/lookBehind/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/lookBehind/captures-negative.js b/js/src/tests/test262/built-ins/RegExp/lookBehind/captures-negative.js new file mode 100644 index 0000000000..966d505910 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/lookBehind/captures-negative.js @@ -0,0 +1,27 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assertion +description: > + Captures inside negative lookbehind. (They never capture.) +info: | + The production Assertion :: (?<=Disjunction) evaluates as follows: + 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m. + 2. Return an internal Matcher closure that takes two arguments, a State x and a Continuation + c, and performs the following steps: + a. Let d be a Continuation that always returns its State argument as a successful MatchResult. + b. Call m(x, d) and let r be its result. + c. If r is failure, return failure. + d. Let y be r's State. + e. Let cap be y's captures List. + f. Let xe be x's endIndex. + g. Let z be the State (xe, cap). + h. Call c(z) and return its result. +features: [regexp-lookbehind] +includes: [compareArray.js] +---*/ + +assert.compareArray("abcdef".match(/(? + Capturing matches +info: | + The production Assertion :: (?<=Disjunction) evaluates as follows: + 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m. + 2. Return an internal Matcher closure that takes two arguments, a State x and a Continuation + c, and performs the following steps: + a. Let d be a Continuation that always returns its State argument as a successful MatchResult. + b. Call m(x, d) and let r be its result. + c. If r is failure, return failure. + d. Let y be r's State. + e. Let cap be y's captures List. + f. Let xe be x's endIndex. + g. Let z be the State (xe, cap). + h. Call c(z) and return its result. +features: [regexp-lookbehind] +includes: [compareArray.js] +---*/ + +var str = "abcdef"; +assert.compareArray(str.match(/(?<=(c))def/), ["def", "c"], "#1"); +assert.compareArray(str.match(/(?<=(\w{2}))def/), ["def", "bc"], "#2"); +assert.compareArray(str.match(/(?<=(\w(\w)))def/), ["def", "bc", "c"], "#3"); +assert.compareArray(str.match(/(?<=(\w){3})def/), ["def", "a"], "#4"); +assert.compareArray(str.match(/(?<=(bc)|(cd))./), ["d", "bc", undefined], "#5"); +assert.compareArray(str.match(/(?<=([ab]{1,2})\D|(abc))\w/), ["c", "a", undefined], "#6"); +assert.compareArray(str.match(/\D(?<=([ab]+))(\w)/), ["ab", "a", "b"], "#7"); +assert.compareArray(str.match(/(?<=b|c)\w/g), ["c", "d"], "#8"); +assert.compareArray(str.match(/(?<=[b-e])\w{2}/g), ["cd", "ef"], "#9"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/lookBehind/do-not-backtrack.js b/js/src/tests/test262/built-ins/RegExp/lookBehind/do-not-backtrack.js new file mode 100644 index 0000000000..ee44a50ea6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/lookBehind/do-not-backtrack.js @@ -0,0 +1,27 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assertion +description: Do not backtrack into a lookbehind. +info: | + The production Assertion :: (?<=Disjunction) evaluates as follows: + 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m. + 2. Return an internal Matcher closure that takes two arguments, a State x and a Continuation + c, and performs the following steps: + a. Let d be a Continuation that always returns its State argument as a successful MatchResult. + b. Call m(x, d) and let r be its result. + c. If r is failure, return failure. + d. Let y be r's State. + e. Let cap be y's captures List. + f. Let xe be x's endIndex. + g. Let z be the State (xe, cap). + h. Call c(z) and return its result. +features: [regexp-lookbehind] +---*/ + +// The lookbehind captures "abc" so that \1 does not match. We do not backtrack +// to capture only "bc" in the lookbehind. +assert.sameValue("abcdbc".match(/(?<=([abc]+)).\1/), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/lookBehind/greedy-loop.js b/js/src/tests/test262/built-ins/RegExp/lookBehind/greedy-loop.js new file mode 100644 index 0000000000..bd8285a740 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/lookBehind/greedy-loop.js @@ -0,0 +1,28 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assertion +description: Greedy loop +info: | + The production Assertion :: (?<=Disjunction) evaluates as follows: + 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m. + 2. Return an internal Matcher closure that takes two arguments, a State x and a Continuation + c, and performs the following steps: + a. Let d be a Continuation that always returns its State argument as a successful MatchResult. + b. Call m(x, d) and let r be its result. + c. If r is failure, return failure. + d. Let y be r's State. + e. Let cap be y's captures List. + f. Let xe be x's endIndex. + g. Let z be the State (xe, cap). + h. Call c(z) and return its result. +features: [regexp-lookbehind] +includes: [compareArray.js] +---*/ + +assert.compareArray("abbbbbbc".match(/(?<=(b+))c/), ["c", "bbbbbb"], "#1"); +assert.compareArray("ab1234c".match(/(?<=(b\d+))c/), ["c", "b1234"], "#2"); +assert.compareArray("ab12b23b34c".match(/(?<=((?:b\d{2})+))c/), ["c", "b12b23b34"], "#3"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/lookBehind/misc.js b/js/src/tests/test262/built-ins/RegExp/lookBehind/misc.js new file mode 100644 index 0000000000..b925a5c49c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/lookBehind/misc.js @@ -0,0 +1,39 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-assertion +description: Misc RegExp lookbehind tests +info: | + The production Assertion :: (?<=Disjunction) evaluates as follows: + 1. Evaluate Disjunction with -1 as its direction argument to obtain a Matcher m. + 2. Return an internal Matcher closure that takes two arguments, a State x and a Continuation + c, and performs the following steps: + a. Let d be a Continuation that always returns its State argument as a successful MatchResult. + b. Call m(x, d) and let r be its result. + c. If r is failure, return failure. + d. Let y be r's State. + e. Let cap be y's captures List. + f. Let xe be x's endIndex. + g. Let z be the State (xe, cap). + h. Call c(z) and return its result. +features: [regexp-lookbehind] +includes: [compareArray.js] +---*/ + +assert.sameValue("abcdef".match(/(?<=$abc)def/), null, "#1"); +assert.sameValue("fno".match(/^f.o(?<=foo)$/), null, "#2"); +assert.sameValue("foo".match(/^foo(?= 0 and _i_ < _n_, do + a. Let _matchIndices_ be _indices_[_i_]. + b. If _matchIndices_ is not *undefined*, then + i. Let _matchIndicesArray_ be ! GetMatchIndicesArray(_S_, _matchIndices_). + c. Else, + i. Let _matchIndicesArray_ be *undefined*. + d. Perform ! CreateDataProperty(_A_, ! ToString(_n_), _matchIndicesArray_). + ... +---*/ + +let input = "abcd"; +let match = /b(c)/d.exec(input); +let indices = match.indices; + +// `indices` has the same length as match +assert.sameValue(indices.length, match.length); + +// The first element of `indices` contains the start/end indices of the match +assert.compareArray(indices[0], [1, 3]); +assert.sameValue(input.slice(indices[0][0], indices[0][1]), match[0]); + +// The second element of `indices` contains the start/end indices of the first capture +assert.compareArray(indices[1], [2, 3]); +assert.sameValue(input.slice(indices[1][0], indices[1][1]), match[1]); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-non-unicode-match.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-non-unicode-match.js new file mode 100644 index 0000000000..8e167d35b9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-non-unicode-match.js @@ -0,0 +1,81 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Basic matching cases with non-unicode matches. +includes: [compareArray.js, propertyHelper.js, deepEqual.js] +esid: sec-regexpbuiltinexec +features: [regexp-named-groups, regexp-match-indices] +info: | + Runtime Semantics: RegExpBuiltinExec ( R, S ) + ... + 4. Let _lastIndex_ be ? ToLength(? Get(_R_, `"lastIndex")). + ... + 8. If _flags_ contains `"d"`, let _hasIndices_ be *true*, else let _hasIndices_ be *false*. + ... + 26. Let _match_ be the Match { [[StartIndex]]: _lastIndex_, [[EndIndex]]: _e_ }. + 27. Let _indices_ be a new empty List. + 29. Add _match_ as the last element of _indices_. + ... + 35. For each integer _i_ such that _i_ > 0 and _i_ <= _n_, in ascending order, do + ... + f. Else, + i. Let _captureStart_ be _captureI_'s _startIndex_. + ii. Let _captureEnd_ be _captureI_'s _endIndex_. + ... + iv. Let _capture_ be the Match { [[StartIndex]]: _captureStart_, [[EndIndex]]: _captureEnd_ }. + v. Append _capture_ to _indices_. + ... + 36. If _hasIndices_ is *true*, then + a. Let _indicesArray_ be MakeIndicesArray( _S_, _indices_, _groupNames_). + b. Perform ! CreateDataProperty(_A_, `"indices"`, _indicesArray_). +---*/ + +assert.deepEqual([[1, 2], [1, 2]], "bab".match(/(a)/d).indices); +assert.deepEqual([[0, 3], [1, 2]], "bab".match(/.(a)./d).indices); +assert.deepEqual([[0, 3], [1, 2], [2, 3]], "bab".match(/.(a)(.)/d).indices); +assert.deepEqual([[0, 3], [1, 3]], "bab".match(/.(\w\w)/d).indices); +assert.deepEqual([[0, 3], [0, 3]], "bab".match(/(\w\w\w)/d).indices); +assert.deepEqual([[0, 3], [0, 2], [2, 3]], "bab".match(/(\w\w)(\w)/d).indices); +assert.deepEqual([[0, 2], [0, 2], undefined], "bab".match(/(\w\w)(\W)?/d).indices); + +let groups = /(?.)(?.)(?.)\k\k\k/d.exec("abccba").indices.groups; +assert.compareArray([0, 1], groups.a); +assert.compareArray([1, 2], groups.b); +assert.compareArray([2, 3], groups.c); +verifyProperty(groups, "a", { + enumerable: true, + writable: true, + configurable: true +}); +verifyProperty(groups, "b", { + enumerable: true, + writable: true, + configurable: true +}); +verifyProperty(groups, "c", { + enumerable: true, + writable: true, + configurable: true +}); + +// "𝐁" is U+1d401 MATHEMATICAL BOLD CAPITAL B +// - Also representable as the code point "\u{1d401}" +// - Also representable as the surrogate pair "\uD835\uDC01" + +// Verify assumptions: +assert.sameValue("𝐁".length, 2, 'The length of "𝐁" is 2'); +assert.sameValue("\u{1d401}".length, 2, 'The length of "\\u{1d401}" is 2'); +assert.sameValue("\uD835\uDC01".length, 2, 'The length of "\\uD835\\uDC01" is 2'); +assert.sameValue("𝐁".match(/./)[0].length, 1, 'The length of a single code unit match against "𝐁" is 1 (without /u flag)'); +assert.sameValue("\u{1d401}".match(/./)[0].length, 1, 'The length of a single code unit match against "\\u{1d401}" is 1 (without /u flag)'); +assert.sameValue("\uD835\uDC01".match(/./)[0].length, 1, 'The length of a single code unit match against "\\ud835\\udc01" is 1 (without /u flag)'); + +assert.compareArray([0, 1], "𝐁".match(/./d).indices[0], 'Indices for non-unicode match against "𝐁" (without /u flag)'); +assert.compareArray([0, 1], "\u{1d401}".match(/./d).indices[0], 'Indices for non-unicode match against "\\u{1d401}" (without /u flag)'); +assert.compareArray([0, 1], "\uD835\uDC01".match(/./d).indices[0], 'Indices for non-unicode match against "\\ud835\\udc01" (without /u flag)'); +assert.compareArray([0, 1], "𝐁".match(/(?.)/d).indices.groups.a, 'Indices for non-unicode match against "𝐁" in groups.a (without /u flag)'); +assert.compareArray([0, 1], "\u{1d401}".match(/(?.)/d).indices.groups.a, 'Indices for non-unicode match against "\\u{1d401}" in groups.a (without /u flag)'); +assert.compareArray([0, 1], "\uD835\uDC01".match(/(?.)/d).indices.groups.a, 'Indices for non-unicode match against "\\ud835\\udc01" in groups.a (without /u flag)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-properties.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-properties.js new file mode 100644 index 0000000000..c050976f54 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-properties.js @@ -0,0 +1,31 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The properties of the "indices" array are created with CreateDataProperty. +includes: [propertyHelper.js] +esid: sec-makeindicesarray +features: [regexp-match-indices] +info: | + MakeIndicesArray ( S, indices, groupNames, hasGroups ) + 13. For each integer _i_ such that _i_ >= 0 and _i_ < _n_, do + d. Perform ! CreateDataProperty(_A_, ! ToString(_n_), _matchIndicesArray_). +---*/ + +let input = "abcd"; +let match = /b(c)/d.exec(input); +let indices = match.indices; + +verifyProperty(indices, '0', { + enumerable: true, + configurable: true, + writable: true +}); + +verifyProperty(indices, '1', { + enumerable: true, + configurable: true, + writable: true +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unicode-match.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unicode-match.js new file mode 100644 index 0000000000..7b68980397 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unicode-match.js @@ -0,0 +1,89 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Basic matching cases with non-unicode matches. +includes: [compareArray.js, propertyHelper.js, deepEqual.js] +esid: sec-regexpbuiltinexec +features: [regexp-named-groups, regexp-match-indices] +info: | + Runtime Semantics: RegExpBuiltinExec ( R, S ) + ... + 4. Let _lastIndex_ be ? ToLength(? Get(_R_, `"lastIndex")). + ... + 16. If _fullUnicode_ is *true*, set _e_ to ! GetStringIndex(_S_, _Input_, _e_). + ... + 26. Let _match_ be the Match { [[StartIndex]]: _lastIndex_, [[EndIndex]]: _e_ }. + 27. Let _indices_ be a new empty List. + ... + 29. Add _match_ as the last element of _indices_. + ... + 35. For each integer _i_ such that _i_ > 0 and _i_ <= _n_, in ascending order, do + ... + f. Else, + i. Let _captureStart_ be _captureI_'s _startIndex_. + ii. Let _captureEnd_ be _captureI_'s _endIndex_. + iii. If _fullUnicode_ is *true*, then + 1. Set _captureStart_ to ! GetStringIndex(_S_, _Input_, _captureStart_). + 1. Set _captureEnd_ to ! GetStringIndex(_S_, _Input_, _captureEnd_). + iv. Let _capture_ be the Match { [[StartIndex]]: _captureStart_, [[EndIndex]]: _captureEnd_ }. + v. Append _capture_ to _indices_. + ... + 36. If _hasIndices_ is *true*, then + a. Let _indicesArray_ be MakeIndicesArray(_S_, _indices_, _groupNames_, _hasGroups_). + b. Perform ! CreateDataProperty(_A_, `"indices"`, _indicesArray_). + + GetStringIndex ( S, Input, e ) + ... + 4. Let _eUTF_ be the smallest index into _S_ that corresponds to the character at element _e_ of _Input_. If _e_ is greater than or equal to the number of elements in _Input_, then _eUTF_ is the number of code units in _S_. + 5. Return _eUTF_. +---*/ + +assert.deepEqual([[1, 2], [1, 2]], "bab".match(/(a)/du).indices); +assert.deepEqual([[0, 3], [1, 2]], "bab".match(/.(a)./du).indices); +assert.deepEqual([[0, 3], [1, 2], [2, 3]], "bab".match(/.(a)(.)/du).indices); +assert.deepEqual([[0, 3], [1, 3]], "bab".match(/.(\w\w)/du).indices); +assert.deepEqual([[0, 3], [0, 3]], "bab".match(/(\w\w\w)/du).indices); +assert.deepEqual([[0, 3], [0, 2], [2, 3]], "bab".match(/(\w\w)(\w)/du).indices); +assert.deepEqual([[0, 2], [0, 2], undefined], "bab".match(/(\w\w)(\W)?/du).indices); + +let groups = /(?.)(?.)(?.)\k\k\k/du.exec("abccba").indices.groups; +assert.compareArray([0, 1], groups.a); +assert.compareArray([1, 2], groups.b); +assert.compareArray([2, 3], groups.c); +verifyProperty(groups, "a", { + enumerable: true, + writable: true, + configurable: true +}); +verifyProperty(groups, "b", { + enumerable: true, + writable: true, + configurable: true +}); +verifyProperty(groups, "c", { + enumerable: true, + writable: true, + configurable: true +}); + +// "𝐁" is U+1d401 MATHEMATICAL BOLD CAPITAL B +// - Also representable as the code point "\u{1d401}" +// - Also representable as the surrogate pair "\uD835\uDC01" + +// Verify assumptions: +assert.sameValue("𝐁".length, 2, 'The length of "𝐁" is 2'); +assert.sameValue("\u{1d401}".length, 2, 'The length of "\\u{1d401}" is 2'); +assert.sameValue("\uD835\uDC01".length, 2, 'The length of "\\uD835\\uDC01" is 2'); +assert.sameValue(2, "𝐁".match(/./u)[0].length, 'The length of a single code point match against "𝐁" is 2 (with /du flag)'); +assert.sameValue(2, "\u{1d401}".match(/./u)[0].length, 'The length of a single code point match against "\\u{1d401}" is 2 (with /du flag)'); +assert.sameValue(2, "\uD835\uDC01".match(/./u)[0].length, 'The length of a single code point match against "\\ud835\\udc01" is 2 (with /du flag)'); + +assert.compareArray([0, 2], "𝐁".match(/./du).indices[0], 'Indices for unicode match against "𝐁" (with /du flag)'); +assert.compareArray([0, 2], "\u{1d401}".match(/./du).indices[0], 'Indices for unicode match against \\u{1d401} (with /du flag)'); +assert.compareArray([0, 2], "\uD835\uDC01".match(/./du).indices[0], 'Indices for unicode match against \\ud835\\udc01 (with /du flag)'); +assert.compareArray([0, 2], "𝐁".match(/(?.)/du).indices.groups.a, 'Indices for unicode match against 𝐁 in groups.a (with /du flag)'); +assert.compareArray([0, 2], "\u{1d401}".match(/(?.)/du).indices.groups.a, 'Indices for unicode match against \\u{1d401} in groups.a (with /du flag)'); +assert.compareArray([0, 2], "\uD835\uDC01".match(/(?.)/du).indices.groups.a, 'Indices for unicode match against \\ud835\\udc01 in groups.a (with /du flag)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unicode-property-names.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unicode-property-names.js new file mode 100644 index 0000000000..8eba7355d8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unicode-property-names.js @@ -0,0 +1,22 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Basic matching cases with non-unicode matches. +includes: [compareArray.js] +esid: sec-makeindicesarray +features: [regexp-named-groups, regexp-match-indices] +---*/ + +assert.compareArray([1, 2], /(?<π>a)/du.exec("bab").indices.groups.π); +assert.compareArray([1, 2], /(?<\u{03C0}>a)/du.exec("bab").indices.groups.π); +assert.compareArray([1, 2], /(?<π>a)/du.exec("bab").indices.groups.\u03C0); +assert.compareArray([1, 2], /(?<\u{03C0}>a)/du.exec("bab").indices.groups.\u03C0); +assert.compareArray([1, 2], /(?<$>a)/du.exec("bab").indices.groups.$); +assert.compareArray([1, 2], /(?<_>a)/du.exec("bab").indices.groups._); +assert.compareArray([1, 2], /(?<$𐒤>a)/du.exec("bab").indices.groups.$𐒤); +assert.compareArray([1, 2], /(?<_\u200C>a)/du.exec("bab").indices.groups._\u200C); +assert.compareArray([1, 2], /(?<_\u200D>a)/du.exec("bab").indices.groups._\u200D); +assert.compareArray([1, 2], /(?<ಠ_ಠ>a)/du.exec("bab").indices.groups.ಠ_ಠ); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unmatched.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unmatched.js new file mode 100644 index 0000000000..43c18f69e3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array-unmatched.js @@ -0,0 +1,34 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: An unmatched capture in a match corresponds to an unmatched capture in "indices" +esid: sec-makeindicesarray +features: [regexp-match-indices] +info: | + MakeIndicesArray ( S, indices, groupNames ) + 4. Let _n_ be the number of elements in _indices_. + ... + 6. Set _A_ to ! ArrayCreate(_n_). + ... + 11. For each integer _i_ such that _i_ >= 0 and _i_ < _n_, do + a. Let _matchIndices_ be _indices_[_i_]. + b. If _matchIndices_ is not *undefined*, then + i. Let _matchIndicesArray_ be ! GetMatchIndicesArray(_S_, _matchIndices_). + c. Else, + i. Let _matchIndicesArray_ be *undefined*. + d. Perform ! CreateDataProperty(_A_, ! ToString(_n_), _matchIndicesArray_). + ... +---*/ + +let input = "abd"; +let match = /b(c)?/d.exec(input); +let indices = match.indices; + +// `indices` has the same length as match +assert.sameValue(indices.length, match.length); + +// The second element of `indices` should be undefined. +assert.sameValue(indices[1], undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array.js new file mode 100644 index 0000000000..ee0a7d27ab --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-array.js @@ -0,0 +1,20 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The "indices" property is an Array. +esid: sec-makeindicesarray +features: [regexp-match-indices] +info: | + MakeIndicesArray ( S, indices, groupNames, hasGroups ) + 6. Set _A_ to ! ArrayCreate(_n_). +---*/ + +let match = /a/d.exec("a"); +let indices = match.indices; + +// `indices` is an array +assert.sameValue(Object.getPrototypeOf(indices), Array.prototype); +assert(Array.isArray(indices)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object-undefined.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object-undefined.js new file mode 100644 index 0000000000..1be5fdb626 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object-undefined.js @@ -0,0 +1,28 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The groups object of indices is created unconditionally. +includes: [propertyHelper.js] +esid: sec-makeindicesarray +features: [regexp-named-groups, regexp-match-indices] +info: | + MakeIndicesArray ( S, indices, groupNames, hasGroups ) + 10. If _hasGroups_ is *true*, then + a. Let _groups_ be ! ObjectCreate(*null*). + 11. Else, + a. Let _groups_ be *undefined*. + 12. Perform ! CreateDataProperty(_A_, `"groups"`, _groups_). +---*/ + + +const re = /./d; +const indices = re.exec("a").indices; +verifyProperty(indices, 'groups', { + writable: true, + enumerable: true, + configurable: true, + value: undefined +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object-unmatched.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object-unmatched.js new file mode 100644 index 0000000000..00c0f24297 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object-unmatched.js @@ -0,0 +1,22 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Test the groups object of indices with matched and unmatched named captures. +includes: [compareArray.js] +esid: sec-makeindicesarray +features: [regexp-named-groups, regexp-match-indices] +info: | + MakeIndicesArray ( S, indices, groupNames, hasGroups ) + 11. For each integer _i_ such that _i_ >= 0 and _i_ < _n_, do + e. If _i_ > 0 and _groupNames_[_i_ - 1] is not *undefined*, then + i. Perform ! CreateDataProperty(_groups_, _groupNames_[_i_ - 1], _matchIndicesArray_). +---*/ + + +const re = /(?a).|(?x)/d; +const result = re.exec("ab").indices; +assert.compareArray([0, 1], result.groups.a); +assert.sameValue(undefined, result.groups.x); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object.js new file mode 100644 index 0000000000..41fa94412f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-object.js @@ -0,0 +1,41 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The groups object of indices is created with CreateDataProperty +includes: [propertyHelper.js, compareArray.js] +esid: sec-makeindicesarray +features: [regexp-named-groups, regexp-match-indices] +info: | + MakeIndicesArray ( S, indices, groupNames, hasIndices ) + 10. If _hasIndices_ is *true*, then + a. Let _groups_ be ! ObjectCreate(*null*). + 11. Else, + a. Let _groups_ be *undefined*. + 12. Perform ! CreateDataProperty(_A_, `"groups"`, _groups_). +---*/ + +// `groups` is created with Define, not Set. +let counter = 0; +Object.defineProperty(Array.prototype, "groups", { + set() { counter++; } +}); + +let indices = /(?.)/d.exec("a").indices; +assert.sameValue(counter, 0); + +// `groups` is writable, enumerable and configurable +// (from CreateDataProperty). +verifyProperty(indices, 'groups', { + writable: true, + enumerable: true, + configurable: true +}); + +// The `__proto__` property on the groups object is not special, +// and does not affect the [[Prototype]] of the resulting groups object. +let {groups} = /(?<__proto__>.)/d.exec("a").indices; +assert.compareArray([0, 1], groups.__proto__); +assert.sameValue(null, Object.getPrototypeOf(groups)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-properties.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-properties.js new file mode 100644 index 0000000000..83e51de27d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-groups-properties.js @@ -0,0 +1,37 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Properties of the groups object of indices are created with CreateDataProperty +includes: [compareArray.js, propertyHelper.js] +esid: sec-makeindicesarray +features: [regexp-named-groups, regexp-match-indices] +info: | + MakeIndicesArray ( S, indices, groupNames, hasIndices ) + 13. For each integer _i_ such that _i_ >= 0 and _i_ < _n_, do + e. If _i_ > 0 and _groupNames_[_i_ - 1] is not *undefined*, then + i. Perform ! CreateDataProperty(_groups_, _groupNames_[_i_ - 1], _matchIndicesArray_). +---*/ + + +// Properties created on result.groups in textual order. +let groupNames = Object.getOwnPropertyNames(/(?.)|(?.)/du.exec("abcd").indices.groups); +assert.compareArray(groupNames, ["fst", "snd"]); + +// Properties are created with Define, not Set +let counter = 0; +Object.defineProperty(Object.prototype, 'x', {set() { counter++; }}); + +let indices = /(?.)/d.exec('a').indices; +let groups = indices.groups; +assert.sameValue(counter, 0); + +// Properties are writable, enumerable and configurable +// (from CreateDataProperty) +verifyProperty(groups, 'x', { + writable: true, + enumerable: true, + configurable: true +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/indices-property.js b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-property.js new file mode 100644 index 0000000000..9ec6da8998 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/indices-property.js @@ -0,0 +1,34 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The "indices" property is created with DefinePropertyOrThrow +includes: [propertyHelper.js] +esid: sec-regexpbuiltinexec +features: [regexp-match-indices] +info: | + Runtime Semantics: RegExpBuiltinExec ( R, S ) + 8. If _flags_ contains `"d"`, let _hasIndices_ be *true*, else let _hasIndices_ be *false*. + ... + 36. If _hasIndices_ is *true*, then + a. Let _indicesArray_ be MakeIndicesArray(_S_, _indices_, _groupNames_, _hasGroups_). + b. Perform ! CreateDataProperty(_A_, `"indices"`, _indicesArray_). +---*/ + +// `indices` is created with Define, not Set. +let counter = 0; +Object.defineProperty(Array.prototype, "indices", { + set() { counter++; } +}); + +let match = /a/d.exec("a"); +assert.sameValue(counter, 0); + +// `indices` is a non-writable, non-enumerable, and configurable data-property. +verifyProperty(match, 'indices', { + writable: true, + enumerable: true, + configurable: true +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/no-indices-array.js b/js/src/tests/test262/built-ins/RegExp/match-indices/no-indices-array.js new file mode 100644 index 0000000000..ab075537dd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/no-indices-array.js @@ -0,0 +1,21 @@ +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The "indices" property is an Array. +esid: sec-regexpbuiltinexec +features: [regexp-match-indices] +info: | + RegExpBuiltinExec ( R, S ) + + 8. If _flags_ contains `"d"`, let _hasIndices_ be *true*, else let _hasIndices_ be *false*. + 36. If _hasIndices_ is *true*, then + b. Perform ! CreateDataProperty(_A_, `"indices"`, _indicesArray_). +---*/ + +let match = /a/.exec("a"); + +// `indices` is not defined by default +assert(!match.hasOwnProperty("indices")); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/match-indices/shell.js b/js/src/tests/test262/built-ins/RegExp/match-indices/shell.js new file mode 100644 index 0000000000..276ee734ff --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/match-indices/shell.js @@ -0,0 +1,329 @@ +// GENERATED, DO NOT EDIT +// file: deepEqual.js +// Copyright 2019 Ron Buckton. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: > + Compare two values structurally +defines: [assert.deepEqual] +---*/ + +assert.deepEqual = function(actual, expected, message) { + var format = assert.deepEqual.format; + assert( + assert.deepEqual._compare(actual, expected), + `Expected ${format(actual)} to be structurally equal to ${format(expected)}. ${(message || '')}` + ); +}; + +assert.deepEqual.format = function(value, seen) { + switch (typeof value) { + case 'string': + return typeof JSON !== "undefined" ? JSON.stringify(value) : `"${value}"`; + case 'number': + case 'boolean': + case 'symbol': + case 'bigint': + return value.toString(); + case 'undefined': + return 'undefined'; + case 'function': + return `[Function${value.name ? `: ${value.name}` : ''}]`; + case 'object': + if (value === null) return 'null'; + if (value instanceof Date) return `Date "${value.toISOString()}"`; + if (value instanceof RegExp) return value.toString(); + if (!seen) { + seen = { + counter: 0, + map: new Map() + }; + } + + let usage = seen.map.get(value); + if (usage) { + usage.used = true; + return `[Ref: #${usage.id}]`; + } + + usage = { id: ++seen.counter, used: false }; + seen.map.set(value, usage); + + if (typeof Set !== "undefined" && value instanceof Set) { + return `Set {${Array.from(value).map(value => assert.deepEqual.format(value, seen)).join(', ')}}${usage.used ? ` as #${usage.id}` : ''}`; + } + if (typeof Map !== "undefined" && value instanceof Map) { + return `Map {${Array.from(value).map(pair => `${assert.deepEqual.format(pair[0], seen)} => ${assert.deepEqual.format(pair[1], seen)}}`).join(', ')}}${usage.used ? ` as #${usage.id}` : ''}`; + } + if (Array.isArray ? Array.isArray(value) : value instanceof Array) { + return `[${value.map(value => assert.deepEqual.format(value, seen)).join(', ')}]${usage.used ? ` as #${usage.id}` : ''}`; + } + let tag = Symbol.toStringTag in value ? value[Symbol.toStringTag] : 'Object'; + if (tag === 'Object' && Object.getPrototypeOf(value) === null) { + tag = '[Object: null prototype]'; + } + return `${tag ? `${tag} ` : ''}{ ${Object.keys(value).map(key => `${key.toString()}: ${assert.deepEqual.format(value[key], seen)}`).join(', ')} }${usage.used ? ` as #${usage.id}` : ''}`; + default: + return typeof value; + } +}; + +assert.deepEqual._compare = (function () { + var EQUAL = 1; + var NOT_EQUAL = -1; + var UNKNOWN = 0; + + function deepEqual(a, b) { + return compareEquality(a, b) === EQUAL; + } + + function compareEquality(a, b, cache) { + return compareIf(a, b, isOptional, compareOptionality) + || compareIf(a, b, isPrimitiveEquatable, comparePrimitiveEquality) + || compareIf(a, b, isObjectEquatable, compareObjectEquality, cache) + || NOT_EQUAL; + } + + function compareIf(a, b, test, compare, cache) { + return !test(a) + ? !test(b) ? UNKNOWN : NOT_EQUAL + : !test(b) ? NOT_EQUAL : cacheComparison(a, b, compare, cache); + } + + function tryCompareStrictEquality(a, b) { + return a === b ? EQUAL : UNKNOWN; + } + + function tryCompareTypeOfEquality(a, b) { + return typeof a !== typeof b ? NOT_EQUAL : UNKNOWN; + } + + function tryCompareToStringTagEquality(a, b) { + var aTag = Symbol.toStringTag in a ? a[Symbol.toStringTag] : undefined; + var bTag = Symbol.toStringTag in b ? b[Symbol.toStringTag] : undefined; + return aTag !== bTag ? NOT_EQUAL : UNKNOWN; + } + + function isOptional(value) { + return value === undefined + || value === null; + } + + function compareOptionality(a, b) { + return tryCompareStrictEquality(a, b) + || NOT_EQUAL; + } + + function isPrimitiveEquatable(value) { + switch (typeof value) { + case 'string': + case 'number': + case 'bigint': + case 'boolean': + case 'symbol': + return true; + default: + return isBoxed(value); + } + } + + function comparePrimitiveEquality(a, b) { + if (isBoxed(a)) a = a.valueOf(); + if (isBoxed(b)) b = b.valueOf(); + return tryCompareStrictEquality(a, b) + || tryCompareTypeOfEquality(a, b) + || compareIf(a, b, isNaNEquatable, compareNaNEquality) + || NOT_EQUAL; + } + + function isNaNEquatable(value) { + return typeof value === 'number'; + } + + function compareNaNEquality(a, b) { + return isNaN(a) && isNaN(b) ? EQUAL : NOT_EQUAL; + } + + function isObjectEquatable(value) { + return typeof value === 'object'; + } + + function compareObjectEquality(a, b, cache) { + if (!cache) cache = new Map(); + return getCache(cache, a, b) + || setCache(cache, a, b, EQUAL) // consider equal for now + || cacheComparison(a, b, tryCompareStrictEquality, cache) + || cacheComparison(a, b, tryCompareToStringTagEquality, cache) + || compareIf(a, b, isValueOfEquatable, compareValueOfEquality) + || compareIf(a, b, isToStringEquatable, compareToStringEquality) + || compareIf(a, b, isArrayLikeEquatable, compareArrayLikeEquality, cache) + || compareIf(a, b, isStructurallyEquatable, compareStructuralEquality, cache) + || compareIf(a, b, isIterableEquatable, compareIterableEquality, cache) + || cacheComparison(a, b, fail, cache); + } + + function isBoxed(value) { + return value instanceof String + || value instanceof Number + || value instanceof Boolean + || typeof Symbol === 'function' && value instanceof Symbol + || typeof BigInt === 'function' && value instanceof BigInt; + } + + function isValueOfEquatable(value) { + return value instanceof Date; + } + + function compareValueOfEquality(a, b) { + return compareIf(a.valueOf(), b.valueOf(), isPrimitiveEquatable, comparePrimitiveEquality) + || NOT_EQUAL; + } + + function isToStringEquatable(value) { + return value instanceof RegExp; + } + + function compareToStringEquality(a, b) { + return compareIf(a.toString(), b.toString(), isPrimitiveEquatable, comparePrimitiveEquality) + || NOT_EQUAL; + } + + function isArrayLikeEquatable(value) { + return (Array.isArray ? Array.isArray(value) : value instanceof Array) + || (typeof Uint8Array === 'function' && value instanceof Uint8Array) + || (typeof Uint8ClampedArray === 'function' && value instanceof Uint8ClampedArray) + || (typeof Uint16Array === 'function' && value instanceof Uint16Array) + || (typeof Uint32Array === 'function' && value instanceof Uint32Array) + || (typeof Int8Array === 'function' && value instanceof Int8Array) + || (typeof Int16Array === 'function' && value instanceof Int16Array) + || (typeof Int32Array === 'function' && value instanceof Int32Array) + || (typeof Float32Array === 'function' && value instanceof Float32Array) + || (typeof Float64Array === 'function' && value instanceof Float64Array) + || (typeof BigUint64Array === 'function' && value instanceof BigUint64Array) + || (typeof BigInt64Array === 'function' && value instanceof BigInt64Array); + } + + function compareArrayLikeEquality(a, b, cache) { + if (a.length !== b.length) return NOT_EQUAL; + for (var i = 0; i < a.length; i++) { + if (compareEquality(a[i], b[i], cache) === NOT_EQUAL) { + return NOT_EQUAL; + } + } + return EQUAL; + } + + function isStructurallyEquatable(value) { + return !(typeof Promise === 'function' && value instanceof Promise // only comparable by reference + || typeof WeakMap === 'function' && value instanceof WeakMap // only comparable by reference + || typeof WeakSet === 'function' && value instanceof WeakSet // only comparable by reference + || typeof Map === 'function' && value instanceof Map // comparable via @@iterator + || typeof Set === 'function' && value instanceof Set); // comparable via @@iterator + } + + function compareStructuralEquality(a, b, cache) { + var aKeys = []; + for (var key in a) aKeys.push(key); + + var bKeys = []; + for (var key in b) bKeys.push(key); + + if (aKeys.length !== bKeys.length) { + return NOT_EQUAL; + } + + aKeys.sort(); + bKeys.sort(); + + for (var i = 0; i < aKeys.length; i++) { + var aKey = aKeys[i]; + var bKey = bKeys[i]; + if (compareEquality(aKey, bKey, cache) === NOT_EQUAL) { + return NOT_EQUAL; + } + if (compareEquality(a[aKey], b[bKey], cache) === NOT_EQUAL) { + return NOT_EQUAL; + } + } + + return compareIf(a, b, isIterableEquatable, compareIterableEquality, cache) + || EQUAL; + } + + function isIterableEquatable(value) { + return typeof Symbol === 'function' + && typeof value[Symbol.iterator] === 'function'; + } + + function compareIteratorEquality(a, b, cache) { + if (typeof Map === 'function' && a instanceof Map && b instanceof Map || + typeof Set === 'function' && a instanceof Set && b instanceof Set) { + if (a.size !== b.size) return NOT_EQUAL; // exit early if we detect a difference in size + } + + var ar, br; + while (true) { + ar = a.next(); + br = b.next(); + if (ar.done) { + if (br.done) return EQUAL; + if (b.return) b.return(); + return NOT_EQUAL; + } + if (br.done) { + if (a.return) a.return(); + return NOT_EQUAL; + } + if (compareEquality(ar.value, br.value, cache) === NOT_EQUAL) { + if (a.return) a.return(); + if (b.return) b.return(); + return NOT_EQUAL; + } + } + } + + function compareIterableEquality(a, b, cache) { + return compareIteratorEquality(a[Symbol.iterator](), b[Symbol.iterator](), cache); + } + + function cacheComparison(a, b, compare, cache) { + var result = compare(a, b, cache); + if (cache && (result === EQUAL || result === NOT_EQUAL)) { + setCache(cache, a, b, /** @type {EQUAL | NOT_EQUAL} */(result)); + } + return result; + } + + function fail() { + return NOT_EQUAL; + } + + function setCache(cache, left, right, result) { + var otherCache; + + otherCache = cache.get(left); + if (!otherCache) cache.set(left, otherCache = new Map()); + otherCache.set(right, result); + + otherCache = cache.get(right); + if (!otherCache) cache.set(right, otherCache = new Map()); + otherCache.set(left, result); + } + + function getCache(cache, left, right) { + var otherCache; + var result; + + otherCache = cache.get(left); + result = otherCache && otherCache.get(right); + if (result) return result; + + otherCache = cache.get(right); + result = otherCache && otherCache.get(left); + if (result) return result; + + return UNKNOWN; + } + + return deepEqual; +})(); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/browser.js b/js/src/tests/test262/built-ins/RegExp/named-groups/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-exec.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-exec.js new file mode 100644 index 0000000000..9624cc6545 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-exec.js @@ -0,0 +1,38 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Matching behavior with duplicate named capture groups +esid: prod-GroupSpecifier +features: [regexp-duplicate-named-groups] +includes: [compareArray.js] +---*/ + +assert.compareArray(/(?a)|(?b)/.exec("bab"), ["b", undefined, "b"]); +assert.compareArray(/(?b)|(?a)/.exec("bab"), ["b", "b", undefined]); + +assert.compareArray(/(?:(?a)|(?b))\k/.exec("aa"), ["aa", "a", undefined]); +assert.compareArray(/(?:(?a)|(?b))\k/.exec("bb"), ["bb", undefined, "b"]); + +let matchResult = /(?:(?:(?a)|(?b))\k){2}/.exec("aabb"); +assert.compareArray(matchResult, ["aabb", undefined, "b"]); +assert.sameValue(matchResult.groups.x, "b"); + +assert.sameValue(/(?:(?:(?a)|(?b))\k){2}/.exec("abab"), null); + +assert.sameValue(/(?:(?a)|(?b))\k/.exec("abab"), null); + +assert.sameValue(/(?:(?a)|(?b))\k/.exec("cdef"), null); + +assert.compareArray(/^(?:(?x)|(?y)|z)\k$/.exec("xx"), ["xx", "x", undefined]); +assert.compareArray(/^(?:(?x)|(?y)|z)\k$/.exec("z"), ["z", undefined, undefined]); +assert.sameValue(/^(?:(?x)|(?y)|z)\k$/.exec("zz"), null); +assert.compareArray(/(?x)|(?:zy\k)/.exec("zy"), ["zy", undefined]); + +assert.compareArray(/^(?:(?x)|(?y)|z){2}\k$/.exec("xz"), ["xz", undefined, undefined]); +assert.compareArray(/^(?:(?x)|(?y)|z){2}\k$/.exec("yz"), ["yz", undefined, undefined]); +assert.sameValue(/^(?:(?x)|(?y)|z){2}\k$/.exec("xzx"), null); +assert.sameValue(/^(?:(?x)|(?y)|z){2}\k$/.exec("yzy"), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-group-property-enumeration-order.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-group-property-enumeration-order.js new file mode 100644 index 0000000000..33a21cbd2e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-group-property-enumeration-order.js @@ -0,0 +1,27 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Enumeration order of the groups object with duplicate named capture groups +esid: prod-GroupSpecifier +features: [regexp-duplicate-named-groups] +includes: [compareArray.js] +---*/ + + +let regexp = /(?a)(?a)|(?b)(?b)/; + +assert.compareArray( + Object.keys(regexp.exec("aa").groups), + ["y", "x"], + "property enumeration order of the groups object is based on source order, not match order" +); + +assert.compareArray( + Object.keys(regexp.exec("bb").groups), + ["y", "x"], + "property enumeration order of the groups object is based on source order, not match order" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-match-indices.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-match-indices.js new file mode 100644 index 0000000000..3135fd75a1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-match-indices.js @@ -0,0 +1,18 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: match indices with duplicate named capture groups +esid: sec-makematchindicesindexpairarray +features: [regexp-duplicate-named-groups, regexp-match-indices] +includes: [compareArray.js] +---*/ + +let indices = "..ab".match(/(?a)|(?b)/d).indices; +assert.compareArray(indices.groups.x, [2, 3]); + +indices = "..ba".match(/(?a)|(?b)/d).indices; +assert.compareArray(indices.groups.x, [2, 3]); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-match.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-match.js new file mode 100644 index 0000000000..dee2d62455 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-match.js @@ -0,0 +1,38 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Matching behavior with duplicate named capture groups +esid: prod-GroupSpecifier +features: [regexp-duplicate-named-groups] +includes: [compareArray.js] +---*/ + +assert.compareArray("bab".match(/(?a)|(?b)/), ["b", undefined, "b"]); +assert.compareArray("bab".match(/(?b)|(?a)/), ["b", "b", undefined]); + +assert.compareArray("aa".match(/(?:(?a)|(?b))\k/), ["aa", "a", undefined]); +assert.compareArray("bb".match(/(?:(?a)|(?b))\k/), ["bb", undefined, "b"]); + +let matchResult = "aabb".match(/(?:(?:(?a)|(?b))\k){2}/); +assert.compareArray(matchResult, ["aabb", undefined, "b"]); +assert.sameValue(matchResult.groups.x, "b"); + +assert.sameValue("abab".match(/(?:(?:(?a)|(?b))\k){2}/), null); + +assert.sameValue("abab".match(/(?:(?a)|(?b))\k/), null); + +assert.sameValue("cdef".match(/(?:(?a)|(?b))\k/), null); + +assert.compareArray("xx".match(/^(?:(?x)|(?y)|z)\k$/), ["xx", "x", undefined]); +assert.compareArray("z".match(/^(?:(?x)|(?y)|z)\k$/), ["z", undefined, undefined]); +assert.sameValue("zz".match(/^(?:(?x)|(?y)|z)\k$/), null); +assert.compareArray("zy".match(/(?x)|(?:zy\k)/), ["zy", undefined]); + +assert.compareArray("xz".match(/^(?:(?x)|(?y)|z){2}\k$/), ["xz", undefined, undefined]); +assert.compareArray("yz".match(/^(?:(?x)|(?y)|z){2}\k$/), ["yz", undefined, undefined]); +assert.sameValue("xzx".match(/^(?:(?x)|(?y)|z){2}\k$/), null); +assert.sameValue("yzy".match(/^(?:(?x)|(?y)|z){2}\k$/), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-matchall.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-matchall.js new file mode 100644 index 0000000000..fea434f83d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-matchall.js @@ -0,0 +1,31 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: String.prototype.search behavior with duplicate named capture groups +esid: prod-GroupSpecifier +includes: [compareArray.js,compareIterator.js] +features: [regexp-duplicate-named-groups] +---*/ + +function matchesIterator(iterator, expected) { + assert.compareIterator(iterator, expected.map(e => { + return v => assert.compareArray(v, e); + })); +} + +matchesIterator("bab".matchAll(/(?a)|(?b)/g), + [ + ["b", undefined, "b"], + ["a", "a", undefined], + ["b", undefined, "b"], + ]); +matchesIterator("bab".matchAll(/(?b)|(?a)/g), + [ + ["b", "b", undefined], + ["a", undefined, "a"], + ["b", "b", undefined], + ]); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-replace.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-replace.js new file mode 100644 index 0000000000..76893704af --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-replace.js @@ -0,0 +1,20 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Kevin Gibbons. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: String.prototype.replace behavior with duplicate named capture groups +esid: prod-GroupSpecifier +features: [regexp-duplicate-named-groups] +---*/ + +assert.sameValue("ab".replace(/(?a)|(?b)/, "[$]"), "[a]b"); +assert.sameValue("ba".replace(/(?a)|(?b)/, "[$]"), "[b]a"); + +assert.sameValue("ab".replace(/(?a)|(?b)/, "[$][$1][$2]"), "[a][a][]b"); +assert.sameValue("ba".replace(/(?a)|(?b)/, "[$][$1][$2]"), "[b][][b]a"); + +assert.sameValue("ab".replace(/(?a)|(?b)/g, "[$]"), "[a][b]"); +assert.sameValue("ba".replace(/(?a)|(?b)/g, "[$]"), "[b][a]"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-replaceall.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-replaceall.js new file mode 100644 index 0000000000..1cd45805a8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-replaceall.js @@ -0,0 +1,18 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: String.prototype.replaceAll behavior with duplicate named capture groups +esid: prod-GroupSpecifier +features: [regexp-duplicate-named-groups] +---*/ + +assert.sameValue("abxab".replaceAll(/(?a)|(?b)/g, "[$]"), "[a][b]x[a][b]"); +assert.sameValue("baxba".replaceAll(/(?a)|(?b)/g, "[$]"), "[b][a]x[b][a]"); + +assert.sameValue("abxab".replaceAll(/(?a)|(?b)/g, "[$][$1][$2]"), "[a][a][][b][][b]x[a][a][][b][][b]"); +assert.sameValue("baxba".replaceAll(/(?a)|(?b)/g, "[$][$1][$2]"), "[b][][b][a][a][]x[b][][b][a][a][]"); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-search.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-search.js new file mode 100644 index 0000000000..db6f8b7534 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-search.js @@ -0,0 +1,14 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: String.prototype.search behavior with duplicate named capture groups +esid: prod-GroupSpecifier +features: [regexp-duplicate-named-groups] +---*/ + +assert.sameValue("xab".search(/(?a)|(?b)/), 1); +assert.sameValue("xba".search(/(?a)|(?b)/), 1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-split.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-split.js new file mode 100644 index 0000000000..ccd9c77993 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-split.js @@ -0,0 +1,15 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: String.prototype.search behavior with duplicate named capture groups +esid: prod-GroupSpecifier +includes: [compareArray.js] +features: [regexp-duplicate-named-groups] +---*/ + +assert.compareArray("xab".split(/(?a)|(?b)/), ["x", "a", undefined, "", undefined, "b", ""]); +assert.compareArray("xba".split(/(?a)|(?b)/), ["x", undefined, "b", "", "a", undefined, ""]); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-test.js b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-test.js new file mode 100644 index 0000000000..77a8dd4391 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/duplicate-names-test.js @@ -0,0 +1,23 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Igalia S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Matching behavior with duplicate named capture groups +esid: prod-GroupSpecifier +features: [regexp-duplicate-named-groups] +---*/ + +assert(/(?a)|(?b)/.test("bab")); +assert(/(?b)|(?a)/.test("bab")); + +assert(/(?:(?a)|(?b))\k/.test("aa")); +assert(/(?:(?a)|(?b))\k/.test("bb")); + +let matchResult = /(?:(?:(?a)|(?b))\k){2}/.test("aabb"); +assert(matchResult); + +let notMatched = /(?:(?:(?a)|(?b))\k){2}/.test("abab"); +assert.sameValue(notMatched, false); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/functional-replace-global.js b/js/src/tests/test262/built-ins/RegExp/named-groups/functional-replace-global.js new file mode 100644 index 0000000000..3285bf9cf0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/functional-replace-global.js @@ -0,0 +1,58 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Function argument to String.prototype.replace gets groups as the last argument +esid: sec-regexp.prototype-@@replace +features: [regexp-named-groups] +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + 14. Repeat, for each result in results, + j. Let namedCaptures be ? Get(result, "groups"). + k. If functionalReplace is true, then + iv. If namedCaptures is not undefined, + 1. Append namedCaptures as the last element of replacerArgs. +---*/ + +let source = "(?.)(?.)"; +let alternateSource = "(?.)|(?.)"; + +for (let flags of ["g", "gu"]) { + let i = 0; + let re = new RegExp(source, flags); + let result = "abcd".replace(re, + (match, fst, snd, offset, str, groups) => { + if (i == 0) { + assert.sameValue("ab", match); + assert.sameValue("a", groups.fst); + assert.sameValue("b", groups.snd); + assert.sameValue("a", fst); + assert.sameValue("b", snd); + assert.sameValue(0, offset); + assert.sameValue("abcd", str); + } else if (i == 1) { + assert.sameValue("cd", match); + assert.sameValue("c", groups.fst); + assert.sameValue("d", groups.snd); + assert.sameValue("c", fst); + assert.sameValue("d", snd); + assert.sameValue(2, offset); + assert.sameValue("abcd", str); + } else { + assertUnreachable(); + } + i++; + return `${groups.snd}${groups.fst}`; + }); + assert.sameValue("badc", result); + assert.sameValue(i, 2); + + let re2 = new RegExp(alternateSource, flags); + assert.sameValue("undefinedundefinedundefinedundefined", + "abcd".replace(re2, + (match, fst, snd, offset, str, groups) => groups.snd)); +} + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/functional-replace-non-global.js b/js/src/tests/test262/built-ins/RegExp/named-groups/functional-replace-non-global.js new file mode 100644 index 0000000000..c2631d892d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/functional-replace-non-global.js @@ -0,0 +1,45 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Function argument to String.prototype.replace gets groups as the last argument +esid: sec-regexp.prototype-@@replace +features: [regexp-named-groups] +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + 14. Repeat, for each result in results, + j. Let namedCaptures be ? Get(result, "groups"). + k. If functionalReplace is true, then + iv. If namedCaptures is not undefined, + 1. Append namedCaptures as the last element of replacerArgs. +---*/ + +let source = "(?.)(?.)"; +let alternateSource = "(?.)|(?.)"; + +for (let flags of ["", "u"]) { + let i = 0; + let re = new RegExp(source, flags); + let result = "abcd".replace(re, + (match, fst, snd, offset, str, groups) => { + assert.sameValue(i++, 0); + assert.sameValue("ab", match); + assert.sameValue("a", groups.fst); + assert.sameValue("b", groups.snd); + assert.sameValue("a", fst); + assert.sameValue("b", snd); + assert.sameValue(0, offset); + assert.sameValue("abcd", str); + return `${groups.snd}${groups.fst}`; + }); + assert.sameValue("bacd", result); + assert.sameValue(i, 1); + + let re2 = new RegExp(alternateSource, flags); + assert.sameValue("undefinedbcd", + "abcd".replace(re2, + (match, fst, snd, offset, str, groups) => groups.snd)); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-subclass-sans.js b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-subclass-sans.js new file mode 100644 index 0000000000..a6674a6fb1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-subclass-sans.js @@ -0,0 +1,38 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Test the groups object on RegExp subclass results that do not have their own. +esid: sec-regexpbuiltinexec +features: [regexp-named-groups] +info: | + Runtime Semantics: RegExpBuiltinExec ( R, S ) + 24. If _R_ contains any |GroupName|, then + a. Let _groups_ be ObjectCreate(*null*). + 25. Else, + a. Let _groups_ be *undefined*. + 26. Perform ! CreateDataProperty(_A_, `"groups"`, _groups_). +---*/ + +class FakeRegExp extends RegExp { + exec(subject) { + const fakeResult = ["ab", "a"]; + fakeResult.index = 0; + // `groups` is not set, triggering prototype lookup. + return fakeResult; + } +}; + +const re = new FakeRegExp(); +const result = re.exec("ab"); +assert.sameValue(Object.getPrototypeOf(result), Array.prototype); +assert.sameValue(false, result.hasOwnProperty("groups")); + +Array.prototype.groups = { a: "b" }; +Object.getPrototypeOf(Array.prototype.groups).b = "c"; +assert.sameValue("b", "ab".replace(re, "$")); +assert.sameValue("c", "ab".replace(re, "$")); +Array.prototype.groups = undefined; + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-subclass.js b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-subclass.js new file mode 100644 index 0000000000..a833d1f10f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-subclass.js @@ -0,0 +1,36 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Test the groups object on RegExp subclass results that have their own. +esid: sec-regexpbuiltinexec +features: [regexp-named-groups] +info: | + Runtime Semantics: RegExpBuiltinExec ( R, S ) + 24. If _R_ contains any |GroupName|, then + a. Let _groups_ be ObjectCreate(*null*). + 25. Else, + a. Let _groups_ be *undefined*. + 26. Perform ! CreateDataProperty(_A_, `"groups"`, _groups_). +---*/ + +class FakeRegExp extends RegExp { + exec(subject) { + const fakeResult = ["ab", "a"]; + fakeResult.index = 0; + fakeResult.groups = { a: "b" }; + Object.getPrototypeOf(fakeResult.groups).b = "c"; + return fakeResult; + } +}; + +const re = new FakeRegExp(); +const result = re.exec("ab"); +assert.sameValue(Object.getPrototypeOf(result), Array.prototype); +assert(result.hasOwnProperty("groups")); +assert.sameValue("b", result.groups.a); +assert.sameValue("b", "ab".replace(re, "$")); +assert.sameValue("c", "ab".replace(re, "$")); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-undefined.js b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-undefined.js new file mode 100644 index 0000000000..06f5e49454 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-undefined.js @@ -0,0 +1,35 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The groups object is created unconditionally. +includes: [propertyHelper.js] +esid: sec-regexpbuiltinexec +features: [regexp-named-groups] +info: | + Runtime Semantics: RegExpBuiltinExec ( R, S ) + 24. If _R_ contains any |GroupName|, then + a. Let _groups_ be ObjectCreate(*null*). + 25. Else, + a. Let _groups_ be *undefined*. + 26. Perform ! CreateDataProperty(_A_, `"groups"`, _groups_). +---*/ + +const re = /./; +const result = re.exec("a"); +assert.sameValue(Object.getPrototypeOf(result), Array.prototype); +assert(result.hasOwnProperty("groups")); +assert.sameValue("a", result[0]); +assert.sameValue(0, result.index); +assert.sameValue(undefined, result.groups); +verifyProperty(result, "groups", { + writable: true, + enumerable: true, + configurable: true, +}); + +Array.prototype.groups = { a: "b" }; +assert.sameValue("$", "a".replace(re, "$")); +Array.prototype.groups = undefined; + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-unmatched.js b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-unmatched.js new file mode 100644 index 0000000000..d43732eb06 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object-unmatched.js @@ -0,0 +1,37 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Test the groups object with matched and unmatched named captures. +esid: sec-regexpbuiltinexec +features: [regexp-named-groups] +info: | + Runtime Semantics: RegExpBuiltinExec ( R, S ) + 24. If _R_ contains any |GroupName|, then + a. Let _groups_ be ObjectCreate(*null*). + 25. Else, + a. Let _groups_ be *undefined*. + 26. Perform ! CreateDataProperty(_A_, `"groups"`, _groups_). +---*/ + +const re = /(?a).|(?x)/; +const result = re.exec("ab"); +assert.sameValue(Object.getPrototypeOf(result), Array.prototype); +assert(result.hasOwnProperty("groups")); +assert.sameValue("ab", result[0]); +assert.sameValue("a", result[1]); +assert.sameValue(undefined, result[2]); +assert.sameValue(0, result.index); +assert.sameValue("a", result.groups.a); +assert.sameValue(undefined, result.groups.x); + +// `a` is a matched named capture, `b` is an unmatched named capture, and `z` +// is not a named capture. +Array.prototype.groups = { a: "b", x: "y", z: "z" }; +assert.sameValue("a", "ab".replace(re, "$")); +assert.sameValue("", "ab".replace(re, "$")); +assert.sameValue("", "ab".replace(re, "$")); +Array.prototype.groups = undefined; + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object.js b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object.js new file mode 100644 index 0000000000..bec4ae8d59 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-object.js @@ -0,0 +1,41 @@ +// Copyright 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Properties of the groups object are created with CreateDataProperty +includes: [propertyHelper.js] +esid: sec-regexpbuiltinexec +features: [regexp-named-groups] +info: | + Runtime Semantics: RegExpBuiltinExec ( R, S ) + 24. If _R_ contains any |GroupName|, then + a. Let _groups_ be ObjectCreate(*null*). + 25. Else, + a. Let _groups_ be *undefined*. + 26. Perform ! CreateDataProperty(_A_, `"groups"`, _groups_). +---*/ + +// `groups` is created with Define, not Set. +let counter = 0; +Object.defineProperty(Array.prototype, "groups", { + set() { counter++; } +}); + +let match = /(?.)/.exec("a"); +assert.sameValue(counter, 0); + +// `groups` is writable, enumerable and configurable +// (from CreateDataProperty). +verifyProperty(match, "groups", { + writable: true, + enumerable: true, + configurable: true, +}); + +// The `__proto__` property on the groups object is not special, +// and does not affect the [[Prototype]] of the resulting groups object. +let {groups} = /(?<__proto__>.)/.exec("a"); +assert.sameValue("a", groups.__proto__); +assert.sameValue(null, Object.getPrototypeOf(groups)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js new file mode 100644 index 0000000000..ce971cf0b5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/groups-properties.js @@ -0,0 +1,34 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Properties of the groups object are created with CreateDataProperty +includes: [compareArray.js, propertyHelper.js] +esid: sec-regexpbuiltinexec +features: [regexp-named-groups] +info: | + Runtime Semantics: RegExpBuiltinExec ( R, S ) + 25. For each integer i such that i > 0 and i ≤ n + f. If the ith capture of R was defined with a GroupName, + i. Let s be the StringValue of the corresponding RegExpIdentifierName. + ii. Perform ! CreateDataProperty(groups, s, capturedValue). +---*/ + +// Properties created on result.groups in textual order. +assert.compareArray(["fst", "snd"], Object.getOwnPropertyNames( + /(?.)|(?.)/u.exec("abcd").groups)); + +// Properties are created with Define, not Set +let counter = 0; +Object.defineProperty(Object.prototype, 'x', {set() { counter++; }}); +let match = /(?.)/.exec('a'); +let groups = match.groups; +assert.sameValue(counter, 0); + +// Properties are writable, enumerable and configurable +// (from CreateDataProperty) +verifyWritable(groups, "x"); +verifyEnumerable(groups, "x"); +verifyConfigurable(groups, "x"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/lookbehind.js b/js/src/tests/test262/built-ins/RegExp/named-groups/lookbehind.js new file mode 100644 index 0000000000..470ff342cd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/lookbehind.js @@ -0,0 +1,47 @@ +// Copyright 2018 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Named groups can be used in conjunction with lookbehind +esid: prod-GroupSpecifier +features: [regexp-named-groups, regexp-lookbehind] +includes: [compareArray.js] +---*/ + +// Unicode mode +assert.compareArray(["f", "c"], "abcdef".match(/(?<=(?\w){3})f/u)); +assert.sameValue("c", "abcdef".match(/(?<=(?\w){3})f/u).groups.a); +assert.sameValue("b", "abcdef".match(/(?<=(?\w){4})f/u).groups.a); +assert.sameValue("a", "abcdef".match(/(?<=(?\w)+)f/u).groups.a); +assert.sameValue(null, "abcdef".match(/(?<=(?\w){6})f/u)); + +assert.compareArray(["f", ""], "abcdef".match(/((?<=\w{3}))f/u)); +assert.compareArray(["f", ""], "abcdef".match(/(?(?<=\w{3}))f/u)); + +assert.compareArray(["f", undefined], "abcdef".match(/(?\d){3})f/u)); +assert.sameValue(null, "abcdef".match(/(?\D){3})f/u)); + +assert.compareArray(["f", undefined], "abcdef".match(/(?\D){3})f|f/u)); +assert.compareArray(["f", undefined], "abcdef".match(/(?(?\w){3})f/)); +assert.sameValue("c", "abcdef".match(/(?<=(?\w){3})f/).groups.a); +assert.sameValue("b", "abcdef".match(/(?<=(?\w){4})f/).groups.a); +assert.sameValue("a", "abcdef".match(/(?<=(?\w)+)f/).groups.a); +assert.sameValue(null, "abcdef".match(/(?<=(?\w){6})f/)); + +assert.compareArray(["f", ""], "abcdef".match(/((?<=\w{3}))f/)); +assert.compareArray(["f", ""], "abcdef".match(/(?(?<=\w{3}))f/)); + +assert.compareArray(["f", undefined], "abcdef".match(/(?\d){3})f/)); +assert.sameValue(null, "abcdef".match(/(?\D){3})f/)); + +assert.compareArray(["f", undefined], "abcdef".match(/(?\D){3})f|f/)); +assert.compareArray(["f", undefined], "abcdef".match(/(?(?.)|(?.))/u.exec("abcd").groups)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-match.js b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-match.js new file mode 100644 index 0000000000..bc68c12bf8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-match.js @@ -0,0 +1,44 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Basic matching cases with non-Unicode groups +esid: prod-GroupSpecifier +features: [regexp-named-groups] +includes: [compareArray.js] +---*/ + +assert.compareArray(["a", "a"], "bab".match(/(?a)/)); +assert.compareArray(["a", "a"], "bab".match(/(?a)/)); +assert.compareArray(["a", "a"], "bab".match(/(?<_>a)/)); +assert.compareArray(["a", "a"], "bab".match(/(?<$>a)/)); +assert.compareArray(["bab", "a"], "bab".match(/.(?<$>a)./)); +assert.compareArray(["bab", "a", "b"], "bab".match(/.(?a)(.)/)); +assert.compareArray(["bab", "a", "b"], "bab".match(/.(?a)(?.)/)); +assert.compareArray(["bab", "ab"], "bab".match(/.(?\w\w)/)); +assert.compareArray(["bab", "bab"], "bab".match(/(?\w\w\w)/)); +assert.compareArray(["bab", "ba", "b"], "bab".match(/(?\w\w)(?\w)/)); + +let {a, b, c} = /(?.)(?.)(?.)\k\k\k/.exec("abccba").groups; +assert.sameValue(a, "a"); +assert.sameValue(b, "b"); +assert.sameValue(c, "c"); + +assert.compareArray("bab".match(/(a)/), "bab".match(/(?a)/)); +assert.compareArray("bab".match(/(a)/), "bab".match(/(?a)/)); +assert.compareArray("bab".match(/(a)/), "bab".match(/(?<_>a)/)); +assert.compareArray("bab".match(/(a)/), "bab".match(/(?<$>a)/)); +assert.compareArray("bab".match(/.(a)./), "bab".match(/.(?<$>a)./)); +assert.compareArray("bab".match(/.(a)(.)/), "bab".match(/.(?a)(.)/)); +assert.compareArray("bab".match(/.(a)(.)/), "bab".match(/.(?a)(?.)/)); +assert.compareArray("bab".match(/.(\w\w)/), "bab".match(/.(?\w\w)/)); +assert.compareArray("bab".match(/(\w\w\w)/), "bab".match(/(?\w\w\w)/)); +assert.compareArray("bab".match(/(\w\w)(\w)/), "bab".match(/(?\w\w)(?\w)/)); + +assert.compareArray(["bab", "b"], "bab".match(/(?b).\1/)); +assert.compareArray(["baba", "b", "a"], "baba".match(/(.)(?a)\1\2/)); +assert.compareArray(["baba", "b", "a", "b", "a"], "baba".match(/(.)(?a)(?\1)(\2)/)); +assert.compareArray(["<)a/)); +assert.compareArray([">a", ">"], ">a".match(/(?>)a/)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names-invalid.js b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names-invalid.js new file mode 100644 index 0000000000..b2523652af --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names-invalid.js @@ -0,0 +1,57 @@ +// Copyright (C) 2020 Apple Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +author: Michael Saboff +description: Invalid exotic named group names in non-Unicode RegExps +esid: prod-GroupSpecifier +features: [regexp-named-groups] +---*/ + +/* + Valid ID_Continue Unicode characters (Can't be first identifier character.) + + 𝟚 \u{1d7da} \ud835 \udfda + + Invalid ID_Start / ID_Continue + + (fox face emoji) 🦊 \u{1f98a} \ud83e \udd8a + (dog emoji) 🐕 \u{1f415} \ud83d \udc15 +*/ + +assert.throws(SyntaxError, function() { + return new RegExp("(?<🦊>fox)"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\u{1f98a}>fox)"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\ud83e\udd8a>fox)"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<🐕>dog)"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\u{1f415}>dog)"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\ud83d \udc15>dog)"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<𝟚the>the)"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\u{1d7da}the>the)"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\ud835\udfdathe>the)"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names-valid.js b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names-valid.js new file mode 100644 index 0000000000..eb568a1ee0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names-valid.js @@ -0,0 +1,96 @@ +// Copyright (C) 2020 Apple Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +author: Michael Saboff +description: Exotic named group names in non-Unicode RegExps +esid: prod-GroupSpecifier +features: [regexp-named-groups] +---*/ + +/* + Valid ID_Start / ID_Continue Unicode characters + + 𝑓 \u{1d453} \ud835 \udc53 + 𝑜 \u{1d45c} \ud835 \udc5c + 𝑥 \u{id465} \ud835 \udc65 + + 𝓓 \u{1d4d3} \ud835 \udcd3 + 𝓸 \u{1d4f8} \ud835 \udcf8 + 𝓰 \u{1d4f0} \ud835 \udcf0 + + 𝓑 \u{1d4d1} \ud835 \udcd1 + 𝓻 \u{1d4fb} \ud835 \udcfb + 𝓸 \u{1d4f8} \ud835 \udcf8 + 𝔀 \u{1d500} \ud835 \udd00 + 𝓷 \u{1d4f7} \ud835 \udcf7 + + 𝖰 \u{1d5b0} \ud835 \uddb0 + 𝖡 \u{1d5a1} \ud835 \udda1 + 𝖥 \u{1d5a5} \ud835 \udda5 + + (fox) 狸 \u{72f8} \u72f8 + (dog) 狗 \u{72d7} \u72d7 + + Valid ID_Continue Unicode characters (Can't be first identifier character.) + + 𝟚 \u{1d7da} \ud835 \udfda +*/ + +var string = "The quick brown fox jumped over the lazy dog's back"; +var string2 = "It is a dog eat dog world."; + +let match = null; + +assert.sameValue(string.match(/(?fox|dog)/).groups.animal, "fox"); + +match = string.match(/(?<𝑓𝑜𝑥>fox).*(?<𝓓𝓸𝓰>dog)/); +assert.sameValue(match.groups.𝑓𝑜𝑥, "fox"); +assert.sameValue(match.groups.𝓓𝓸𝓰, "dog"); +assert.sameValue(match[1], "fox"); +assert.sameValue(match[2], "dog"); + +match = string.match(/(?<狸>fox).*(?<狗>dog)/); +assert.sameValue(match.groups.狸, "fox"); +assert.sameValue(match.groups.狗, "dog"); +assert.sameValue(match[1], "fox"); +assert.sameValue(match[2], "dog"); + +assert.sameValue(string.match(/(?<𝓑𝓻𝓸𝔀𝓷>brown)/).groups.𝓑𝓻𝓸𝔀𝓷, "brown"); +assert.sameValue(string.match(/(?<𝓑𝓻𝓸𝔀𝓷>brown)/).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown"); +assert.sameValue(string.match(/(?<\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}>brown)/).groups.𝓑𝓻𝓸𝔀𝓷, "brown"); +assert.sameValue(string.match(/(?<\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}>brown)/).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown"); +assert.sameValue(string.match(/(?<\ud835\udcd1\ud835\udcfb\ud835\udcf8\ud835\udd00\ud835\udcf7>brown)/).groups.𝓑𝓻𝓸𝔀𝓷, "brown"); +assert.sameValue(string.match(/(?<\ud835\udcd1\ud835\udcfb\ud835\udcf8\ud835\udd00\ud835\udcf7>brown)/).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown"); + +assert.sameValue(string.match(/(?<𝖰𝖡𝖥>q\w*\W\w*\W\w*)/).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<𝖰𝖡\u{1d5a5}>q\w*\W\w*\W\w*)/).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<𝖰\u{1d5a1}𝖥>q\w*\W\w*\W\w*)/).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<𝖰\u{1d5a1}\u{1d5a5}>q\w*\W\w*\W\w*)/).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<\u{1d5b0}𝖡𝖥>q\w*\W\w*\W\w*)/).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<\u{1d5b0}𝖡\u{1d5a5}>q\w*\W\w*\W\w*)/).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<\u{1d5b0}\u{1d5a1}𝖥>q\w*\W\w*\W\w*)/).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<\u{1d5b0}\u{1d5a1}\u{1d5a5}>q\w*\W\w*\W\w*)/).groups.𝖰𝖡𝖥, "quick brown fox"); + +assert.sameValue(string.match(/(?the)/).groups.the𝟚, "the"); +assert.sameValue(string.match(/(?the)/).groups.the𝟚, "the"); +assert.sameValue(string.match(/(?the)/).groups.the𝟚, "the"); + +match = string2.match(/(?dog)(.*?)(\k)/); +assert.sameValue(match.groups.dog, "dog"); +assert.sameValue(match[1], "dog"); +assert.sameValue(match[2], " eat "); +assert.sameValue(match[3], "dog"); + +match = string2.match(/(?<𝓓𝓸𝓰>dog)(.*?)(\k<𝓓𝓸𝓰>)/); +assert.sameValue(match.groups.𝓓𝓸𝓰, "dog"); +assert.sameValue(match[1], "dog"); +assert.sameValue(match[2], " eat "); +assert.sameValue(match[3], "dog"); + +match = string2.match(/(?<狗>dog)(.*?)(\k<狗>)/); +assert.sameValue(match.groups.狗, "dog"); +assert.sameValue(match[1], "dog"); +assert.sameValue(match[2], " eat "); +assert.sameValue(match[3], "dog"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names.js b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names.js new file mode 100644 index 0000000000..e9b3cabb4d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-property-names.js @@ -0,0 +1,25 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Exotic named group names in non-Unicode RegExps +esid: prod-GroupSpecifier +features: [regexp-named-groups] +---*/ + +assert.sameValue("a", /(?<π>a)/.exec("bab").groups.π); +assert.sameValue("a", /(?<π>a)/.exec("bab").groups.\u03C0); +assert.sameValue("a", /(?<$>a)/.exec("bab").groups.$); +assert.sameValue("a", /(?<_>a)/.exec("bab").groups._); +assert.sameValue("a", /(?<_\u200C>a)/.exec("bab").groups._\u200C); +assert.sameValue("a", /(?<_\u200D>a)/.exec("bab").groups._\u200D); +assert.sameValue("a", /(?<ಠ_ಠ>a)/.exec("bab").groups.ಠ_ಠ); + +// Unicode escapes in capture names. +assert(/(?<\u0041>.)/.test("a")); +assert(RegExp("(?<\u{0041}>.)").test("a"), "Non-surrogate"); + +// 4-char escapes must be the proper ID_Start/ID_Continue +assert(RegExp("(?<\\u0041>.)").test("a"), "Non-surrogate"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-references.js b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-references.js new file mode 100644 index 0000000000..3f8f8c4ab3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/non-unicode-references.js @@ -0,0 +1,36 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Named backreferences in non-Unicode RegExps +esid: prod-GroupSpecifier +features: [regexp-named-groups] +includes: [compareArray.js] +---*/ + +// Named references. +assert.compareArray(["bab", "b"], "bab".match(/(?.).\k/)); +assert.sameValue(null, "baa".match(/(?.).\k/)); + +// Reference inside group. +assert.compareArray(["bab", "b"], "bab".match(/(?\k\w)../)); +assert.sameValue("b", "bab".match(/(?\k\w)../).groups.a); + +// Reference before group. +assert.compareArray(["bab", "b"], "bab".match(/\k(?b)\w\k/)); +assert.sameValue("b", "bab".match(/\k(?b)\w\k/).groups.a); +assert.compareArray(["bab", "b", "a"], "bab".match(/(?b)\k(?a)\k/)); +let {a, b} = "bab".match(/(?b)\k(?a)\k/).groups; +assert.sameValue(a, "a"); +assert.sameValue(b, "b"); + +assert.compareArray(["bab", "b"], "bab".match(/\k(?b)\w\k/)); +assert.compareArray(["bab", "b", "a"], "bab".match(/(?b)\k(?a)\k/)); + +// Reference properties. +assert.sameValue("a", /(?a)(?b)\k/.exec("aba").groups.a); +assert.sameValue("b", /(?a)(?b)\k/.exec("aba").groups.b); +assert.sameValue(undefined, /(?a)(?b)\k/.exec("aba").groups.c); +assert.sameValue(undefined, /(?a)(?b)\k|(?c)/.exec("aba").groups.c); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/shell.js b/js/src/tests/test262/built-ins/RegExp/named-groups/shell.js new file mode 100644 index 0000000000..c752bae293 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/shell.js @@ -0,0 +1,37 @@ +// GENERATED, DO NOT EDIT +// file: compareIterator.js +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: Compare the values of an iterator with an array of expected values +defines: [assert.compareIterator] +---*/ + +// Example: +// +// function* numbers() { +// yield 1; +// yield 2; +// yield 3; +// } +// +// assert.compareIterator(numbers(), [ +// v => assert.sameValue(v, 1), +// v => assert.sameValue(v, 2), +// v => assert.sameValue(v, 3), +// ]); +// +assert.compareIterator = function(iter, validators, message) { + message = message || ''; + + var i, result; + for (i = 0; i < validators.length; i++) { + result = iter.next(); + assert(!result.done, 'Expected ' + i + ' values(s). Instead iterator only produced ' + (i - 1) + ' value(s). ' + message); + validators[i](result.value); + } + + result = iter.next(); + assert(result.done, 'Expected only ' + i + ' values(s). Instead iterator produced more. ' + message); + assert.sameValue(result.value, undefined, 'Expected value of `undefined` when iterator completes. ' + message); +} diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-escaped.js b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-escaped.js new file mode 100644 index 0000000000..8a4f4b96d4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-escaped.js @@ -0,0 +1,26 @@ +// Copyright 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Do not replace $<> preceded with $ +esid: sec-getsubstitution +features: [regexp-named-groups] +info: | + Runtime Semantics: GetSubstitution( matched, str, position, captures, namedCaptures, replacement ) + + 12. These $ replacements are done left-to-right, and, once such a replacement is performed, + the new replacement text is not subject to further replacements. + + Table: Replacement Text Symbol Substitutions + + Unicode Characters: $$ + Replacement text: $ +---*/ + +let source = "(?.)"; +for (let flags of ["", "u"]) { + let re = new RegExp(source, flags); + assert.sameValue("$bc", "abc".replace(re, "$$")); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-get.js b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-get.js new file mode 100644 index 0000000000..a765c9d30a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-get.js @@ -0,0 +1,31 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Named substitutions are found by getting the property from the groups object +esid: sec-getsubstitution +features: [regexp-named-groups] +info: | + Runtime Semantics: GetSubstitution( matched, str, position, captures, namedCaptures, replacement ) + + Table: Replacement Text Symbol Substitutions + + Unicode Characters: $< + Replacement text: + 2. Otherwise, + c. Let capture be ? Get(namedCaptures, groupName). + d. If capture is undefined, replace the text through > with the empty string. + e. Otherwise, replace the text through this following > with ? ToString(capture). +---*/ + +let source = "(?.)(?.)|(?x)"; +for (let flags of ["g", "gu"]) { + let re = new RegExp(source, flags); + assert.sameValue("badc", "abcd".replace(re, "$$")); +} +for (let flags of ["", "u"]) { + let re = new RegExp(source, flags); + assert.sameValue("bacd", "abcd".replace(re, "$$")); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-missing.js b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-missing.js new file mode 100644 index 0000000000..defb9e358c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-missing.js @@ -0,0 +1,26 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: If the group doesn't exist, replace with the empty string +esid: sec-getsubstitution +features: [regexp-named-groups] +---*/ + +let source = "(?.)(?.)|(?x)"; +for (let flags of ["", "u"]) { + let re = new RegExp(source, flags); + assert.sameValue("cd", "abcd".replace(re, "$<42$1>")); + assert.sameValue("cd", "abcd".replace(re, "$")); + assert.sameValue("cd", "abcd".replace(re, "$<$1>")); + assert.sameValue("cd", "abcd".replace(re, "$<>")); +} +for (let flags of ["g", "gu"]) { + let re = new RegExp(source, flags); + assert.sameValue("", "abcd".replace(re, "$<42$1>")); + assert.sameValue("", "abcd".replace(re, "$")); + assert.sameValue("", "abcd".replace(re, "$<$1>")); + assert.sameValue("", "abcd".replace(re, "$<>")); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-nocaptures.js b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-nocaptures.js new file mode 100644 index 0000000000..bfd98fa38d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-nocaptures.js @@ -0,0 +1,34 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: If there are no named captures, don't replace $<> +esid: sec-getsubstitution +features: [regexp-named-groups] +info: | + Runtime Semantics: GetSubstitution( matched, str, position, captures, namedCaptures, replacement ) + + Table: Replacement Text Symbol Substitutions + + Unicode Characters: $< + Replacement text: + 1. If namedCaptures is undefined, the replacement text is the literal string $<. +---*/ + +// @@replace with a string replacement argument (no named captures). + +let source = "(.)(.)|(x)"; +for (let flags of ["", "u"]) { + let re = new RegExp(source, flags); + assert.sameValue("$$cd", "abcd".replace(re, "$$")); + assert.sameValue("bacd", "abcd".replace(re, "$2$1")); + assert.sameValue("cd", "abcd".replace(re, "$3")); + assert.sameValue("$cd", "abcd".replace(re, "$<42$1>")); + assert.sameValue("$cd", "abcd".replace(re, "$")); + assert.sameValue("$cd", "abcd".replace(re, "$<$1>")); +} + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-numbered.js b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-numbered.js new file mode 100644 index 0000000000..a9943dc7d2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-numbered.js @@ -0,0 +1,31 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Named groups may be accessed in their replacement string by number +esid: sec-getsubstitution +features: [regexp-named-groups] +info: | + Runtime Semantics: GetSubstitution( matched, str, position, captures, namedCaptures, replacement ) + + Table: Replacement Text Symbol Substitutions + + Unicode Characters: $n + Replacement text: + The nth element of captures, where n is a single digit in the range 1 to 9. If + n≤m and the nth element of captures is undefined, use the empty String instead. + If n>m, the result is implementation-defined. +---*/ + +let source = "(?.)(?.)|(?x)"; +for (let flags of ["g", "gu"]) { + let re = new RegExp(source, flags); + assert.sameValue("badc", "abcd".replace(re, "$2$1")); +} +for (let flags of ["", "u"]) { + let re = new RegExp(source, flags); + assert.sameValue("bacd", "abcd".replace(re, "$2$1")); +} + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-unclosed.js b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-unclosed.js new file mode 100644 index 0000000000..1c1e927dcc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/string-replace-unclosed.js @@ -0,0 +1,22 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + A missing > following $< means that the $< is taken literally + in a replacement string in the context of named capture substitution. +esid: sec-getsubstitution +features: [regexp-named-groups] +---*/ + +let source = "(?.)(?.)|(?x)"; +for (let flags of ["", "u"]) { + let re = new RegExp(source, flags); + assert.sameValue("$ with the empty string. +---*/ + +let source = "(?.)(?.)|(?x)"; +for (let flags of ["g", "gu"]) { + let re = new RegExp(source, flags); + assert.sameValue("", "abcd".replace(re, "$")); +} +for (let flags of ["", "u"]) { + let re = new RegExp(source, flags); + assert.sameValue("cd", "abcd".replace(re, "$")); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-match.js b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-match.js new file mode 100644 index 0000000000..0e87178091 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-match.js @@ -0,0 +1,48 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Basic matching cases with Unicode groups +esid: prod-GroupSpecifier +features: [regexp-named-groups] +includes: [compareArray.js] +---*/ + +assert.compareArray(["a", "a"], "bab".match(/(?a)/u)); +assert.compareArray(["a", "a"], "bab".match(/(?a)/u)); +assert.compareArray(["a", "a"], "bab".match(/(?<_>a)/u)); +assert.compareArray(["a", "a"], "bab".match(/(?<$>a)/u)); +assert.compareArray(["bab", "a"], "bab".match(/.(?<$>a)./u)); +assert.compareArray(["bab", "a", "b"], "bab".match(/.(?a)(.)/u)); +assert.compareArray(["bab", "a", "b"], "bab".match(/.(?a)(?.)/u)); +assert.compareArray(["bab", "ab"], "bab".match(/.(?\w\w)/u)); +assert.compareArray(["bab", "bab"], "bab".match(/(?\w\w\w)/u)); +assert.compareArray(["bab", "ba", "b"], "bab".match(/(?\w\w)(?\w)/u)); + +let {a, b, c} = /(?.)(?.)(?.)\k\k\k/u.exec("abccba").groups; +assert.sameValue(a, "a"); +assert.sameValue(b, "b"); +assert.sameValue(c, "c"); + +assert.compareArray("bab".match(/(a)/u), "bab".match(/(?a)/u)); +assert.compareArray("bab".match(/(a)/u), "bab".match(/(?a)/u)); +assert.compareArray("bab".match(/(a)/u), "bab".match(/(?<_>a)/u)); +assert.compareArray("bab".match(/(a)/u), "bab".match(/(?<$>a)/u)); +assert.compareArray("bab".match(/.(a)./u), "bab".match(/.(?<$>a)./u)); +assert.compareArray("bab".match(/.(a)(.)/u), "bab".match(/.(?a)(.)/u)); +assert.compareArray("bab".match(/.(a)(.)/u), "bab".match(/.(?a)(?.)/u)); +assert.compareArray("bab".match(/.(\w\w)/u), "bab".match(/.(?\w\w)/u)); +assert.compareArray("bab".match(/(\w\w\w)/u), "bab".match(/(?\w\w\w)/u)); +assert.compareArray("bab".match(/(\w\w)(\w)/u), "bab".match(/(?\w\w)(?\w)/u)); + +assert.compareArray(["bab", "b"], "bab".match(/(?b).\1/u)); +assert.compareArray(["baba", "b", "a"], "baba".match(/(.)(?a)\1\2/u)); +assert.compareArray(["baba", "b", "a", "b", "a"], "baba".match(/(.)(?a)(?\1)(\2)/u)); +assert.compareArray(["<)a/u)); +assert.compareArray([">a", ">"], ">a".match(/(?>)a/u)); + +// Nested groups. +assert.compareArray(["bab", "bab", "ab", "b"], "bab".match(/(?.(?.(?.)))/u)); +assert.compareArray({a: "bab", b: "ab", c: "b"}, "bab".match(/(?.(?.(?.)))/u).groups); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names-invalid.js b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names-invalid.js new file mode 100644 index 0000000000..9b0ef33496 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names-invalid.js @@ -0,0 +1,57 @@ +// Copyright (C) 2020 Apple Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +author: Michael Saboff +description: Invalid exotic named group names in Unicode RegExps +esid: prod-GroupSpecifier +features: [regexp-named-groups] +---*/ + +/* + Valid ID_Continue Unicode characters (Can't be first identifier character.) + + 𝟚 \u{1d7da} \ud835 \udfda + + Invalid ID_Start / ID_Continue + + (fox face emoji) 🦊 \u{1f98a} \ud83e \udd8a + (dog emoji) 🐕 \u{1f415} \ud83d \udc15 +*/ + +assert.throws(SyntaxError, function() { + return new RegExp("(?<🦊>fox)", "u"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\u{1f98a}>fox)", "u"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\ud83e\udd8a>fox)", "u"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<🐕>dog)", "u"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\u{1f415}>dog)", "u"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\ud83d \udc15>dog)", "u"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<𝟚the>the)", "u"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\u{1d7da}the>the)", "u"); +}); + +assert.throws(SyntaxError, function() { + return new RegExp("(?<\ud835\udfdathe>the)", "u"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names-valid.js b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names-valid.js new file mode 100644 index 0000000000..d26f3c626b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names-valid.js @@ -0,0 +1,102 @@ +// Copyright (C) 2020 Apple Inc. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +author: Michael Saboff +description: Exotic named group names in Unicode RegExps +esid: prod-GroupSpecifier +features: [regexp-named-groups] +---*/ + +/* + Valid ID_Start / ID_Continue Unicode characters + + 𝑓 \u{1d453} \ud835 \udc53 + 𝑜 \u{1d45c} \ud835 \udc5c + 𝑥 \u{id465} \ud835 \udc65 + + 𝓓 \u{1d4d3} \ud835 \udcd3 + 𝓸 \u{1d4f8} \ud835 \udcf8 + 𝓰 \u{1d4f0} \ud835 \udcf0 + + 𝓑 \u{1d4d1} \ud835 \udcd1 + 𝓻 \u{1d4fb} \ud835 \udcfb + 𝓸 \u{1d4f8} \ud835 \udcf8 + 𝔀 \u{1d500} \ud835 \udd00 + 𝓷 \u{1d4f7} \ud835 \udcf7 + + 𝖰 \u{1d5b0} \ud835 \uddb0 + 𝖡 \u{1d5a1} \ud835 \udda1 + 𝖥 \u{1d5a5} \ud835 \udda5 + + (fox) 狸 \u{72f8} \u72f8 + (dog) 狗 \u{72d7} \u72d7 + + Valid ID_Continue Unicode characters (Can't be first identifier character.) + + 𝟚 \u{1d7da} \ud835 \udfda + + Invalid ID_Start / ID_Continue + + (fox face emoji) 🦊 \u{1f98a} \ud83e \udd8a + (dog emoji) 🐕 \u{1f415} \ud83d \udc15 +*/ + +var string = "The quick brown fox jumped over the lazy dog's back"; +var string2 = "It is a dog eat dog world."; + +let match = null; + +assert.sameValue(string.match(/(?fox|dog)/u).groups.animal, "fox"); +assert.sameValue(string.match(/(?the)/u).groups.the2, "the"); + +match = string.match(/(?<𝑓𝑜𝑥>fox).*(?<𝓓𝓸𝓰>dog)/u); +assert.sameValue(match.groups.𝑓𝑜𝑥, "fox"); +assert.sameValue(match.groups.𝓓𝓸𝓰, "dog"); +assert.sameValue(match[1], "fox"); +assert.sameValue(match[2], "dog"); + +match = string.match(/(?<狸>fox).*(?<狗>dog)/u); +assert.sameValue(match.groups.狸, "fox"); +assert.sameValue(match.groups.狗, "dog"); +assert.sameValue(match[1], "fox"); +assert.sameValue(match[2], "dog"); + +assert.sameValue(string.match(/(?<𝓑𝓻𝓸𝔀𝓷>brown)/u).groups.𝓑𝓻𝓸𝔀𝓷, "brown"); +assert.sameValue(string.match(/(?<𝓑𝓻𝓸𝔀𝓷>brown)/u).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown"); +assert.sameValue(string.match(/(?<\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}>brown)/u).groups.𝓑𝓻𝓸𝔀𝓷, "brown"); +assert.sameValue(string.match(/(?<\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}>brown)/u).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown"); +assert.sameValue(string.match(/(?<\ud835\udcd1\ud835\udcfb\ud835\udcf8\ud835\udd00\ud835\udcf7>brown)/u).groups.𝓑𝓻𝓸𝔀𝓷, "brown"); +assert.sameValue(string.match(/(?<\ud835\udcd1\ud835\udcfb\ud835\udcf8\ud835\udd00\ud835\udcf7>brown)/u).groups.\u{1d4d1}\u{1d4fb}\u{1d4f8}\u{1d500}\u{1d4f7}, "brown"); + +assert.sameValue(string.match(/(?<𝖰𝖡𝖥>q\w*\W\w*\W\w*)/u).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<𝖰𝖡\u{1d5a5}>q\w*\W\w*\W\w*)/u).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<𝖰\u{1d5a1}𝖥>q\w*\W\w*\W\w*)/u).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<𝖰\u{1d5a1}\u{1d5a5}>q\w*\W\w*\W\w*)/u).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<\u{1d5b0}𝖡𝖥>q\w*\W\w*\W\w*)/u).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<\u{1d5b0}𝖡\u{1d5a5}>q\w*\W\w*\W\w*)/u).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<\u{1d5b0}\u{1d5a1}𝖥>q\w*\W\w*\W\w*)/u).groups.𝖰𝖡𝖥, "quick brown fox"); +assert.sameValue(string.match(/(?<\u{1d5b0}\u{1d5a1}\u{1d5a5}>q\w*\W\w*\W\w*)/u).groups.𝖰𝖡𝖥, "quick brown fox"); + +assert.sameValue(string.match(/(?the)/u).groups.the𝟚, "the"); +assert.sameValue(string.match(/(?the)/u).groups.the𝟚, "the"); +assert.sameValue(string.match(/(?the)/u).groups.the𝟚, "the"); + +match = string2.match(/(?dog)(.*?)(\k)/u); +assert.sameValue(match.groups.dog, "dog"); +assert.sameValue(match[1], "dog"); +assert.sameValue(match[2], " eat "); +assert.sameValue(match[3], "dog"); + +match = string2.match(/(?<𝓓𝓸𝓰>dog)(.*?)(\k<𝓓𝓸𝓰>)/u); +assert.sameValue(match.groups.𝓓𝓸𝓰, "dog"); +assert.sameValue(match[1], "dog"); +assert.sameValue(match[2], " eat "); +assert.sameValue(match[3], "dog"); + +match = string2.match(/(?<狗>dog)(.*?)(\k<狗>)/u); +assert.sameValue(match.groups.狗, "dog"); +assert.sameValue(match[1], "dog"); +assert.sameValue(match[2], " eat "); +assert.sameValue(match[3], "dog"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names.js b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names.js new file mode 100644 index 0000000000..bb321dd6ff --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-property-names.js @@ -0,0 +1,32 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Exotic named group names in Unicode RegExps +esid: prod-GroupSpecifier +features: [regexp-named-groups] +---*/ + +assert.sameValue("a", /(?<π>a)/u.exec("bab").groups.π); +assert.sameValue("a", /(?<\u{03C0}>a)/u.exec("bab").groups.π); +assert.sameValue("a", /(?<π>a)/u.exec("bab").groups.\u03C0); +assert.sameValue("a", /(?<\u{03C0}>a)/u.exec("bab").groups.\u03C0); +assert.sameValue("a", /(?<$>a)/u.exec("bab").groups.$); +assert.sameValue("a", /(?<_>a)/u.exec("bab").groups._); +assert.sameValue("a", /(?<$𐒤>a)/u.exec("bab").groups.$𐒤); +assert.sameValue("a", /(?<_\u200C>a)/u.exec("bab").groups._\u200C); +assert.sameValue("a", /(?<_\u200D>a)/u.exec("bab").groups._\u200D); +assert.sameValue("a", /(?<ಠ_ಠ>a)/u.exec("bab").groups.ಠ_ಠ); + +// Unicode escapes in capture names. +assert(/(?.)/u.test("a"), "\\u Lead \\u Trail"); +assert(/(?<\u0041>.)/u.test("a"), "\\u NonSurrogate"); +assert(/(?<\u{0041}>.)/u.test("a"), "\\u{ Non-surrogate }"); +assert(/(?.)/u.test("a"), "\\u{ Surrogate, ID_Continue }"); +assert(RegExp("(?<\u{0041}>.)", "u").test("a"), "Non-surrogate"); +assert(RegExp("(?.)", "u").test("a"), "Surrogate,ID_Continue"); +assert((/(?<\u{0041}>.)/u).test("a"), "Non-surrogate"); +assert(/(?.)/u.test("a"), "Surrogate, ID_Continue"); +assert(RegExp("(?<\\u0041>.)", "u").test("a"), "Non-surrogate"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-references.js b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-references.js new file mode 100644 index 0000000000..30d70ad112 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/named-groups/unicode-references.js @@ -0,0 +1,49 @@ +// Copyright 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Named backreferences in Unicode RegExps +esid: sec-atomescape +info: | + The production AtomEscape :: [+N] k GroupName evaluates as follows: + + 1. Search the enclosing RegExp for an instance of a GroupSpecifier for an + RegExpIdentifierName which has a StringValue equal to the StringValue + of the RegExpIdentifierName contained in GroupName. + 2. Assert: A unique such GroupSpecifier is found. + 3. Let parenIndex be the number of left capturing parentheses in the entire + regular expression that occur to the left of the located GroupSpecifier. + This is the total number of times the Atom::(GroupSpecifierDisjunction) + production is expanded prior to that production's Term plus the total + number of Atom :: (GroupSpecifierDisjunction) productions enclosing this Term. + 4. Call BackreferenceMatcher(parenIndex) and return its Matcher result. +features: [regexp-named-groups] +includes: [compareArray.js] +---*/ + +// Named references. +assert.compareArray(["bab", "b"], "bab".match(/(?.).\k/u)); +assert.sameValue(null, "baa".match(/(?.).\k/u)); + +// Reference inside group. +assert.compareArray(["bab", "b"], "bab".match(/(?\k\w)../u)); +assert.sameValue("b", "bab".match(/(?\k\w)../u).groups.a); + +// Reference before group. +assert.compareArray(["bab", "b"], "bab".match(/\k(?b)\w\k/u)); +assert.sameValue("b", "bab".match(/\k(?b)\w\k/u).groups.a); +assert.compareArray(["bab", "b", "a"], "bab".match(/(?b)\k(?a)\k/u)); +let {a, b} = "bab".match(/(?b)\k(?a)\k/u).groups; +assert.sameValue(a, "a"); +assert.sameValue(b, "b"); + +assert.compareArray(["bab", "b"], "bab".match(/\k(?b)\w\k/)); +assert.compareArray(["bab", "b", "a"], "bab".match(/(?b)\k(?a)\k/)); + +// Reference properties. +assert.sameValue("a", /(?a)(?b)\k/u.exec("aba").groups.a); +assert.sameValue("b", /(?a)(?b)\k/u.exec("aba").groups.b); +assert.sameValue(undefined, /(?a)(?b)\k/u.exec("aba").groups.c); +assert.sameValue(undefined, /(?a)(?b)\k|(?c)/u.exec("aba").groups.c); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prop-desc.js new file mode 100644 index 0000000000..3136a00500 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prop-desc.js @@ -0,0 +1,18 @@ +// Copyright (C) 2019 Bocoup. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-constructor-properties-of-the-global-object-regexp +description: Property descriptor for RegExp +info: | + Every other data property described in clauses 18 through 26 and in Annex B.2 + has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. +includes: [propertyHelper.js] +---*/ + +verifyNotEnumerable(this, "RegExp"); +verifyWritable(this, "RegExp"); +verifyConfigurable(this, "RegExp"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated.js new file mode 100644 index 0000000000..7331a3342e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ASCII=F}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F.js new file mode 100644 index 0000000000..2e53e37be8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_F.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ASCII=F}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated.js new file mode 100644 index 0000000000..e398ae8f84 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ASCII=Invalid}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid.js new file mode 100644 index 0000000000..f297a72424 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Invalid.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ASCII=Invalid}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated.js new file mode 100644 index 0000000000..3696bd4579 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ASCII=N}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N.js new file mode 100644 index 0000000000..9275f4ffcc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_N.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ASCII=N}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated.js new file mode 100644 index 0000000000..450bb142a1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ASCII=No}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No.js new file mode 100644 index 0000000000..1342d0e3f7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_No.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ASCII=No}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated.js new file mode 100644 index 0000000000..c2bbe2db95 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ASCII=T}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T.js new file mode 100644 index 0000000000..01c4ddcdc1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_T.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ASCII=T}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated.js new file mode 100644 index 0000000000..052799975a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ASCII=Y}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y.js new file mode 100644 index 0000000000..921e2510c4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Y.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ASCII=Y}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated.js new file mode 100644 index 0000000000..94f4e523a2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ASCII=Yes}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes.js new file mode 100644 index 0000000000..35370f890c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/binary-property-with-value-ASCII_-_Yes.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ASCII=Yes}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/browser.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-end.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-end.js new file mode 100644 index 0000000000..6233ff6a05 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-end.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/[--\p{Hex}]/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-no-dash-end.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-no-dash-end.js new file mode 100644 index 0000000000..16aafcce6a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-no-dash-end.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/[\uFFFF-\p{Hex}]/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-no-dash-start.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-no-dash-start.js new file mode 100644 index 0000000000..3db35ec9b7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-no-dash-start.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/[\p{Hex}-\uFFFF]/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-start.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-start.js new file mode 100644 index 0000000000..c430925a34 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class-range-start.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/[\p{Hex}--]/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class.js new file mode 100644 index 0000000000..f7bf696d4e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/character-class.js @@ -0,0 +1,19 @@ +// Copyright 2018 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 be supported in character classes. +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +---*/ + +/[\p{Hex}]/u; + +assert( + /[\p{Hex}\P{Hex}]/u.test('\u{1D306}'), + 'multiple property escapes in a single character class should be supported' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ASCII.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ASCII.js new file mode 100644 index 0000000000..b0656bbae2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ASCII.js @@ -0,0 +1,42 @@ +// Copyright 2022 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 for `ASCII` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000000, 0x00007F] + ] +}); +testPropertyEscapes( + /^\p{ASCII}+$/u, + matchSymbols, + "\\p{ASCII}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000080, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{ASCII}+$/u, + nonMatchSymbols, + "\\P{ASCII}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js new file mode 100644 index 0000000000..db78f77386 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ASCII_Hex_Digit.js @@ -0,0 +1,57 @@ +// Copyright 2022 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 for `ASCII_Hex_Digit` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000030, 0x000039], + [0x000041, 0x000046], + [0x000061, 0x000066] + ] +}); +testPropertyEscapes( + /^\p{ASCII_Hex_Digit}+$/u, + matchSymbols, + "\\p{ASCII_Hex_Digit}" +); +testPropertyEscapes( + /^\p{AHex}+$/u, + matchSymbols, + "\\p{AHex}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x000040], + [0x000047, 0x000060], + [0x000067, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{ASCII_Hex_Digit}+$/u, + nonMatchSymbols, + "\\P{ASCII_Hex_Digit}" +); +testPropertyEscapes( + /^\P{AHex}+$/u, + nonMatchSymbols, + "\\P{AHex}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Alphabetic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Alphabetic.js new file mode 100644 index 0000000000..00edf28f83 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Alphabetic.js @@ -0,0 +1,1517 @@ +// Copyright 2022 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 for `Alphabetic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000B5, + 0x0000BA, + 0x0002EC, + 0x0002EE, + 0x000345, + 0x00037F, + 0x000386, + 0x00038C, + 0x000559, + 0x0005BF, + 0x0005C7, + 0x0006FF, + 0x0007FA, + 0x0009B2, + 0x0009CE, + 0x0009D7, + 0x0009FC, + 0x000A51, + 0x000A5E, + 0x000AD0, + 0x000B71, + 0x000B9C, + 0x000BD0, + 0x000BD7, + 0x000C5D, + 0x000D4E, + 0x000DBD, + 0x000DD6, + 0x000E4D, + 0x000E84, + 0x000EA5, + 0x000EC6, + 0x000ECD, + 0x000F00, + 0x001038, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x0017D7, + 0x0017DC, + 0x001AA7, + 0x001CFA, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001FBE, + 0x002071, + 0x00207F, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x00214E, + 0x002D27, + 0x002D2D, + 0x002D6F, + 0x002E2F, + 0x00A7D3, + 0x00A8C5, + 0x00A8FB, + 0x00A9CF, + 0x00AAC0, + 0x00AAC2, + 0x00FB3E, + 0x010808, + 0x01083C, + 0x010F27, + 0x0110C2, + 0x011176, + 0x0111DA, + 0x0111DC, + 0x011237, + 0x011288, + 0x011350, + 0x011357, + 0x0114C7, + 0x011640, + 0x011644, + 0x0116B8, + 0x011909, + 0x0119E1, + 0x011A9D, + 0x011C40, + 0x011D3A, + 0x011D43, + 0x011D98, + 0x011FB0, + 0x016FE3, + 0x01B132, + 0x01B155, + 0x01BC9E, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01E08F, + 0x01E14E, + 0x01E947, + 0x01E94B, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002C1], + [0x0002C6, 0x0002D1], + [0x0002E0, 0x0002E4], + [0x000370, 0x000374], + [0x000376, 0x000377], + [0x00037A, 0x00037D], + [0x000388, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003F5], + [0x0003F7, 0x000481], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000560, 0x000588], + [0x0005B0, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F2], + [0x000610, 0x00061A], + [0x000620, 0x000657], + [0x000659, 0x00065F], + [0x00066E, 0x0006D3], + [0x0006D5, 0x0006DC], + [0x0006E1, 0x0006E8], + [0x0006ED, 0x0006EF], + [0x0006FA, 0x0006FC], + [0x000710, 0x00073F], + [0x00074D, 0x0007B1], + [0x0007CA, 0x0007EA], + [0x0007F4, 0x0007F5], + [0x000800, 0x000817], + [0x00081A, 0x00082C], + [0x000840, 0x000858], + [0x000860, 0x00086A], + [0x000870, 0x000887], + [0x000889, 0x00088E], + [0x0008A0, 0x0008C9], + [0x0008D4, 0x0008DF], + [0x0008E3, 0x0008E9], + [0x0008F0, 0x00093B], + [0x00093D, 0x00094C], + [0x00094E, 0x000950], + [0x000955, 0x000963], + [0x000971, 0x000983], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009BD, 0x0009C4], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CC], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E3], + [0x0009F0, 0x0009F1], + [0x000A01, 0x000A03], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A3E, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4C], + [0x000A59, 0x000A5C], + [0x000A70, 0x000A75], + [0x000A81, 0x000A83], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000ABD, 0x000AC5], + [0x000AC7, 0x000AC9], + [0x000ACB, 0x000ACC], + [0x000AE0, 0x000AE3], + [0x000AF9, 0x000AFC], + [0x000B01, 0x000B03], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B3D, 0x000B44], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4C], + [0x000B56, 0x000B57], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B63], + [0x000B82, 0x000B83], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000BBE, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCC], + [0x000C00, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C3D, 0x000C44], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4C], + [0x000C55, 0x000C56], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C63], + [0x000C80, 0x000C83], + [0x000C85, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CBD, 0x000CC4], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCC], + [0x000CD5, 0x000CD6], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE3], + [0x000CF1, 0x000CF3], + [0x000D00, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D3A], + [0x000D3D, 0x000D44], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4C], + [0x000D54, 0x000D57], + [0x000D5F, 0x000D63], + [0x000D7A, 0x000D7F], + [0x000D81, 0x000D83], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000DCF, 0x000DD4], + [0x000DD8, 0x000DDF], + [0x000DF2, 0x000DF3], + [0x000E01, 0x000E3A], + [0x000E40, 0x000E46], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EB9], + [0x000EBB, 0x000EBD], + [0x000EC0, 0x000EC4], + [0x000EDC, 0x000EDF], + [0x000F40, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F71, 0x000F83], + [0x000F88, 0x000F97], + [0x000F99, 0x000FBC], + [0x001000, 0x001036], + [0x00103B, 0x00103F], + [0x001050, 0x00108F], + [0x00109A, 0x00109D], + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FC, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x001380, 0x00138F], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001401, 0x00166C], + [0x00166F, 0x00167F], + [0x001681, 0x00169A], + [0x0016A0, 0x0016EA], + [0x0016EE, 0x0016F8], + [0x001700, 0x001713], + [0x00171F, 0x001733], + [0x001740, 0x001753], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001772, 0x001773], + [0x001780, 0x0017B3], + [0x0017B6, 0x0017C8], + [0x001820, 0x001878], + [0x001880, 0x0018AA], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001920, 0x00192B], + [0x001930, 0x001938], + [0x001950, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x001A00, 0x001A1B], + [0x001A20, 0x001A5E], + [0x001A61, 0x001A74], + [0x001ABF, 0x001AC0], + [0x001ACC, 0x001ACE], + [0x001B00, 0x001B33], + [0x001B35, 0x001B43], + [0x001B45, 0x001B4C], + [0x001B80, 0x001BA9], + [0x001BAC, 0x001BAF], + [0x001BBA, 0x001BE5], + [0x001BE7, 0x001BF1], + [0x001C00, 0x001C36], + [0x001C4D, 0x001C4F], + [0x001C5A, 0x001C7D], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF6], + [0x001D00, 0x001DBF], + [0x001DE7, 0x001DF4], + [0x001E00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FCC], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FE0, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFC], + [0x002090, 0x00209C], + [0x00210A, 0x002113], + [0x002119, 0x00211D], + [0x00212A, 0x00212D], + [0x00212F, 0x002139], + [0x00213C, 0x00213F], + [0x002145, 0x002149], + [0x002160, 0x002188], + [0x0024B6, 0x0024E9], + [0x002C00, 0x002CE4], + [0x002CEB, 0x002CEE], + [0x002CF2, 0x002CF3], + [0x002D00, 0x002D25], + [0x002D30, 0x002D67], + [0x002D80, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x002DE0, 0x002DFF], + [0x003005, 0x003007], + [0x003021, 0x003029], + [0x003031, 0x003035], + [0x003038, 0x00303C], + [0x003041, 0x003096], + [0x00309D, 0x00309F], + [0x0030A1, 0x0030FA], + [0x0030FC, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x0031A0, 0x0031BF], + [0x0031F0, 0x0031FF], + [0x003400, 0x004DBF], + [0x004E00, 0x00A48C], + [0x00A4D0, 0x00A4FD], + [0x00A500, 0x00A60C], + [0x00A610, 0x00A61F], + [0x00A62A, 0x00A62B], + [0x00A640, 0x00A66E], + [0x00A674, 0x00A67B], + [0x00A67F, 0x00A6EF], + [0x00A717, 0x00A71F], + [0x00A722, 0x00A788], + [0x00A78B, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A805], + [0x00A807, 0x00A827], + [0x00A840, 0x00A873], + [0x00A880, 0x00A8C3], + [0x00A8F2, 0x00A8F7], + [0x00A8FD, 0x00A8FF], + [0x00A90A, 0x00A92A], + [0x00A930, 0x00A952], + [0x00A960, 0x00A97C], + [0x00A980, 0x00A9B2], + [0x00A9B4, 0x00A9BF], + [0x00A9E0, 0x00A9EF], + [0x00A9FA, 0x00A9FE], + [0x00AA00, 0x00AA36], + [0x00AA40, 0x00AA4D], + [0x00AA60, 0x00AA76], + [0x00AA7A, 0x00AABE], + [0x00AADB, 0x00AADD], + [0x00AAE0, 0x00AAEF], + [0x00AAF2, 0x00AAF5], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB70, 0x00ABEA], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1D, 0x00FB28], + [0x00FB2A, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBB1], + [0x00FBD3, 0x00FD3D], + [0x00FD50, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDFB], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x00FF66, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010140, 0x010174], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x010300, 0x01031F], + [0x01032D, 0x01034A], + [0x010350, 0x01037A], + [0x010380, 0x01039D], + [0x0103A0, 0x0103C3], + [0x0103C8, 0x0103CF], + [0x0103D1, 0x0103D5], + [0x010400, 0x01049D], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010860, 0x010876], + [0x010880, 0x01089E], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x010900, 0x010915], + [0x010920, 0x010939], + [0x010980, 0x0109B7], + [0x0109BE, 0x0109BF], + [0x010A00, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A60, 0x010A7C], + [0x010A80, 0x010A9C], + [0x010AC0, 0x010AC7], + [0x010AC9, 0x010AE4], + [0x010B00, 0x010B35], + [0x010B40, 0x010B55], + [0x010B60, 0x010B72], + [0x010B80, 0x010B91], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010D00, 0x010D27], + [0x010E80, 0x010EA9], + [0x010EAB, 0x010EAC], + [0x010EB0, 0x010EB1], + [0x010F00, 0x010F1C], + [0x010F30, 0x010F45], + [0x010F70, 0x010F81], + [0x010FB0, 0x010FC4], + [0x010FE0, 0x010FF6], + [0x011000, 0x011045], + [0x011071, 0x011075], + [0x011080, 0x0110B8], + [0x0110D0, 0x0110E8], + [0x011100, 0x011132], + [0x011144, 0x011147], + [0x011150, 0x011172], + [0x011180, 0x0111BF], + [0x0111C1, 0x0111C4], + [0x0111CE, 0x0111CF], + [0x011200, 0x011211], + [0x011213, 0x011234], + [0x01123E, 0x011241], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A8], + [0x0112B0, 0x0112E8], + [0x011300, 0x011303], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01133D, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134C], + [0x01135D, 0x011363], + [0x011400, 0x011441], + [0x011443, 0x011445], + [0x011447, 0x01144A], + [0x01145F, 0x011461], + [0x011480, 0x0114C1], + [0x0114C4, 0x0114C5], + [0x011580, 0x0115B5], + [0x0115B8, 0x0115BE], + [0x0115D8, 0x0115DD], + [0x011600, 0x01163E], + [0x011680, 0x0116B5], + [0x011700, 0x01171A], + [0x01171D, 0x01172A], + [0x011740, 0x011746], + [0x011800, 0x011838], + [0x0118A0, 0x0118DF], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x011935], + [0x011937, 0x011938], + [0x01193B, 0x01193C], + [0x01193F, 0x011942], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D7], + [0x0119DA, 0x0119DF], + [0x0119E3, 0x0119E4], + [0x011A00, 0x011A32], + [0x011A35, 0x011A3E], + [0x011A50, 0x011A97], + [0x011AB0, 0x011AF8], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C36], + [0x011C38, 0x011C3E], + [0x011C72, 0x011C8F], + [0x011C92, 0x011CA7], + [0x011CA9, 0x011CB6], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D41], + [0x011D46, 0x011D47], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D8E], + [0x011D90, 0x011D91], + [0x011D93, 0x011D96], + [0x011EE0, 0x011EF6], + [0x011F00, 0x011F10], + [0x011F12, 0x011F3A], + [0x011F3E, 0x011F40], + [0x012000, 0x012399], + [0x012400, 0x01246E], + [0x012480, 0x012543], + [0x012F90, 0x012FF0], + [0x013000, 0x01342F], + [0x013441, 0x013446], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A70, 0x016ABE], + [0x016AD0, 0x016AED], + [0x016B00, 0x016B2F], + [0x016B40, 0x016B43], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E7F], + [0x016F00, 0x016F4A], + [0x016F4F, 0x016F87], + [0x016F8F, 0x016F9F], + [0x016FE0, 0x016FE1], + [0x016FF0, 0x016FF1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7CB], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E137, 0x01E13D], + [0x01E290, 0x01E2AD], + [0x01E2C0, 0x01E2EB], + [0x01E4D0, 0x01E4EB], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E900, 0x01E943], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01F130, 0x01F149], + [0x01F150, 0x01F169], + [0x01F170, 0x01F189], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{Alphabetic}+$/u, + matchSymbols, + "\\p{Alphabetic}" +); +testPropertyEscapes( + /^\p{Alpha}+$/u, + matchSymbols, + "\\p{Alpha}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x0002ED, + 0x000375, + 0x00037E, + 0x000387, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x0003F6, + 0x000530, + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x000658, + 0x0006D4, + 0x000888, + 0x00093C, + 0x00094D, + 0x000984, + 0x0009A9, + 0x0009B1, + 0x0009CD, + 0x0009DE, + 0x000A04, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A5D, + 0x000A84, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000AC6, + 0x000ACA, + 0x000B04, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000BC9, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C45, + 0x000C49, + 0x000C57, + 0x000C84, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CC5, + 0x000CC9, + 0x000CDF, + 0x000D0D, + 0x000D11, + 0x000D45, + 0x000D49, + 0x000D4D, + 0x000D80, + 0x000D84, + 0x000DB2, + 0x000DBC, + 0x000DD5, + 0x000DD7, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EBA, + 0x000EC5, + 0x000F48, + 0x000F98, + 0x001037, + 0x0010C6, + 0x0010FB, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x001680, + 0x00176D, + 0x001771, + 0x00191F, + 0x001B34, + 0x001B44, + 0x001BE6, + 0x001CED, + 0x001CF4, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x00212E, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x002DDF, + 0x0030A0, + 0x0030FB, + 0x003130, + 0x00A7D2, + 0x00A7D4, + 0x00A806, + 0x00A8C4, + 0x00A8FC, + 0x00A9B3, + 0x00A9FF, + 0x00AABF, + 0x00AAC1, + 0x00AB27, + 0x00AB2F, + 0x00AB5B, + 0x00FB29, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE75, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x0103D0, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x0108F3, + 0x010A04, + 0x010A14, + 0x010A18, + 0x010AC8, + 0x010EAA, + 0x0111C0, + 0x0111DB, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011304, + 0x011329, + 0x011331, + 0x011334, + 0x011442, + 0x011446, + 0x0114C6, + 0x01163F, + 0x011914, + 0x011917, + 0x011936, + 0x0119E0, + 0x0119E2, + 0x011C09, + 0x011C37, + 0x011C3F, + 0x011CA8, + 0x011D07, + 0x011D0A, + 0x011D3B, + 0x011D3E, + 0x011D42, + 0x011D66, + 0x011D69, + 0x011D8F, + 0x011D92, + 0x011D97, + 0x011F11, + 0x016FE2, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3, + 0x01E007, + 0x01E022, + 0x01E025, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B4], + [0x0000B6, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002C2, 0x0002C5], + [0x0002D2, 0x0002DF], + [0x0002E5, 0x0002EB], + [0x0002EF, 0x000344], + [0x000346, 0x00036F], + [0x000378, 0x000379], + [0x000380, 0x000385], + [0x000482, 0x000489], + [0x000557, 0x000558], + [0x00055A, 0x00055F], + [0x000589, 0x0005AF], + [0x0005C8, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F3, 0x00060F], + [0x00061B, 0x00061F], + [0x000660, 0x00066D], + [0x0006DD, 0x0006E0], + [0x0006E9, 0x0006EC], + [0x0006F0, 0x0006F9], + [0x0006FD, 0x0006FE], + [0x000700, 0x00070F], + [0x000740, 0x00074C], + [0x0007B2, 0x0007C9], + [0x0007EB, 0x0007F3], + [0x0007F6, 0x0007F9], + [0x0007FB, 0x0007FF], + [0x000818, 0x000819], + [0x00082D, 0x00083F], + [0x000859, 0x00085F], + [0x00086B, 0x00086F], + [0x00088F, 0x00089F], + [0x0008CA, 0x0008D3], + [0x0008E0, 0x0008E2], + [0x0008EA, 0x0008EF], + [0x000951, 0x000954], + [0x000964, 0x000970], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BC], + [0x0009C5, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CF, 0x0009D6], + [0x0009D8, 0x0009DB], + [0x0009E4, 0x0009EF], + [0x0009F2, 0x0009FB], + [0x0009FD, 0x000A00], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A3D], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4D, 0x000A50], + [0x000A52, 0x000A58], + [0x000A5F, 0x000A6F], + [0x000A76, 0x000A80], + [0x000ABA, 0x000ABC], + [0x000ACD, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE4, 0x000AF8], + [0x000AFD, 0x000B00], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3C], + [0x000B45, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4D, 0x000B55], + [0x000B58, 0x000B5B], + [0x000B64, 0x000B70], + [0x000B72, 0x000B81], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCD, 0x000BCF], + [0x000BD1, 0x000BD6], + [0x000BD8, 0x000BFF], + [0x000C3A, 0x000C3C], + [0x000C4D, 0x000C54], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C64, 0x000C7F], + [0x000CBA, 0x000CBC], + [0x000CCD, 0x000CD4], + [0x000CD7, 0x000CDC], + [0x000CE4, 0x000CF0], + [0x000CF4, 0x000CFF], + [0x000D3B, 0x000D3C], + [0x000D4F, 0x000D53], + [0x000D58, 0x000D5E], + [0x000D64, 0x000D79], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000DCE], + [0x000DE0, 0x000DF1], + [0x000DF4, 0x000E00], + [0x000E3B, 0x000E3F], + [0x000E47, 0x000E4C], + [0x000E4E, 0x000E80], + [0x000EBE, 0x000EBF], + [0x000EC7, 0x000ECC], + [0x000ECE, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F01, 0x000F3F], + [0x000F6D, 0x000F70], + [0x000F84, 0x000F87], + [0x000FBD, 0x000FFF], + [0x001039, 0x00103A], + [0x001040, 0x00104F], + [0x001090, 0x001099], + [0x00109E, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00137F], + [0x001390, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x001400], + [0x00166D, 0x00166E], + [0x00169B, 0x00169F], + [0x0016EB, 0x0016ED], + [0x0016F9, 0x0016FF], + [0x001714, 0x00171E], + [0x001734, 0x00173F], + [0x001754, 0x00175F], + [0x001774, 0x00177F], + [0x0017B4, 0x0017B5], + [0x0017C9, 0x0017D6], + [0x0017D8, 0x0017DB], + [0x0017DD, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00192C, 0x00192F], + [0x001939, 0x00194F], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019FF], + [0x001A1C, 0x001A1F], + [0x001A5F, 0x001A60], + [0x001A75, 0x001AA6], + [0x001AA8, 0x001ABE], + [0x001AC1, 0x001ACB], + [0x001ACF, 0x001AFF], + [0x001B4D, 0x001B7F], + [0x001BAA, 0x001BAB], + [0x001BB0, 0x001BB9], + [0x001BF2, 0x001BFF], + [0x001C37, 0x001C4C], + [0x001C50, 0x001C59], + [0x001C7E, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001CE8], + [0x001CF7, 0x001CF9], + [0x001CFB, 0x001CFF], + [0x001DC0, 0x001DE6], + [0x001DF5, 0x001DFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FDC, 0x001FDF], + [0x001FED, 0x001FF1], + [0x001FFD, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002118], + [0x00211E, 0x002123], + [0x00213A, 0x00213B], + [0x002140, 0x002144], + [0x00214A, 0x00214D], + [0x00214F, 0x00215F], + [0x002189, 0x0024B5], + [0x0024EA, 0x002BFF], + [0x002CE5, 0x002CEA], + [0x002CEF, 0x002CF1], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D70, 0x002D7F], + [0x002D97, 0x002D9F], + [0x002E00, 0x002E2E], + [0x002E30, 0x003004], + [0x003008, 0x003020], + [0x00302A, 0x003030], + [0x003036, 0x003037], + [0x00303D, 0x003040], + [0x003097, 0x00309C], + [0x003100, 0x003104], + [0x00318F, 0x00319F], + [0x0031C0, 0x0031EF], + [0x003200, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A48D, 0x00A4CF], + [0x00A4FE, 0x00A4FF], + [0x00A60D, 0x00A60F], + [0x00A620, 0x00A629], + [0x00A62C, 0x00A63F], + [0x00A66F, 0x00A673], + [0x00A67C, 0x00A67E], + [0x00A6F0, 0x00A716], + [0x00A720, 0x00A721], + [0x00A789, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A828, 0x00A83F], + [0x00A874, 0x00A87F], + [0x00A8C6, 0x00A8F1], + [0x00A8F8, 0x00A8FA], + [0x00A900, 0x00A909], + [0x00A92B, 0x00A92F], + [0x00A953, 0x00A95F], + [0x00A97D, 0x00A97F], + [0x00A9C0, 0x00A9CE], + [0x00A9D0, 0x00A9DF], + [0x00A9F0, 0x00A9F9], + [0x00AA37, 0x00AA3F], + [0x00AA4E, 0x00AA5F], + [0x00AA77, 0x00AA79], + [0x00AAC3, 0x00AADA], + [0x00AADE, 0x00AADF], + [0x00AAF0, 0x00AAF1], + [0x00AAF6, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6A, 0x00AB6F], + [0x00ABEB, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBB2, 0x00FBD2], + [0x00FD3E, 0x00FD4F], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDEF], + [0x00FDFC, 0x00FE6F], + [0x00FEFD, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x00FF65], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x01013F], + [0x010175, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102FF], + [0x010320, 0x01032C], + [0x01034B, 0x01034F], + [0x01037B, 0x01037F], + [0x01039E, 0x01039F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x0103FF], + [0x01049E, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056F], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x010856, 0x01085F], + [0x010877, 0x01087F], + [0x01089F, 0x0108DF], + [0x0108F6, 0x0108FF], + [0x010916, 0x01091F], + [0x01093A, 0x01097F], + [0x0109B8, 0x0109BD], + [0x0109C0, 0x0109FF], + [0x010A07, 0x010A0B], + [0x010A36, 0x010A5F], + [0x010A7D, 0x010A7F], + [0x010A9D, 0x010ABF], + [0x010AE5, 0x010AFF], + [0x010B36, 0x010B3F], + [0x010B56, 0x010B5F], + [0x010B73, 0x010B7F], + [0x010B92, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CFF], + [0x010D28, 0x010E7F], + [0x010EAD, 0x010EAF], + [0x010EB2, 0x010EFF], + [0x010F1D, 0x010F26], + [0x010F28, 0x010F2F], + [0x010F46, 0x010F6F], + [0x010F82, 0x010FAF], + [0x010FC5, 0x010FDF], + [0x010FF7, 0x010FFF], + [0x011046, 0x011070], + [0x011076, 0x01107F], + [0x0110B9, 0x0110C1], + [0x0110C3, 0x0110CF], + [0x0110E9, 0x0110FF], + [0x011133, 0x011143], + [0x011148, 0x01114F], + [0x011173, 0x011175], + [0x011177, 0x01117F], + [0x0111C5, 0x0111CD], + [0x0111D0, 0x0111D9], + [0x0111DD, 0x0111FF], + [0x011235, 0x011236], + [0x011238, 0x01123D], + [0x011242, 0x01127F], + [0x0112A9, 0x0112AF], + [0x0112E9, 0x0112FF], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x01133A, 0x01133C], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134D, 0x01134F], + [0x011351, 0x011356], + [0x011358, 0x01135C], + [0x011364, 0x0113FF], + [0x01144B, 0x01145E], + [0x011462, 0x01147F], + [0x0114C2, 0x0114C3], + [0x0114C8, 0x01157F], + [0x0115B6, 0x0115B7], + [0x0115BF, 0x0115D7], + [0x0115DE, 0x0115FF], + [0x011641, 0x011643], + [0x011645, 0x01167F], + [0x0116B6, 0x0116B7], + [0x0116B9, 0x0116FF], + [0x01171B, 0x01171C], + [0x01172B, 0x01173F], + [0x011747, 0x0117FF], + [0x011839, 0x01189F], + [0x0118E0, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011939, 0x01193A], + [0x01193D, 0x01193E], + [0x011943, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D8, 0x0119D9], + [0x0119E5, 0x0119FF], + [0x011A33, 0x011A34], + [0x011A3F, 0x011A4F], + [0x011A98, 0x011A9C], + [0x011A9E, 0x011AAF], + [0x011AF9, 0x011BFF], + [0x011C41, 0x011C71], + [0x011C90, 0x011C91], + [0x011CB7, 0x011CFF], + [0x011D37, 0x011D39], + [0x011D44, 0x011D45], + [0x011D48, 0x011D5F], + [0x011D99, 0x011EDF], + [0x011EF7, 0x011EFF], + [0x011F3B, 0x011F3D], + [0x011F41, 0x011FAF], + [0x011FB1, 0x011FFF], + [0x01239A, 0x0123FF], + [0x01246F, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF1, 0x012FFF], + [0x013430, 0x013440], + [0x013447, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A5F, 0x016A6F], + [0x016ABF, 0x016ACF], + [0x016AEE, 0x016AFF], + [0x016B30, 0x016B3F], + [0x016B44, 0x016B62], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E80, 0x016EFF], + [0x016F4B, 0x016F4E], + [0x016F88, 0x016F8E], + [0x016FA0, 0x016FDF], + [0x016FE4, 0x016FEF], + [0x016FF2, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01BC9D], + [0x01BC9F, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E02F], + [0x01E06E, 0x01E08E], + [0x01E090, 0x01E0FF], + [0x01E12D, 0x01E136], + [0x01E13E, 0x01E14D], + [0x01E14F, 0x01E28F], + [0x01E2AE, 0x01E2BF], + [0x01E2EC, 0x01E4CF], + [0x01E4EC, 0x01E7DF], + [0x01E8C5, 0x01E8FF], + [0x01E944, 0x01E946], + [0x01E948, 0x01E94A], + [0x01E94C, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01F12F], + [0x01F14A, 0x01F14F], + [0x01F16A, 0x01F16F], + [0x01F18A, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Alphabetic}+$/u, + nonMatchSymbols, + "\\P{Alphabetic}" +); +testPropertyEscapes( + /^\P{Alpha}+$/u, + nonMatchSymbols, + "\\P{Alpha}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Any.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Any.js new file mode 100644 index 0000000000..7eeffb6271 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Any.js @@ -0,0 +1,35 @@ +// Copyright 2022 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 for `Any` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\p{Any}+$/u, + matchSymbols, + "\\p{Any}" +); + +assert( + !/\P{Any}/u.test(""), + "`\\P{Any}` should match nothing (not even the empty string)" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Assigned.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Assigned.js new file mode 100644 index 0000000000..b7327329fb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Assigned.js @@ -0,0 +1,1456 @@ +// Copyright 2022 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 for `Assigned` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00038C, + 0x00085E, + 0x0009B2, + 0x0009D7, + 0x000A3C, + 0x000A51, + 0x000A5E, + 0x000AD0, + 0x000B9C, + 0x000BD0, + 0x000BD7, + 0x000C5D, + 0x000DBD, + 0x000DCA, + 0x000DD6, + 0x000E84, + 0x000EA5, + 0x000EC6, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x001940, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x002D27, + 0x002D2D, + 0x00A7D3, + 0x00FB3E, + 0x00FDCF, + 0x00FEFF, + 0x0101A0, + 0x010808, + 0x01083C, + 0x01093F, + 0x0110CD, + 0x011288, + 0x011350, + 0x011357, + 0x011909, + 0x011D3A, + 0x011FB0, + 0x01B132, + 0x01B155, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01E08F, + 0x01E2FF, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E, + 0x01F7F0, + 0x0E0001 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000377], + [0x00037A, 0x00037F], + [0x000384, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x00052F], + [0x000531, 0x000556], + [0x000559, 0x00058A], + [0x00058D, 0x00058F], + [0x000591, 0x0005C7], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F4], + [0x000600, 0x00070D], + [0x00070F, 0x00074A], + [0x00074D, 0x0007B1], + [0x0007C0, 0x0007FA], + [0x0007FD, 0x00082D], + [0x000830, 0x00083E], + [0x000840, 0x00085B], + [0x000860, 0x00086A], + [0x000870, 0x00088E], + [0x000890, 0x000891], + [0x000898, 0x000983], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009BC, 0x0009C4], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CE], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E3], + [0x0009E6, 0x0009FE], + [0x000A01, 0x000A03], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A3E, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A59, 0x000A5C], + [0x000A66, 0x000A76], + [0x000A81, 0x000A83], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000ABC, 0x000AC5], + [0x000AC7, 0x000AC9], + [0x000ACB, 0x000ACD], + [0x000AE0, 0x000AE3], + [0x000AE6, 0x000AF1], + [0x000AF9, 0x000AFF], + [0x000B01, 0x000B03], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B3C, 0x000B44], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4D], + [0x000B55, 0x000B57], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B63], + [0x000B66, 0x000B77], + [0x000B82, 0x000B83], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000BBE, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCD], + [0x000BE6, 0x000BFA], + [0x000C00, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C3C, 0x000C44], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C63], + [0x000C66, 0x000C6F], + [0x000C77, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CBC, 0x000CC4], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCD], + [0x000CD5, 0x000CD6], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE3], + [0x000CE6, 0x000CEF], + [0x000CF1, 0x000CF3], + [0x000D00, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D44], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4F], + [0x000D54, 0x000D63], + [0x000D66, 0x000D7F], + [0x000D81, 0x000D83], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000DCF, 0x000DD4], + [0x000DD8, 0x000DDF], + [0x000DE6, 0x000DEF], + [0x000DF2, 0x000DF4], + [0x000E01, 0x000E3A], + [0x000E3F, 0x000E5B], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EBD], + [0x000EC0, 0x000EC4], + [0x000EC8, 0x000ECE], + [0x000ED0, 0x000ED9], + [0x000EDC, 0x000EDF], + [0x000F00, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F71, 0x000F97], + [0x000F99, 0x000FBC], + [0x000FBE, 0x000FCC], + [0x000FCE, 0x000FDA], + [0x001000, 0x0010C5], + [0x0010D0, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x00135D, 0x00137C], + [0x001380, 0x001399], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001400, 0x00169C], + [0x0016A0, 0x0016F8], + [0x001700, 0x001715], + [0x00171F, 0x001736], + [0x001740, 0x001753], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001772, 0x001773], + [0x001780, 0x0017DD], + [0x0017E0, 0x0017E9], + [0x0017F0, 0x0017F9], + [0x001800, 0x001819], + [0x001820, 0x001878], + [0x001880, 0x0018AA], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001920, 0x00192B], + [0x001930, 0x00193B], + [0x001944, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x0019D0, 0x0019DA], + [0x0019DE, 0x001A1B], + [0x001A1E, 0x001A5E], + [0x001A60, 0x001A7C], + [0x001A7F, 0x001A89], + [0x001A90, 0x001A99], + [0x001AA0, 0x001AAD], + [0x001AB0, 0x001ACE], + [0x001B00, 0x001B4C], + [0x001B50, 0x001B7E], + [0x001B80, 0x001BF3], + [0x001BFC, 0x001C37], + [0x001C3B, 0x001C49], + [0x001C4D, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CC7], + [0x001CD0, 0x001CFA], + [0x001D00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FC4], + [0x001FC6, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FDD, 0x001FEF], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFE], + [0x002000, 0x002064], + [0x002066, 0x002071], + [0x002074, 0x00208E], + [0x002090, 0x00209C], + [0x0020A0, 0x0020C0], + [0x0020D0, 0x0020F0], + [0x002100, 0x00218B], + [0x002190, 0x002426], + [0x002440, 0x00244A], + [0x002460, 0x002B73], + [0x002B76, 0x002B95], + [0x002B97, 0x002CF3], + [0x002CF9, 0x002D25], + [0x002D30, 0x002D67], + [0x002D6F, 0x002D70], + [0x002D7F, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x002DE0, 0x002E5D], + [0x002E80, 0x002E99], + [0x002E9B, 0x002EF3], + [0x002F00, 0x002FD5], + [0x002FF0, 0x002FFB], + [0x003000, 0x00303F], + [0x003041, 0x003096], + [0x003099, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x003190, 0x0031E3], + [0x0031F0, 0x00321E], + [0x003220, 0x00A48C], + [0x00A490, 0x00A4C6], + [0x00A4D0, 0x00A62B], + [0x00A640, 0x00A6F7], + [0x00A700, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A82C], + [0x00A830, 0x00A839], + [0x00A840, 0x00A877], + [0x00A880, 0x00A8C5], + [0x00A8CE, 0x00A8D9], + [0x00A8E0, 0x00A953], + [0x00A95F, 0x00A97C], + [0x00A980, 0x00A9CD], + [0x00A9CF, 0x00A9D9], + [0x00A9DE, 0x00A9FE], + [0x00AA00, 0x00AA36], + [0x00AA40, 0x00AA4D], + [0x00AA50, 0x00AA59], + [0x00AA5C, 0x00AAC2], + [0x00AADB, 0x00AAF6], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB6B], + [0x00AB70, 0x00ABED], + [0x00ABF0, 0x00ABF9], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00D800, 0x00DBFF], + [0x00E000, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1D, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBC2], + [0x00FBD3, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FE19], + [0x00FE20, 0x00FE52], + [0x00FE54, 0x00FE66], + [0x00FE68, 0x00FE6B], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x00FF01, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x00FFE0, 0x00FFE6], + [0x00FFE8, 0x00FFEE], + [0x00FFF9, 0x00FFFD], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010100, 0x010102], + [0x010107, 0x010133], + [0x010137, 0x01018E], + [0x010190, 0x01019C], + [0x0101D0, 0x0101FD], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x0102E0, 0x0102FB], + [0x010300, 0x010323], + [0x01032D, 0x01034A], + [0x010350, 0x01037A], + [0x010380, 0x01039D], + [0x01039F, 0x0103C3], + [0x0103C8, 0x0103D5], + [0x010400, 0x01049D], + [0x0104A0, 0x0104A9], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x01056F, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010857, 0x01089E], + [0x0108A7, 0x0108AF], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x0108FB, 0x01091B], + [0x01091F, 0x010939], + [0x010980, 0x0109B7], + [0x0109BC, 0x0109CF], + [0x0109D2, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A38, 0x010A3A], + [0x010A3F, 0x010A48], + [0x010A50, 0x010A58], + [0x010A60, 0x010A9F], + [0x010AC0, 0x010AE6], + [0x010AEB, 0x010AF6], + [0x010B00, 0x010B35], + [0x010B39, 0x010B55], + [0x010B58, 0x010B72], + [0x010B78, 0x010B91], + [0x010B99, 0x010B9C], + [0x010BA9, 0x010BAF], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010CFA, 0x010D27], + [0x010D30, 0x010D39], + [0x010E60, 0x010E7E], + [0x010E80, 0x010EA9], + [0x010EAB, 0x010EAD], + [0x010EB0, 0x010EB1], + [0x010EFD, 0x010F27], + [0x010F30, 0x010F59], + [0x010F70, 0x010F89], + [0x010FB0, 0x010FCB], + [0x010FE0, 0x010FF6], + [0x011000, 0x01104D], + [0x011052, 0x011075], + [0x01107F, 0x0110C2], + [0x0110D0, 0x0110E8], + [0x0110F0, 0x0110F9], + [0x011100, 0x011134], + [0x011136, 0x011147], + [0x011150, 0x011176], + [0x011180, 0x0111DF], + [0x0111E1, 0x0111F4], + [0x011200, 0x011211], + [0x011213, 0x011241], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A9], + [0x0112B0, 0x0112EA], + [0x0112F0, 0x0112F9], + [0x011300, 0x011303], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01133B, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x01135D, 0x011363], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011400, 0x01145B], + [0x01145D, 0x011461], + [0x011480, 0x0114C7], + [0x0114D0, 0x0114D9], + [0x011580, 0x0115B5], + [0x0115B8, 0x0115DD], + [0x011600, 0x011644], + [0x011650, 0x011659], + [0x011660, 0x01166C], + [0x011680, 0x0116B9], + [0x0116C0, 0x0116C9], + [0x011700, 0x01171A], + [0x01171D, 0x01172B], + [0x011730, 0x011746], + [0x011800, 0x01183B], + [0x0118A0, 0x0118F2], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x011935], + [0x011937, 0x011938], + [0x01193B, 0x011946], + [0x011950, 0x011959], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D7], + [0x0119DA, 0x0119E4], + [0x011A00, 0x011A47], + [0x011A50, 0x011AA2], + [0x011AB0, 0x011AF8], + [0x011B00, 0x011B09], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C36], + [0x011C38, 0x011C45], + [0x011C50, 0x011C6C], + [0x011C70, 0x011C8F], + [0x011C92, 0x011CA7], + [0x011CA9, 0x011CB6], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D47], + [0x011D50, 0x011D59], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D8E], + [0x011D90, 0x011D91], + [0x011D93, 0x011D98], + [0x011DA0, 0x011DA9], + [0x011EE0, 0x011EF8], + [0x011F00, 0x011F10], + [0x011F12, 0x011F3A], + [0x011F3E, 0x011F59], + [0x011FC0, 0x011FF1], + [0x011FFF, 0x012399], + [0x012400, 0x01246E], + [0x012470, 0x012474], + [0x012480, 0x012543], + [0x012F90, 0x012FF2], + [0x013000, 0x013455], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A60, 0x016A69], + [0x016A6E, 0x016ABE], + [0x016AC0, 0x016AC9], + [0x016AD0, 0x016AED], + [0x016AF0, 0x016AF5], + [0x016B00, 0x016B45], + [0x016B50, 0x016B59], + [0x016B5B, 0x016B61], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E9A], + [0x016F00, 0x016F4A], + [0x016F4F, 0x016F87], + [0x016F8F, 0x016F9F], + [0x016FE0, 0x016FE4], + [0x016FF0, 0x016FF1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01BC9C, 0x01BCA3], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01CF50, 0x01CFC3], + [0x01D000, 0x01D0F5], + [0x01D100, 0x01D126], + [0x01D129, 0x01D1EA], + [0x01D200, 0x01D245], + [0x01D2C0, 0x01D2D3], + [0x01D2E0, 0x01D2F3], + [0x01D300, 0x01D356], + [0x01D360, 0x01D378], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D7CB], + [0x01D7CE, 0x01DA8B], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E130, 0x01E13D], + [0x01E140, 0x01E149], + [0x01E14E, 0x01E14F], + [0x01E290, 0x01E2AE], + [0x01E2C0, 0x01E2F9], + [0x01E4D0, 0x01E4F9], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E8C7, 0x01E8D6], + [0x01E900, 0x01E94B], + [0x01E950, 0x01E959], + [0x01E95E, 0x01E95F], + [0x01EC71, 0x01ECB4], + [0x01ED01, 0x01ED3D], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01EEF0, 0x01EEF1], + [0x01F000, 0x01F02B], + [0x01F030, 0x01F093], + [0x01F0A0, 0x01F0AE], + [0x01F0B1, 0x01F0BF], + [0x01F0C1, 0x01F0CF], + [0x01F0D1, 0x01F0F5], + [0x01F100, 0x01F1AD], + [0x01F1E6, 0x01F202], + [0x01F210, 0x01F23B], + [0x01F240, 0x01F248], + [0x01F250, 0x01F251], + [0x01F260, 0x01F265], + [0x01F300, 0x01F6D7], + [0x01F6DC, 0x01F6EC], + [0x01F6F0, 0x01F6FC], + [0x01F700, 0x01F776], + [0x01F77B, 0x01F7D9], + [0x01F7E0, 0x01F7EB], + [0x01F800, 0x01F80B], + [0x01F810, 0x01F847], + [0x01F850, 0x01F859], + [0x01F860, 0x01F887], + [0x01F890, 0x01F8AD], + [0x01F8B0, 0x01F8B1], + [0x01F900, 0x01FA53], + [0x01FA60, 0x01FA6D], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8], + [0x01FB00, 0x01FB92], + [0x01FB94, 0x01FBCA], + [0x01FBF0, 0x01FBF9], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF], + [0x0E0020, 0x0E007F], + [0x0E0100, 0x0E01EF], + [0x0F0000, 0x0FFFFD], + [0x100000, 0x10FFFD] + ] +}); +testPropertyEscapes( + /^\p{Assigned}+$/u, + matchSymbols, + "\\p{Assigned}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00038B, + 0x00038D, + 0x0003A2, + 0x000530, + 0x000590, + 0x00070E, + 0x00083F, + 0x00085F, + 0x00088F, + 0x000984, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x000A04, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A3D, + 0x000A5D, + 0x000A84, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000AC6, + 0x000ACA, + 0x000B00, + 0x000B04, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000BC9, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C45, + 0x000C49, + 0x000C57, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CC5, + 0x000CC9, + 0x000CDF, + 0x000CF0, + 0x000D0D, + 0x000D11, + 0x000D45, + 0x000D49, + 0x000D80, + 0x000D84, + 0x000DB2, + 0x000DBC, + 0x000DD5, + 0x000DD7, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EC5, + 0x000EC7, + 0x000ECF, + 0x000F48, + 0x000F98, + 0x000FBD, + 0x000FCD, + 0x0010C6, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x00176D, + 0x001771, + 0x00191F, + 0x001A5F, + 0x001B7F, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FC5, + 0x001FDC, + 0x001FF5, + 0x001FFF, + 0x002065, + 0x00208F, + 0x002B96, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x002DDF, + 0x002E9A, + 0x003040, + 0x003130, + 0x00318F, + 0x00321F, + 0x00A7D2, + 0x00A7D4, + 0x00A9CE, + 0x00A9FF, + 0x00AB27, + 0x00AB2F, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE53, + 0x00FE67, + 0x00FE75, + 0x00FF00, + 0x00FFE7, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x01018F, + 0x01039E, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x010856, + 0x0108F3, + 0x010A04, + 0x010A14, + 0x010A18, + 0x010E7F, + 0x010EAA, + 0x011135, + 0x0111E0, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011304, + 0x011329, + 0x011331, + 0x011334, + 0x01133A, + 0x01145C, + 0x011914, + 0x011917, + 0x011936, + 0x011C09, + 0x011C37, + 0x011CA8, + 0x011D07, + 0x011D0A, + 0x011D3B, + 0x011D3E, + 0x011D66, + 0x011D69, + 0x011D8F, + 0x011D92, + 0x011F11, + 0x01246F, + 0x016A5F, + 0x016ABF, + 0x016B5A, + 0x016B62, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01DAA0, + 0x01E007, + 0x01E022, + 0x01E025, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA, + 0x01F0C0, + 0x01F0D0, + 0x01FABE, + 0x01FB93 + ], + ranges: [ + [0x000378, 0x000379], + [0x000380, 0x000383], + [0x000557, 0x000558], + [0x00058B, 0x00058C], + [0x0005C8, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F5, 0x0005FF], + [0x00074B, 0x00074C], + [0x0007B2, 0x0007BF], + [0x0007FB, 0x0007FC], + [0x00082E, 0x00082F], + [0x00085C, 0x00085D], + [0x00086B, 0x00086F], + [0x000892, 0x000897], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BB], + [0x0009C5, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CF, 0x0009D6], + [0x0009D8, 0x0009DB], + [0x0009E4, 0x0009E5], + [0x0009FF, 0x000A00], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A3B], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A58], + [0x000A5F, 0x000A65], + [0x000A77, 0x000A80], + [0x000ABA, 0x000ABB], + [0x000ACE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE4, 0x000AE5], + [0x000AF2, 0x000AF8], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3B], + [0x000B45, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4E, 0x000B54], + [0x000B58, 0x000B5B], + [0x000B64, 0x000B65], + [0x000B78, 0x000B81], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCE, 0x000BCF], + [0x000BD1, 0x000BD6], + [0x000BD8, 0x000BE5], + [0x000BFB, 0x000BFF], + [0x000C3A, 0x000C3B], + [0x000C4E, 0x000C54], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C64, 0x000C65], + [0x000C70, 0x000C76], + [0x000CBA, 0x000CBB], + [0x000CCE, 0x000CD4], + [0x000CD7, 0x000CDC], + [0x000CE4, 0x000CE5], + [0x000CF4, 0x000CFF], + [0x000D50, 0x000D53], + [0x000D64, 0x000D65], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000DC9], + [0x000DCB, 0x000DCE], + [0x000DE0, 0x000DE5], + [0x000DF0, 0x000DF1], + [0x000DF5, 0x000E00], + [0x000E3B, 0x000E3E], + [0x000E5C, 0x000E80], + [0x000EBE, 0x000EBF], + [0x000EDA, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F6D, 0x000F70], + [0x000FDB, 0x000FFF], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00135C], + [0x00137D, 0x00137F], + [0x00139A, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x0013FF], + [0x00169D, 0x00169F], + [0x0016F9, 0x0016FF], + [0x001716, 0x00171E], + [0x001737, 0x00173F], + [0x001754, 0x00175F], + [0x001774, 0x00177F], + [0x0017DE, 0x0017DF], + [0x0017EA, 0x0017EF], + [0x0017FA, 0x0017FF], + [0x00181A, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00192C, 0x00192F], + [0x00193C, 0x00193F], + [0x001941, 0x001943], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019CF], + [0x0019DB, 0x0019DD], + [0x001A1C, 0x001A1D], + [0x001A7D, 0x001A7E], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001A9F], + [0x001AAE, 0x001AAF], + [0x001ACF, 0x001AFF], + [0x001B4D, 0x001B4F], + [0x001BF4, 0x001BFB], + [0x001C38, 0x001C3A], + [0x001C4A, 0x001C4C], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC8, 0x001CCF], + [0x001CFB, 0x001CFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FD4, 0x001FD5], + [0x001FF0, 0x001FF1], + [0x002072, 0x002073], + [0x00209D, 0x00209F], + [0x0020C1, 0x0020CF], + [0x0020F1, 0x0020FF], + [0x00218C, 0x00218F], + [0x002427, 0x00243F], + [0x00244B, 0x00245F], + [0x002B74, 0x002B75], + [0x002CF4, 0x002CF8], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D71, 0x002D7E], + [0x002D97, 0x002D9F], + [0x002E5E, 0x002E7F], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x002FEF], + [0x002FFC, 0x002FFF], + [0x003097, 0x003098], + [0x003100, 0x003104], + [0x0031E4, 0x0031EF], + [0x00A48D, 0x00A48F], + [0x00A4C7, 0x00A4CF], + [0x00A62C, 0x00A63F], + [0x00A6F8, 0x00A6FF], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A82D, 0x00A82F], + [0x00A83A, 0x00A83F], + [0x00A878, 0x00A87F], + [0x00A8C6, 0x00A8CD], + [0x00A8DA, 0x00A8DF], + [0x00A954, 0x00A95E], + [0x00A97D, 0x00A97F], + [0x00A9DA, 0x00A9DD], + [0x00AA37, 0x00AA3F], + [0x00AA4E, 0x00AA4F], + [0x00AA5A, 0x00AA5B], + [0x00AAC3, 0x00AADA], + [0x00AAF7, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6C, 0x00AB6F], + [0x00ABEE, 0x00ABEF], + [0x00ABFA, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00D7FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBC3, 0x00FBD2], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDCE], + [0x00FDD0, 0x00FDEF], + [0x00FE1A, 0x00FE1F], + [0x00FE6C, 0x00FE6F], + [0x00FEFD, 0x00FEFE], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFDF], + [0x00FFEF, 0x00FFF8], + [0x00FFFE, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x0100FF], + [0x010103, 0x010106], + [0x010134, 0x010136], + [0x01019D, 0x01019F], + [0x0101A1, 0x0101CF], + [0x0101FE, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102DF], + [0x0102FC, 0x0102FF], + [0x010324, 0x01032C], + [0x01034B, 0x01034F], + [0x01037B, 0x01037F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x0103FF], + [0x01049E, 0x01049F], + [0x0104AA, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056E], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x01089F, 0x0108A6], + [0x0108B0, 0x0108DF], + [0x0108F6, 0x0108FA], + [0x01091C, 0x01091E], + [0x01093A, 0x01093E], + [0x010940, 0x01097F], + [0x0109B8, 0x0109BB], + [0x0109D0, 0x0109D1], + [0x010A07, 0x010A0B], + [0x010A36, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A49, 0x010A4F], + [0x010A59, 0x010A5F], + [0x010AA0, 0x010ABF], + [0x010AE7, 0x010AEA], + [0x010AF7, 0x010AFF], + [0x010B36, 0x010B38], + [0x010B56, 0x010B57], + [0x010B73, 0x010B77], + [0x010B92, 0x010B98], + [0x010B9D, 0x010BA8], + [0x010BB0, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CF9], + [0x010D28, 0x010D2F], + [0x010D3A, 0x010E5F], + [0x010EAE, 0x010EAF], + [0x010EB2, 0x010EFC], + [0x010F28, 0x010F2F], + [0x010F5A, 0x010F6F], + [0x010F8A, 0x010FAF], + [0x010FCC, 0x010FDF], + [0x010FF7, 0x010FFF], + [0x01104E, 0x011051], + [0x011076, 0x01107E], + [0x0110C3, 0x0110CC], + [0x0110CE, 0x0110CF], + [0x0110E9, 0x0110EF], + [0x0110FA, 0x0110FF], + [0x011148, 0x01114F], + [0x011177, 0x01117F], + [0x0111F5, 0x0111FF], + [0x011242, 0x01127F], + [0x0112AA, 0x0112AF], + [0x0112EB, 0x0112EF], + [0x0112FA, 0x0112FF], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x01134F], + [0x011351, 0x011356], + [0x011358, 0x01135C], + [0x011364, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x0113FF], + [0x011462, 0x01147F], + [0x0114C8, 0x0114CF], + [0x0114DA, 0x01157F], + [0x0115B6, 0x0115B7], + [0x0115DE, 0x0115FF], + [0x011645, 0x01164F], + [0x01165A, 0x01165F], + [0x01166D, 0x01167F], + [0x0116BA, 0x0116BF], + [0x0116CA, 0x0116FF], + [0x01171B, 0x01171C], + [0x01172C, 0x01172F], + [0x011747, 0x0117FF], + [0x01183C, 0x01189F], + [0x0118F3, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011939, 0x01193A], + [0x011947, 0x01194F], + [0x01195A, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D8, 0x0119D9], + [0x0119E5, 0x0119FF], + [0x011A48, 0x011A4F], + [0x011AA3, 0x011AAF], + [0x011AF9, 0x011AFF], + [0x011B0A, 0x011BFF], + [0x011C46, 0x011C4F], + [0x011C6D, 0x011C6F], + [0x011C90, 0x011C91], + [0x011CB7, 0x011CFF], + [0x011D37, 0x011D39], + [0x011D48, 0x011D4F], + [0x011D5A, 0x011D5F], + [0x011D99, 0x011D9F], + [0x011DAA, 0x011EDF], + [0x011EF9, 0x011EFF], + [0x011F3B, 0x011F3D], + [0x011F5A, 0x011FAF], + [0x011FB1, 0x011FBF], + [0x011FF2, 0x011FFE], + [0x01239A, 0x0123FF], + [0x012475, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF3, 0x012FFF], + [0x013456, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A6A, 0x016A6D], + [0x016ACA, 0x016ACF], + [0x016AEE, 0x016AEF], + [0x016AF6, 0x016AFF], + [0x016B46, 0x016B4F], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E9B, 0x016EFF], + [0x016F4B, 0x016F4E], + [0x016F88, 0x016F8E], + [0x016FA0, 0x016FDF], + [0x016FE5, 0x016FEF], + [0x016FF2, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01BC9B], + [0x01BCA4, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01CF4F], + [0x01CFC4, 0x01CFFF], + [0x01D0F6, 0x01D0FF], + [0x01D127, 0x01D128], + [0x01D1EB, 0x01D1FF], + [0x01D246, 0x01D2BF], + [0x01D2D4, 0x01D2DF], + [0x01D2F4, 0x01D2FF], + [0x01D357, 0x01D35F], + [0x01D379, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01DA8C, 0x01DA9A], + [0x01DAB0, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E02F], + [0x01E06E, 0x01E08E], + [0x01E090, 0x01E0FF], + [0x01E12D, 0x01E12F], + [0x01E13E, 0x01E13F], + [0x01E14A, 0x01E14D], + [0x01E150, 0x01E28F], + [0x01E2AF, 0x01E2BF], + [0x01E2FA, 0x01E2FE], + [0x01E300, 0x01E4CF], + [0x01E4FA, 0x01E7DF], + [0x01E8C5, 0x01E8C6], + [0x01E8D7, 0x01E8FF], + [0x01E94C, 0x01E94F], + [0x01E95A, 0x01E95D], + [0x01E960, 0x01EC70], + [0x01ECB5, 0x01ED00], + [0x01ED3E, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01EEEF], + [0x01EEF2, 0x01EFFF], + [0x01F02C, 0x01F02F], + [0x01F094, 0x01F09F], + [0x01F0AF, 0x01F0B0], + [0x01F0F6, 0x01F0FF], + [0x01F1AE, 0x01F1E5], + [0x01F203, 0x01F20F], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F24F], + [0x01F252, 0x01F25F], + [0x01F266, 0x01F2FF], + [0x01F6D8, 0x01F6DB], + [0x01F6ED, 0x01F6EF], + [0x01F6FD, 0x01F6FF], + [0x01F777, 0x01F77A], + [0x01F7DA, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F7FF], + [0x01F80C, 0x01F80F], + [0x01F848, 0x01F84F], + [0x01F85A, 0x01F85F], + [0x01F888, 0x01F88F], + [0x01F8AE, 0x01F8AF], + [0x01F8B2, 0x01F8FF], + [0x01FA54, 0x01FA5F], + [0x01FA6E, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x01FAFF], + [0x01FBCB, 0x01FBEF], + [0x01FBFA, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x0E0000], + [0x0E0002, 0x0E001F], + [0x0E0080, 0x0E00FF], + [0x0E01F0, 0x0EFFFF], + [0x0FFFFE, 0x0FFFFF], + [0x10FFFE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Assigned}+$/u, + nonMatchSymbols, + "\\P{Assigned}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Bidi_Control.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Bidi_Control.js new file mode 100644 index 0000000000..bb19a60ad8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Bidi_Control.js @@ -0,0 +1,60 @@ +// Copyright 2022 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 for `Bidi_Control` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00061C + ], + ranges: [ + [0x00200E, 0x00200F], + [0x00202A, 0x00202E], + [0x002066, 0x002069] + ] +}); +testPropertyEscapes( + /^\p{Bidi_Control}+$/u, + matchSymbols, + "\\p{Bidi_Control}" +); +testPropertyEscapes( + /^\p{Bidi_C}+$/u, + matchSymbols, + "\\p{Bidi_C}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00061B], + [0x00061D, 0x00200D], + [0x002010, 0x002029], + [0x00202F, 0x002065], + [0x00206A, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Bidi_Control}+$/u, + nonMatchSymbols, + "\\P{Bidi_Control}" +); +testPropertyEscapes( + /^\P{Bidi_C}+$/u, + nonMatchSymbols, + "\\P{Bidi_C}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js new file mode 100644 index 0000000000..986ae8a7c0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Bidi_Mirrored.js @@ -0,0 +1,281 @@ +// Copyright 2022 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 for `Bidi_Mirrored` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00003C, + 0x00003E, + 0x00005B, + 0x00005D, + 0x00007B, + 0x00007D, + 0x0000AB, + 0x0000BB, + 0x002140, + 0x002211, + 0x002224, + 0x002226, + 0x002239, + 0x002262, + 0x002298, + 0x0027C0, + 0x0029B8, + 0x0029C9, + 0x0029E1, + 0x002A24, + 0x002A26, + 0x002A29, + 0x002ADC, + 0x002ADE, + 0x002AF3, + 0x002AFD, + 0x002BFE, + 0x00FF1C, + 0x00FF1E, + 0x00FF3B, + 0x00FF3D, + 0x00FF5B, + 0x00FF5D, + 0x01D6DB, + 0x01D715, + 0x01D74F, + 0x01D789, + 0x01D7C3 + ], + ranges: [ + [0x000028, 0x000029], + [0x000F3A, 0x000F3D], + [0x00169B, 0x00169C], + [0x002039, 0x00203A], + [0x002045, 0x002046], + [0x00207D, 0x00207E], + [0x00208D, 0x00208E], + [0x002201, 0x002204], + [0x002208, 0x00220D], + [0x002215, 0x002216], + [0x00221A, 0x00221D], + [0x00221F, 0x002222], + [0x00222B, 0x002233], + [0x00223B, 0x00224C], + [0x002252, 0x002255], + [0x00225F, 0x002260], + [0x002264, 0x00226B], + [0x00226E, 0x00228C], + [0x00228F, 0x002292], + [0x0022A2, 0x0022A3], + [0x0022A6, 0x0022B8], + [0x0022BE, 0x0022BF], + [0x0022C9, 0x0022CD], + [0x0022D0, 0x0022D1], + [0x0022D6, 0x0022ED], + [0x0022F0, 0x0022FF], + [0x002308, 0x00230B], + [0x002320, 0x002321], + [0x002329, 0x00232A], + [0x002768, 0x002775], + [0x0027C3, 0x0027C6], + [0x0027C8, 0x0027C9], + [0x0027CB, 0x0027CD], + [0x0027D3, 0x0027D6], + [0x0027DC, 0x0027DE], + [0x0027E2, 0x0027EF], + [0x002983, 0x002998], + [0x00299B, 0x0029A0], + [0x0029A2, 0x0029AF], + [0x0029C0, 0x0029C5], + [0x0029CE, 0x0029D2], + [0x0029D4, 0x0029D5], + [0x0029D8, 0x0029DC], + [0x0029E3, 0x0029E5], + [0x0029E8, 0x0029E9], + [0x0029F4, 0x0029F9], + [0x0029FC, 0x0029FD], + [0x002A0A, 0x002A1C], + [0x002A1E, 0x002A21], + [0x002A2B, 0x002A2E], + [0x002A34, 0x002A35], + [0x002A3C, 0x002A3E], + [0x002A57, 0x002A58], + [0x002A64, 0x002A65], + [0x002A6A, 0x002A6D], + [0x002A6F, 0x002A70], + [0x002A73, 0x002A74], + [0x002A79, 0x002AA3], + [0x002AA6, 0x002AAD], + [0x002AAF, 0x002AD6], + [0x002AE2, 0x002AE6], + [0x002AEC, 0x002AEE], + [0x002AF7, 0x002AFB], + [0x002E02, 0x002E05], + [0x002E09, 0x002E0A], + [0x002E0C, 0x002E0D], + [0x002E1C, 0x002E1D], + [0x002E20, 0x002E29], + [0x002E55, 0x002E5C], + [0x003008, 0x003011], + [0x003014, 0x00301B], + [0x00FE59, 0x00FE5E], + [0x00FE64, 0x00FE65], + [0x00FF08, 0x00FF09], + [0x00FF5F, 0x00FF60], + [0x00FF62, 0x00FF63] + ] +}); +testPropertyEscapes( + /^\p{Bidi_Mirrored}+$/u, + matchSymbols, + "\\p{Bidi_Mirrored}" +); +testPropertyEscapes( + /^\p{Bidi_M}+$/u, + matchSymbols, + "\\p{Bidi_M}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00003D, + 0x00005C, + 0x00007C, + 0x00221E, + 0x002223, + 0x002225, + 0x00223A, + 0x002261, + 0x002263, + 0x0027C7, + 0x0027CA, + 0x0029A1, + 0x0029D3, + 0x0029E2, + 0x002A1D, + 0x002A25, + 0x002A2A, + 0x002A6E, + 0x002AAE, + 0x002ADD, + 0x002AFC, + 0x002E0B, + 0x00FF1D, + 0x00FF3C, + 0x00FF5C, + 0x00FF5E, + 0x00FF61 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000027], + [0x00002A, 0x00003B], + [0x00003F, 0x00005A], + [0x00005E, 0x00007A], + [0x00007E, 0x0000AA], + [0x0000AC, 0x0000BA], + [0x0000BC, 0x000F39], + [0x000F3E, 0x00169A], + [0x00169D, 0x002038], + [0x00203B, 0x002044], + [0x002047, 0x00207C], + [0x00207F, 0x00208C], + [0x00208F, 0x00213F], + [0x002141, 0x002200], + [0x002205, 0x002207], + [0x00220E, 0x002210], + [0x002212, 0x002214], + [0x002217, 0x002219], + [0x002227, 0x00222A], + [0x002234, 0x002238], + [0x00224D, 0x002251], + [0x002256, 0x00225E], + [0x00226C, 0x00226D], + [0x00228D, 0x00228E], + [0x002293, 0x002297], + [0x002299, 0x0022A1], + [0x0022A4, 0x0022A5], + [0x0022B9, 0x0022BD], + [0x0022C0, 0x0022C8], + [0x0022CE, 0x0022CF], + [0x0022D2, 0x0022D5], + [0x0022EE, 0x0022EF], + [0x002300, 0x002307], + [0x00230C, 0x00231F], + [0x002322, 0x002328], + [0x00232B, 0x002767], + [0x002776, 0x0027BF], + [0x0027C1, 0x0027C2], + [0x0027CE, 0x0027D2], + [0x0027D7, 0x0027DB], + [0x0027DF, 0x0027E1], + [0x0027F0, 0x002982], + [0x002999, 0x00299A], + [0x0029B0, 0x0029B7], + [0x0029B9, 0x0029BF], + [0x0029C6, 0x0029C8], + [0x0029CA, 0x0029CD], + [0x0029D6, 0x0029D7], + [0x0029DD, 0x0029E0], + [0x0029E6, 0x0029E7], + [0x0029EA, 0x0029F3], + [0x0029FA, 0x0029FB], + [0x0029FE, 0x002A09], + [0x002A22, 0x002A23], + [0x002A27, 0x002A28], + [0x002A2F, 0x002A33], + [0x002A36, 0x002A3B], + [0x002A3F, 0x002A56], + [0x002A59, 0x002A63], + [0x002A66, 0x002A69], + [0x002A71, 0x002A72], + [0x002A75, 0x002A78], + [0x002AA4, 0x002AA5], + [0x002AD7, 0x002ADB], + [0x002ADF, 0x002AE1], + [0x002AE7, 0x002AEB], + [0x002AEF, 0x002AF2], + [0x002AF4, 0x002AF6], + [0x002AFE, 0x002BFD], + [0x002BFF, 0x002E01], + [0x002E06, 0x002E08], + [0x002E0E, 0x002E1B], + [0x002E1E, 0x002E1F], + [0x002E2A, 0x002E54], + [0x002E5D, 0x003007], + [0x003012, 0x003013], + [0x00301C, 0x00DBFF], + [0x00E000, 0x00FE58], + [0x00FE5F, 0x00FE63], + [0x00FE66, 0x00FF07], + [0x00FF0A, 0x00FF1B], + [0x00FF1F, 0x00FF3A], + [0x00FF3E, 0x00FF5A], + [0x00FF64, 0x01D6DA], + [0x01D6DC, 0x01D714], + [0x01D716, 0x01D74E], + [0x01D750, 0x01D788], + [0x01D78A, 0x01D7C2], + [0x01D7C4, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Bidi_Mirrored}+$/u, + nonMatchSymbols, + "\\P{Bidi_Mirrored}" +); +testPropertyEscapes( + /^\P{Bidi_M}+$/u, + nonMatchSymbols, + "\\P{Bidi_M}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js new file mode 100644 index 0000000000..6871274fd9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Case_Ignorable.js @@ -0,0 +1,927 @@ +// Copyright 2022 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 for `Case_Ignorable` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000027, + 0x00002E, + 0x00003A, + 0x00005E, + 0x000060, + 0x0000A8, + 0x0000AD, + 0x0000AF, + 0x0000B4, + 0x00037A, + 0x000387, + 0x000559, + 0x00055F, + 0x0005BF, + 0x0005C7, + 0x0005F4, + 0x00061C, + 0x000640, + 0x000670, + 0x00070F, + 0x000711, + 0x0007FA, + 0x0007FD, + 0x000888, + 0x00093A, + 0x00093C, + 0x00094D, + 0x000971, + 0x000981, + 0x0009BC, + 0x0009CD, + 0x0009FE, + 0x000A3C, + 0x000A51, + 0x000A75, + 0x000ABC, + 0x000ACD, + 0x000B01, + 0x000B3C, + 0x000B3F, + 0x000B4D, + 0x000B82, + 0x000BC0, + 0x000BCD, + 0x000C00, + 0x000C04, + 0x000C3C, + 0x000C81, + 0x000CBC, + 0x000CBF, + 0x000CC6, + 0x000D4D, + 0x000D81, + 0x000DCA, + 0x000DD6, + 0x000E31, + 0x000EB1, + 0x000EC6, + 0x000F35, + 0x000F37, + 0x000F39, + 0x000FC6, + 0x001082, + 0x00108D, + 0x00109D, + 0x0010FC, + 0x0017C6, + 0x0017D7, + 0x0017DD, + 0x001843, + 0x0018A9, + 0x001932, + 0x001A1B, + 0x001A56, + 0x001A60, + 0x001A62, + 0x001A7F, + 0x001AA7, + 0x001B34, + 0x001B3C, + 0x001B42, + 0x001BE6, + 0x001BED, + 0x001CED, + 0x001CF4, + 0x001D78, + 0x001FBD, + 0x002024, + 0x002027, + 0x002071, + 0x00207F, + 0x002D6F, + 0x002D7F, + 0x002E2F, + 0x003005, + 0x00303B, + 0x00A015, + 0x00A60C, + 0x00A67F, + 0x00A770, + 0x00A802, + 0x00A806, + 0x00A80B, + 0x00A82C, + 0x00A8FF, + 0x00A9B3, + 0x00A9CF, + 0x00AA43, + 0x00AA4C, + 0x00AA70, + 0x00AA7C, + 0x00AAB0, + 0x00AAC1, + 0x00AADD, + 0x00AAF6, + 0x00ABE5, + 0x00ABE8, + 0x00ABED, + 0x00FB1E, + 0x00FE13, + 0x00FE52, + 0x00FE55, + 0x00FEFF, + 0x00FF07, + 0x00FF0E, + 0x00FF1A, + 0x00FF3E, + 0x00FF40, + 0x00FF70, + 0x00FFE3, + 0x0101FD, + 0x0102E0, + 0x010A3F, + 0x011001, + 0x011070, + 0x0110BD, + 0x0110C2, + 0x0110CD, + 0x011173, + 0x0111CF, + 0x011234, + 0x01123E, + 0x011241, + 0x0112DF, + 0x011340, + 0x011446, + 0x01145E, + 0x0114BA, + 0x01163D, + 0x0116AB, + 0x0116AD, + 0x0116B7, + 0x01193E, + 0x011943, + 0x0119E0, + 0x011A47, + 0x011C3F, + 0x011D3A, + 0x011D47, + 0x011D95, + 0x011D97, + 0x011F40, + 0x011F42, + 0x016F4F, + 0x01DA75, + 0x01DA84, + 0x01E08F, + 0x01E2AE, + 0x0E0001 + ], + ranges: [ + [0x0000B7, 0x0000B8], + [0x0002B0, 0x00036F], + [0x000374, 0x000375], + [0x000384, 0x000385], + [0x000483, 0x000489], + [0x000591, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x000600, 0x000605], + [0x000610, 0x00061A], + [0x00064B, 0x00065F], + [0x0006D6, 0x0006DD], + [0x0006DF, 0x0006E8], + [0x0006EA, 0x0006ED], + [0x000730, 0x00074A], + [0x0007A6, 0x0007B0], + [0x0007EB, 0x0007F5], + [0x000816, 0x00082D], + [0x000859, 0x00085B], + [0x000890, 0x000891], + [0x000898, 0x00089F], + [0x0008C9, 0x000902], + [0x000941, 0x000948], + [0x000951, 0x000957], + [0x000962, 0x000963], + [0x0009C1, 0x0009C4], + [0x0009E2, 0x0009E3], + [0x000A01, 0x000A02], + [0x000A41, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A70, 0x000A71], + [0x000A81, 0x000A82], + [0x000AC1, 0x000AC5], + [0x000AC7, 0x000AC8], + [0x000AE2, 0x000AE3], + [0x000AFA, 0x000AFF], + [0x000B41, 0x000B44], + [0x000B55, 0x000B56], + [0x000B62, 0x000B63], + [0x000C3E, 0x000C40], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C62, 0x000C63], + [0x000CCC, 0x000CCD], + [0x000CE2, 0x000CE3], + [0x000D00, 0x000D01], + [0x000D3B, 0x000D3C], + [0x000D41, 0x000D44], + [0x000D62, 0x000D63], + [0x000DD2, 0x000DD4], + [0x000E34, 0x000E3A], + [0x000E46, 0x000E4E], + [0x000EB4, 0x000EBC], + [0x000EC8, 0x000ECE], + [0x000F18, 0x000F19], + [0x000F71, 0x000F7E], + [0x000F80, 0x000F84], + [0x000F86, 0x000F87], + [0x000F8D, 0x000F97], + [0x000F99, 0x000FBC], + [0x00102D, 0x001030], + [0x001032, 0x001037], + [0x001039, 0x00103A], + [0x00103D, 0x00103E], + [0x001058, 0x001059], + [0x00105E, 0x001060], + [0x001071, 0x001074], + [0x001085, 0x001086], + [0x00135D, 0x00135F], + [0x001712, 0x001714], + [0x001732, 0x001733], + [0x001752, 0x001753], + [0x001772, 0x001773], + [0x0017B4, 0x0017B5], + [0x0017B7, 0x0017BD], + [0x0017C9, 0x0017D3], + [0x00180B, 0x00180F], + [0x001885, 0x001886], + [0x001920, 0x001922], + [0x001927, 0x001928], + [0x001939, 0x00193B], + [0x001A17, 0x001A18], + [0x001A58, 0x001A5E], + [0x001A65, 0x001A6C], + [0x001A73, 0x001A7C], + [0x001AB0, 0x001ACE], + [0x001B00, 0x001B03], + [0x001B36, 0x001B3A], + [0x001B6B, 0x001B73], + [0x001B80, 0x001B81], + [0x001BA2, 0x001BA5], + [0x001BA8, 0x001BA9], + [0x001BAB, 0x001BAD], + [0x001BE8, 0x001BE9], + [0x001BEF, 0x001BF1], + [0x001C2C, 0x001C33], + [0x001C36, 0x001C37], + [0x001C78, 0x001C7D], + [0x001CD0, 0x001CD2], + [0x001CD4, 0x001CE0], + [0x001CE2, 0x001CE8], + [0x001CF8, 0x001CF9], + [0x001D2C, 0x001D6A], + [0x001D9B, 0x001DFF], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FDD, 0x001FDF], + [0x001FED, 0x001FEF], + [0x001FFD, 0x001FFE], + [0x00200B, 0x00200F], + [0x002018, 0x002019], + [0x00202A, 0x00202E], + [0x002060, 0x002064], + [0x002066, 0x00206F], + [0x002090, 0x00209C], + [0x0020D0, 0x0020F0], + [0x002C7C, 0x002C7D], + [0x002CEF, 0x002CF1], + [0x002DE0, 0x002DFF], + [0x00302A, 0x00302D], + [0x003031, 0x003035], + [0x003099, 0x00309E], + [0x0030FC, 0x0030FE], + [0x00A4F8, 0x00A4FD], + [0x00A66F, 0x00A672], + [0x00A674, 0x00A67D], + [0x00A69C, 0x00A69F], + [0x00A6F0, 0x00A6F1], + [0x00A700, 0x00A721], + [0x00A788, 0x00A78A], + [0x00A7F2, 0x00A7F4], + [0x00A7F8, 0x00A7F9], + [0x00A825, 0x00A826], + [0x00A8C4, 0x00A8C5], + [0x00A8E0, 0x00A8F1], + [0x00A926, 0x00A92D], + [0x00A947, 0x00A951], + [0x00A980, 0x00A982], + [0x00A9B6, 0x00A9B9], + [0x00A9BC, 0x00A9BD], + [0x00A9E5, 0x00A9E6], + [0x00AA29, 0x00AA2E], + [0x00AA31, 0x00AA32], + [0x00AA35, 0x00AA36], + [0x00AAB2, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABE, 0x00AABF], + [0x00AAEC, 0x00AAED], + [0x00AAF3, 0x00AAF4], + [0x00AB5B, 0x00AB5F], + [0x00AB69, 0x00AB6B], + [0x00FBB2, 0x00FBC2], + [0x00FE00, 0x00FE0F], + [0x00FE20, 0x00FE2F], + [0x00FF9E, 0x00FF9F], + [0x00FFF9, 0x00FFFB], + [0x010376, 0x01037A], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010A01, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A0F], + [0x010A38, 0x010A3A], + [0x010AE5, 0x010AE6], + [0x010D24, 0x010D27], + [0x010EAB, 0x010EAC], + [0x010EFD, 0x010EFF], + [0x010F46, 0x010F50], + [0x010F82, 0x010F85], + [0x011038, 0x011046], + [0x011073, 0x011074], + [0x01107F, 0x011081], + [0x0110B3, 0x0110B6], + [0x0110B9, 0x0110BA], + [0x011100, 0x011102], + [0x011127, 0x01112B], + [0x01112D, 0x011134], + [0x011180, 0x011181], + [0x0111B6, 0x0111BE], + [0x0111C9, 0x0111CC], + [0x01122F, 0x011231], + [0x011236, 0x011237], + [0x0112E3, 0x0112EA], + [0x011300, 0x011301], + [0x01133B, 0x01133C], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011438, 0x01143F], + [0x011442, 0x011444], + [0x0114B3, 0x0114B8], + [0x0114BF, 0x0114C0], + [0x0114C2, 0x0114C3], + [0x0115B2, 0x0115B5], + [0x0115BC, 0x0115BD], + [0x0115BF, 0x0115C0], + [0x0115DC, 0x0115DD], + [0x011633, 0x01163A], + [0x01163F, 0x011640], + [0x0116B0, 0x0116B5], + [0x01171D, 0x01171F], + [0x011722, 0x011725], + [0x011727, 0x01172B], + [0x01182F, 0x011837], + [0x011839, 0x01183A], + [0x01193B, 0x01193C], + [0x0119D4, 0x0119D7], + [0x0119DA, 0x0119DB], + [0x011A01, 0x011A0A], + [0x011A33, 0x011A38], + [0x011A3B, 0x011A3E], + [0x011A51, 0x011A56], + [0x011A59, 0x011A5B], + [0x011A8A, 0x011A96], + [0x011A98, 0x011A99], + [0x011C30, 0x011C36], + [0x011C38, 0x011C3D], + [0x011C92, 0x011CA7], + [0x011CAA, 0x011CB0], + [0x011CB2, 0x011CB3], + [0x011CB5, 0x011CB6], + [0x011D31, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D45], + [0x011D90, 0x011D91], + [0x011EF3, 0x011EF4], + [0x011F00, 0x011F01], + [0x011F36, 0x011F3A], + [0x013430, 0x013440], + [0x013447, 0x013455], + [0x016AF0, 0x016AF4], + [0x016B30, 0x016B36], + [0x016B40, 0x016B43], + [0x016F8F, 0x016F9F], + [0x016FE0, 0x016FE1], + [0x016FE3, 0x016FE4], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01BC9D, 0x01BC9E], + [0x01BCA0, 0x01BCA3], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01D167, 0x01D169], + [0x01D173, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D242, 0x01D244], + [0x01DA00, 0x01DA36], + [0x01DA3B, 0x01DA6C], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E030, 0x01E06D], + [0x01E130, 0x01E13D], + [0x01E2EC, 0x01E2EF], + [0x01E4EB, 0x01E4EF], + [0x01E8D0, 0x01E8D6], + [0x01E944, 0x01E94B], + [0x01F3FB, 0x01F3FF], + [0x0E0020, 0x0E007F], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\p{Case_Ignorable}+$/u, + matchSymbols, + "\\p{Case_Ignorable}" +); +testPropertyEscapes( + /^\p{CI}+$/u, + matchSymbols, + "\\p{CI}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00005F, + 0x0000AE, + 0x000386, + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x00061B, + 0x0006DE, + 0x0006E9, + 0x000710, + 0x00093B, + 0x000AC6, + 0x000B00, + 0x000B40, + 0x000C3D, + 0x000C49, + 0x000DD5, + 0x000EC7, + 0x000F36, + 0x000F38, + 0x000F7F, + 0x000F85, + 0x000F98, + 0x001031, + 0x001038, + 0x0017B6, + 0x001A57, + 0x001A5F, + 0x001A61, + 0x001B35, + 0x001B3B, + 0x001BAA, + 0x001BE7, + 0x001BEE, + 0x001CD3, + 0x001CE1, + 0x001FBE, + 0x002065, + 0x002070, + 0x00A673, + 0x00A67E, + 0x00AAB1, + 0x00AAC0, + 0x00AAF5, + 0x00FF3F, + 0x010786, + 0x0107B1, + 0x010A04, + 0x01112C, + 0x011235, + 0x011445, + 0x0114B9, + 0x0114C1, + 0x0115BE, + 0x01163E, + 0x0116AC, + 0x0116B6, + 0x011726, + 0x011838, + 0x01193D, + 0x011A97, + 0x011C37, + 0x011C3E, + 0x011CB1, + 0x011CB4, + 0x011D3B, + 0x011D3E, + 0x011D46, + 0x011D96, + 0x011F41, + 0x016FE2, + 0x01AFF4, + 0x01AFFC, + 0x01BC9F, + 0x01DAA0, + 0x01E007, + 0x01E022, + 0x01E025 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000026], + [0x000028, 0x00002D], + [0x00002F, 0x000039], + [0x00003B, 0x00005D], + [0x000061, 0x0000A7], + [0x0000A9, 0x0000AC], + [0x0000B0, 0x0000B3], + [0x0000B5, 0x0000B6], + [0x0000B9, 0x0002AF], + [0x000370, 0x000373], + [0x000376, 0x000379], + [0x00037B, 0x000383], + [0x000388, 0x000482], + [0x00048A, 0x000558], + [0x00055A, 0x00055E], + [0x000560, 0x000590], + [0x0005C8, 0x0005F3], + [0x0005F5, 0x0005FF], + [0x000606, 0x00060F], + [0x00061D, 0x00063F], + [0x000641, 0x00064A], + [0x000660, 0x00066F], + [0x000671, 0x0006D5], + [0x0006EE, 0x00070E], + [0x000712, 0x00072F], + [0x00074B, 0x0007A5], + [0x0007B1, 0x0007EA], + [0x0007F6, 0x0007F9], + [0x0007FB, 0x0007FC], + [0x0007FE, 0x000815], + [0x00082E, 0x000858], + [0x00085C, 0x000887], + [0x000889, 0x00088F], + [0x000892, 0x000897], + [0x0008A0, 0x0008C8], + [0x000903, 0x000939], + [0x00093D, 0x000940], + [0x000949, 0x00094C], + [0x00094E, 0x000950], + [0x000958, 0x000961], + [0x000964, 0x000970], + [0x000972, 0x000980], + [0x000982, 0x0009BB], + [0x0009BD, 0x0009C0], + [0x0009C5, 0x0009CC], + [0x0009CE, 0x0009E1], + [0x0009E4, 0x0009FD], + [0x0009FF, 0x000A00], + [0x000A03, 0x000A3B], + [0x000A3D, 0x000A40], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A6F], + [0x000A72, 0x000A74], + [0x000A76, 0x000A80], + [0x000A83, 0x000ABB], + [0x000ABD, 0x000AC0], + [0x000AC9, 0x000ACC], + [0x000ACE, 0x000AE1], + [0x000AE4, 0x000AF9], + [0x000B02, 0x000B3B], + [0x000B3D, 0x000B3E], + [0x000B45, 0x000B4C], + [0x000B4E, 0x000B54], + [0x000B57, 0x000B61], + [0x000B64, 0x000B81], + [0x000B83, 0x000BBF], + [0x000BC1, 0x000BCC], + [0x000BCE, 0x000BFF], + [0x000C01, 0x000C03], + [0x000C05, 0x000C3B], + [0x000C41, 0x000C45], + [0x000C4E, 0x000C54], + [0x000C57, 0x000C61], + [0x000C64, 0x000C80], + [0x000C82, 0x000CBB], + [0x000CBD, 0x000CBE], + [0x000CC0, 0x000CC5], + [0x000CC7, 0x000CCB], + [0x000CCE, 0x000CE1], + [0x000CE4, 0x000CFF], + [0x000D02, 0x000D3A], + [0x000D3D, 0x000D40], + [0x000D45, 0x000D4C], + [0x000D4E, 0x000D61], + [0x000D64, 0x000D80], + [0x000D82, 0x000DC9], + [0x000DCB, 0x000DD1], + [0x000DD7, 0x000E30], + [0x000E32, 0x000E33], + [0x000E3B, 0x000E45], + [0x000E4F, 0x000EB0], + [0x000EB2, 0x000EB3], + [0x000EBD, 0x000EC5], + [0x000ECF, 0x000F17], + [0x000F1A, 0x000F34], + [0x000F3A, 0x000F70], + [0x000F88, 0x000F8C], + [0x000FBD, 0x000FC5], + [0x000FC7, 0x00102C], + [0x00103B, 0x00103C], + [0x00103F, 0x001057], + [0x00105A, 0x00105D], + [0x001061, 0x001070], + [0x001075, 0x001081], + [0x001083, 0x001084], + [0x001087, 0x00108C], + [0x00108E, 0x00109C], + [0x00109E, 0x0010FB], + [0x0010FD, 0x00135C], + [0x001360, 0x001711], + [0x001715, 0x001731], + [0x001734, 0x001751], + [0x001754, 0x001771], + [0x001774, 0x0017B3], + [0x0017BE, 0x0017C5], + [0x0017C7, 0x0017C8], + [0x0017D4, 0x0017D6], + [0x0017D8, 0x0017DC], + [0x0017DE, 0x00180A], + [0x001810, 0x001842], + [0x001844, 0x001884], + [0x001887, 0x0018A8], + [0x0018AA, 0x00191F], + [0x001923, 0x001926], + [0x001929, 0x001931], + [0x001933, 0x001938], + [0x00193C, 0x001A16], + [0x001A19, 0x001A1A], + [0x001A1C, 0x001A55], + [0x001A63, 0x001A64], + [0x001A6D, 0x001A72], + [0x001A7D, 0x001A7E], + [0x001A80, 0x001AA6], + [0x001AA8, 0x001AAF], + [0x001ACF, 0x001AFF], + [0x001B04, 0x001B33], + [0x001B3D, 0x001B41], + [0x001B43, 0x001B6A], + [0x001B74, 0x001B7F], + [0x001B82, 0x001BA1], + [0x001BA6, 0x001BA7], + [0x001BAE, 0x001BE5], + [0x001BEA, 0x001BEC], + [0x001BF2, 0x001C2B], + [0x001C34, 0x001C35], + [0x001C38, 0x001C77], + [0x001C7E, 0x001CCF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF7], + [0x001CFA, 0x001D2B], + [0x001D6B, 0x001D77], + [0x001D79, 0x001D9A], + [0x001E00, 0x001FBC], + [0x001FC2, 0x001FCC], + [0x001FD0, 0x001FDC], + [0x001FE0, 0x001FEC], + [0x001FF0, 0x001FFC], + [0x001FFF, 0x00200A], + [0x002010, 0x002017], + [0x00201A, 0x002023], + [0x002025, 0x002026], + [0x002028, 0x002029], + [0x00202F, 0x00205F], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x0020CF], + [0x0020F1, 0x002C7B], + [0x002C7E, 0x002CEE], + [0x002CF2, 0x002D6E], + [0x002D70, 0x002D7E], + [0x002D80, 0x002DDF], + [0x002E00, 0x002E2E], + [0x002E30, 0x003004], + [0x003006, 0x003029], + [0x00302E, 0x003030], + [0x003036, 0x00303A], + [0x00303C, 0x003098], + [0x00309F, 0x0030FB], + [0x0030FF, 0x00A014], + [0x00A016, 0x00A4F7], + [0x00A4FE, 0x00A60B], + [0x00A60D, 0x00A66E], + [0x00A680, 0x00A69B], + [0x00A6A0, 0x00A6EF], + [0x00A6F2, 0x00A6FF], + [0x00A722, 0x00A76F], + [0x00A771, 0x00A787], + [0x00A78B, 0x00A7F1], + [0x00A7F5, 0x00A7F7], + [0x00A7FA, 0x00A801], + [0x00A803, 0x00A805], + [0x00A807, 0x00A80A], + [0x00A80C, 0x00A824], + [0x00A827, 0x00A82B], + [0x00A82D, 0x00A8C3], + [0x00A8C6, 0x00A8DF], + [0x00A8F2, 0x00A8FE], + [0x00A900, 0x00A925], + [0x00A92E, 0x00A946], + [0x00A952, 0x00A97F], + [0x00A983, 0x00A9B2], + [0x00A9B4, 0x00A9B5], + [0x00A9BA, 0x00A9BB], + [0x00A9BE, 0x00A9CE], + [0x00A9D0, 0x00A9E4], + [0x00A9E7, 0x00AA28], + [0x00AA2F, 0x00AA30], + [0x00AA33, 0x00AA34], + [0x00AA37, 0x00AA42], + [0x00AA44, 0x00AA4B], + [0x00AA4D, 0x00AA6F], + [0x00AA71, 0x00AA7B], + [0x00AA7D, 0x00AAAF], + [0x00AAB5, 0x00AAB6], + [0x00AAB9, 0x00AABD], + [0x00AAC2, 0x00AADC], + [0x00AADE, 0x00AAEB], + [0x00AAEE, 0x00AAF2], + [0x00AAF7, 0x00AB5A], + [0x00AB60, 0x00AB68], + [0x00AB6C, 0x00ABE4], + [0x00ABE6, 0x00ABE7], + [0x00ABE9, 0x00ABEC], + [0x00ABEE, 0x00DBFF], + [0x00E000, 0x00FB1D], + [0x00FB1F, 0x00FBB1], + [0x00FBC3, 0x00FDFF], + [0x00FE10, 0x00FE12], + [0x00FE14, 0x00FE1F], + [0x00FE30, 0x00FE51], + [0x00FE53, 0x00FE54], + [0x00FE56, 0x00FEFE], + [0x00FF00, 0x00FF06], + [0x00FF08, 0x00FF0D], + [0x00FF0F, 0x00FF19], + [0x00FF1B, 0x00FF3D], + [0x00FF41, 0x00FF6F], + [0x00FF71, 0x00FF9D], + [0x00FFA0, 0x00FFE2], + [0x00FFE4, 0x00FFF8], + [0x00FFFC, 0x0101FC], + [0x0101FE, 0x0102DF], + [0x0102E1, 0x010375], + [0x01037B, 0x01077F], + [0x0107BB, 0x010A00], + [0x010A07, 0x010A0B], + [0x010A10, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A40, 0x010AE4], + [0x010AE7, 0x010D23], + [0x010D28, 0x010EAA], + [0x010EAD, 0x010EFC], + [0x010F00, 0x010F45], + [0x010F51, 0x010F81], + [0x010F86, 0x011000], + [0x011002, 0x011037], + [0x011047, 0x01106F], + [0x011071, 0x011072], + [0x011075, 0x01107E], + [0x011082, 0x0110B2], + [0x0110B7, 0x0110B8], + [0x0110BB, 0x0110BC], + [0x0110BE, 0x0110C1], + [0x0110C3, 0x0110CC], + [0x0110CE, 0x0110FF], + [0x011103, 0x011126], + [0x011135, 0x011172], + [0x011174, 0x01117F], + [0x011182, 0x0111B5], + [0x0111BF, 0x0111C8], + [0x0111CD, 0x0111CE], + [0x0111D0, 0x01122E], + [0x011232, 0x011233], + [0x011238, 0x01123D], + [0x01123F, 0x011240], + [0x011242, 0x0112DE], + [0x0112E0, 0x0112E2], + [0x0112EB, 0x0112FF], + [0x011302, 0x01133A], + [0x01133D, 0x01133F], + [0x011341, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x011437], + [0x011440, 0x011441], + [0x011447, 0x01145D], + [0x01145F, 0x0114B2], + [0x0114BB, 0x0114BE], + [0x0114C4, 0x0115B1], + [0x0115B6, 0x0115BB], + [0x0115C1, 0x0115DB], + [0x0115DE, 0x011632], + [0x01163B, 0x01163C], + [0x011641, 0x0116AA], + [0x0116AE, 0x0116AF], + [0x0116B8, 0x01171C], + [0x011720, 0x011721], + [0x01172C, 0x01182E], + [0x01183B, 0x01193A], + [0x01193F, 0x011942], + [0x011944, 0x0119D3], + [0x0119D8, 0x0119D9], + [0x0119DC, 0x0119DF], + [0x0119E1, 0x011A00], + [0x011A0B, 0x011A32], + [0x011A39, 0x011A3A], + [0x011A3F, 0x011A46], + [0x011A48, 0x011A50], + [0x011A57, 0x011A58], + [0x011A5C, 0x011A89], + [0x011A9A, 0x011C2F], + [0x011C40, 0x011C91], + [0x011CA8, 0x011CA9], + [0x011CB7, 0x011D30], + [0x011D37, 0x011D39], + [0x011D48, 0x011D8F], + [0x011D92, 0x011D94], + [0x011D98, 0x011EF2], + [0x011EF5, 0x011EFF], + [0x011F02, 0x011F35], + [0x011F3B, 0x011F3F], + [0x011F43, 0x01342F], + [0x013441, 0x013446], + [0x013456, 0x016AEF], + [0x016AF5, 0x016B2F], + [0x016B37, 0x016B3F], + [0x016B44, 0x016F4E], + [0x016F50, 0x016F8E], + [0x016FA0, 0x016FDF], + [0x016FE5, 0x01AFEF], + [0x01AFFF, 0x01BC9C], + [0x01BCA4, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01D166], + [0x01D16A, 0x01D172], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D241], + [0x01D245, 0x01D9FF], + [0x01DA37, 0x01DA3A], + [0x01DA6D, 0x01DA74], + [0x01DA76, 0x01DA83], + [0x01DA85, 0x01DA9A], + [0x01DAB0, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E02F], + [0x01E06E, 0x01E08E], + [0x01E090, 0x01E12F], + [0x01E13E, 0x01E2AD], + [0x01E2AF, 0x01E2EB], + [0x01E2F0, 0x01E4EA], + [0x01E4F0, 0x01E8CF], + [0x01E8D7, 0x01E943], + [0x01E94C, 0x01F3FA], + [0x01F400, 0x0E0000], + [0x0E0002, 0x0E001F], + [0x0E0080, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Case_Ignorable}+$/u, + nonMatchSymbols, + "\\P{Case_Ignorable}" +); +testPropertyEscapes( + /^\P{CI}+$/u, + nonMatchSymbols, + "\\P{CI}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Cased.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Cased.js new file mode 100644 index 0000000000..bb38d736cc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Cased.js @@ -0,0 +1,357 @@ +// Copyright 2022 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 for `Cased` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000B5, + 0x0000BA, + 0x000345, + 0x00037F, + 0x000386, + 0x00038C, + 0x0010C7, + 0x0010CD, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001FBE, + 0x002071, + 0x00207F, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x002139, + 0x00214E, + 0x002D27, + 0x002D2D, + 0x00A7D3, + 0x010780, + 0x01D4A2, + 0x01D4BB, + 0x01D546 + ], + ranges: [ + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0001BA], + [0x0001BC, 0x0001BF], + [0x0001C4, 0x000293], + [0x000295, 0x0002B8], + [0x0002C0, 0x0002C1], + [0x0002E0, 0x0002E4], + [0x000370, 0x000373], + [0x000376, 0x000377], + [0x00037A, 0x00037D], + [0x000388, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003F5], + [0x0003F7, 0x000481], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000560, 0x000588], + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FC, 0x0010FF], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001D00, 0x001DBF], + [0x001E00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FCC], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FE0, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFC], + [0x002090, 0x00209C], + [0x00210A, 0x002113], + [0x002119, 0x00211D], + [0x00212A, 0x00212D], + [0x00212F, 0x002134], + [0x00213C, 0x00213F], + [0x002145, 0x002149], + [0x002160, 0x00217F], + [0x002183, 0x002184], + [0x0024B6, 0x0024E9], + [0x002C00, 0x002CE4], + [0x002CEB, 0x002CEE], + [0x002CF2, 0x002CF3], + [0x002D00, 0x002D25], + [0x00A640, 0x00A66D], + [0x00A680, 0x00A69D], + [0x00A722, 0x00A787], + [0x00A78B, 0x00A78E], + [0x00A790, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A7F6], + [0x00A7F8, 0x00A7FA], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB70, 0x00ABBF], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x010400, 0x01044F], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010783, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x0118A0, 0x0118DF], + [0x016E40, 0x016E7F], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7CB], + [0x01DF00, 0x01DF09], + [0x01DF0B, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E030, 0x01E06D], + [0x01E900, 0x01E943], + [0x01F130, 0x01F149], + [0x01F150, 0x01F169], + [0x01F170, 0x01F189] + ] +}); +testPropertyEscapes( + /^\p{Cased}+$/u, + matchSymbols, + "\\p{Cased}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x0001BB, + 0x000294, + 0x00037E, + 0x000387, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x0003F6, + 0x000530, + 0x0010C6, + 0x0010FB, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x00212E, + 0x002D26, + 0x00A78F, + 0x00A7D2, + 0x00A7D4, + 0x00A7F7, + 0x00AB5B, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3, + 0x01DF0A + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B4], + [0x0000B6, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0001C0, 0x0001C3], + [0x0002B9, 0x0002BF], + [0x0002C2, 0x0002DF], + [0x0002E5, 0x000344], + [0x000346, 0x00036F], + [0x000374, 0x000375], + [0x000378, 0x000379], + [0x000380, 0x000385], + [0x000482, 0x000489], + [0x000557, 0x00055F], + [0x000589, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x001100, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001CFF], + [0x001DC0, 0x001DFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FDC, 0x001FDF], + [0x001FED, 0x001FF1], + [0x001FFD, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002118], + [0x00211E, 0x002123], + [0x002135, 0x002138], + [0x00213A, 0x00213B], + [0x002140, 0x002144], + [0x00214A, 0x00214D], + [0x00214F, 0x00215F], + [0x002180, 0x002182], + [0x002185, 0x0024B5], + [0x0024EA, 0x002BFF], + [0x002CE5, 0x002CEA], + [0x002CEF, 0x002CF1], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x00A63F], + [0x00A66E, 0x00A67F], + [0x00A69E, 0x00A721], + [0x00A788, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A7FB, 0x00AB2F], + [0x00AB6A, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x0103FF], + [0x010450, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x01056F], + [0x0105BD, 0x01077F], + [0x010781, 0x010782], + [0x0107BB, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x01189F], + [0x0118E0, 0x016E3F], + [0x016E80, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01E02F], + [0x01E06E, 0x01E8FF], + [0x01E944, 0x01F12F], + [0x01F14A, 0x01F14F], + [0x01F16A, 0x01F16F], + [0x01F18A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Cased}+$/u, + nonMatchSymbols, + "\\P{Cased}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js new file mode 100644 index 0000000000..8da744f12a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Casefolded.js @@ -0,0 +1,1297 @@ +// Copyright 2022 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 for `Changes_When_Casefolded` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000B5, + 0x000100, + 0x000102, + 0x000104, + 0x000106, + 0x000108, + 0x00010A, + 0x00010C, + 0x00010E, + 0x000110, + 0x000112, + 0x000114, + 0x000116, + 0x000118, + 0x00011A, + 0x00011C, + 0x00011E, + 0x000120, + 0x000122, + 0x000124, + 0x000126, + 0x000128, + 0x00012A, + 0x00012C, + 0x00012E, + 0x000130, + 0x000132, + 0x000134, + 0x000136, + 0x000139, + 0x00013B, + 0x00013D, + 0x00013F, + 0x000141, + 0x000143, + 0x000145, + 0x000147, + 0x00014C, + 0x00014E, + 0x000150, + 0x000152, + 0x000154, + 0x000156, + 0x000158, + 0x00015A, + 0x00015C, + 0x00015E, + 0x000160, + 0x000162, + 0x000164, + 0x000166, + 0x000168, + 0x00016A, + 0x00016C, + 0x00016E, + 0x000170, + 0x000172, + 0x000174, + 0x000176, + 0x00017B, + 0x00017D, + 0x00017F, + 0x000184, + 0x0001A2, + 0x0001A4, + 0x0001A9, + 0x0001AC, + 0x0001B5, + 0x0001BC, + 0x0001CD, + 0x0001CF, + 0x0001D1, + 0x0001D3, + 0x0001D5, + 0x0001D7, + 0x0001D9, + 0x0001DB, + 0x0001DE, + 0x0001E0, + 0x0001E2, + 0x0001E4, + 0x0001E6, + 0x0001E8, + 0x0001EA, + 0x0001EC, + 0x0001EE, + 0x0001F4, + 0x0001FA, + 0x0001FC, + 0x0001FE, + 0x000200, + 0x000202, + 0x000204, + 0x000206, + 0x000208, + 0x00020A, + 0x00020C, + 0x00020E, + 0x000210, + 0x000212, + 0x000214, + 0x000216, + 0x000218, + 0x00021A, + 0x00021C, + 0x00021E, + 0x000220, + 0x000222, + 0x000224, + 0x000226, + 0x000228, + 0x00022A, + 0x00022C, + 0x00022E, + 0x000230, + 0x000232, + 0x000241, + 0x000248, + 0x00024A, + 0x00024C, + 0x00024E, + 0x000345, + 0x000370, + 0x000372, + 0x000376, + 0x00037F, + 0x000386, + 0x00038C, + 0x0003C2, + 0x0003D8, + 0x0003DA, + 0x0003DC, + 0x0003DE, + 0x0003E0, + 0x0003E2, + 0x0003E4, + 0x0003E6, + 0x0003E8, + 0x0003EA, + 0x0003EC, + 0x0003EE, + 0x0003F7, + 0x000460, + 0x000462, + 0x000464, + 0x000466, + 0x000468, + 0x00046A, + 0x00046C, + 0x00046E, + 0x000470, + 0x000472, + 0x000474, + 0x000476, + 0x000478, + 0x00047A, + 0x00047C, + 0x00047E, + 0x000480, + 0x00048A, + 0x00048C, + 0x00048E, + 0x000490, + 0x000492, + 0x000494, + 0x000496, + 0x000498, + 0x00049A, + 0x00049C, + 0x00049E, + 0x0004A0, + 0x0004A2, + 0x0004A4, + 0x0004A6, + 0x0004A8, + 0x0004AA, + 0x0004AC, + 0x0004AE, + 0x0004B0, + 0x0004B2, + 0x0004B4, + 0x0004B6, + 0x0004B8, + 0x0004BA, + 0x0004BC, + 0x0004BE, + 0x0004C3, + 0x0004C5, + 0x0004C7, + 0x0004C9, + 0x0004CB, + 0x0004CD, + 0x0004D0, + 0x0004D2, + 0x0004D4, + 0x0004D6, + 0x0004D8, + 0x0004DA, + 0x0004DC, + 0x0004DE, + 0x0004E0, + 0x0004E2, + 0x0004E4, + 0x0004E6, + 0x0004E8, + 0x0004EA, + 0x0004EC, + 0x0004EE, + 0x0004F0, + 0x0004F2, + 0x0004F4, + 0x0004F6, + 0x0004F8, + 0x0004FA, + 0x0004FC, + 0x0004FE, + 0x000500, + 0x000502, + 0x000504, + 0x000506, + 0x000508, + 0x00050A, + 0x00050C, + 0x00050E, + 0x000510, + 0x000512, + 0x000514, + 0x000516, + 0x000518, + 0x00051A, + 0x00051C, + 0x00051E, + 0x000520, + 0x000522, + 0x000524, + 0x000526, + 0x000528, + 0x00052A, + 0x00052C, + 0x00052E, + 0x000587, + 0x0010C7, + 0x0010CD, + 0x001E00, + 0x001E02, + 0x001E04, + 0x001E06, + 0x001E08, + 0x001E0A, + 0x001E0C, + 0x001E0E, + 0x001E10, + 0x001E12, + 0x001E14, + 0x001E16, + 0x001E18, + 0x001E1A, + 0x001E1C, + 0x001E1E, + 0x001E20, + 0x001E22, + 0x001E24, + 0x001E26, + 0x001E28, + 0x001E2A, + 0x001E2C, + 0x001E2E, + 0x001E30, + 0x001E32, + 0x001E34, + 0x001E36, + 0x001E38, + 0x001E3A, + 0x001E3C, + 0x001E3E, + 0x001E40, + 0x001E42, + 0x001E44, + 0x001E46, + 0x001E48, + 0x001E4A, + 0x001E4C, + 0x001E4E, + 0x001E50, + 0x001E52, + 0x001E54, + 0x001E56, + 0x001E58, + 0x001E5A, + 0x001E5C, + 0x001E5E, + 0x001E60, + 0x001E62, + 0x001E64, + 0x001E66, + 0x001E68, + 0x001E6A, + 0x001E6C, + 0x001E6E, + 0x001E70, + 0x001E72, + 0x001E74, + 0x001E76, + 0x001E78, + 0x001E7A, + 0x001E7C, + 0x001E7E, + 0x001E80, + 0x001E82, + 0x001E84, + 0x001E86, + 0x001E88, + 0x001E8A, + 0x001E8C, + 0x001E8E, + 0x001E90, + 0x001E92, + 0x001E94, + 0x001E9E, + 0x001EA0, + 0x001EA2, + 0x001EA4, + 0x001EA6, + 0x001EA8, + 0x001EAA, + 0x001EAC, + 0x001EAE, + 0x001EB0, + 0x001EB2, + 0x001EB4, + 0x001EB6, + 0x001EB8, + 0x001EBA, + 0x001EBC, + 0x001EBE, + 0x001EC0, + 0x001EC2, + 0x001EC4, + 0x001EC6, + 0x001EC8, + 0x001ECA, + 0x001ECC, + 0x001ECE, + 0x001ED0, + 0x001ED2, + 0x001ED4, + 0x001ED6, + 0x001ED8, + 0x001EDA, + 0x001EDC, + 0x001EDE, + 0x001EE0, + 0x001EE2, + 0x001EE4, + 0x001EE6, + 0x001EE8, + 0x001EEA, + 0x001EEC, + 0x001EEE, + 0x001EF0, + 0x001EF2, + 0x001EF4, + 0x001EF6, + 0x001EF8, + 0x001EFA, + 0x001EFC, + 0x001EFE, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001F5F, + 0x002126, + 0x002132, + 0x002183, + 0x002C60, + 0x002C67, + 0x002C69, + 0x002C6B, + 0x002C72, + 0x002C75, + 0x002C82, + 0x002C84, + 0x002C86, + 0x002C88, + 0x002C8A, + 0x002C8C, + 0x002C8E, + 0x002C90, + 0x002C92, + 0x002C94, + 0x002C96, + 0x002C98, + 0x002C9A, + 0x002C9C, + 0x002C9E, + 0x002CA0, + 0x002CA2, + 0x002CA4, + 0x002CA6, + 0x002CA8, + 0x002CAA, + 0x002CAC, + 0x002CAE, + 0x002CB0, + 0x002CB2, + 0x002CB4, + 0x002CB6, + 0x002CB8, + 0x002CBA, + 0x002CBC, + 0x002CBE, + 0x002CC0, + 0x002CC2, + 0x002CC4, + 0x002CC6, + 0x002CC8, + 0x002CCA, + 0x002CCC, + 0x002CCE, + 0x002CD0, + 0x002CD2, + 0x002CD4, + 0x002CD6, + 0x002CD8, + 0x002CDA, + 0x002CDC, + 0x002CDE, + 0x002CE0, + 0x002CE2, + 0x002CEB, + 0x002CED, + 0x002CF2, + 0x00A640, + 0x00A642, + 0x00A644, + 0x00A646, + 0x00A648, + 0x00A64A, + 0x00A64C, + 0x00A64E, + 0x00A650, + 0x00A652, + 0x00A654, + 0x00A656, + 0x00A658, + 0x00A65A, + 0x00A65C, + 0x00A65E, + 0x00A660, + 0x00A662, + 0x00A664, + 0x00A666, + 0x00A668, + 0x00A66A, + 0x00A66C, + 0x00A680, + 0x00A682, + 0x00A684, + 0x00A686, + 0x00A688, + 0x00A68A, + 0x00A68C, + 0x00A68E, + 0x00A690, + 0x00A692, + 0x00A694, + 0x00A696, + 0x00A698, + 0x00A69A, + 0x00A722, + 0x00A724, + 0x00A726, + 0x00A728, + 0x00A72A, + 0x00A72C, + 0x00A72E, + 0x00A732, + 0x00A734, + 0x00A736, + 0x00A738, + 0x00A73A, + 0x00A73C, + 0x00A73E, + 0x00A740, + 0x00A742, + 0x00A744, + 0x00A746, + 0x00A748, + 0x00A74A, + 0x00A74C, + 0x00A74E, + 0x00A750, + 0x00A752, + 0x00A754, + 0x00A756, + 0x00A758, + 0x00A75A, + 0x00A75C, + 0x00A75E, + 0x00A760, + 0x00A762, + 0x00A764, + 0x00A766, + 0x00A768, + 0x00A76A, + 0x00A76C, + 0x00A76E, + 0x00A779, + 0x00A77B, + 0x00A780, + 0x00A782, + 0x00A784, + 0x00A786, + 0x00A78B, + 0x00A78D, + 0x00A790, + 0x00A792, + 0x00A796, + 0x00A798, + 0x00A79A, + 0x00A79C, + 0x00A79E, + 0x00A7A0, + 0x00A7A2, + 0x00A7A4, + 0x00A7A6, + 0x00A7A8, + 0x00A7B6, + 0x00A7B8, + 0x00A7BA, + 0x00A7BC, + 0x00A7BE, + 0x00A7C0, + 0x00A7C2, + 0x00A7C9, + 0x00A7D0, + 0x00A7D6, + 0x00A7D8, + 0x00A7F5 + ], + ranges: [ + [0x000041, 0x00005A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000DF], + [0x000149, 0x00014A], + [0x000178, 0x000179], + [0x000181, 0x000182], + [0x000186, 0x000187], + [0x000189, 0x00018B], + [0x00018E, 0x000191], + [0x000193, 0x000194], + [0x000196, 0x000198], + [0x00019C, 0x00019D], + [0x00019F, 0x0001A0], + [0x0001A6, 0x0001A7], + [0x0001AE, 0x0001AF], + [0x0001B1, 0x0001B3], + [0x0001B7, 0x0001B8], + [0x0001C4, 0x0001C5], + [0x0001C7, 0x0001C8], + [0x0001CA, 0x0001CB], + [0x0001F1, 0x0001F2], + [0x0001F6, 0x0001F8], + [0x00023A, 0x00023B], + [0x00023D, 0x00023E], + [0x000243, 0x000246], + [0x000388, 0x00038A], + [0x00038E, 0x00038F], + [0x000391, 0x0003A1], + [0x0003A3, 0x0003AB], + [0x0003CF, 0x0003D1], + [0x0003D5, 0x0003D6], + [0x0003F0, 0x0003F1], + [0x0003F4, 0x0003F5], + [0x0003F9, 0x0003FA], + [0x0003FD, 0x00042F], + [0x0004C0, 0x0004C1], + [0x000531, 0x000556], + [0x0010A0, 0x0010C5], + [0x0013F8, 0x0013FD], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001E9A, 0x001E9B], + [0x001F08, 0x001F0F], + [0x001F18, 0x001F1D], + [0x001F28, 0x001F2F], + [0x001F38, 0x001F3F], + [0x001F48, 0x001F4D], + [0x001F68, 0x001F6F], + [0x001F80, 0x001FAF], + [0x001FB2, 0x001FB4], + [0x001FB7, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC7, 0x001FCC], + [0x001FD8, 0x001FDB], + [0x001FE8, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF7, 0x001FFC], + [0x00212A, 0x00212B], + [0x002160, 0x00216F], + [0x0024B6, 0x0024CF], + [0x002C00, 0x002C2F], + [0x002C62, 0x002C64], + [0x002C6D, 0x002C70], + [0x002C7E, 0x002C80], + [0x00A77D, 0x00A77E], + [0x00A7AA, 0x00A7AE], + [0x00A7B0, 0x00A7B4], + [0x00A7C4, 0x00A7C7], + [0x00AB70, 0x00ABBF], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FF21, 0x00FF3A], + [0x010400, 0x010427], + [0x0104B0, 0x0104D3], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010C80, 0x010CB2], + [0x0118A0, 0x0118BF], + [0x016E40, 0x016E5F], + [0x01E900, 0x01E921] + ] +}); +testPropertyEscapes( + /^\p{Changes_When_Casefolded}+$/u, + matchSymbols, + "\\p{Changes_When_Casefolded}" +); +testPropertyEscapes( + /^\p{CWCF}+$/u, + matchSymbols, + "\\p{CWCF}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x000101, + 0x000103, + 0x000105, + 0x000107, + 0x000109, + 0x00010B, + 0x00010D, + 0x00010F, + 0x000111, + 0x000113, + 0x000115, + 0x000117, + 0x000119, + 0x00011B, + 0x00011D, + 0x00011F, + 0x000121, + 0x000123, + 0x000125, + 0x000127, + 0x000129, + 0x00012B, + 0x00012D, + 0x00012F, + 0x000131, + 0x000133, + 0x000135, + 0x00013A, + 0x00013C, + 0x00013E, + 0x000140, + 0x000142, + 0x000144, + 0x000146, + 0x000148, + 0x00014B, + 0x00014D, + 0x00014F, + 0x000151, + 0x000153, + 0x000155, + 0x000157, + 0x000159, + 0x00015B, + 0x00015D, + 0x00015F, + 0x000161, + 0x000163, + 0x000165, + 0x000167, + 0x000169, + 0x00016B, + 0x00016D, + 0x00016F, + 0x000171, + 0x000173, + 0x000175, + 0x000177, + 0x00017A, + 0x00017C, + 0x00017E, + 0x000180, + 0x000183, + 0x000185, + 0x000188, + 0x000192, + 0x000195, + 0x00019E, + 0x0001A1, + 0x0001A3, + 0x0001A5, + 0x0001A8, + 0x0001AD, + 0x0001B0, + 0x0001B4, + 0x0001B6, + 0x0001C6, + 0x0001C9, + 0x0001CC, + 0x0001CE, + 0x0001D0, + 0x0001D2, + 0x0001D4, + 0x0001D6, + 0x0001D8, + 0x0001DA, + 0x0001DF, + 0x0001E1, + 0x0001E3, + 0x0001E5, + 0x0001E7, + 0x0001E9, + 0x0001EB, + 0x0001ED, + 0x0001F3, + 0x0001F5, + 0x0001F9, + 0x0001FB, + 0x0001FD, + 0x0001FF, + 0x000201, + 0x000203, + 0x000205, + 0x000207, + 0x000209, + 0x00020B, + 0x00020D, + 0x00020F, + 0x000211, + 0x000213, + 0x000215, + 0x000217, + 0x000219, + 0x00021B, + 0x00021D, + 0x00021F, + 0x000221, + 0x000223, + 0x000225, + 0x000227, + 0x000229, + 0x00022B, + 0x00022D, + 0x00022F, + 0x000231, + 0x00023C, + 0x000242, + 0x000247, + 0x000249, + 0x00024B, + 0x00024D, + 0x000371, + 0x000387, + 0x00038B, + 0x00038D, + 0x000390, + 0x0003A2, + 0x0003D7, + 0x0003D9, + 0x0003DB, + 0x0003DD, + 0x0003DF, + 0x0003E1, + 0x0003E3, + 0x0003E5, + 0x0003E7, + 0x0003E9, + 0x0003EB, + 0x0003ED, + 0x0003EF, + 0x0003F6, + 0x0003F8, + 0x000461, + 0x000463, + 0x000465, + 0x000467, + 0x000469, + 0x00046B, + 0x00046D, + 0x00046F, + 0x000471, + 0x000473, + 0x000475, + 0x000477, + 0x000479, + 0x00047B, + 0x00047D, + 0x00047F, + 0x00048B, + 0x00048D, + 0x00048F, + 0x000491, + 0x000493, + 0x000495, + 0x000497, + 0x000499, + 0x00049B, + 0x00049D, + 0x00049F, + 0x0004A1, + 0x0004A3, + 0x0004A5, + 0x0004A7, + 0x0004A9, + 0x0004AB, + 0x0004AD, + 0x0004AF, + 0x0004B1, + 0x0004B3, + 0x0004B5, + 0x0004B7, + 0x0004B9, + 0x0004BB, + 0x0004BD, + 0x0004BF, + 0x0004C2, + 0x0004C4, + 0x0004C6, + 0x0004C8, + 0x0004CA, + 0x0004CC, + 0x0004D1, + 0x0004D3, + 0x0004D5, + 0x0004D7, + 0x0004D9, + 0x0004DB, + 0x0004DD, + 0x0004DF, + 0x0004E1, + 0x0004E3, + 0x0004E5, + 0x0004E7, + 0x0004E9, + 0x0004EB, + 0x0004ED, + 0x0004EF, + 0x0004F1, + 0x0004F3, + 0x0004F5, + 0x0004F7, + 0x0004F9, + 0x0004FB, + 0x0004FD, + 0x0004FF, + 0x000501, + 0x000503, + 0x000505, + 0x000507, + 0x000509, + 0x00050B, + 0x00050D, + 0x00050F, + 0x000511, + 0x000513, + 0x000515, + 0x000517, + 0x000519, + 0x00051B, + 0x00051D, + 0x00051F, + 0x000521, + 0x000523, + 0x000525, + 0x000527, + 0x000529, + 0x00052B, + 0x00052D, + 0x0010C6, + 0x001E01, + 0x001E03, + 0x001E05, + 0x001E07, + 0x001E09, + 0x001E0B, + 0x001E0D, + 0x001E0F, + 0x001E11, + 0x001E13, + 0x001E15, + 0x001E17, + 0x001E19, + 0x001E1B, + 0x001E1D, + 0x001E1F, + 0x001E21, + 0x001E23, + 0x001E25, + 0x001E27, + 0x001E29, + 0x001E2B, + 0x001E2D, + 0x001E2F, + 0x001E31, + 0x001E33, + 0x001E35, + 0x001E37, + 0x001E39, + 0x001E3B, + 0x001E3D, + 0x001E3F, + 0x001E41, + 0x001E43, + 0x001E45, + 0x001E47, + 0x001E49, + 0x001E4B, + 0x001E4D, + 0x001E4F, + 0x001E51, + 0x001E53, + 0x001E55, + 0x001E57, + 0x001E59, + 0x001E5B, + 0x001E5D, + 0x001E5F, + 0x001E61, + 0x001E63, + 0x001E65, + 0x001E67, + 0x001E69, + 0x001E6B, + 0x001E6D, + 0x001E6F, + 0x001E71, + 0x001E73, + 0x001E75, + 0x001E77, + 0x001E79, + 0x001E7B, + 0x001E7D, + 0x001E7F, + 0x001E81, + 0x001E83, + 0x001E85, + 0x001E87, + 0x001E89, + 0x001E8B, + 0x001E8D, + 0x001E8F, + 0x001E91, + 0x001E93, + 0x001E9F, + 0x001EA1, + 0x001EA3, + 0x001EA5, + 0x001EA7, + 0x001EA9, + 0x001EAB, + 0x001EAD, + 0x001EAF, + 0x001EB1, + 0x001EB3, + 0x001EB5, + 0x001EB7, + 0x001EB9, + 0x001EBB, + 0x001EBD, + 0x001EBF, + 0x001EC1, + 0x001EC3, + 0x001EC5, + 0x001EC7, + 0x001EC9, + 0x001ECB, + 0x001ECD, + 0x001ECF, + 0x001ED1, + 0x001ED3, + 0x001ED5, + 0x001ED7, + 0x001ED9, + 0x001EDB, + 0x001EDD, + 0x001EDF, + 0x001EE1, + 0x001EE3, + 0x001EE5, + 0x001EE7, + 0x001EE9, + 0x001EEB, + 0x001EED, + 0x001EEF, + 0x001EF1, + 0x001EF3, + 0x001EF5, + 0x001EF7, + 0x001EF9, + 0x001EFB, + 0x001EFD, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x002C61, + 0x002C68, + 0x002C6A, + 0x002C6C, + 0x002C71, + 0x002C81, + 0x002C83, + 0x002C85, + 0x002C87, + 0x002C89, + 0x002C8B, + 0x002C8D, + 0x002C8F, + 0x002C91, + 0x002C93, + 0x002C95, + 0x002C97, + 0x002C99, + 0x002C9B, + 0x002C9D, + 0x002C9F, + 0x002CA1, + 0x002CA3, + 0x002CA5, + 0x002CA7, + 0x002CA9, + 0x002CAB, + 0x002CAD, + 0x002CAF, + 0x002CB1, + 0x002CB3, + 0x002CB5, + 0x002CB7, + 0x002CB9, + 0x002CBB, + 0x002CBD, + 0x002CBF, + 0x002CC1, + 0x002CC3, + 0x002CC5, + 0x002CC7, + 0x002CC9, + 0x002CCB, + 0x002CCD, + 0x002CCF, + 0x002CD1, + 0x002CD3, + 0x002CD5, + 0x002CD7, + 0x002CD9, + 0x002CDB, + 0x002CDD, + 0x002CDF, + 0x002CE1, + 0x002CEC, + 0x00A641, + 0x00A643, + 0x00A645, + 0x00A647, + 0x00A649, + 0x00A64B, + 0x00A64D, + 0x00A64F, + 0x00A651, + 0x00A653, + 0x00A655, + 0x00A657, + 0x00A659, + 0x00A65B, + 0x00A65D, + 0x00A65F, + 0x00A661, + 0x00A663, + 0x00A665, + 0x00A667, + 0x00A669, + 0x00A66B, + 0x00A681, + 0x00A683, + 0x00A685, + 0x00A687, + 0x00A689, + 0x00A68B, + 0x00A68D, + 0x00A68F, + 0x00A691, + 0x00A693, + 0x00A695, + 0x00A697, + 0x00A699, + 0x00A723, + 0x00A725, + 0x00A727, + 0x00A729, + 0x00A72B, + 0x00A72D, + 0x00A733, + 0x00A735, + 0x00A737, + 0x00A739, + 0x00A73B, + 0x00A73D, + 0x00A73F, + 0x00A741, + 0x00A743, + 0x00A745, + 0x00A747, + 0x00A749, + 0x00A74B, + 0x00A74D, + 0x00A74F, + 0x00A751, + 0x00A753, + 0x00A755, + 0x00A757, + 0x00A759, + 0x00A75B, + 0x00A75D, + 0x00A75F, + 0x00A761, + 0x00A763, + 0x00A765, + 0x00A767, + 0x00A769, + 0x00A76B, + 0x00A76D, + 0x00A77A, + 0x00A77C, + 0x00A77F, + 0x00A781, + 0x00A783, + 0x00A785, + 0x00A78C, + 0x00A791, + 0x00A797, + 0x00A799, + 0x00A79B, + 0x00A79D, + 0x00A79F, + 0x00A7A1, + 0x00A7A3, + 0x00A7A5, + 0x00A7A7, + 0x00A7A9, + 0x00A7AF, + 0x00A7B5, + 0x00A7B7, + 0x00A7B9, + 0x00A7BB, + 0x00A7BD, + 0x00A7BF, + 0x00A7C1, + 0x00A7C3, + 0x00A7C8, + 0x00A7D7, + 0x01057B, + 0x01058B, + 0x010593 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x0000B4], + [0x0000B6, 0x0000BF], + [0x0000E0, 0x0000FF], + [0x000137, 0x000138], + [0x00018C, 0x00018D], + [0x000199, 0x00019B], + [0x0001AA, 0x0001AB], + [0x0001B9, 0x0001BB], + [0x0001BD, 0x0001C3], + [0x0001DC, 0x0001DD], + [0x0001EF, 0x0001F0], + [0x000233, 0x000239], + [0x00023F, 0x000240], + [0x00024F, 0x000344], + [0x000346, 0x00036F], + [0x000373, 0x000375], + [0x000377, 0x00037E], + [0x000380, 0x000385], + [0x0003AC, 0x0003C1], + [0x0003C3, 0x0003CE], + [0x0003D2, 0x0003D4], + [0x0003F2, 0x0003F3], + [0x0003FB, 0x0003FC], + [0x000430, 0x00045F], + [0x000481, 0x000489], + [0x0004CE, 0x0004CF], + [0x00052F, 0x000530], + [0x000557, 0x000586], + [0x000588, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0013F7], + [0x0013FE, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001DFF], + [0x001E95, 0x001E99], + [0x001E9C, 0x001E9D], + [0x001EFF, 0x001F07], + [0x001F10, 0x001F17], + [0x001F1E, 0x001F27], + [0x001F30, 0x001F37], + [0x001F40, 0x001F47], + [0x001F4E, 0x001F58], + [0x001F60, 0x001F67], + [0x001F70, 0x001F7F], + [0x001FB0, 0x001FB1], + [0x001FB5, 0x001FB6], + [0x001FBD, 0x001FC1], + [0x001FC5, 0x001FC6], + [0x001FCD, 0x001FD7], + [0x001FDC, 0x001FE7], + [0x001FED, 0x001FF1], + [0x001FF5, 0x001FF6], + [0x001FFD, 0x002125], + [0x002127, 0x002129], + [0x00212C, 0x002131], + [0x002133, 0x00215F], + [0x002170, 0x002182], + [0x002184, 0x0024B5], + [0x0024D0, 0x002BFF], + [0x002C30, 0x002C5F], + [0x002C65, 0x002C66], + [0x002C73, 0x002C74], + [0x002C76, 0x002C7D], + [0x002CE3, 0x002CEA], + [0x002CEE, 0x002CF1], + [0x002CF3, 0x00A63F], + [0x00A66D, 0x00A67F], + [0x00A69B, 0x00A721], + [0x00A72F, 0x00A731], + [0x00A76F, 0x00A778], + [0x00A787, 0x00A78A], + [0x00A78E, 0x00A78F], + [0x00A793, 0x00A795], + [0x00A7CA, 0x00A7CF], + [0x00A7D1, 0x00A7D5], + [0x00A7D9, 0x00A7F4], + [0x00A7F6, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FF20], + [0x00FF3B, 0x0103FF], + [0x010428, 0x0104AF], + [0x0104D4, 0x01056F], + [0x010596, 0x010C7F], + [0x010CB3, 0x01189F], + [0x0118C0, 0x016E3F], + [0x016E60, 0x01E8FF], + [0x01E922, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Changes_When_Casefolded}+$/u, + nonMatchSymbols, + "\\P{Changes_When_Casefolded}" +); +testPropertyEscapes( + /^\P{CWCF}+$/u, + nonMatchSymbols, + "\\P{CWCF}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js new file mode 100644 index 0000000000..4471237db0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Casemapped.js @@ -0,0 +1,315 @@ +// Copyright 2022 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 for `Changes_When_Casemapped` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000B5, + 0x0001BF, + 0x000259, + 0x000263, + 0x00026F, + 0x000275, + 0x00027D, + 0x000280, + 0x000292, + 0x000345, + 0x00037F, + 0x000386, + 0x00038C, + 0x0010C7, + 0x0010CD, + 0x001D79, + 0x001D7D, + 0x001D8E, + 0x001E9E, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001FBE, + 0x002126, + 0x002132, + 0x00214E, + 0x002D27, + 0x002D2D, + 0x00AB53 + ], + ranges: [ + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x000137], + [0x000139, 0x00018C], + [0x00018E, 0x00019A], + [0x00019C, 0x0001A9], + [0x0001AC, 0x0001B9], + [0x0001BC, 0x0001BD], + [0x0001C4, 0x000220], + [0x000222, 0x000233], + [0x00023A, 0x000254], + [0x000256, 0x000257], + [0x00025B, 0x00025C], + [0x000260, 0x000261], + [0x000265, 0x000266], + [0x000268, 0x00026C], + [0x000271, 0x000272], + [0x000282, 0x000283], + [0x000287, 0x00028C], + [0x00029D, 0x00029E], + [0x000370, 0x000373], + [0x000376, 0x000377], + [0x00037B, 0x00037D], + [0x000388, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003D1], + [0x0003D5, 0x0003F5], + [0x0003F7, 0x0003FB], + [0x0003FD, 0x000481], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000561, 0x000587], + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FD, 0x0010FF], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001E00, 0x001E9B], + [0x001EA0, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FCC], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FE0, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFC], + [0x00212A, 0x00212B], + [0x002160, 0x00217F], + [0x002183, 0x002184], + [0x0024B6, 0x0024E9], + [0x002C00, 0x002C70], + [0x002C72, 0x002C73], + [0x002C75, 0x002C76], + [0x002C7E, 0x002CE3], + [0x002CEB, 0x002CEE], + [0x002CF2, 0x002CF3], + [0x002D00, 0x002D25], + [0x00A640, 0x00A66D], + [0x00A680, 0x00A69B], + [0x00A722, 0x00A72F], + [0x00A732, 0x00A76F], + [0x00A779, 0x00A787], + [0x00A78B, 0x00A78D], + [0x00A790, 0x00A794], + [0x00A796, 0x00A7AE], + [0x00A7B0, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D6, 0x00A7D9], + [0x00A7F5, 0x00A7F6], + [0x00AB70, 0x00ABBF], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x010400, 0x01044F], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x0118A0, 0x0118DF], + [0x016E40, 0x016E7F], + [0x01E900, 0x01E943] + ] +}); +testPropertyEscapes( + /^\p{Changes_When_Casemapped}+$/u, + matchSymbols, + "\\p{Changes_When_Casemapped}" +); +testPropertyEscapes( + /^\p{CWCM}+$/u, + matchSymbols, + "\\p{CWCM}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x000138, + 0x00018D, + 0x00019B, + 0x0001BE, + 0x000221, + 0x000255, + 0x000258, + 0x00025A, + 0x000262, + 0x000264, + 0x000267, + 0x000270, + 0x000281, + 0x00037E, + 0x000387, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x0003F6, + 0x0003FC, + 0x000530, + 0x0010C6, + 0x001E9F, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002C71, + 0x002C74, + 0x002D26, + 0x00A795, + 0x00A7AF, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000B4], + [0x0000B6, 0x0000BF], + [0x0001AA, 0x0001AB], + [0x0001BA, 0x0001BB], + [0x0001C0, 0x0001C3], + [0x000234, 0x000239], + [0x00025D, 0x00025F], + [0x00026D, 0x00026E], + [0x000273, 0x000274], + [0x000276, 0x00027C], + [0x00027E, 0x00027F], + [0x000284, 0x000286], + [0x00028D, 0x000291], + [0x000293, 0x00029C], + [0x00029F, 0x000344], + [0x000346, 0x00036F], + [0x000374, 0x000375], + [0x000378, 0x00037A], + [0x000380, 0x000385], + [0x0003D2, 0x0003D4], + [0x000482, 0x000489], + [0x000557, 0x000560], + [0x000588, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x0010FB, 0x0010FC], + [0x001100, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001D78], + [0x001D7A, 0x001D7C], + [0x001D7E, 0x001D8D], + [0x001D8F, 0x001DFF], + [0x001E9C, 0x001E9D], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FDC, 0x001FDF], + [0x001FED, 0x001FF1], + [0x001FFD, 0x002125], + [0x002127, 0x002129], + [0x00212C, 0x002131], + [0x002133, 0x00214D], + [0x00214F, 0x00215F], + [0x002180, 0x002182], + [0x002185, 0x0024B5], + [0x0024EA, 0x002BFF], + [0x002C77, 0x002C7D], + [0x002CE4, 0x002CEA], + [0x002CEF, 0x002CF1], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x00A63F], + [0x00A66E, 0x00A67F], + [0x00A69C, 0x00A721], + [0x00A730, 0x00A731], + [0x00A770, 0x00A778], + [0x00A788, 0x00A78A], + [0x00A78E, 0x00A78F], + [0x00A7CB, 0x00A7CF], + [0x00A7D2, 0x00A7D5], + [0x00A7DA, 0x00A7F4], + [0x00A7F7, 0x00AB52], + [0x00AB54, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x0103FF], + [0x010450, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x01056F], + [0x0105BD, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x01189F], + [0x0118E0, 0x016E3F], + [0x016E80, 0x01E8FF], + [0x01E944, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Changes_When_Casemapped}+$/u, + nonMatchSymbols, + "\\P{Changes_When_Casemapped}" +); +testPropertyEscapes( + /^\P{CWCM}+$/u, + nonMatchSymbols, + "\\P{CWCM}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js new file mode 100644 index 0000000000..b3c0f0f51b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Lowercased.js @@ -0,0 +1,1271 @@ +// Copyright 2022 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 for `Changes_When_Lowercased` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000100, + 0x000102, + 0x000104, + 0x000106, + 0x000108, + 0x00010A, + 0x00010C, + 0x00010E, + 0x000110, + 0x000112, + 0x000114, + 0x000116, + 0x000118, + 0x00011A, + 0x00011C, + 0x00011E, + 0x000120, + 0x000122, + 0x000124, + 0x000126, + 0x000128, + 0x00012A, + 0x00012C, + 0x00012E, + 0x000130, + 0x000132, + 0x000134, + 0x000136, + 0x000139, + 0x00013B, + 0x00013D, + 0x00013F, + 0x000141, + 0x000143, + 0x000145, + 0x000147, + 0x00014A, + 0x00014C, + 0x00014E, + 0x000150, + 0x000152, + 0x000154, + 0x000156, + 0x000158, + 0x00015A, + 0x00015C, + 0x00015E, + 0x000160, + 0x000162, + 0x000164, + 0x000166, + 0x000168, + 0x00016A, + 0x00016C, + 0x00016E, + 0x000170, + 0x000172, + 0x000174, + 0x000176, + 0x00017B, + 0x00017D, + 0x000184, + 0x0001A2, + 0x0001A4, + 0x0001A9, + 0x0001AC, + 0x0001B5, + 0x0001BC, + 0x0001CD, + 0x0001CF, + 0x0001D1, + 0x0001D3, + 0x0001D5, + 0x0001D7, + 0x0001D9, + 0x0001DB, + 0x0001DE, + 0x0001E0, + 0x0001E2, + 0x0001E4, + 0x0001E6, + 0x0001E8, + 0x0001EA, + 0x0001EC, + 0x0001EE, + 0x0001F4, + 0x0001FA, + 0x0001FC, + 0x0001FE, + 0x000200, + 0x000202, + 0x000204, + 0x000206, + 0x000208, + 0x00020A, + 0x00020C, + 0x00020E, + 0x000210, + 0x000212, + 0x000214, + 0x000216, + 0x000218, + 0x00021A, + 0x00021C, + 0x00021E, + 0x000220, + 0x000222, + 0x000224, + 0x000226, + 0x000228, + 0x00022A, + 0x00022C, + 0x00022E, + 0x000230, + 0x000232, + 0x000241, + 0x000248, + 0x00024A, + 0x00024C, + 0x00024E, + 0x000370, + 0x000372, + 0x000376, + 0x00037F, + 0x000386, + 0x00038C, + 0x0003CF, + 0x0003D8, + 0x0003DA, + 0x0003DC, + 0x0003DE, + 0x0003E0, + 0x0003E2, + 0x0003E4, + 0x0003E6, + 0x0003E8, + 0x0003EA, + 0x0003EC, + 0x0003EE, + 0x0003F4, + 0x0003F7, + 0x000460, + 0x000462, + 0x000464, + 0x000466, + 0x000468, + 0x00046A, + 0x00046C, + 0x00046E, + 0x000470, + 0x000472, + 0x000474, + 0x000476, + 0x000478, + 0x00047A, + 0x00047C, + 0x00047E, + 0x000480, + 0x00048A, + 0x00048C, + 0x00048E, + 0x000490, + 0x000492, + 0x000494, + 0x000496, + 0x000498, + 0x00049A, + 0x00049C, + 0x00049E, + 0x0004A0, + 0x0004A2, + 0x0004A4, + 0x0004A6, + 0x0004A8, + 0x0004AA, + 0x0004AC, + 0x0004AE, + 0x0004B0, + 0x0004B2, + 0x0004B4, + 0x0004B6, + 0x0004B8, + 0x0004BA, + 0x0004BC, + 0x0004BE, + 0x0004C3, + 0x0004C5, + 0x0004C7, + 0x0004C9, + 0x0004CB, + 0x0004CD, + 0x0004D0, + 0x0004D2, + 0x0004D4, + 0x0004D6, + 0x0004D8, + 0x0004DA, + 0x0004DC, + 0x0004DE, + 0x0004E0, + 0x0004E2, + 0x0004E4, + 0x0004E6, + 0x0004E8, + 0x0004EA, + 0x0004EC, + 0x0004EE, + 0x0004F0, + 0x0004F2, + 0x0004F4, + 0x0004F6, + 0x0004F8, + 0x0004FA, + 0x0004FC, + 0x0004FE, + 0x000500, + 0x000502, + 0x000504, + 0x000506, + 0x000508, + 0x00050A, + 0x00050C, + 0x00050E, + 0x000510, + 0x000512, + 0x000514, + 0x000516, + 0x000518, + 0x00051A, + 0x00051C, + 0x00051E, + 0x000520, + 0x000522, + 0x000524, + 0x000526, + 0x000528, + 0x00052A, + 0x00052C, + 0x00052E, + 0x0010C7, + 0x0010CD, + 0x001E00, + 0x001E02, + 0x001E04, + 0x001E06, + 0x001E08, + 0x001E0A, + 0x001E0C, + 0x001E0E, + 0x001E10, + 0x001E12, + 0x001E14, + 0x001E16, + 0x001E18, + 0x001E1A, + 0x001E1C, + 0x001E1E, + 0x001E20, + 0x001E22, + 0x001E24, + 0x001E26, + 0x001E28, + 0x001E2A, + 0x001E2C, + 0x001E2E, + 0x001E30, + 0x001E32, + 0x001E34, + 0x001E36, + 0x001E38, + 0x001E3A, + 0x001E3C, + 0x001E3E, + 0x001E40, + 0x001E42, + 0x001E44, + 0x001E46, + 0x001E48, + 0x001E4A, + 0x001E4C, + 0x001E4E, + 0x001E50, + 0x001E52, + 0x001E54, + 0x001E56, + 0x001E58, + 0x001E5A, + 0x001E5C, + 0x001E5E, + 0x001E60, + 0x001E62, + 0x001E64, + 0x001E66, + 0x001E68, + 0x001E6A, + 0x001E6C, + 0x001E6E, + 0x001E70, + 0x001E72, + 0x001E74, + 0x001E76, + 0x001E78, + 0x001E7A, + 0x001E7C, + 0x001E7E, + 0x001E80, + 0x001E82, + 0x001E84, + 0x001E86, + 0x001E88, + 0x001E8A, + 0x001E8C, + 0x001E8E, + 0x001E90, + 0x001E92, + 0x001E94, + 0x001E9E, + 0x001EA0, + 0x001EA2, + 0x001EA4, + 0x001EA6, + 0x001EA8, + 0x001EAA, + 0x001EAC, + 0x001EAE, + 0x001EB0, + 0x001EB2, + 0x001EB4, + 0x001EB6, + 0x001EB8, + 0x001EBA, + 0x001EBC, + 0x001EBE, + 0x001EC0, + 0x001EC2, + 0x001EC4, + 0x001EC6, + 0x001EC8, + 0x001ECA, + 0x001ECC, + 0x001ECE, + 0x001ED0, + 0x001ED2, + 0x001ED4, + 0x001ED6, + 0x001ED8, + 0x001EDA, + 0x001EDC, + 0x001EDE, + 0x001EE0, + 0x001EE2, + 0x001EE4, + 0x001EE6, + 0x001EE8, + 0x001EEA, + 0x001EEC, + 0x001EEE, + 0x001EF0, + 0x001EF2, + 0x001EF4, + 0x001EF6, + 0x001EF8, + 0x001EFA, + 0x001EFC, + 0x001EFE, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001F5F, + 0x002126, + 0x002132, + 0x002183, + 0x002C60, + 0x002C67, + 0x002C69, + 0x002C6B, + 0x002C72, + 0x002C75, + 0x002C82, + 0x002C84, + 0x002C86, + 0x002C88, + 0x002C8A, + 0x002C8C, + 0x002C8E, + 0x002C90, + 0x002C92, + 0x002C94, + 0x002C96, + 0x002C98, + 0x002C9A, + 0x002C9C, + 0x002C9E, + 0x002CA0, + 0x002CA2, + 0x002CA4, + 0x002CA6, + 0x002CA8, + 0x002CAA, + 0x002CAC, + 0x002CAE, + 0x002CB0, + 0x002CB2, + 0x002CB4, + 0x002CB6, + 0x002CB8, + 0x002CBA, + 0x002CBC, + 0x002CBE, + 0x002CC0, + 0x002CC2, + 0x002CC4, + 0x002CC6, + 0x002CC8, + 0x002CCA, + 0x002CCC, + 0x002CCE, + 0x002CD0, + 0x002CD2, + 0x002CD4, + 0x002CD6, + 0x002CD8, + 0x002CDA, + 0x002CDC, + 0x002CDE, + 0x002CE0, + 0x002CE2, + 0x002CEB, + 0x002CED, + 0x002CF2, + 0x00A640, + 0x00A642, + 0x00A644, + 0x00A646, + 0x00A648, + 0x00A64A, + 0x00A64C, + 0x00A64E, + 0x00A650, + 0x00A652, + 0x00A654, + 0x00A656, + 0x00A658, + 0x00A65A, + 0x00A65C, + 0x00A65E, + 0x00A660, + 0x00A662, + 0x00A664, + 0x00A666, + 0x00A668, + 0x00A66A, + 0x00A66C, + 0x00A680, + 0x00A682, + 0x00A684, + 0x00A686, + 0x00A688, + 0x00A68A, + 0x00A68C, + 0x00A68E, + 0x00A690, + 0x00A692, + 0x00A694, + 0x00A696, + 0x00A698, + 0x00A69A, + 0x00A722, + 0x00A724, + 0x00A726, + 0x00A728, + 0x00A72A, + 0x00A72C, + 0x00A72E, + 0x00A732, + 0x00A734, + 0x00A736, + 0x00A738, + 0x00A73A, + 0x00A73C, + 0x00A73E, + 0x00A740, + 0x00A742, + 0x00A744, + 0x00A746, + 0x00A748, + 0x00A74A, + 0x00A74C, + 0x00A74E, + 0x00A750, + 0x00A752, + 0x00A754, + 0x00A756, + 0x00A758, + 0x00A75A, + 0x00A75C, + 0x00A75E, + 0x00A760, + 0x00A762, + 0x00A764, + 0x00A766, + 0x00A768, + 0x00A76A, + 0x00A76C, + 0x00A76E, + 0x00A779, + 0x00A77B, + 0x00A780, + 0x00A782, + 0x00A784, + 0x00A786, + 0x00A78B, + 0x00A78D, + 0x00A790, + 0x00A792, + 0x00A796, + 0x00A798, + 0x00A79A, + 0x00A79C, + 0x00A79E, + 0x00A7A0, + 0x00A7A2, + 0x00A7A4, + 0x00A7A6, + 0x00A7A8, + 0x00A7B6, + 0x00A7B8, + 0x00A7BA, + 0x00A7BC, + 0x00A7BE, + 0x00A7C0, + 0x00A7C2, + 0x00A7C9, + 0x00A7D0, + 0x00A7D6, + 0x00A7D8, + 0x00A7F5 + ], + ranges: [ + [0x000041, 0x00005A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000DE], + [0x000178, 0x000179], + [0x000181, 0x000182], + [0x000186, 0x000187], + [0x000189, 0x00018B], + [0x00018E, 0x000191], + [0x000193, 0x000194], + [0x000196, 0x000198], + [0x00019C, 0x00019D], + [0x00019F, 0x0001A0], + [0x0001A6, 0x0001A7], + [0x0001AE, 0x0001AF], + [0x0001B1, 0x0001B3], + [0x0001B7, 0x0001B8], + [0x0001C4, 0x0001C5], + [0x0001C7, 0x0001C8], + [0x0001CA, 0x0001CB], + [0x0001F1, 0x0001F2], + [0x0001F6, 0x0001F8], + [0x00023A, 0x00023B], + [0x00023D, 0x00023E], + [0x000243, 0x000246], + [0x000388, 0x00038A], + [0x00038E, 0x00038F], + [0x000391, 0x0003A1], + [0x0003A3, 0x0003AB], + [0x0003F9, 0x0003FA], + [0x0003FD, 0x00042F], + [0x0004C0, 0x0004C1], + [0x000531, 0x000556], + [0x0010A0, 0x0010C5], + [0x0013A0, 0x0013F5], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001F08, 0x001F0F], + [0x001F18, 0x001F1D], + [0x001F28, 0x001F2F], + [0x001F38, 0x001F3F], + [0x001F48, 0x001F4D], + [0x001F68, 0x001F6F], + [0x001F88, 0x001F8F], + [0x001F98, 0x001F9F], + [0x001FA8, 0x001FAF], + [0x001FB8, 0x001FBC], + [0x001FC8, 0x001FCC], + [0x001FD8, 0x001FDB], + [0x001FE8, 0x001FEC], + [0x001FF8, 0x001FFC], + [0x00212A, 0x00212B], + [0x002160, 0x00216F], + [0x0024B6, 0x0024CF], + [0x002C00, 0x002C2F], + [0x002C62, 0x002C64], + [0x002C6D, 0x002C70], + [0x002C7E, 0x002C80], + [0x00A77D, 0x00A77E], + [0x00A7AA, 0x00A7AE], + [0x00A7B0, 0x00A7B4], + [0x00A7C4, 0x00A7C7], + [0x00FF21, 0x00FF3A], + [0x010400, 0x010427], + [0x0104B0, 0x0104D3], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010C80, 0x010CB2], + [0x0118A0, 0x0118BF], + [0x016E40, 0x016E5F], + [0x01E900, 0x01E921] + ] +}); +testPropertyEscapes( + /^\p{Changes_When_Lowercased}+$/u, + matchSymbols, + "\\p{Changes_When_Lowercased}" +); +testPropertyEscapes( + /^\p{CWL}+$/u, + matchSymbols, + "\\p{CWL}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x000101, + 0x000103, + 0x000105, + 0x000107, + 0x000109, + 0x00010B, + 0x00010D, + 0x00010F, + 0x000111, + 0x000113, + 0x000115, + 0x000117, + 0x000119, + 0x00011B, + 0x00011D, + 0x00011F, + 0x000121, + 0x000123, + 0x000125, + 0x000127, + 0x000129, + 0x00012B, + 0x00012D, + 0x00012F, + 0x000131, + 0x000133, + 0x000135, + 0x00013A, + 0x00013C, + 0x00013E, + 0x000140, + 0x000142, + 0x000144, + 0x000146, + 0x00014B, + 0x00014D, + 0x00014F, + 0x000151, + 0x000153, + 0x000155, + 0x000157, + 0x000159, + 0x00015B, + 0x00015D, + 0x00015F, + 0x000161, + 0x000163, + 0x000165, + 0x000167, + 0x000169, + 0x00016B, + 0x00016D, + 0x00016F, + 0x000171, + 0x000173, + 0x000175, + 0x000177, + 0x00017A, + 0x00017C, + 0x000183, + 0x000185, + 0x000188, + 0x000192, + 0x000195, + 0x00019E, + 0x0001A1, + 0x0001A3, + 0x0001A5, + 0x0001A8, + 0x0001AD, + 0x0001B0, + 0x0001B4, + 0x0001B6, + 0x0001C6, + 0x0001C9, + 0x0001CC, + 0x0001CE, + 0x0001D0, + 0x0001D2, + 0x0001D4, + 0x0001D6, + 0x0001D8, + 0x0001DA, + 0x0001DF, + 0x0001E1, + 0x0001E3, + 0x0001E5, + 0x0001E7, + 0x0001E9, + 0x0001EB, + 0x0001ED, + 0x0001F3, + 0x0001F5, + 0x0001F9, + 0x0001FB, + 0x0001FD, + 0x0001FF, + 0x000201, + 0x000203, + 0x000205, + 0x000207, + 0x000209, + 0x00020B, + 0x00020D, + 0x00020F, + 0x000211, + 0x000213, + 0x000215, + 0x000217, + 0x000219, + 0x00021B, + 0x00021D, + 0x00021F, + 0x000221, + 0x000223, + 0x000225, + 0x000227, + 0x000229, + 0x00022B, + 0x00022D, + 0x00022F, + 0x000231, + 0x00023C, + 0x000242, + 0x000247, + 0x000249, + 0x00024B, + 0x00024D, + 0x000371, + 0x000387, + 0x00038B, + 0x00038D, + 0x000390, + 0x0003A2, + 0x0003D9, + 0x0003DB, + 0x0003DD, + 0x0003DF, + 0x0003E1, + 0x0003E3, + 0x0003E5, + 0x0003E7, + 0x0003E9, + 0x0003EB, + 0x0003ED, + 0x0003F8, + 0x000461, + 0x000463, + 0x000465, + 0x000467, + 0x000469, + 0x00046B, + 0x00046D, + 0x00046F, + 0x000471, + 0x000473, + 0x000475, + 0x000477, + 0x000479, + 0x00047B, + 0x00047D, + 0x00047F, + 0x00048B, + 0x00048D, + 0x00048F, + 0x000491, + 0x000493, + 0x000495, + 0x000497, + 0x000499, + 0x00049B, + 0x00049D, + 0x00049F, + 0x0004A1, + 0x0004A3, + 0x0004A5, + 0x0004A7, + 0x0004A9, + 0x0004AB, + 0x0004AD, + 0x0004AF, + 0x0004B1, + 0x0004B3, + 0x0004B5, + 0x0004B7, + 0x0004B9, + 0x0004BB, + 0x0004BD, + 0x0004BF, + 0x0004C2, + 0x0004C4, + 0x0004C6, + 0x0004C8, + 0x0004CA, + 0x0004CC, + 0x0004D1, + 0x0004D3, + 0x0004D5, + 0x0004D7, + 0x0004D9, + 0x0004DB, + 0x0004DD, + 0x0004DF, + 0x0004E1, + 0x0004E3, + 0x0004E5, + 0x0004E7, + 0x0004E9, + 0x0004EB, + 0x0004ED, + 0x0004EF, + 0x0004F1, + 0x0004F3, + 0x0004F5, + 0x0004F7, + 0x0004F9, + 0x0004FB, + 0x0004FD, + 0x0004FF, + 0x000501, + 0x000503, + 0x000505, + 0x000507, + 0x000509, + 0x00050B, + 0x00050D, + 0x00050F, + 0x000511, + 0x000513, + 0x000515, + 0x000517, + 0x000519, + 0x00051B, + 0x00051D, + 0x00051F, + 0x000521, + 0x000523, + 0x000525, + 0x000527, + 0x000529, + 0x00052B, + 0x00052D, + 0x0010C6, + 0x001E01, + 0x001E03, + 0x001E05, + 0x001E07, + 0x001E09, + 0x001E0B, + 0x001E0D, + 0x001E0F, + 0x001E11, + 0x001E13, + 0x001E15, + 0x001E17, + 0x001E19, + 0x001E1B, + 0x001E1D, + 0x001E1F, + 0x001E21, + 0x001E23, + 0x001E25, + 0x001E27, + 0x001E29, + 0x001E2B, + 0x001E2D, + 0x001E2F, + 0x001E31, + 0x001E33, + 0x001E35, + 0x001E37, + 0x001E39, + 0x001E3B, + 0x001E3D, + 0x001E3F, + 0x001E41, + 0x001E43, + 0x001E45, + 0x001E47, + 0x001E49, + 0x001E4B, + 0x001E4D, + 0x001E4F, + 0x001E51, + 0x001E53, + 0x001E55, + 0x001E57, + 0x001E59, + 0x001E5B, + 0x001E5D, + 0x001E5F, + 0x001E61, + 0x001E63, + 0x001E65, + 0x001E67, + 0x001E69, + 0x001E6B, + 0x001E6D, + 0x001E6F, + 0x001E71, + 0x001E73, + 0x001E75, + 0x001E77, + 0x001E79, + 0x001E7B, + 0x001E7D, + 0x001E7F, + 0x001E81, + 0x001E83, + 0x001E85, + 0x001E87, + 0x001E89, + 0x001E8B, + 0x001E8D, + 0x001E8F, + 0x001E91, + 0x001E93, + 0x001E9F, + 0x001EA1, + 0x001EA3, + 0x001EA5, + 0x001EA7, + 0x001EA9, + 0x001EAB, + 0x001EAD, + 0x001EAF, + 0x001EB1, + 0x001EB3, + 0x001EB5, + 0x001EB7, + 0x001EB9, + 0x001EBB, + 0x001EBD, + 0x001EBF, + 0x001EC1, + 0x001EC3, + 0x001EC5, + 0x001EC7, + 0x001EC9, + 0x001ECB, + 0x001ECD, + 0x001ECF, + 0x001ED1, + 0x001ED3, + 0x001ED5, + 0x001ED7, + 0x001ED9, + 0x001EDB, + 0x001EDD, + 0x001EDF, + 0x001EE1, + 0x001EE3, + 0x001EE5, + 0x001EE7, + 0x001EE9, + 0x001EEB, + 0x001EED, + 0x001EEF, + 0x001EF1, + 0x001EF3, + 0x001EF5, + 0x001EF7, + 0x001EF9, + 0x001EFB, + 0x001EFD, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x002C61, + 0x002C68, + 0x002C6A, + 0x002C6C, + 0x002C71, + 0x002C81, + 0x002C83, + 0x002C85, + 0x002C87, + 0x002C89, + 0x002C8B, + 0x002C8D, + 0x002C8F, + 0x002C91, + 0x002C93, + 0x002C95, + 0x002C97, + 0x002C99, + 0x002C9B, + 0x002C9D, + 0x002C9F, + 0x002CA1, + 0x002CA3, + 0x002CA5, + 0x002CA7, + 0x002CA9, + 0x002CAB, + 0x002CAD, + 0x002CAF, + 0x002CB1, + 0x002CB3, + 0x002CB5, + 0x002CB7, + 0x002CB9, + 0x002CBB, + 0x002CBD, + 0x002CBF, + 0x002CC1, + 0x002CC3, + 0x002CC5, + 0x002CC7, + 0x002CC9, + 0x002CCB, + 0x002CCD, + 0x002CCF, + 0x002CD1, + 0x002CD3, + 0x002CD5, + 0x002CD7, + 0x002CD9, + 0x002CDB, + 0x002CDD, + 0x002CDF, + 0x002CE1, + 0x002CEC, + 0x00A641, + 0x00A643, + 0x00A645, + 0x00A647, + 0x00A649, + 0x00A64B, + 0x00A64D, + 0x00A64F, + 0x00A651, + 0x00A653, + 0x00A655, + 0x00A657, + 0x00A659, + 0x00A65B, + 0x00A65D, + 0x00A65F, + 0x00A661, + 0x00A663, + 0x00A665, + 0x00A667, + 0x00A669, + 0x00A66B, + 0x00A681, + 0x00A683, + 0x00A685, + 0x00A687, + 0x00A689, + 0x00A68B, + 0x00A68D, + 0x00A68F, + 0x00A691, + 0x00A693, + 0x00A695, + 0x00A697, + 0x00A699, + 0x00A723, + 0x00A725, + 0x00A727, + 0x00A729, + 0x00A72B, + 0x00A72D, + 0x00A733, + 0x00A735, + 0x00A737, + 0x00A739, + 0x00A73B, + 0x00A73D, + 0x00A73F, + 0x00A741, + 0x00A743, + 0x00A745, + 0x00A747, + 0x00A749, + 0x00A74B, + 0x00A74D, + 0x00A74F, + 0x00A751, + 0x00A753, + 0x00A755, + 0x00A757, + 0x00A759, + 0x00A75B, + 0x00A75D, + 0x00A75F, + 0x00A761, + 0x00A763, + 0x00A765, + 0x00A767, + 0x00A769, + 0x00A76B, + 0x00A76D, + 0x00A77A, + 0x00A77C, + 0x00A77F, + 0x00A781, + 0x00A783, + 0x00A785, + 0x00A78C, + 0x00A791, + 0x00A797, + 0x00A799, + 0x00A79B, + 0x00A79D, + 0x00A79F, + 0x00A7A1, + 0x00A7A3, + 0x00A7A5, + 0x00A7A7, + 0x00A7A9, + 0x00A7AF, + 0x00A7B5, + 0x00A7B7, + 0x00A7B9, + 0x00A7BB, + 0x00A7BD, + 0x00A7BF, + 0x00A7C1, + 0x00A7C3, + 0x00A7C8, + 0x00A7D7, + 0x01057B, + 0x01058B, + 0x010593 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x0000BF], + [0x0000DF, 0x0000FF], + [0x000137, 0x000138], + [0x000148, 0x000149], + [0x00017E, 0x000180], + [0x00018C, 0x00018D], + [0x000199, 0x00019B], + [0x0001AA, 0x0001AB], + [0x0001B9, 0x0001BB], + [0x0001BD, 0x0001C3], + [0x0001DC, 0x0001DD], + [0x0001EF, 0x0001F0], + [0x000233, 0x000239], + [0x00023F, 0x000240], + [0x00024F, 0x00036F], + [0x000373, 0x000375], + [0x000377, 0x00037E], + [0x000380, 0x000385], + [0x0003AC, 0x0003CE], + [0x0003D0, 0x0003D7], + [0x0003EF, 0x0003F3], + [0x0003F5, 0x0003F6], + [0x0003FB, 0x0003FC], + [0x000430, 0x00045F], + [0x000481, 0x000489], + [0x0004CE, 0x0004CF], + [0x00052F, 0x000530], + [0x000557, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x00139F], + [0x0013F6, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001DFF], + [0x001E95, 0x001E9D], + [0x001EFF, 0x001F07], + [0x001F10, 0x001F17], + [0x001F1E, 0x001F27], + [0x001F30, 0x001F37], + [0x001F40, 0x001F47], + [0x001F4E, 0x001F58], + [0x001F60, 0x001F67], + [0x001F70, 0x001F87], + [0x001F90, 0x001F97], + [0x001FA0, 0x001FA7], + [0x001FB0, 0x001FB7], + [0x001FBD, 0x001FC7], + [0x001FCD, 0x001FD7], + [0x001FDC, 0x001FE7], + [0x001FED, 0x001FF7], + [0x001FFD, 0x002125], + [0x002127, 0x002129], + [0x00212C, 0x002131], + [0x002133, 0x00215F], + [0x002170, 0x002182], + [0x002184, 0x0024B5], + [0x0024D0, 0x002BFF], + [0x002C30, 0x002C5F], + [0x002C65, 0x002C66], + [0x002C73, 0x002C74], + [0x002C76, 0x002C7D], + [0x002CE3, 0x002CEA], + [0x002CEE, 0x002CF1], + [0x002CF3, 0x00A63F], + [0x00A66D, 0x00A67F], + [0x00A69B, 0x00A721], + [0x00A72F, 0x00A731], + [0x00A76F, 0x00A778], + [0x00A787, 0x00A78A], + [0x00A78E, 0x00A78F], + [0x00A793, 0x00A795], + [0x00A7CA, 0x00A7CF], + [0x00A7D1, 0x00A7D5], + [0x00A7D9, 0x00A7F4], + [0x00A7F6, 0x00DBFF], + [0x00E000, 0x00FF20], + [0x00FF3B, 0x0103FF], + [0x010428, 0x0104AF], + [0x0104D4, 0x01056F], + [0x010596, 0x010C7F], + [0x010CB3, 0x01189F], + [0x0118C0, 0x016E3F], + [0x016E60, 0x01E8FF], + [0x01E922, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Changes_When_Lowercased}+$/u, + nonMatchSymbols, + "\\P{Changes_When_Lowercased}" +); +testPropertyEscapes( + /^\P{CWL}+$/u, + nonMatchSymbols, + "\\P{CWL}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js new file mode 100644 index 0000000000..b0f8606839 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_NFKC_Casefolded.js @@ -0,0 +1,1731 @@ +// Copyright 2022 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 for `Changes_When_NFKC_Casefolded` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000A0, + 0x0000A8, + 0x0000AA, + 0x0000AD, + 0x0000AF, + 0x000100, + 0x000102, + 0x000104, + 0x000106, + 0x000108, + 0x00010A, + 0x00010C, + 0x00010E, + 0x000110, + 0x000112, + 0x000114, + 0x000116, + 0x000118, + 0x00011A, + 0x00011C, + 0x00011E, + 0x000120, + 0x000122, + 0x000124, + 0x000126, + 0x000128, + 0x00012A, + 0x00012C, + 0x00012E, + 0x000130, + 0x000136, + 0x000139, + 0x00013B, + 0x00013D, + 0x000143, + 0x000145, + 0x000147, + 0x00014C, + 0x00014E, + 0x000150, + 0x000152, + 0x000154, + 0x000156, + 0x000158, + 0x00015A, + 0x00015C, + 0x00015E, + 0x000160, + 0x000162, + 0x000164, + 0x000166, + 0x000168, + 0x00016A, + 0x00016C, + 0x00016E, + 0x000170, + 0x000172, + 0x000174, + 0x000176, + 0x00017B, + 0x00017D, + 0x00017F, + 0x000184, + 0x0001A2, + 0x0001A4, + 0x0001A9, + 0x0001AC, + 0x0001B5, + 0x0001BC, + 0x0001CF, + 0x0001D1, + 0x0001D3, + 0x0001D5, + 0x0001D7, + 0x0001D9, + 0x0001DB, + 0x0001DE, + 0x0001E0, + 0x0001E2, + 0x0001E4, + 0x0001E6, + 0x0001E8, + 0x0001EA, + 0x0001EC, + 0x0001EE, + 0x0001FA, + 0x0001FC, + 0x0001FE, + 0x000200, + 0x000202, + 0x000204, + 0x000206, + 0x000208, + 0x00020A, + 0x00020C, + 0x00020E, + 0x000210, + 0x000212, + 0x000214, + 0x000216, + 0x000218, + 0x00021A, + 0x00021C, + 0x00021E, + 0x000220, + 0x000222, + 0x000224, + 0x000226, + 0x000228, + 0x00022A, + 0x00022C, + 0x00022E, + 0x000230, + 0x000232, + 0x000241, + 0x000248, + 0x00024A, + 0x00024C, + 0x00024E, + 0x00034F, + 0x000370, + 0x000372, + 0x000374, + 0x000376, + 0x00037A, + 0x00038C, + 0x0003C2, + 0x0003D8, + 0x0003DA, + 0x0003DC, + 0x0003DE, + 0x0003E0, + 0x0003E2, + 0x0003E4, + 0x0003E6, + 0x0003E8, + 0x0003EA, + 0x0003EC, + 0x0003EE, + 0x0003F7, + 0x000460, + 0x000462, + 0x000464, + 0x000466, + 0x000468, + 0x00046A, + 0x00046C, + 0x00046E, + 0x000470, + 0x000472, + 0x000474, + 0x000476, + 0x000478, + 0x00047A, + 0x00047C, + 0x00047E, + 0x000480, + 0x00048A, + 0x00048C, + 0x00048E, + 0x000490, + 0x000492, + 0x000494, + 0x000496, + 0x000498, + 0x00049A, + 0x00049C, + 0x00049E, + 0x0004A0, + 0x0004A2, + 0x0004A4, + 0x0004A6, + 0x0004A8, + 0x0004AA, + 0x0004AC, + 0x0004AE, + 0x0004B0, + 0x0004B2, + 0x0004B4, + 0x0004B6, + 0x0004B8, + 0x0004BA, + 0x0004BC, + 0x0004BE, + 0x0004C3, + 0x0004C5, + 0x0004C7, + 0x0004C9, + 0x0004CB, + 0x0004CD, + 0x0004D0, + 0x0004D2, + 0x0004D4, + 0x0004D6, + 0x0004D8, + 0x0004DA, + 0x0004DC, + 0x0004DE, + 0x0004E0, + 0x0004E2, + 0x0004E4, + 0x0004E6, + 0x0004E8, + 0x0004EA, + 0x0004EC, + 0x0004EE, + 0x0004F0, + 0x0004F2, + 0x0004F4, + 0x0004F6, + 0x0004F8, + 0x0004FA, + 0x0004FC, + 0x0004FE, + 0x000500, + 0x000502, + 0x000504, + 0x000506, + 0x000508, + 0x00050A, + 0x00050C, + 0x00050E, + 0x000510, + 0x000512, + 0x000514, + 0x000516, + 0x000518, + 0x00051A, + 0x00051C, + 0x00051E, + 0x000520, + 0x000522, + 0x000524, + 0x000526, + 0x000528, + 0x00052A, + 0x00052C, + 0x00052E, + 0x000587, + 0x00061C, + 0x0009DF, + 0x000A33, + 0x000A36, + 0x000A5E, + 0x000E33, + 0x000EB3, + 0x000F0C, + 0x000F43, + 0x000F4D, + 0x000F52, + 0x000F57, + 0x000F5C, + 0x000F69, + 0x000F73, + 0x000F81, + 0x000F93, + 0x000F9D, + 0x000FA2, + 0x000FA7, + 0x000FAC, + 0x000FB9, + 0x0010C7, + 0x0010CD, + 0x0010FC, + 0x001D78, + 0x001E00, + 0x001E02, + 0x001E04, + 0x001E06, + 0x001E08, + 0x001E0A, + 0x001E0C, + 0x001E0E, + 0x001E10, + 0x001E12, + 0x001E14, + 0x001E16, + 0x001E18, + 0x001E1A, + 0x001E1C, + 0x001E1E, + 0x001E20, + 0x001E22, + 0x001E24, + 0x001E26, + 0x001E28, + 0x001E2A, + 0x001E2C, + 0x001E2E, + 0x001E30, + 0x001E32, + 0x001E34, + 0x001E36, + 0x001E38, + 0x001E3A, + 0x001E3C, + 0x001E3E, + 0x001E40, + 0x001E42, + 0x001E44, + 0x001E46, + 0x001E48, + 0x001E4A, + 0x001E4C, + 0x001E4E, + 0x001E50, + 0x001E52, + 0x001E54, + 0x001E56, + 0x001E58, + 0x001E5A, + 0x001E5C, + 0x001E5E, + 0x001E60, + 0x001E62, + 0x001E64, + 0x001E66, + 0x001E68, + 0x001E6A, + 0x001E6C, + 0x001E6E, + 0x001E70, + 0x001E72, + 0x001E74, + 0x001E76, + 0x001E78, + 0x001E7A, + 0x001E7C, + 0x001E7E, + 0x001E80, + 0x001E82, + 0x001E84, + 0x001E86, + 0x001E88, + 0x001E8A, + 0x001E8C, + 0x001E8E, + 0x001E90, + 0x001E92, + 0x001E94, + 0x001E9E, + 0x001EA0, + 0x001EA2, + 0x001EA4, + 0x001EA6, + 0x001EA8, + 0x001EAA, + 0x001EAC, + 0x001EAE, + 0x001EB0, + 0x001EB2, + 0x001EB4, + 0x001EB6, + 0x001EB8, + 0x001EBA, + 0x001EBC, + 0x001EBE, + 0x001EC0, + 0x001EC2, + 0x001EC4, + 0x001EC6, + 0x001EC8, + 0x001ECA, + 0x001ECC, + 0x001ECE, + 0x001ED0, + 0x001ED2, + 0x001ED4, + 0x001ED6, + 0x001ED8, + 0x001EDA, + 0x001EDC, + 0x001EDE, + 0x001EE0, + 0x001EE2, + 0x001EE4, + 0x001EE6, + 0x001EE8, + 0x001EEA, + 0x001EEC, + 0x001EEE, + 0x001EF0, + 0x001EF2, + 0x001EF4, + 0x001EF6, + 0x001EF8, + 0x001EFA, + 0x001EFC, + 0x001EFE, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001F5F, + 0x001F71, + 0x001F73, + 0x001F75, + 0x001F77, + 0x001F79, + 0x001F7B, + 0x001F7D, + 0x001FD3, + 0x001FE3, + 0x002011, + 0x002017, + 0x00203C, + 0x00203E, + 0x002057, + 0x0020A8, + 0x002124, + 0x002126, + 0x002128, + 0x002183, + 0x002189, + 0x002A0C, + 0x002ADC, + 0x002C60, + 0x002C67, + 0x002C69, + 0x002C6B, + 0x002C72, + 0x002C75, + 0x002C82, + 0x002C84, + 0x002C86, + 0x002C88, + 0x002C8A, + 0x002C8C, + 0x002C8E, + 0x002C90, + 0x002C92, + 0x002C94, + 0x002C96, + 0x002C98, + 0x002C9A, + 0x002C9C, + 0x002C9E, + 0x002CA0, + 0x002CA2, + 0x002CA4, + 0x002CA6, + 0x002CA8, + 0x002CAA, + 0x002CAC, + 0x002CAE, + 0x002CB0, + 0x002CB2, + 0x002CB4, + 0x002CB6, + 0x002CB8, + 0x002CBA, + 0x002CBC, + 0x002CBE, + 0x002CC0, + 0x002CC2, + 0x002CC4, + 0x002CC6, + 0x002CC8, + 0x002CCA, + 0x002CCC, + 0x002CCE, + 0x002CD0, + 0x002CD2, + 0x002CD4, + 0x002CD6, + 0x002CD8, + 0x002CDA, + 0x002CDC, + 0x002CDE, + 0x002CE0, + 0x002CE2, + 0x002CEB, + 0x002CED, + 0x002CF2, + 0x002D6F, + 0x002E9F, + 0x002EF3, + 0x003000, + 0x003036, + 0x00309F, + 0x0030FF, + 0x00A640, + 0x00A642, + 0x00A644, + 0x00A646, + 0x00A648, + 0x00A64A, + 0x00A64C, + 0x00A64E, + 0x00A650, + 0x00A652, + 0x00A654, + 0x00A656, + 0x00A658, + 0x00A65A, + 0x00A65C, + 0x00A65E, + 0x00A660, + 0x00A662, + 0x00A664, + 0x00A666, + 0x00A668, + 0x00A66A, + 0x00A66C, + 0x00A680, + 0x00A682, + 0x00A684, + 0x00A686, + 0x00A688, + 0x00A68A, + 0x00A68C, + 0x00A68E, + 0x00A690, + 0x00A692, + 0x00A694, + 0x00A696, + 0x00A698, + 0x00A69A, + 0x00A722, + 0x00A724, + 0x00A726, + 0x00A728, + 0x00A72A, + 0x00A72C, + 0x00A72E, + 0x00A732, + 0x00A734, + 0x00A736, + 0x00A738, + 0x00A73A, + 0x00A73C, + 0x00A73E, + 0x00A740, + 0x00A742, + 0x00A744, + 0x00A746, + 0x00A748, + 0x00A74A, + 0x00A74C, + 0x00A74E, + 0x00A750, + 0x00A752, + 0x00A754, + 0x00A756, + 0x00A758, + 0x00A75A, + 0x00A75C, + 0x00A75E, + 0x00A760, + 0x00A762, + 0x00A764, + 0x00A766, + 0x00A768, + 0x00A76A, + 0x00A76C, + 0x00A76E, + 0x00A770, + 0x00A779, + 0x00A77B, + 0x00A780, + 0x00A782, + 0x00A784, + 0x00A786, + 0x00A78B, + 0x00A78D, + 0x00A790, + 0x00A792, + 0x00A796, + 0x00A798, + 0x00A79A, + 0x00A79C, + 0x00A79E, + 0x00A7A0, + 0x00A7A2, + 0x00A7A4, + 0x00A7A6, + 0x00A7A8, + 0x00A7B6, + 0x00A7B8, + 0x00A7BA, + 0x00A7BC, + 0x00A7BE, + 0x00A7C0, + 0x00A7C2, + 0x00A7C9, + 0x00A7D0, + 0x00A7D6, + 0x00A7D8, + 0x00AB69, + 0x00FA10, + 0x00FA12, + 0x00FA20, + 0x00FA22, + 0x00FB1D, + 0x00FB3E, + 0x00FE74, + 0x00FEFF, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E, + 0x01F190 + ], + ranges: [ + [0x000041, 0x00005A], + [0x0000B2, 0x0000B5], + [0x0000B8, 0x0000BA], + [0x0000BC, 0x0000BE], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000DF], + [0x000132, 0x000134], + [0x00013F, 0x000141], + [0x000149, 0x00014A], + [0x000178, 0x000179], + [0x000181, 0x000182], + [0x000186, 0x000187], + [0x000189, 0x00018B], + [0x00018E, 0x000191], + [0x000193, 0x000194], + [0x000196, 0x000198], + [0x00019C, 0x00019D], + [0x00019F, 0x0001A0], + [0x0001A6, 0x0001A7], + [0x0001AE, 0x0001AF], + [0x0001B1, 0x0001B3], + [0x0001B7, 0x0001B8], + [0x0001C4, 0x0001CD], + [0x0001F1, 0x0001F4], + [0x0001F6, 0x0001F8], + [0x00023A, 0x00023B], + [0x00023D, 0x00023E], + [0x000243, 0x000246], + [0x0002B0, 0x0002B8], + [0x0002D8, 0x0002DD], + [0x0002E0, 0x0002E4], + [0x000340, 0x000341], + [0x000343, 0x000345], + [0x00037E, 0x00037F], + [0x000384, 0x00038A], + [0x00038E, 0x00038F], + [0x000391, 0x0003A1], + [0x0003A3, 0x0003AB], + [0x0003CF, 0x0003D6], + [0x0003F0, 0x0003F2], + [0x0003F4, 0x0003F5], + [0x0003F9, 0x0003FA], + [0x0003FD, 0x00042F], + [0x0004C0, 0x0004C1], + [0x000531, 0x000556], + [0x000675, 0x000678], + [0x000958, 0x00095F], + [0x0009DC, 0x0009DD], + [0x000A59, 0x000A5B], + [0x000B5C, 0x000B5D], + [0x000EDC, 0x000EDD], + [0x000F75, 0x000F79], + [0x0010A0, 0x0010C5], + [0x00115F, 0x001160], + [0x0013F8, 0x0013FD], + [0x0017B4, 0x0017B5], + [0x00180B, 0x00180F], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001D2C, 0x001D2E], + [0x001D30, 0x001D3A], + [0x001D3C, 0x001D4D], + [0x001D4F, 0x001D6A], + [0x001D9B, 0x001DBF], + [0x001E9A, 0x001E9B], + [0x001F08, 0x001F0F], + [0x001F18, 0x001F1D], + [0x001F28, 0x001F2F], + [0x001F38, 0x001F3F], + [0x001F48, 0x001F4D], + [0x001F68, 0x001F6F], + [0x001F80, 0x001FAF], + [0x001FB2, 0x001FB4], + [0x001FB7, 0x001FC4], + [0x001FC7, 0x001FCF], + [0x001FD8, 0x001FDB], + [0x001FDD, 0x001FDF], + [0x001FE8, 0x001FEF], + [0x001FF2, 0x001FF4], + [0x001FF7, 0x001FFE], + [0x002000, 0x00200F], + [0x002024, 0x002026], + [0x00202A, 0x00202F], + [0x002033, 0x002034], + [0x002036, 0x002037], + [0x002047, 0x002049], + [0x00205F, 0x002071], + [0x002074, 0x00208E], + [0x002090, 0x00209C], + [0x002100, 0x002103], + [0x002105, 0x002107], + [0x002109, 0x002113], + [0x002115, 0x002116], + [0x002119, 0x00211D], + [0x002120, 0x002122], + [0x00212A, 0x00212D], + [0x00212F, 0x002139], + [0x00213B, 0x002140], + [0x002145, 0x002149], + [0x002150, 0x00217F], + [0x00222C, 0x00222D], + [0x00222F, 0x002230], + [0x002329, 0x00232A], + [0x002460, 0x0024EA], + [0x002A74, 0x002A76], + [0x002C00, 0x002C2F], + [0x002C62, 0x002C64], + [0x002C6D, 0x002C70], + [0x002C7C, 0x002C80], + [0x002F00, 0x002FD5], + [0x003038, 0x00303A], + [0x00309B, 0x00309C], + [0x003131, 0x00318E], + [0x003192, 0x00319F], + [0x003200, 0x00321E], + [0x003220, 0x003247], + [0x003250, 0x00327E], + [0x003280, 0x0033FF], + [0x00A69C, 0x00A69D], + [0x00A77D, 0x00A77E], + [0x00A7AA, 0x00A7AE], + [0x00A7B0, 0x00A7B4], + [0x00A7C4, 0x00A7C7], + [0x00A7F2, 0x00A7F5], + [0x00A7F8, 0x00A7F9], + [0x00AB5C, 0x00AB5F], + [0x00AB70, 0x00ABBF], + [0x00F900, 0x00FA0D], + [0x00FA15, 0x00FA1E], + [0x00FA25, 0x00FA26], + [0x00FA2A, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1F, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBB1], + [0x00FBD3, 0x00FD3D], + [0x00FD50, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDFC], + [0x00FE00, 0x00FE19], + [0x00FE30, 0x00FE44], + [0x00FE47, 0x00FE52], + [0x00FE54, 0x00FE66], + [0x00FE68, 0x00FE6B], + [0x00FE70, 0x00FE72], + [0x00FE76, 0x00FEFC], + [0x00FF01, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x00FFE0, 0x00FFE6], + [0x00FFE8, 0x00FFEE], + [0x00FFF0, 0x00FFF8], + [0x010400, 0x010427], + [0x0104B0, 0x0104D3], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010781, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010C80, 0x010CB2], + [0x0118A0, 0x0118BF], + [0x016E40, 0x016E5F], + [0x01BCA0, 0x01BCA3], + [0x01D15E, 0x01D164], + [0x01D173, 0x01D17A], + [0x01D1BB, 0x01D1C0], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D7CB], + [0x01D7CE, 0x01D7FF], + [0x01E030, 0x01E06D], + [0x01E900, 0x01E921], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01F100, 0x01F10A], + [0x01F110, 0x01F12E], + [0x01F130, 0x01F14F], + [0x01F16A, 0x01F16C], + [0x01F200, 0x01F202], + [0x01F210, 0x01F23B], + [0x01F240, 0x01F248], + [0x01F250, 0x01F251], + [0x01FBF0, 0x01FBF9], + [0x02F800, 0x02FA1D], + [0x0E0000, 0x0E0FFF] + ] +}); +testPropertyEscapes( + /^\p{Changes_When_NFKC_Casefolded}+$/u, + matchSymbols, + "\\p{Changes_When_NFKC_Casefolded}" +); +testPropertyEscapes( + /^\p{CWKCF}+$/u, + matchSymbols, + "\\p{CWKCF}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000A9, + 0x0000AE, + 0x0000BB, + 0x0000BF, + 0x0000D7, + 0x000101, + 0x000103, + 0x000105, + 0x000107, + 0x000109, + 0x00010B, + 0x00010D, + 0x00010F, + 0x000111, + 0x000113, + 0x000115, + 0x000117, + 0x000119, + 0x00011B, + 0x00011D, + 0x00011F, + 0x000121, + 0x000123, + 0x000125, + 0x000127, + 0x000129, + 0x00012B, + 0x00012D, + 0x00012F, + 0x000131, + 0x000135, + 0x00013A, + 0x00013C, + 0x00013E, + 0x000142, + 0x000144, + 0x000146, + 0x000148, + 0x00014B, + 0x00014D, + 0x00014F, + 0x000151, + 0x000153, + 0x000155, + 0x000157, + 0x000159, + 0x00015B, + 0x00015D, + 0x00015F, + 0x000161, + 0x000163, + 0x000165, + 0x000167, + 0x000169, + 0x00016B, + 0x00016D, + 0x00016F, + 0x000171, + 0x000173, + 0x000175, + 0x000177, + 0x00017A, + 0x00017C, + 0x00017E, + 0x000180, + 0x000183, + 0x000185, + 0x000188, + 0x000192, + 0x000195, + 0x00019E, + 0x0001A1, + 0x0001A3, + 0x0001A5, + 0x0001A8, + 0x0001AD, + 0x0001B0, + 0x0001B4, + 0x0001B6, + 0x0001CE, + 0x0001D0, + 0x0001D2, + 0x0001D4, + 0x0001D6, + 0x0001D8, + 0x0001DA, + 0x0001DF, + 0x0001E1, + 0x0001E3, + 0x0001E5, + 0x0001E7, + 0x0001E9, + 0x0001EB, + 0x0001ED, + 0x0001F5, + 0x0001F9, + 0x0001FB, + 0x0001FD, + 0x0001FF, + 0x000201, + 0x000203, + 0x000205, + 0x000207, + 0x000209, + 0x00020B, + 0x00020D, + 0x00020F, + 0x000211, + 0x000213, + 0x000215, + 0x000217, + 0x000219, + 0x00021B, + 0x00021D, + 0x00021F, + 0x000221, + 0x000223, + 0x000225, + 0x000227, + 0x000229, + 0x00022B, + 0x00022D, + 0x00022F, + 0x000231, + 0x00023C, + 0x000242, + 0x000247, + 0x000249, + 0x00024B, + 0x00024D, + 0x000342, + 0x000371, + 0x000373, + 0x000375, + 0x00038B, + 0x00038D, + 0x000390, + 0x0003A2, + 0x0003D7, + 0x0003D9, + 0x0003DB, + 0x0003DD, + 0x0003DF, + 0x0003E1, + 0x0003E3, + 0x0003E5, + 0x0003E7, + 0x0003E9, + 0x0003EB, + 0x0003ED, + 0x0003EF, + 0x0003F3, + 0x0003F6, + 0x0003F8, + 0x000461, + 0x000463, + 0x000465, + 0x000467, + 0x000469, + 0x00046B, + 0x00046D, + 0x00046F, + 0x000471, + 0x000473, + 0x000475, + 0x000477, + 0x000479, + 0x00047B, + 0x00047D, + 0x00047F, + 0x00048B, + 0x00048D, + 0x00048F, + 0x000491, + 0x000493, + 0x000495, + 0x000497, + 0x000499, + 0x00049B, + 0x00049D, + 0x00049F, + 0x0004A1, + 0x0004A3, + 0x0004A5, + 0x0004A7, + 0x0004A9, + 0x0004AB, + 0x0004AD, + 0x0004AF, + 0x0004B1, + 0x0004B3, + 0x0004B5, + 0x0004B7, + 0x0004B9, + 0x0004BB, + 0x0004BD, + 0x0004BF, + 0x0004C2, + 0x0004C4, + 0x0004C6, + 0x0004C8, + 0x0004CA, + 0x0004CC, + 0x0004D1, + 0x0004D3, + 0x0004D5, + 0x0004D7, + 0x0004D9, + 0x0004DB, + 0x0004DD, + 0x0004DF, + 0x0004E1, + 0x0004E3, + 0x0004E5, + 0x0004E7, + 0x0004E9, + 0x0004EB, + 0x0004ED, + 0x0004EF, + 0x0004F1, + 0x0004F3, + 0x0004F5, + 0x0004F7, + 0x0004F9, + 0x0004FB, + 0x0004FD, + 0x0004FF, + 0x000501, + 0x000503, + 0x000505, + 0x000507, + 0x000509, + 0x00050B, + 0x00050D, + 0x00050F, + 0x000511, + 0x000513, + 0x000515, + 0x000517, + 0x000519, + 0x00051B, + 0x00051D, + 0x00051F, + 0x000521, + 0x000523, + 0x000525, + 0x000527, + 0x000529, + 0x00052B, + 0x00052D, + 0x0009DE, + 0x000F74, + 0x0010C6, + 0x001D2F, + 0x001D3B, + 0x001D4E, + 0x001E01, + 0x001E03, + 0x001E05, + 0x001E07, + 0x001E09, + 0x001E0B, + 0x001E0D, + 0x001E0F, + 0x001E11, + 0x001E13, + 0x001E15, + 0x001E17, + 0x001E19, + 0x001E1B, + 0x001E1D, + 0x001E1F, + 0x001E21, + 0x001E23, + 0x001E25, + 0x001E27, + 0x001E29, + 0x001E2B, + 0x001E2D, + 0x001E2F, + 0x001E31, + 0x001E33, + 0x001E35, + 0x001E37, + 0x001E39, + 0x001E3B, + 0x001E3D, + 0x001E3F, + 0x001E41, + 0x001E43, + 0x001E45, + 0x001E47, + 0x001E49, + 0x001E4B, + 0x001E4D, + 0x001E4F, + 0x001E51, + 0x001E53, + 0x001E55, + 0x001E57, + 0x001E59, + 0x001E5B, + 0x001E5D, + 0x001E5F, + 0x001E61, + 0x001E63, + 0x001E65, + 0x001E67, + 0x001E69, + 0x001E6B, + 0x001E6D, + 0x001E6F, + 0x001E71, + 0x001E73, + 0x001E75, + 0x001E77, + 0x001E79, + 0x001E7B, + 0x001E7D, + 0x001E7F, + 0x001E81, + 0x001E83, + 0x001E85, + 0x001E87, + 0x001E89, + 0x001E8B, + 0x001E8D, + 0x001E8F, + 0x001E91, + 0x001E93, + 0x001E9F, + 0x001EA1, + 0x001EA3, + 0x001EA5, + 0x001EA7, + 0x001EA9, + 0x001EAB, + 0x001EAD, + 0x001EAF, + 0x001EB1, + 0x001EB3, + 0x001EB5, + 0x001EB7, + 0x001EB9, + 0x001EBB, + 0x001EBD, + 0x001EBF, + 0x001EC1, + 0x001EC3, + 0x001EC5, + 0x001EC7, + 0x001EC9, + 0x001ECB, + 0x001ECD, + 0x001ECF, + 0x001ED1, + 0x001ED3, + 0x001ED5, + 0x001ED7, + 0x001ED9, + 0x001EDB, + 0x001EDD, + 0x001EDF, + 0x001EE1, + 0x001EE3, + 0x001EE5, + 0x001EE7, + 0x001EE9, + 0x001EEB, + 0x001EED, + 0x001EEF, + 0x001EF1, + 0x001EF3, + 0x001EF5, + 0x001EF7, + 0x001EF9, + 0x001EFB, + 0x001EFD, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001F70, + 0x001F72, + 0x001F74, + 0x001F76, + 0x001F78, + 0x001F7A, + 0x001F7C, + 0x001FDC, + 0x001FFF, + 0x002010, + 0x002035, + 0x00203D, + 0x00208F, + 0x002104, + 0x002108, + 0x002114, + 0x002123, + 0x002125, + 0x002127, + 0x002129, + 0x00212E, + 0x00213A, + 0x00222E, + 0x002C61, + 0x002C68, + 0x002C6A, + 0x002C6C, + 0x002C71, + 0x002C81, + 0x002C83, + 0x002C85, + 0x002C87, + 0x002C89, + 0x002C8B, + 0x002C8D, + 0x002C8F, + 0x002C91, + 0x002C93, + 0x002C95, + 0x002C97, + 0x002C99, + 0x002C9B, + 0x002C9D, + 0x002C9F, + 0x002CA1, + 0x002CA3, + 0x002CA5, + 0x002CA7, + 0x002CA9, + 0x002CAB, + 0x002CAD, + 0x002CAF, + 0x002CB1, + 0x002CB3, + 0x002CB5, + 0x002CB7, + 0x002CB9, + 0x002CBB, + 0x002CBD, + 0x002CBF, + 0x002CC1, + 0x002CC3, + 0x002CC5, + 0x002CC7, + 0x002CC9, + 0x002CCB, + 0x002CCD, + 0x002CCF, + 0x002CD1, + 0x002CD3, + 0x002CD5, + 0x002CD7, + 0x002CD9, + 0x002CDB, + 0x002CDD, + 0x002CDF, + 0x002CE1, + 0x002CEC, + 0x003037, + 0x00321F, + 0x00327F, + 0x00A641, + 0x00A643, + 0x00A645, + 0x00A647, + 0x00A649, + 0x00A64B, + 0x00A64D, + 0x00A64F, + 0x00A651, + 0x00A653, + 0x00A655, + 0x00A657, + 0x00A659, + 0x00A65B, + 0x00A65D, + 0x00A65F, + 0x00A661, + 0x00A663, + 0x00A665, + 0x00A667, + 0x00A669, + 0x00A66B, + 0x00A681, + 0x00A683, + 0x00A685, + 0x00A687, + 0x00A689, + 0x00A68B, + 0x00A68D, + 0x00A68F, + 0x00A691, + 0x00A693, + 0x00A695, + 0x00A697, + 0x00A699, + 0x00A69B, + 0x00A723, + 0x00A725, + 0x00A727, + 0x00A729, + 0x00A72B, + 0x00A72D, + 0x00A733, + 0x00A735, + 0x00A737, + 0x00A739, + 0x00A73B, + 0x00A73D, + 0x00A73F, + 0x00A741, + 0x00A743, + 0x00A745, + 0x00A747, + 0x00A749, + 0x00A74B, + 0x00A74D, + 0x00A74F, + 0x00A751, + 0x00A753, + 0x00A755, + 0x00A757, + 0x00A759, + 0x00A75B, + 0x00A75D, + 0x00A75F, + 0x00A761, + 0x00A763, + 0x00A765, + 0x00A767, + 0x00A769, + 0x00A76B, + 0x00A76D, + 0x00A76F, + 0x00A77A, + 0x00A77C, + 0x00A77F, + 0x00A781, + 0x00A783, + 0x00A785, + 0x00A78C, + 0x00A791, + 0x00A797, + 0x00A799, + 0x00A79B, + 0x00A79D, + 0x00A79F, + 0x00A7A1, + 0x00A7A3, + 0x00A7A5, + 0x00A7A7, + 0x00A7A9, + 0x00A7AF, + 0x00A7B5, + 0x00A7B7, + 0x00A7B9, + 0x00A7BB, + 0x00A7BD, + 0x00A7BF, + 0x00A7C1, + 0x00A7C3, + 0x00A7C8, + 0x00A7D7, + 0x00FA11, + 0x00FA1F, + 0x00FA21, + 0x00FB1E, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE53, + 0x00FE67, + 0x00FE73, + 0x00FE75, + 0x00FF00, + 0x00FFE7, + 0x00FFEF, + 0x01057B, + 0x01058B, + 0x010593, + 0x010786, + 0x0107B1, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA, + 0x01F12F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x00009F], + [0x0000A1, 0x0000A7], + [0x0000AB, 0x0000AC], + [0x0000B0, 0x0000B1], + [0x0000B6, 0x0000B7], + [0x0000E0, 0x0000FF], + [0x000137, 0x000138], + [0x00018C, 0x00018D], + [0x000199, 0x00019B], + [0x0001AA, 0x0001AB], + [0x0001B9, 0x0001BB], + [0x0001BD, 0x0001C3], + [0x0001DC, 0x0001DD], + [0x0001EF, 0x0001F0], + [0x000233, 0x000239], + [0x00023F, 0x000240], + [0x00024F, 0x0002AF], + [0x0002B9, 0x0002D7], + [0x0002DE, 0x0002DF], + [0x0002E5, 0x00033F], + [0x000346, 0x00034E], + [0x000350, 0x00036F], + [0x000377, 0x000379], + [0x00037B, 0x00037D], + [0x000380, 0x000383], + [0x0003AC, 0x0003C1], + [0x0003C3, 0x0003CE], + [0x0003FB, 0x0003FC], + [0x000430, 0x00045F], + [0x000481, 0x000489], + [0x0004CE, 0x0004CF], + [0x00052F, 0x000530], + [0x000557, 0x000586], + [0x000588, 0x00061B], + [0x00061D, 0x000674], + [0x000679, 0x000957], + [0x000960, 0x0009DB], + [0x0009E0, 0x000A32], + [0x000A34, 0x000A35], + [0x000A37, 0x000A58], + [0x000A5C, 0x000A5D], + [0x000A5F, 0x000B5B], + [0x000B5E, 0x000E32], + [0x000E34, 0x000EB2], + [0x000EB4, 0x000EDB], + [0x000EDE, 0x000F0B], + [0x000F0D, 0x000F42], + [0x000F44, 0x000F4C], + [0x000F4E, 0x000F51], + [0x000F53, 0x000F56], + [0x000F58, 0x000F5B], + [0x000F5D, 0x000F68], + [0x000F6A, 0x000F72], + [0x000F7A, 0x000F80], + [0x000F82, 0x000F92], + [0x000F94, 0x000F9C], + [0x000F9E, 0x000FA1], + [0x000FA3, 0x000FA6], + [0x000FA8, 0x000FAB], + [0x000FAD, 0x000FB8], + [0x000FBA, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010FB], + [0x0010FD, 0x00115E], + [0x001161, 0x0013F7], + [0x0013FE, 0x0017B3], + [0x0017B6, 0x00180A], + [0x001810, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001D2B], + [0x001D6B, 0x001D77], + [0x001D79, 0x001D9A], + [0x001DC0, 0x001DFF], + [0x001E95, 0x001E99], + [0x001E9C, 0x001E9D], + [0x001EFF, 0x001F07], + [0x001F10, 0x001F17], + [0x001F1E, 0x001F27], + [0x001F30, 0x001F37], + [0x001F40, 0x001F47], + [0x001F4E, 0x001F58], + [0x001F60, 0x001F67], + [0x001F7E, 0x001F7F], + [0x001FB0, 0x001FB1], + [0x001FB5, 0x001FB6], + [0x001FC5, 0x001FC6], + [0x001FD0, 0x001FD2], + [0x001FD4, 0x001FD7], + [0x001FE0, 0x001FE2], + [0x001FE4, 0x001FE7], + [0x001FF0, 0x001FF1], + [0x001FF5, 0x001FF6], + [0x002012, 0x002016], + [0x002018, 0x002023], + [0x002027, 0x002029], + [0x002030, 0x002032], + [0x002038, 0x00203B], + [0x00203F, 0x002046], + [0x00204A, 0x002056], + [0x002058, 0x00205E], + [0x002072, 0x002073], + [0x00209D, 0x0020A7], + [0x0020A9, 0x0020FF], + [0x002117, 0x002118], + [0x00211E, 0x00211F], + [0x002141, 0x002144], + [0x00214A, 0x00214F], + [0x002180, 0x002182], + [0x002184, 0x002188], + [0x00218A, 0x00222B], + [0x002231, 0x002328], + [0x00232B, 0x00245F], + [0x0024EB, 0x002A0B], + [0x002A0D, 0x002A73], + [0x002A77, 0x002ADB], + [0x002ADD, 0x002BFF], + [0x002C30, 0x002C5F], + [0x002C65, 0x002C66], + [0x002C73, 0x002C74], + [0x002C76, 0x002C7B], + [0x002CE3, 0x002CEA], + [0x002CEE, 0x002CF1], + [0x002CF3, 0x002D6E], + [0x002D70, 0x002E9E], + [0x002EA0, 0x002EF2], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x002FFF], + [0x003001, 0x003035], + [0x00303B, 0x00309A], + [0x00309D, 0x00309E], + [0x0030A0, 0x0030FE], + [0x003100, 0x003130], + [0x00318F, 0x003191], + [0x0031A0, 0x0031FF], + [0x003248, 0x00324F], + [0x003400, 0x00A63F], + [0x00A66D, 0x00A67F], + [0x00A69E, 0x00A721], + [0x00A72F, 0x00A731], + [0x00A771, 0x00A778], + [0x00A787, 0x00A78A], + [0x00A78E, 0x00A78F], + [0x00A793, 0x00A795], + [0x00A7CA, 0x00A7CF], + [0x00A7D1, 0x00A7D5], + [0x00A7D9, 0x00A7F1], + [0x00A7F6, 0x00A7F7], + [0x00A7FA, 0x00AB5B], + [0x00AB60, 0x00AB68], + [0x00AB6A, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA0E, 0x00FA0F], + [0x00FA13, 0x00FA14], + [0x00FA23, 0x00FA24], + [0x00FA27, 0x00FA29], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBB2, 0x00FBD2], + [0x00FD3E, 0x00FD4F], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDEF], + [0x00FDFD, 0x00FDFF], + [0x00FE1A, 0x00FE2F], + [0x00FE45, 0x00FE46], + [0x00FE6C, 0x00FE6F], + [0x00FEFD, 0x00FEFE], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFDF], + [0x00FFF9, 0x0103FF], + [0x010428, 0x0104AF], + [0x0104D4, 0x01056F], + [0x010596, 0x010780], + [0x0107BB, 0x010C7F], + [0x010CB3, 0x01189F], + [0x0118C0, 0x016E3F], + [0x016E60, 0x01BC9F], + [0x01BCA4, 0x01D15D], + [0x01D165, 0x01D172], + [0x01D17B, 0x01D1BA], + [0x01D1C1, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01D800, 0x01E02F], + [0x01E06E, 0x01E8FF], + [0x01E922, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01F0FF], + [0x01F10B, 0x01F10F], + [0x01F150, 0x01F169], + [0x01F16D, 0x01F18F], + [0x01F191, 0x01F1FF], + [0x01F203, 0x01F20F], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F24F], + [0x01F252, 0x01FBEF], + [0x01FBFA, 0x02F7FF], + [0x02FA1E, 0x0DFFFF], + [0x0E1000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Changes_When_NFKC_Casefolded}+$/u, + nonMatchSymbols, + "\\P{Changes_When_NFKC_Casefolded}" +); +testPropertyEscapes( + /^\P{CWKCF}+$/u, + nonMatchSymbols, + "\\P{CWKCF}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js new file mode 100644 index 0000000000..335a0ea862 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Titlecased.js @@ -0,0 +1,1305 @@ +// Copyright 2022 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 for `Changes_When_Titlecased` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000B5, + 0x000101, + 0x000103, + 0x000105, + 0x000107, + 0x000109, + 0x00010B, + 0x00010D, + 0x00010F, + 0x000111, + 0x000113, + 0x000115, + 0x000117, + 0x000119, + 0x00011B, + 0x00011D, + 0x00011F, + 0x000121, + 0x000123, + 0x000125, + 0x000127, + 0x000129, + 0x00012B, + 0x00012D, + 0x00012F, + 0x000131, + 0x000133, + 0x000135, + 0x000137, + 0x00013A, + 0x00013C, + 0x00013E, + 0x000140, + 0x000142, + 0x000144, + 0x000146, + 0x00014B, + 0x00014D, + 0x00014F, + 0x000151, + 0x000153, + 0x000155, + 0x000157, + 0x000159, + 0x00015B, + 0x00015D, + 0x00015F, + 0x000161, + 0x000163, + 0x000165, + 0x000167, + 0x000169, + 0x00016B, + 0x00016D, + 0x00016F, + 0x000171, + 0x000173, + 0x000175, + 0x000177, + 0x00017A, + 0x00017C, + 0x000183, + 0x000185, + 0x000188, + 0x00018C, + 0x000192, + 0x000195, + 0x00019E, + 0x0001A1, + 0x0001A3, + 0x0001A5, + 0x0001A8, + 0x0001AD, + 0x0001B0, + 0x0001B4, + 0x0001B6, + 0x0001B9, + 0x0001BD, + 0x0001BF, + 0x0001C4, + 0x0001CC, + 0x0001CE, + 0x0001D0, + 0x0001D2, + 0x0001D4, + 0x0001D6, + 0x0001D8, + 0x0001DA, + 0x0001DF, + 0x0001E1, + 0x0001E3, + 0x0001E5, + 0x0001E7, + 0x0001E9, + 0x0001EB, + 0x0001ED, + 0x0001F3, + 0x0001F5, + 0x0001F9, + 0x0001FB, + 0x0001FD, + 0x0001FF, + 0x000201, + 0x000203, + 0x000205, + 0x000207, + 0x000209, + 0x00020B, + 0x00020D, + 0x00020F, + 0x000211, + 0x000213, + 0x000215, + 0x000217, + 0x000219, + 0x00021B, + 0x00021D, + 0x00021F, + 0x000223, + 0x000225, + 0x000227, + 0x000229, + 0x00022B, + 0x00022D, + 0x00022F, + 0x000231, + 0x000233, + 0x00023C, + 0x000242, + 0x000247, + 0x000249, + 0x00024B, + 0x00024D, + 0x000259, + 0x000263, + 0x00026F, + 0x000275, + 0x00027D, + 0x000280, + 0x000292, + 0x000345, + 0x000371, + 0x000373, + 0x000377, + 0x000390, + 0x0003D9, + 0x0003DB, + 0x0003DD, + 0x0003DF, + 0x0003E1, + 0x0003E3, + 0x0003E5, + 0x0003E7, + 0x0003E9, + 0x0003EB, + 0x0003ED, + 0x0003F5, + 0x0003F8, + 0x0003FB, + 0x000461, + 0x000463, + 0x000465, + 0x000467, + 0x000469, + 0x00046B, + 0x00046D, + 0x00046F, + 0x000471, + 0x000473, + 0x000475, + 0x000477, + 0x000479, + 0x00047B, + 0x00047D, + 0x00047F, + 0x000481, + 0x00048B, + 0x00048D, + 0x00048F, + 0x000491, + 0x000493, + 0x000495, + 0x000497, + 0x000499, + 0x00049B, + 0x00049D, + 0x00049F, + 0x0004A1, + 0x0004A3, + 0x0004A5, + 0x0004A7, + 0x0004A9, + 0x0004AB, + 0x0004AD, + 0x0004AF, + 0x0004B1, + 0x0004B3, + 0x0004B5, + 0x0004B7, + 0x0004B9, + 0x0004BB, + 0x0004BD, + 0x0004BF, + 0x0004C2, + 0x0004C4, + 0x0004C6, + 0x0004C8, + 0x0004CA, + 0x0004CC, + 0x0004D1, + 0x0004D3, + 0x0004D5, + 0x0004D7, + 0x0004D9, + 0x0004DB, + 0x0004DD, + 0x0004DF, + 0x0004E1, + 0x0004E3, + 0x0004E5, + 0x0004E7, + 0x0004E9, + 0x0004EB, + 0x0004ED, + 0x0004EF, + 0x0004F1, + 0x0004F3, + 0x0004F5, + 0x0004F7, + 0x0004F9, + 0x0004FB, + 0x0004FD, + 0x0004FF, + 0x000501, + 0x000503, + 0x000505, + 0x000507, + 0x000509, + 0x00050B, + 0x00050D, + 0x00050F, + 0x000511, + 0x000513, + 0x000515, + 0x000517, + 0x000519, + 0x00051B, + 0x00051D, + 0x00051F, + 0x000521, + 0x000523, + 0x000525, + 0x000527, + 0x000529, + 0x00052B, + 0x00052D, + 0x00052F, + 0x001D79, + 0x001D7D, + 0x001D8E, + 0x001E01, + 0x001E03, + 0x001E05, + 0x001E07, + 0x001E09, + 0x001E0B, + 0x001E0D, + 0x001E0F, + 0x001E11, + 0x001E13, + 0x001E15, + 0x001E17, + 0x001E19, + 0x001E1B, + 0x001E1D, + 0x001E1F, + 0x001E21, + 0x001E23, + 0x001E25, + 0x001E27, + 0x001E29, + 0x001E2B, + 0x001E2D, + 0x001E2F, + 0x001E31, + 0x001E33, + 0x001E35, + 0x001E37, + 0x001E39, + 0x001E3B, + 0x001E3D, + 0x001E3F, + 0x001E41, + 0x001E43, + 0x001E45, + 0x001E47, + 0x001E49, + 0x001E4B, + 0x001E4D, + 0x001E4F, + 0x001E51, + 0x001E53, + 0x001E55, + 0x001E57, + 0x001E59, + 0x001E5B, + 0x001E5D, + 0x001E5F, + 0x001E61, + 0x001E63, + 0x001E65, + 0x001E67, + 0x001E69, + 0x001E6B, + 0x001E6D, + 0x001E6F, + 0x001E71, + 0x001E73, + 0x001E75, + 0x001E77, + 0x001E79, + 0x001E7B, + 0x001E7D, + 0x001E7F, + 0x001E81, + 0x001E83, + 0x001E85, + 0x001E87, + 0x001E89, + 0x001E8B, + 0x001E8D, + 0x001E8F, + 0x001E91, + 0x001E93, + 0x001EA1, + 0x001EA3, + 0x001EA5, + 0x001EA7, + 0x001EA9, + 0x001EAB, + 0x001EAD, + 0x001EAF, + 0x001EB1, + 0x001EB3, + 0x001EB5, + 0x001EB7, + 0x001EB9, + 0x001EBB, + 0x001EBD, + 0x001EBF, + 0x001EC1, + 0x001EC3, + 0x001EC5, + 0x001EC7, + 0x001EC9, + 0x001ECB, + 0x001ECD, + 0x001ECF, + 0x001ED1, + 0x001ED3, + 0x001ED5, + 0x001ED7, + 0x001ED9, + 0x001EDB, + 0x001EDD, + 0x001EDF, + 0x001EE1, + 0x001EE3, + 0x001EE5, + 0x001EE7, + 0x001EE9, + 0x001EEB, + 0x001EED, + 0x001EEF, + 0x001EF1, + 0x001EF3, + 0x001EF5, + 0x001EF7, + 0x001EF9, + 0x001EFB, + 0x001EFD, + 0x001FBE, + 0x00214E, + 0x002184, + 0x002C61, + 0x002C68, + 0x002C6A, + 0x002C6C, + 0x002C73, + 0x002C76, + 0x002C81, + 0x002C83, + 0x002C85, + 0x002C87, + 0x002C89, + 0x002C8B, + 0x002C8D, + 0x002C8F, + 0x002C91, + 0x002C93, + 0x002C95, + 0x002C97, + 0x002C99, + 0x002C9B, + 0x002C9D, + 0x002C9F, + 0x002CA1, + 0x002CA3, + 0x002CA5, + 0x002CA7, + 0x002CA9, + 0x002CAB, + 0x002CAD, + 0x002CAF, + 0x002CB1, + 0x002CB3, + 0x002CB5, + 0x002CB7, + 0x002CB9, + 0x002CBB, + 0x002CBD, + 0x002CBF, + 0x002CC1, + 0x002CC3, + 0x002CC5, + 0x002CC7, + 0x002CC9, + 0x002CCB, + 0x002CCD, + 0x002CCF, + 0x002CD1, + 0x002CD3, + 0x002CD5, + 0x002CD7, + 0x002CD9, + 0x002CDB, + 0x002CDD, + 0x002CDF, + 0x002CE1, + 0x002CE3, + 0x002CEC, + 0x002CEE, + 0x002CF3, + 0x002D27, + 0x002D2D, + 0x00A641, + 0x00A643, + 0x00A645, + 0x00A647, + 0x00A649, + 0x00A64B, + 0x00A64D, + 0x00A64F, + 0x00A651, + 0x00A653, + 0x00A655, + 0x00A657, + 0x00A659, + 0x00A65B, + 0x00A65D, + 0x00A65F, + 0x00A661, + 0x00A663, + 0x00A665, + 0x00A667, + 0x00A669, + 0x00A66B, + 0x00A66D, + 0x00A681, + 0x00A683, + 0x00A685, + 0x00A687, + 0x00A689, + 0x00A68B, + 0x00A68D, + 0x00A68F, + 0x00A691, + 0x00A693, + 0x00A695, + 0x00A697, + 0x00A699, + 0x00A69B, + 0x00A723, + 0x00A725, + 0x00A727, + 0x00A729, + 0x00A72B, + 0x00A72D, + 0x00A72F, + 0x00A733, + 0x00A735, + 0x00A737, + 0x00A739, + 0x00A73B, + 0x00A73D, + 0x00A73F, + 0x00A741, + 0x00A743, + 0x00A745, + 0x00A747, + 0x00A749, + 0x00A74B, + 0x00A74D, + 0x00A74F, + 0x00A751, + 0x00A753, + 0x00A755, + 0x00A757, + 0x00A759, + 0x00A75B, + 0x00A75D, + 0x00A75F, + 0x00A761, + 0x00A763, + 0x00A765, + 0x00A767, + 0x00A769, + 0x00A76B, + 0x00A76D, + 0x00A76F, + 0x00A77A, + 0x00A77C, + 0x00A77F, + 0x00A781, + 0x00A783, + 0x00A785, + 0x00A787, + 0x00A78C, + 0x00A791, + 0x00A797, + 0x00A799, + 0x00A79B, + 0x00A79D, + 0x00A79F, + 0x00A7A1, + 0x00A7A3, + 0x00A7A5, + 0x00A7A7, + 0x00A7A9, + 0x00A7B5, + 0x00A7B7, + 0x00A7B9, + 0x00A7BB, + 0x00A7BD, + 0x00A7BF, + 0x00A7C1, + 0x00A7C3, + 0x00A7C8, + 0x00A7CA, + 0x00A7D1, + 0x00A7D7, + 0x00A7D9, + 0x00A7F6, + 0x00AB53 + ], + ranges: [ + [0x000061, 0x00007A], + [0x0000DF, 0x0000F6], + [0x0000F8, 0x0000FF], + [0x000148, 0x000149], + [0x00017E, 0x000180], + [0x000199, 0x00019A], + [0x0001C6, 0x0001C7], + [0x0001C9, 0x0001CA], + [0x0001DC, 0x0001DD], + [0x0001EF, 0x0001F1], + [0x00023F, 0x000240], + [0x00024F, 0x000254], + [0x000256, 0x000257], + [0x00025B, 0x00025C], + [0x000260, 0x000261], + [0x000265, 0x000266], + [0x000268, 0x00026C], + [0x000271, 0x000272], + [0x000282, 0x000283], + [0x000287, 0x00028C], + [0x00029D, 0x00029E], + [0x00037B, 0x00037D], + [0x0003AC, 0x0003CE], + [0x0003D0, 0x0003D1], + [0x0003D5, 0x0003D7], + [0x0003EF, 0x0003F3], + [0x000430, 0x00045F], + [0x0004CE, 0x0004CF], + [0x000561, 0x000587], + [0x0013F8, 0x0013FD], + [0x001C80, 0x001C88], + [0x001E95, 0x001E9B], + [0x001EFF, 0x001F07], + [0x001F10, 0x001F15], + [0x001F20, 0x001F27], + [0x001F30, 0x001F37], + [0x001F40, 0x001F45], + [0x001F50, 0x001F57], + [0x001F60, 0x001F67], + [0x001F70, 0x001F7D], + [0x001F80, 0x001F87], + [0x001F90, 0x001F97], + [0x001FA0, 0x001FA7], + [0x001FB0, 0x001FB4], + [0x001FB6, 0x001FB7], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FC7], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FD7], + [0x001FE0, 0x001FE7], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FF7], + [0x002170, 0x00217F], + [0x0024D0, 0x0024E9], + [0x002C30, 0x002C5F], + [0x002C65, 0x002C66], + [0x002D00, 0x002D25], + [0x00A793, 0x00A794], + [0x00AB70, 0x00ABBF], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FF41, 0x00FF5A], + [0x010428, 0x01044F], + [0x0104D8, 0x0104FB], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010CC0, 0x010CF2], + [0x0118C0, 0x0118DF], + [0x016E60, 0x016E7F], + [0x01E922, 0x01E943] + ] +}); +testPropertyEscapes( + /^\p{Changes_When_Titlecased}+$/u, + matchSymbols, + "\\p{Changes_When_Titlecased}" +); +testPropertyEscapes( + /^\p{CWT}+$/u, + matchSymbols, + "\\p{CWT}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000F7, + 0x000100, + 0x000102, + 0x000104, + 0x000106, + 0x000108, + 0x00010A, + 0x00010C, + 0x00010E, + 0x000110, + 0x000112, + 0x000114, + 0x000116, + 0x000118, + 0x00011A, + 0x00011C, + 0x00011E, + 0x000120, + 0x000122, + 0x000124, + 0x000126, + 0x000128, + 0x00012A, + 0x00012C, + 0x00012E, + 0x000130, + 0x000132, + 0x000134, + 0x000136, + 0x00013B, + 0x00013D, + 0x00013F, + 0x000141, + 0x000143, + 0x000145, + 0x000147, + 0x00014A, + 0x00014C, + 0x00014E, + 0x000150, + 0x000152, + 0x000154, + 0x000156, + 0x000158, + 0x00015A, + 0x00015C, + 0x00015E, + 0x000160, + 0x000162, + 0x000164, + 0x000166, + 0x000168, + 0x00016A, + 0x00016C, + 0x00016E, + 0x000170, + 0x000172, + 0x000174, + 0x000176, + 0x00017B, + 0x00017D, + 0x000184, + 0x0001A2, + 0x0001A4, + 0x0001B5, + 0x0001BE, + 0x0001C5, + 0x0001C8, + 0x0001CB, + 0x0001CD, + 0x0001CF, + 0x0001D1, + 0x0001D3, + 0x0001D5, + 0x0001D7, + 0x0001D9, + 0x0001DB, + 0x0001DE, + 0x0001E0, + 0x0001E2, + 0x0001E4, + 0x0001E6, + 0x0001E8, + 0x0001EA, + 0x0001EC, + 0x0001EE, + 0x0001F2, + 0x0001F4, + 0x0001FA, + 0x0001FC, + 0x0001FE, + 0x000200, + 0x000202, + 0x000204, + 0x000206, + 0x000208, + 0x00020A, + 0x00020C, + 0x00020E, + 0x000210, + 0x000212, + 0x000214, + 0x000216, + 0x000218, + 0x00021A, + 0x00021C, + 0x00021E, + 0x000224, + 0x000226, + 0x000228, + 0x00022A, + 0x00022C, + 0x00022E, + 0x000230, + 0x000232, + 0x000241, + 0x000248, + 0x00024A, + 0x00024C, + 0x00024E, + 0x000255, + 0x000258, + 0x00025A, + 0x000262, + 0x000264, + 0x000267, + 0x000270, + 0x000281, + 0x000372, + 0x0003CF, + 0x0003D8, + 0x0003DA, + 0x0003DC, + 0x0003DE, + 0x0003E0, + 0x0003E2, + 0x0003E4, + 0x0003E6, + 0x0003E8, + 0x0003EA, + 0x0003EC, + 0x0003EE, + 0x0003F4, + 0x000460, + 0x000462, + 0x000464, + 0x000466, + 0x000468, + 0x00046A, + 0x00046C, + 0x00046E, + 0x000470, + 0x000472, + 0x000474, + 0x000476, + 0x000478, + 0x00047A, + 0x00047C, + 0x00047E, + 0x000480, + 0x00048C, + 0x00048E, + 0x000490, + 0x000492, + 0x000494, + 0x000496, + 0x000498, + 0x00049A, + 0x00049C, + 0x00049E, + 0x0004A0, + 0x0004A2, + 0x0004A4, + 0x0004A6, + 0x0004A8, + 0x0004AA, + 0x0004AC, + 0x0004AE, + 0x0004B0, + 0x0004B2, + 0x0004B4, + 0x0004B6, + 0x0004B8, + 0x0004BA, + 0x0004BC, + 0x0004BE, + 0x0004C3, + 0x0004C5, + 0x0004C7, + 0x0004C9, + 0x0004CB, + 0x0004CD, + 0x0004D0, + 0x0004D2, + 0x0004D4, + 0x0004D6, + 0x0004D8, + 0x0004DA, + 0x0004DC, + 0x0004DE, + 0x0004E0, + 0x0004E2, + 0x0004E4, + 0x0004E6, + 0x0004E8, + 0x0004EA, + 0x0004EC, + 0x0004EE, + 0x0004F0, + 0x0004F2, + 0x0004F4, + 0x0004F6, + 0x0004F8, + 0x0004FA, + 0x0004FC, + 0x0004FE, + 0x000500, + 0x000502, + 0x000504, + 0x000506, + 0x000508, + 0x00050A, + 0x00050C, + 0x00050E, + 0x000510, + 0x000512, + 0x000514, + 0x000516, + 0x000518, + 0x00051A, + 0x00051C, + 0x00051E, + 0x000520, + 0x000522, + 0x000524, + 0x000526, + 0x000528, + 0x00052A, + 0x00052C, + 0x00052E, + 0x001E02, + 0x001E04, + 0x001E06, + 0x001E08, + 0x001E0A, + 0x001E0C, + 0x001E0E, + 0x001E10, + 0x001E12, + 0x001E14, + 0x001E16, + 0x001E18, + 0x001E1A, + 0x001E1C, + 0x001E1E, + 0x001E20, + 0x001E22, + 0x001E24, + 0x001E26, + 0x001E28, + 0x001E2A, + 0x001E2C, + 0x001E2E, + 0x001E30, + 0x001E32, + 0x001E34, + 0x001E36, + 0x001E38, + 0x001E3A, + 0x001E3C, + 0x001E3E, + 0x001E40, + 0x001E42, + 0x001E44, + 0x001E46, + 0x001E48, + 0x001E4A, + 0x001E4C, + 0x001E4E, + 0x001E50, + 0x001E52, + 0x001E54, + 0x001E56, + 0x001E58, + 0x001E5A, + 0x001E5C, + 0x001E5E, + 0x001E60, + 0x001E62, + 0x001E64, + 0x001E66, + 0x001E68, + 0x001E6A, + 0x001E6C, + 0x001E6E, + 0x001E70, + 0x001E72, + 0x001E74, + 0x001E76, + 0x001E78, + 0x001E7A, + 0x001E7C, + 0x001E7E, + 0x001E80, + 0x001E82, + 0x001E84, + 0x001E86, + 0x001E88, + 0x001E8A, + 0x001E8C, + 0x001E8E, + 0x001E90, + 0x001E92, + 0x001E94, + 0x001EA2, + 0x001EA4, + 0x001EA6, + 0x001EA8, + 0x001EAA, + 0x001EAC, + 0x001EAE, + 0x001EB0, + 0x001EB2, + 0x001EB4, + 0x001EB6, + 0x001EB8, + 0x001EBA, + 0x001EBC, + 0x001EBE, + 0x001EC0, + 0x001EC2, + 0x001EC4, + 0x001EC6, + 0x001EC8, + 0x001ECA, + 0x001ECC, + 0x001ECE, + 0x001ED0, + 0x001ED2, + 0x001ED4, + 0x001ED6, + 0x001ED8, + 0x001EDA, + 0x001EDC, + 0x001EDE, + 0x001EE0, + 0x001EE2, + 0x001EE4, + 0x001EE6, + 0x001EE8, + 0x001EEA, + 0x001EEC, + 0x001EEE, + 0x001EF0, + 0x001EF2, + 0x001EF4, + 0x001EF6, + 0x001EF8, + 0x001EFA, + 0x001EFC, + 0x001EFE, + 0x001FB5, + 0x001FC5, + 0x001FF5, + 0x002C60, + 0x002C67, + 0x002C69, + 0x002C6B, + 0x002C82, + 0x002C84, + 0x002C86, + 0x002C88, + 0x002C8A, + 0x002C8C, + 0x002C8E, + 0x002C90, + 0x002C92, + 0x002C94, + 0x002C96, + 0x002C98, + 0x002C9A, + 0x002C9C, + 0x002C9E, + 0x002CA0, + 0x002CA2, + 0x002CA4, + 0x002CA6, + 0x002CA8, + 0x002CAA, + 0x002CAC, + 0x002CAE, + 0x002CB0, + 0x002CB2, + 0x002CB4, + 0x002CB6, + 0x002CB8, + 0x002CBA, + 0x002CBC, + 0x002CBE, + 0x002CC0, + 0x002CC2, + 0x002CC4, + 0x002CC6, + 0x002CC8, + 0x002CCA, + 0x002CCC, + 0x002CCE, + 0x002CD0, + 0x002CD2, + 0x002CD4, + 0x002CD6, + 0x002CD8, + 0x002CDA, + 0x002CDC, + 0x002CDE, + 0x002CE0, + 0x002CE2, + 0x002CED, + 0x002D26, + 0x00A642, + 0x00A644, + 0x00A646, + 0x00A648, + 0x00A64A, + 0x00A64C, + 0x00A64E, + 0x00A650, + 0x00A652, + 0x00A654, + 0x00A656, + 0x00A658, + 0x00A65A, + 0x00A65C, + 0x00A65E, + 0x00A660, + 0x00A662, + 0x00A664, + 0x00A666, + 0x00A668, + 0x00A66A, + 0x00A66C, + 0x00A682, + 0x00A684, + 0x00A686, + 0x00A688, + 0x00A68A, + 0x00A68C, + 0x00A68E, + 0x00A690, + 0x00A692, + 0x00A694, + 0x00A696, + 0x00A698, + 0x00A69A, + 0x00A724, + 0x00A726, + 0x00A728, + 0x00A72A, + 0x00A72C, + 0x00A72E, + 0x00A734, + 0x00A736, + 0x00A738, + 0x00A73A, + 0x00A73C, + 0x00A73E, + 0x00A740, + 0x00A742, + 0x00A744, + 0x00A746, + 0x00A748, + 0x00A74A, + 0x00A74C, + 0x00A74E, + 0x00A750, + 0x00A752, + 0x00A754, + 0x00A756, + 0x00A758, + 0x00A75A, + 0x00A75C, + 0x00A75E, + 0x00A760, + 0x00A762, + 0x00A764, + 0x00A766, + 0x00A768, + 0x00A76A, + 0x00A76C, + 0x00A76E, + 0x00A77B, + 0x00A780, + 0x00A782, + 0x00A784, + 0x00A786, + 0x00A792, + 0x00A798, + 0x00A79A, + 0x00A79C, + 0x00A79E, + 0x00A7A0, + 0x00A7A2, + 0x00A7A4, + 0x00A7A6, + 0x00A7A8, + 0x00A7B6, + 0x00A7B8, + 0x00A7BA, + 0x00A7BC, + 0x00A7BE, + 0x00A7C0, + 0x00A7C2, + 0x00A7C9, + 0x00A7D8, + 0x0105A2, + 0x0105B2, + 0x0105BA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000060], + [0x00007B, 0x0000B4], + [0x0000B6, 0x0000DE], + [0x000138, 0x000139], + [0x000178, 0x000179], + [0x000181, 0x000182], + [0x000186, 0x000187], + [0x000189, 0x00018B], + [0x00018D, 0x000191], + [0x000193, 0x000194], + [0x000196, 0x000198], + [0x00019B, 0x00019D], + [0x00019F, 0x0001A0], + [0x0001A6, 0x0001A7], + [0x0001A9, 0x0001AC], + [0x0001AE, 0x0001AF], + [0x0001B1, 0x0001B3], + [0x0001B7, 0x0001B8], + [0x0001BA, 0x0001BC], + [0x0001C0, 0x0001C3], + [0x0001F6, 0x0001F8], + [0x000220, 0x000222], + [0x000234, 0x00023B], + [0x00023D, 0x00023E], + [0x000243, 0x000246], + [0x00025D, 0x00025F], + [0x00026D, 0x00026E], + [0x000273, 0x000274], + [0x000276, 0x00027C], + [0x00027E, 0x00027F], + [0x000284, 0x000286], + [0x00028D, 0x000291], + [0x000293, 0x00029C], + [0x00029F, 0x000344], + [0x000346, 0x000370], + [0x000374, 0x000376], + [0x000378, 0x00037A], + [0x00037E, 0x00038F], + [0x000391, 0x0003AB], + [0x0003D2, 0x0003D4], + [0x0003F6, 0x0003F7], + [0x0003F9, 0x0003FA], + [0x0003FC, 0x00042F], + [0x000482, 0x00048A], + [0x0004C0, 0x0004C1], + [0x000530, 0x000560], + [0x000588, 0x0013F7], + [0x0013FE, 0x001C7F], + [0x001C89, 0x001D78], + [0x001D7A, 0x001D7C], + [0x001D7E, 0x001D8D], + [0x001D8F, 0x001E00], + [0x001E9C, 0x001EA0], + [0x001F08, 0x001F0F], + [0x001F16, 0x001F1F], + [0x001F28, 0x001F2F], + [0x001F38, 0x001F3F], + [0x001F46, 0x001F4F], + [0x001F58, 0x001F5F], + [0x001F68, 0x001F6F], + [0x001F7E, 0x001F7F], + [0x001F88, 0x001F8F], + [0x001F98, 0x001F9F], + [0x001FA8, 0x001FAF], + [0x001FB8, 0x001FBD], + [0x001FBF, 0x001FC1], + [0x001FC8, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FD8, 0x001FDF], + [0x001FE8, 0x001FF1], + [0x001FF8, 0x00214D], + [0x00214F, 0x00216F], + [0x002180, 0x002183], + [0x002185, 0x0024CF], + [0x0024EA, 0x002C2F], + [0x002C62, 0x002C64], + [0x002C6D, 0x002C72], + [0x002C74, 0x002C75], + [0x002C77, 0x002C80], + [0x002CE4, 0x002CEB], + [0x002CEF, 0x002CF2], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x00A640], + [0x00A66E, 0x00A680], + [0x00A69C, 0x00A722], + [0x00A730, 0x00A732], + [0x00A770, 0x00A779], + [0x00A77D, 0x00A77E], + [0x00A788, 0x00A78B], + [0x00A78D, 0x00A790], + [0x00A795, 0x00A796], + [0x00A7AA, 0x00A7B4], + [0x00A7C4, 0x00A7C7], + [0x00A7CB, 0x00A7D0], + [0x00A7D2, 0x00A7D6], + [0x00A7DA, 0x00A7F5], + [0x00A7F7, 0x00AB52], + [0x00AB54, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FF40], + [0x00FF5B, 0x010427], + [0x010450, 0x0104D7], + [0x0104FC, 0x010596], + [0x0105BD, 0x010CBF], + [0x010CF3, 0x0118BF], + [0x0118E0, 0x016E5F], + [0x016E80, 0x01E921], + [0x01E944, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Changes_When_Titlecased}+$/u, + nonMatchSymbols, + "\\P{Changes_When_Titlecased}" +); +testPropertyEscapes( + /^\P{CWT}+$/u, + nonMatchSymbols, + "\\P{CWT}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js new file mode 100644 index 0000000000..08adc3bbee --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Changes_When_Uppercased.js @@ -0,0 +1,1307 @@ +// Copyright 2022 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 for `Changes_When_Uppercased` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000B5, + 0x000101, + 0x000103, + 0x000105, + 0x000107, + 0x000109, + 0x00010B, + 0x00010D, + 0x00010F, + 0x000111, + 0x000113, + 0x000115, + 0x000117, + 0x000119, + 0x00011B, + 0x00011D, + 0x00011F, + 0x000121, + 0x000123, + 0x000125, + 0x000127, + 0x000129, + 0x00012B, + 0x00012D, + 0x00012F, + 0x000131, + 0x000133, + 0x000135, + 0x000137, + 0x00013A, + 0x00013C, + 0x00013E, + 0x000140, + 0x000142, + 0x000144, + 0x000146, + 0x00014B, + 0x00014D, + 0x00014F, + 0x000151, + 0x000153, + 0x000155, + 0x000157, + 0x000159, + 0x00015B, + 0x00015D, + 0x00015F, + 0x000161, + 0x000163, + 0x000165, + 0x000167, + 0x000169, + 0x00016B, + 0x00016D, + 0x00016F, + 0x000171, + 0x000173, + 0x000175, + 0x000177, + 0x00017A, + 0x00017C, + 0x000183, + 0x000185, + 0x000188, + 0x00018C, + 0x000192, + 0x000195, + 0x00019E, + 0x0001A1, + 0x0001A3, + 0x0001A5, + 0x0001A8, + 0x0001AD, + 0x0001B0, + 0x0001B4, + 0x0001B6, + 0x0001B9, + 0x0001BD, + 0x0001BF, + 0x0001CE, + 0x0001D0, + 0x0001D2, + 0x0001D4, + 0x0001D6, + 0x0001D8, + 0x0001DA, + 0x0001DF, + 0x0001E1, + 0x0001E3, + 0x0001E5, + 0x0001E7, + 0x0001E9, + 0x0001EB, + 0x0001ED, + 0x0001F5, + 0x0001F9, + 0x0001FB, + 0x0001FD, + 0x0001FF, + 0x000201, + 0x000203, + 0x000205, + 0x000207, + 0x000209, + 0x00020B, + 0x00020D, + 0x00020F, + 0x000211, + 0x000213, + 0x000215, + 0x000217, + 0x000219, + 0x00021B, + 0x00021D, + 0x00021F, + 0x000223, + 0x000225, + 0x000227, + 0x000229, + 0x00022B, + 0x00022D, + 0x00022F, + 0x000231, + 0x000233, + 0x00023C, + 0x000242, + 0x000247, + 0x000249, + 0x00024B, + 0x00024D, + 0x000259, + 0x000263, + 0x00026F, + 0x000275, + 0x00027D, + 0x000280, + 0x000292, + 0x000345, + 0x000371, + 0x000373, + 0x000377, + 0x000390, + 0x0003D9, + 0x0003DB, + 0x0003DD, + 0x0003DF, + 0x0003E1, + 0x0003E3, + 0x0003E5, + 0x0003E7, + 0x0003E9, + 0x0003EB, + 0x0003ED, + 0x0003F5, + 0x0003F8, + 0x0003FB, + 0x000461, + 0x000463, + 0x000465, + 0x000467, + 0x000469, + 0x00046B, + 0x00046D, + 0x00046F, + 0x000471, + 0x000473, + 0x000475, + 0x000477, + 0x000479, + 0x00047B, + 0x00047D, + 0x00047F, + 0x000481, + 0x00048B, + 0x00048D, + 0x00048F, + 0x000491, + 0x000493, + 0x000495, + 0x000497, + 0x000499, + 0x00049B, + 0x00049D, + 0x00049F, + 0x0004A1, + 0x0004A3, + 0x0004A5, + 0x0004A7, + 0x0004A9, + 0x0004AB, + 0x0004AD, + 0x0004AF, + 0x0004B1, + 0x0004B3, + 0x0004B5, + 0x0004B7, + 0x0004B9, + 0x0004BB, + 0x0004BD, + 0x0004BF, + 0x0004C2, + 0x0004C4, + 0x0004C6, + 0x0004C8, + 0x0004CA, + 0x0004CC, + 0x0004D1, + 0x0004D3, + 0x0004D5, + 0x0004D7, + 0x0004D9, + 0x0004DB, + 0x0004DD, + 0x0004DF, + 0x0004E1, + 0x0004E3, + 0x0004E5, + 0x0004E7, + 0x0004E9, + 0x0004EB, + 0x0004ED, + 0x0004EF, + 0x0004F1, + 0x0004F3, + 0x0004F5, + 0x0004F7, + 0x0004F9, + 0x0004FB, + 0x0004FD, + 0x0004FF, + 0x000501, + 0x000503, + 0x000505, + 0x000507, + 0x000509, + 0x00050B, + 0x00050D, + 0x00050F, + 0x000511, + 0x000513, + 0x000515, + 0x000517, + 0x000519, + 0x00051B, + 0x00051D, + 0x00051F, + 0x000521, + 0x000523, + 0x000525, + 0x000527, + 0x000529, + 0x00052B, + 0x00052D, + 0x00052F, + 0x001D79, + 0x001D7D, + 0x001D8E, + 0x001E01, + 0x001E03, + 0x001E05, + 0x001E07, + 0x001E09, + 0x001E0B, + 0x001E0D, + 0x001E0F, + 0x001E11, + 0x001E13, + 0x001E15, + 0x001E17, + 0x001E19, + 0x001E1B, + 0x001E1D, + 0x001E1F, + 0x001E21, + 0x001E23, + 0x001E25, + 0x001E27, + 0x001E29, + 0x001E2B, + 0x001E2D, + 0x001E2F, + 0x001E31, + 0x001E33, + 0x001E35, + 0x001E37, + 0x001E39, + 0x001E3B, + 0x001E3D, + 0x001E3F, + 0x001E41, + 0x001E43, + 0x001E45, + 0x001E47, + 0x001E49, + 0x001E4B, + 0x001E4D, + 0x001E4F, + 0x001E51, + 0x001E53, + 0x001E55, + 0x001E57, + 0x001E59, + 0x001E5B, + 0x001E5D, + 0x001E5F, + 0x001E61, + 0x001E63, + 0x001E65, + 0x001E67, + 0x001E69, + 0x001E6B, + 0x001E6D, + 0x001E6F, + 0x001E71, + 0x001E73, + 0x001E75, + 0x001E77, + 0x001E79, + 0x001E7B, + 0x001E7D, + 0x001E7F, + 0x001E81, + 0x001E83, + 0x001E85, + 0x001E87, + 0x001E89, + 0x001E8B, + 0x001E8D, + 0x001E8F, + 0x001E91, + 0x001E93, + 0x001EA1, + 0x001EA3, + 0x001EA5, + 0x001EA7, + 0x001EA9, + 0x001EAB, + 0x001EAD, + 0x001EAF, + 0x001EB1, + 0x001EB3, + 0x001EB5, + 0x001EB7, + 0x001EB9, + 0x001EBB, + 0x001EBD, + 0x001EBF, + 0x001EC1, + 0x001EC3, + 0x001EC5, + 0x001EC7, + 0x001EC9, + 0x001ECB, + 0x001ECD, + 0x001ECF, + 0x001ED1, + 0x001ED3, + 0x001ED5, + 0x001ED7, + 0x001ED9, + 0x001EDB, + 0x001EDD, + 0x001EDF, + 0x001EE1, + 0x001EE3, + 0x001EE5, + 0x001EE7, + 0x001EE9, + 0x001EEB, + 0x001EED, + 0x001EEF, + 0x001EF1, + 0x001EF3, + 0x001EF5, + 0x001EF7, + 0x001EF9, + 0x001EFB, + 0x001EFD, + 0x001FBC, + 0x001FBE, + 0x001FCC, + 0x001FFC, + 0x00214E, + 0x002184, + 0x002C61, + 0x002C68, + 0x002C6A, + 0x002C6C, + 0x002C73, + 0x002C76, + 0x002C81, + 0x002C83, + 0x002C85, + 0x002C87, + 0x002C89, + 0x002C8B, + 0x002C8D, + 0x002C8F, + 0x002C91, + 0x002C93, + 0x002C95, + 0x002C97, + 0x002C99, + 0x002C9B, + 0x002C9D, + 0x002C9F, + 0x002CA1, + 0x002CA3, + 0x002CA5, + 0x002CA7, + 0x002CA9, + 0x002CAB, + 0x002CAD, + 0x002CAF, + 0x002CB1, + 0x002CB3, + 0x002CB5, + 0x002CB7, + 0x002CB9, + 0x002CBB, + 0x002CBD, + 0x002CBF, + 0x002CC1, + 0x002CC3, + 0x002CC5, + 0x002CC7, + 0x002CC9, + 0x002CCB, + 0x002CCD, + 0x002CCF, + 0x002CD1, + 0x002CD3, + 0x002CD5, + 0x002CD7, + 0x002CD9, + 0x002CDB, + 0x002CDD, + 0x002CDF, + 0x002CE1, + 0x002CE3, + 0x002CEC, + 0x002CEE, + 0x002CF3, + 0x002D27, + 0x002D2D, + 0x00A641, + 0x00A643, + 0x00A645, + 0x00A647, + 0x00A649, + 0x00A64B, + 0x00A64D, + 0x00A64F, + 0x00A651, + 0x00A653, + 0x00A655, + 0x00A657, + 0x00A659, + 0x00A65B, + 0x00A65D, + 0x00A65F, + 0x00A661, + 0x00A663, + 0x00A665, + 0x00A667, + 0x00A669, + 0x00A66B, + 0x00A66D, + 0x00A681, + 0x00A683, + 0x00A685, + 0x00A687, + 0x00A689, + 0x00A68B, + 0x00A68D, + 0x00A68F, + 0x00A691, + 0x00A693, + 0x00A695, + 0x00A697, + 0x00A699, + 0x00A69B, + 0x00A723, + 0x00A725, + 0x00A727, + 0x00A729, + 0x00A72B, + 0x00A72D, + 0x00A72F, + 0x00A733, + 0x00A735, + 0x00A737, + 0x00A739, + 0x00A73B, + 0x00A73D, + 0x00A73F, + 0x00A741, + 0x00A743, + 0x00A745, + 0x00A747, + 0x00A749, + 0x00A74B, + 0x00A74D, + 0x00A74F, + 0x00A751, + 0x00A753, + 0x00A755, + 0x00A757, + 0x00A759, + 0x00A75B, + 0x00A75D, + 0x00A75F, + 0x00A761, + 0x00A763, + 0x00A765, + 0x00A767, + 0x00A769, + 0x00A76B, + 0x00A76D, + 0x00A76F, + 0x00A77A, + 0x00A77C, + 0x00A77F, + 0x00A781, + 0x00A783, + 0x00A785, + 0x00A787, + 0x00A78C, + 0x00A791, + 0x00A797, + 0x00A799, + 0x00A79B, + 0x00A79D, + 0x00A79F, + 0x00A7A1, + 0x00A7A3, + 0x00A7A5, + 0x00A7A7, + 0x00A7A9, + 0x00A7B5, + 0x00A7B7, + 0x00A7B9, + 0x00A7BB, + 0x00A7BD, + 0x00A7BF, + 0x00A7C1, + 0x00A7C3, + 0x00A7C8, + 0x00A7CA, + 0x00A7D1, + 0x00A7D7, + 0x00A7D9, + 0x00A7F6, + 0x00AB53 + ], + ranges: [ + [0x000061, 0x00007A], + [0x0000DF, 0x0000F6], + [0x0000F8, 0x0000FF], + [0x000148, 0x000149], + [0x00017E, 0x000180], + [0x000199, 0x00019A], + [0x0001C5, 0x0001C6], + [0x0001C8, 0x0001C9], + [0x0001CB, 0x0001CC], + [0x0001DC, 0x0001DD], + [0x0001EF, 0x0001F0], + [0x0001F2, 0x0001F3], + [0x00023F, 0x000240], + [0x00024F, 0x000254], + [0x000256, 0x000257], + [0x00025B, 0x00025C], + [0x000260, 0x000261], + [0x000265, 0x000266], + [0x000268, 0x00026C], + [0x000271, 0x000272], + [0x000282, 0x000283], + [0x000287, 0x00028C], + [0x00029D, 0x00029E], + [0x00037B, 0x00037D], + [0x0003AC, 0x0003CE], + [0x0003D0, 0x0003D1], + [0x0003D5, 0x0003D7], + [0x0003EF, 0x0003F3], + [0x000430, 0x00045F], + [0x0004CE, 0x0004CF], + [0x000561, 0x000587], + [0x0010D0, 0x0010FA], + [0x0010FD, 0x0010FF], + [0x0013F8, 0x0013FD], + [0x001C80, 0x001C88], + [0x001E95, 0x001E9B], + [0x001EFF, 0x001F07], + [0x001F10, 0x001F15], + [0x001F20, 0x001F27], + [0x001F30, 0x001F37], + [0x001F40, 0x001F45], + [0x001F50, 0x001F57], + [0x001F60, 0x001F67], + [0x001F70, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FB7], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FC7], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FD7], + [0x001FE0, 0x001FE7], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FF7], + [0x002170, 0x00217F], + [0x0024D0, 0x0024E9], + [0x002C30, 0x002C5F], + [0x002C65, 0x002C66], + [0x002D00, 0x002D25], + [0x00A793, 0x00A794], + [0x00AB70, 0x00ABBF], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FF41, 0x00FF5A], + [0x010428, 0x01044F], + [0x0104D8, 0x0104FB], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010CC0, 0x010CF2], + [0x0118C0, 0x0118DF], + [0x016E60, 0x016E7F], + [0x01E922, 0x01E943] + ] +}); +testPropertyEscapes( + /^\p{Changes_When_Uppercased}+$/u, + matchSymbols, + "\\p{Changes_When_Uppercased}" +); +testPropertyEscapes( + /^\p{CWU}+$/u, + matchSymbols, + "\\p{CWU}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000F7, + 0x000100, + 0x000102, + 0x000104, + 0x000106, + 0x000108, + 0x00010A, + 0x00010C, + 0x00010E, + 0x000110, + 0x000112, + 0x000114, + 0x000116, + 0x000118, + 0x00011A, + 0x00011C, + 0x00011E, + 0x000120, + 0x000122, + 0x000124, + 0x000126, + 0x000128, + 0x00012A, + 0x00012C, + 0x00012E, + 0x000130, + 0x000132, + 0x000134, + 0x000136, + 0x00013B, + 0x00013D, + 0x00013F, + 0x000141, + 0x000143, + 0x000145, + 0x000147, + 0x00014A, + 0x00014C, + 0x00014E, + 0x000150, + 0x000152, + 0x000154, + 0x000156, + 0x000158, + 0x00015A, + 0x00015C, + 0x00015E, + 0x000160, + 0x000162, + 0x000164, + 0x000166, + 0x000168, + 0x00016A, + 0x00016C, + 0x00016E, + 0x000170, + 0x000172, + 0x000174, + 0x000176, + 0x00017B, + 0x00017D, + 0x000184, + 0x0001A2, + 0x0001A4, + 0x0001B5, + 0x0001BE, + 0x0001C7, + 0x0001CA, + 0x0001CD, + 0x0001CF, + 0x0001D1, + 0x0001D3, + 0x0001D5, + 0x0001D7, + 0x0001D9, + 0x0001DB, + 0x0001DE, + 0x0001E0, + 0x0001E2, + 0x0001E4, + 0x0001E6, + 0x0001E8, + 0x0001EA, + 0x0001EC, + 0x0001EE, + 0x0001F1, + 0x0001F4, + 0x0001FA, + 0x0001FC, + 0x0001FE, + 0x000200, + 0x000202, + 0x000204, + 0x000206, + 0x000208, + 0x00020A, + 0x00020C, + 0x00020E, + 0x000210, + 0x000212, + 0x000214, + 0x000216, + 0x000218, + 0x00021A, + 0x00021C, + 0x00021E, + 0x000224, + 0x000226, + 0x000228, + 0x00022A, + 0x00022C, + 0x00022E, + 0x000230, + 0x000232, + 0x000241, + 0x000248, + 0x00024A, + 0x00024C, + 0x00024E, + 0x000255, + 0x000258, + 0x00025A, + 0x000262, + 0x000264, + 0x000267, + 0x000270, + 0x000281, + 0x000372, + 0x0003CF, + 0x0003D8, + 0x0003DA, + 0x0003DC, + 0x0003DE, + 0x0003E0, + 0x0003E2, + 0x0003E4, + 0x0003E6, + 0x0003E8, + 0x0003EA, + 0x0003EC, + 0x0003EE, + 0x0003F4, + 0x000460, + 0x000462, + 0x000464, + 0x000466, + 0x000468, + 0x00046A, + 0x00046C, + 0x00046E, + 0x000470, + 0x000472, + 0x000474, + 0x000476, + 0x000478, + 0x00047A, + 0x00047C, + 0x00047E, + 0x000480, + 0x00048C, + 0x00048E, + 0x000490, + 0x000492, + 0x000494, + 0x000496, + 0x000498, + 0x00049A, + 0x00049C, + 0x00049E, + 0x0004A0, + 0x0004A2, + 0x0004A4, + 0x0004A6, + 0x0004A8, + 0x0004AA, + 0x0004AC, + 0x0004AE, + 0x0004B0, + 0x0004B2, + 0x0004B4, + 0x0004B6, + 0x0004B8, + 0x0004BA, + 0x0004BC, + 0x0004BE, + 0x0004C3, + 0x0004C5, + 0x0004C7, + 0x0004C9, + 0x0004CB, + 0x0004CD, + 0x0004D0, + 0x0004D2, + 0x0004D4, + 0x0004D6, + 0x0004D8, + 0x0004DA, + 0x0004DC, + 0x0004DE, + 0x0004E0, + 0x0004E2, + 0x0004E4, + 0x0004E6, + 0x0004E8, + 0x0004EA, + 0x0004EC, + 0x0004EE, + 0x0004F0, + 0x0004F2, + 0x0004F4, + 0x0004F6, + 0x0004F8, + 0x0004FA, + 0x0004FC, + 0x0004FE, + 0x000500, + 0x000502, + 0x000504, + 0x000506, + 0x000508, + 0x00050A, + 0x00050C, + 0x00050E, + 0x000510, + 0x000512, + 0x000514, + 0x000516, + 0x000518, + 0x00051A, + 0x00051C, + 0x00051E, + 0x000520, + 0x000522, + 0x000524, + 0x000526, + 0x000528, + 0x00052A, + 0x00052C, + 0x00052E, + 0x001E02, + 0x001E04, + 0x001E06, + 0x001E08, + 0x001E0A, + 0x001E0C, + 0x001E0E, + 0x001E10, + 0x001E12, + 0x001E14, + 0x001E16, + 0x001E18, + 0x001E1A, + 0x001E1C, + 0x001E1E, + 0x001E20, + 0x001E22, + 0x001E24, + 0x001E26, + 0x001E28, + 0x001E2A, + 0x001E2C, + 0x001E2E, + 0x001E30, + 0x001E32, + 0x001E34, + 0x001E36, + 0x001E38, + 0x001E3A, + 0x001E3C, + 0x001E3E, + 0x001E40, + 0x001E42, + 0x001E44, + 0x001E46, + 0x001E48, + 0x001E4A, + 0x001E4C, + 0x001E4E, + 0x001E50, + 0x001E52, + 0x001E54, + 0x001E56, + 0x001E58, + 0x001E5A, + 0x001E5C, + 0x001E5E, + 0x001E60, + 0x001E62, + 0x001E64, + 0x001E66, + 0x001E68, + 0x001E6A, + 0x001E6C, + 0x001E6E, + 0x001E70, + 0x001E72, + 0x001E74, + 0x001E76, + 0x001E78, + 0x001E7A, + 0x001E7C, + 0x001E7E, + 0x001E80, + 0x001E82, + 0x001E84, + 0x001E86, + 0x001E88, + 0x001E8A, + 0x001E8C, + 0x001E8E, + 0x001E90, + 0x001E92, + 0x001E94, + 0x001EA2, + 0x001EA4, + 0x001EA6, + 0x001EA8, + 0x001EAA, + 0x001EAC, + 0x001EAE, + 0x001EB0, + 0x001EB2, + 0x001EB4, + 0x001EB6, + 0x001EB8, + 0x001EBA, + 0x001EBC, + 0x001EBE, + 0x001EC0, + 0x001EC2, + 0x001EC4, + 0x001EC6, + 0x001EC8, + 0x001ECA, + 0x001ECC, + 0x001ECE, + 0x001ED0, + 0x001ED2, + 0x001ED4, + 0x001ED6, + 0x001ED8, + 0x001EDA, + 0x001EDC, + 0x001EDE, + 0x001EE0, + 0x001EE2, + 0x001EE4, + 0x001EE6, + 0x001EE8, + 0x001EEA, + 0x001EEC, + 0x001EEE, + 0x001EF0, + 0x001EF2, + 0x001EF4, + 0x001EF6, + 0x001EF8, + 0x001EFA, + 0x001EFC, + 0x001EFE, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002C60, + 0x002C67, + 0x002C69, + 0x002C6B, + 0x002C82, + 0x002C84, + 0x002C86, + 0x002C88, + 0x002C8A, + 0x002C8C, + 0x002C8E, + 0x002C90, + 0x002C92, + 0x002C94, + 0x002C96, + 0x002C98, + 0x002C9A, + 0x002C9C, + 0x002C9E, + 0x002CA0, + 0x002CA2, + 0x002CA4, + 0x002CA6, + 0x002CA8, + 0x002CAA, + 0x002CAC, + 0x002CAE, + 0x002CB0, + 0x002CB2, + 0x002CB4, + 0x002CB6, + 0x002CB8, + 0x002CBA, + 0x002CBC, + 0x002CBE, + 0x002CC0, + 0x002CC2, + 0x002CC4, + 0x002CC6, + 0x002CC8, + 0x002CCA, + 0x002CCC, + 0x002CCE, + 0x002CD0, + 0x002CD2, + 0x002CD4, + 0x002CD6, + 0x002CD8, + 0x002CDA, + 0x002CDC, + 0x002CDE, + 0x002CE0, + 0x002CE2, + 0x002CED, + 0x002D26, + 0x00A642, + 0x00A644, + 0x00A646, + 0x00A648, + 0x00A64A, + 0x00A64C, + 0x00A64E, + 0x00A650, + 0x00A652, + 0x00A654, + 0x00A656, + 0x00A658, + 0x00A65A, + 0x00A65C, + 0x00A65E, + 0x00A660, + 0x00A662, + 0x00A664, + 0x00A666, + 0x00A668, + 0x00A66A, + 0x00A66C, + 0x00A682, + 0x00A684, + 0x00A686, + 0x00A688, + 0x00A68A, + 0x00A68C, + 0x00A68E, + 0x00A690, + 0x00A692, + 0x00A694, + 0x00A696, + 0x00A698, + 0x00A69A, + 0x00A724, + 0x00A726, + 0x00A728, + 0x00A72A, + 0x00A72C, + 0x00A72E, + 0x00A734, + 0x00A736, + 0x00A738, + 0x00A73A, + 0x00A73C, + 0x00A73E, + 0x00A740, + 0x00A742, + 0x00A744, + 0x00A746, + 0x00A748, + 0x00A74A, + 0x00A74C, + 0x00A74E, + 0x00A750, + 0x00A752, + 0x00A754, + 0x00A756, + 0x00A758, + 0x00A75A, + 0x00A75C, + 0x00A75E, + 0x00A760, + 0x00A762, + 0x00A764, + 0x00A766, + 0x00A768, + 0x00A76A, + 0x00A76C, + 0x00A76E, + 0x00A77B, + 0x00A780, + 0x00A782, + 0x00A784, + 0x00A786, + 0x00A792, + 0x00A798, + 0x00A79A, + 0x00A79C, + 0x00A79E, + 0x00A7A0, + 0x00A7A2, + 0x00A7A4, + 0x00A7A6, + 0x00A7A8, + 0x00A7B6, + 0x00A7B8, + 0x00A7BA, + 0x00A7BC, + 0x00A7BE, + 0x00A7C0, + 0x00A7C2, + 0x00A7C9, + 0x00A7D8, + 0x0105A2, + 0x0105B2, + 0x0105BA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000060], + [0x00007B, 0x0000B4], + [0x0000B6, 0x0000DE], + [0x000138, 0x000139], + [0x000178, 0x000179], + [0x000181, 0x000182], + [0x000186, 0x000187], + [0x000189, 0x00018B], + [0x00018D, 0x000191], + [0x000193, 0x000194], + [0x000196, 0x000198], + [0x00019B, 0x00019D], + [0x00019F, 0x0001A0], + [0x0001A6, 0x0001A7], + [0x0001A9, 0x0001AC], + [0x0001AE, 0x0001AF], + [0x0001B1, 0x0001B3], + [0x0001B7, 0x0001B8], + [0x0001BA, 0x0001BC], + [0x0001C0, 0x0001C4], + [0x0001F6, 0x0001F8], + [0x000220, 0x000222], + [0x000234, 0x00023B], + [0x00023D, 0x00023E], + [0x000243, 0x000246], + [0x00025D, 0x00025F], + [0x00026D, 0x00026E], + [0x000273, 0x000274], + [0x000276, 0x00027C], + [0x00027E, 0x00027F], + [0x000284, 0x000286], + [0x00028D, 0x000291], + [0x000293, 0x00029C], + [0x00029F, 0x000344], + [0x000346, 0x000370], + [0x000374, 0x000376], + [0x000378, 0x00037A], + [0x00037E, 0x00038F], + [0x000391, 0x0003AB], + [0x0003D2, 0x0003D4], + [0x0003F6, 0x0003F7], + [0x0003F9, 0x0003FA], + [0x0003FC, 0x00042F], + [0x000482, 0x00048A], + [0x0004C0, 0x0004C1], + [0x000530, 0x000560], + [0x000588, 0x0010CF], + [0x0010FB, 0x0010FC], + [0x001100, 0x0013F7], + [0x0013FE, 0x001C7F], + [0x001C89, 0x001D78], + [0x001D7A, 0x001D7C], + [0x001D7E, 0x001D8D], + [0x001D8F, 0x001E00], + [0x001E9C, 0x001EA0], + [0x001F08, 0x001F0F], + [0x001F16, 0x001F1F], + [0x001F28, 0x001F2F], + [0x001F38, 0x001F3F], + [0x001F46, 0x001F4F], + [0x001F58, 0x001F5F], + [0x001F68, 0x001F6F], + [0x001F7E, 0x001F7F], + [0x001FB8, 0x001FBB], + [0x001FBF, 0x001FC1], + [0x001FC8, 0x001FCB], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FD8, 0x001FDF], + [0x001FE8, 0x001FF1], + [0x001FF8, 0x001FFB], + [0x001FFD, 0x00214D], + [0x00214F, 0x00216F], + [0x002180, 0x002183], + [0x002185, 0x0024CF], + [0x0024EA, 0x002C2F], + [0x002C62, 0x002C64], + [0x002C6D, 0x002C72], + [0x002C74, 0x002C75], + [0x002C77, 0x002C80], + [0x002CE4, 0x002CEB], + [0x002CEF, 0x002CF2], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x00A640], + [0x00A66E, 0x00A680], + [0x00A69C, 0x00A722], + [0x00A730, 0x00A732], + [0x00A770, 0x00A779], + [0x00A77D, 0x00A77E], + [0x00A788, 0x00A78B], + [0x00A78D, 0x00A790], + [0x00A795, 0x00A796], + [0x00A7AA, 0x00A7B4], + [0x00A7C4, 0x00A7C7], + [0x00A7CB, 0x00A7D0], + [0x00A7D2, 0x00A7D6], + [0x00A7DA, 0x00A7F5], + [0x00A7F7, 0x00AB52], + [0x00AB54, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FF40], + [0x00FF5B, 0x010427], + [0x010450, 0x0104D7], + [0x0104FC, 0x010596], + [0x0105BD, 0x010CBF], + [0x010CF3, 0x0118BF], + [0x0118E0, 0x016E5F], + [0x016E80, 0x01E921], + [0x01E944, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Changes_When_Uppercased}+$/u, + nonMatchSymbols, + "\\P{Changes_When_Uppercased}" +); +testPropertyEscapes( + /^\P{CWU}+$/u, + nonMatchSymbols, + "\\P{CWU}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Dash.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Dash.js new file mode 100644 index 0000000000..7747cb5086 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Dash.js @@ -0,0 +1,88 @@ +// Copyright 2022 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 for `Dash` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00002D, + 0x00058A, + 0x0005BE, + 0x001400, + 0x001806, + 0x002053, + 0x00207B, + 0x00208B, + 0x002212, + 0x002E17, + 0x002E1A, + 0x002E40, + 0x002E5D, + 0x00301C, + 0x003030, + 0x0030A0, + 0x00FE58, + 0x00FE63, + 0x00FF0D, + 0x010EAD + ], + ranges: [ + [0x002010, 0x002015], + [0x002E3A, 0x002E3B], + [0x00FE31, 0x00FE32] + ] +}); +testPropertyEscapes( + /^\p{Dash}+$/u, + matchSymbols, + "\\p{Dash}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002C], + [0x00002E, 0x000589], + [0x00058B, 0x0005BD], + [0x0005BF, 0x0013FF], + [0x001401, 0x001805], + [0x001807, 0x00200F], + [0x002016, 0x002052], + [0x002054, 0x00207A], + [0x00207C, 0x00208A], + [0x00208C, 0x002211], + [0x002213, 0x002E16], + [0x002E18, 0x002E19], + [0x002E1B, 0x002E39], + [0x002E3C, 0x002E3F], + [0x002E41, 0x002E5C], + [0x002E5E, 0x00301B], + [0x00301D, 0x00302F], + [0x003031, 0x00309F], + [0x0030A1, 0x00DBFF], + [0x00E000, 0x00FE30], + [0x00FE33, 0x00FE57], + [0x00FE59, 0x00FE62], + [0x00FE64, 0x00FF0C], + [0x00FF0E, 0x010EAC], + [0x010EAE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Dash}+$/u, + nonMatchSymbols, + "\\P{Dash}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js new file mode 100644 index 0000000000..f628ba7c98 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Default_Ignorable_Code_Point.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Default_Ignorable_Code_Point` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AD, + 0x00034F, + 0x00061C, + 0x003164, + 0x00FEFF, + 0x00FFA0 + ], + ranges: [ + [0x00115F, 0x001160], + [0x0017B4, 0x0017B5], + [0x00180B, 0x00180F], + [0x00200B, 0x00200F], + [0x00202A, 0x00202E], + [0x002060, 0x00206F], + [0x00FE00, 0x00FE0F], + [0x00FFF0, 0x00FFF8], + [0x01BCA0, 0x01BCA3], + [0x01D173, 0x01D17A], + [0x0E0000, 0x0E0FFF] + ] +}); +testPropertyEscapes( + /^\p{Default_Ignorable_Code_Point}+$/u, + matchSymbols, + "\\p{Default_Ignorable_Code_Point}" +); +testPropertyEscapes( + /^\p{DI}+$/u, + matchSymbols, + "\\p{DI}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0000AC], + [0x0000AE, 0x00034E], + [0x000350, 0x00061B], + [0x00061D, 0x00115E], + [0x001161, 0x0017B3], + [0x0017B6, 0x00180A], + [0x001810, 0x00200A], + [0x002010, 0x002029], + [0x00202F, 0x00205F], + [0x002070, 0x003163], + [0x003165, 0x00DBFF], + [0x00E000, 0x00FDFF], + [0x00FE10, 0x00FEFE], + [0x00FF00, 0x00FF9F], + [0x00FFA1, 0x00FFEF], + [0x00FFF9, 0x01BC9F], + [0x01BCA4, 0x01D172], + [0x01D17B, 0x0DFFFF], + [0x0E1000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Default_Ignorable_Code_Point}+$/u, + nonMatchSymbols, + "\\P{Default_Ignorable_Code_Point}" +); +testPropertyEscapes( + /^\P{DI}+$/u, + nonMatchSymbols, + "\\P{DI}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Deprecated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Deprecated.js new file mode 100644 index 0000000000..01b38e3650 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Deprecated.js @@ -0,0 +1,69 @@ +// Copyright 2022 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 for `Deprecated` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000149, + 0x000673, + 0x000F77, + 0x000F79, + 0x0E0001 + ], + ranges: [ + [0x0017A3, 0x0017A4], + [0x00206A, 0x00206F], + [0x002329, 0x00232A] + ] +}); +testPropertyEscapes( + /^\p{Deprecated}+$/u, + matchSymbols, + "\\p{Deprecated}" +); +testPropertyEscapes( + /^\p{Dep}+$/u, + matchSymbols, + "\\p{Dep}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000F78 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000148], + [0x00014A, 0x000672], + [0x000674, 0x000F76], + [0x000F7A, 0x0017A2], + [0x0017A5, 0x002069], + [0x002070, 0x002328], + [0x00232B, 0x00DBFF], + [0x00E000, 0x0E0000], + [0x0E0002, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Deprecated}+$/u, + nonMatchSymbols, + "\\P{Deprecated}" +); +testPropertyEscapes( + /^\P{Dep}+$/u, + nonMatchSymbols, + "\\P{Dep}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Diacritic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Diacritic.js new file mode 100644 index 0000000000..b6a1797444 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Diacritic.js @@ -0,0 +1,443 @@ +// Copyright 2022 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 for `Diacritic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00005E, + 0x000060, + 0x0000A8, + 0x0000AF, + 0x0000B4, + 0x00037A, + 0x000559, + 0x0005BF, + 0x0005C4, + 0x00093C, + 0x00094D, + 0x000971, + 0x0009BC, + 0x0009CD, + 0x000A3C, + 0x000A4D, + 0x000ABC, + 0x000ACD, + 0x000B3C, + 0x000B4D, + 0x000B55, + 0x000BCD, + 0x000C3C, + 0x000C4D, + 0x000CBC, + 0x000CCD, + 0x000D4D, + 0x000DCA, + 0x000E4E, + 0x000EBA, + 0x000F35, + 0x000F37, + 0x000F39, + 0x000FC6, + 0x001037, + 0x00108F, + 0x0017DD, + 0x001A7F, + 0x001B34, + 0x001B44, + 0x001CED, + 0x001CF4, + 0x001FBD, + 0x002E2F, + 0x0030FC, + 0x00A66F, + 0x00A67F, + 0x00A8C4, + 0x00A953, + 0x00A9B3, + 0x00A9C0, + 0x00A9E5, + 0x00AAF6, + 0x00FB1E, + 0x00FF3E, + 0x00FF40, + 0x00FF70, + 0x00FFE3, + 0x0102E0, + 0x011046, + 0x011070, + 0x011173, + 0x0111C0, + 0x01133C, + 0x01134D, + 0x011442, + 0x011446, + 0x01163F, + 0x01172B, + 0x011943, + 0x0119E0, + 0x011A34, + 0x011A47, + 0x011A99, + 0x011C3F, + 0x011D42, + 0x011D97, + 0x01E2AE + ], + ranges: [ + [0x0000B7, 0x0000B8], + [0x0002B0, 0x00034E], + [0x000350, 0x000357], + [0x00035D, 0x000362], + [0x000374, 0x000375], + [0x000384, 0x000385], + [0x000483, 0x000487], + [0x000591, 0x0005A1], + [0x0005A3, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x00064B, 0x000652], + [0x000657, 0x000658], + [0x0006DF, 0x0006E0], + [0x0006E5, 0x0006E6], + [0x0006EA, 0x0006EC], + [0x000730, 0x00074A], + [0x0007A6, 0x0007B0], + [0x0007EB, 0x0007F5], + [0x000818, 0x000819], + [0x000898, 0x00089F], + [0x0008C9, 0x0008D2], + [0x0008E3, 0x0008FE], + [0x000951, 0x000954], + [0x000AFD, 0x000AFF], + [0x000D3B, 0x000D3C], + [0x000E47, 0x000E4C], + [0x000EC8, 0x000ECC], + [0x000F18, 0x000F19], + [0x000F3E, 0x000F3F], + [0x000F82, 0x000F84], + [0x000F86, 0x000F87], + [0x001039, 0x00103A], + [0x001063, 0x001064], + [0x001069, 0x00106D], + [0x001087, 0x00108D], + [0x00109A, 0x00109B], + [0x00135D, 0x00135F], + [0x001714, 0x001715], + [0x0017C9, 0x0017D3], + [0x001939, 0x00193B], + [0x001A75, 0x001A7C], + [0x001AB0, 0x001ABE], + [0x001AC1, 0x001ACB], + [0x001B6B, 0x001B73], + [0x001BAA, 0x001BAB], + [0x001C36, 0x001C37], + [0x001C78, 0x001C7D], + [0x001CD0, 0x001CE8], + [0x001CF7, 0x001CF9], + [0x001D2C, 0x001D6A], + [0x001DC4, 0x001DCF], + [0x001DF5, 0x001DFF], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FDD, 0x001FDF], + [0x001FED, 0x001FEF], + [0x001FFD, 0x001FFE], + [0x002CEF, 0x002CF1], + [0x00302A, 0x00302F], + [0x003099, 0x00309C], + [0x00A67C, 0x00A67D], + [0x00A69C, 0x00A69D], + [0x00A6F0, 0x00A6F1], + [0x00A700, 0x00A721], + [0x00A788, 0x00A78A], + [0x00A7F8, 0x00A7F9], + [0x00A8E0, 0x00A8F1], + [0x00A92B, 0x00A92E], + [0x00AA7B, 0x00AA7D], + [0x00AABF, 0x00AAC2], + [0x00AB5B, 0x00AB5F], + [0x00AB69, 0x00AB6B], + [0x00ABEC, 0x00ABED], + [0x00FE20, 0x00FE2F], + [0x00FF9E, 0x00FF9F], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010AE5, 0x010AE6], + [0x010D22, 0x010D27], + [0x010EFD, 0x010EFF], + [0x010F46, 0x010F50], + [0x010F82, 0x010F85], + [0x0110B9, 0x0110BA], + [0x011133, 0x011134], + [0x0111CA, 0x0111CC], + [0x011235, 0x011236], + [0x0112E9, 0x0112EA], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x0114C2, 0x0114C3], + [0x0115BF, 0x0115C0], + [0x0116B6, 0x0116B7], + [0x011839, 0x01183A], + [0x01193D, 0x01193E], + [0x011D44, 0x011D45], + [0x013447, 0x013455], + [0x016AF0, 0x016AF4], + [0x016B30, 0x016B36], + [0x016F8F, 0x016F9F], + [0x016FF0, 0x016FF1], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01D167, 0x01D169], + [0x01D16D, 0x01D172], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01E030, 0x01E06D], + [0x01E130, 0x01E136], + [0x01E2EC, 0x01E2EF], + [0x01E8D0, 0x01E8D6], + [0x01E944, 0x01E946], + [0x01E948, 0x01E94A] + ] +}); +testPropertyEscapes( + /^\p{Diacritic}+$/u, + matchSymbols, + "\\p{Diacritic}" +); +testPropertyEscapes( + /^\p{Dia}+$/u, + matchSymbols, + "\\p{Dia}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00005F, + 0x00034F, + 0x0005A2, + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x000E4D, + 0x000F36, + 0x000F38, + 0x000F85, + 0x001038, + 0x00108E, + 0x001FBE, + 0x00A67E, + 0x00FF3F, + 0x010786, + 0x0107B1, + 0x011D43, + 0x01AFF4, + 0x01AFFC, + 0x01E947 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00005D], + [0x000061, 0x0000A7], + [0x0000A9, 0x0000AE], + [0x0000B0, 0x0000B3], + [0x0000B5, 0x0000B6], + [0x0000B9, 0x0002AF], + [0x000358, 0x00035C], + [0x000363, 0x000373], + [0x000376, 0x000379], + [0x00037B, 0x000383], + [0x000386, 0x000482], + [0x000488, 0x000558], + [0x00055A, 0x000590], + [0x0005C5, 0x00064A], + [0x000653, 0x000656], + [0x000659, 0x0006DE], + [0x0006E1, 0x0006E4], + [0x0006E7, 0x0006E9], + [0x0006ED, 0x00072F], + [0x00074B, 0x0007A5], + [0x0007B1, 0x0007EA], + [0x0007F6, 0x000817], + [0x00081A, 0x000897], + [0x0008A0, 0x0008C8], + [0x0008D3, 0x0008E2], + [0x0008FF, 0x00093B], + [0x00093D, 0x00094C], + [0x00094E, 0x000950], + [0x000955, 0x000970], + [0x000972, 0x0009BB], + [0x0009BD, 0x0009CC], + [0x0009CE, 0x000A3B], + [0x000A3D, 0x000A4C], + [0x000A4E, 0x000ABB], + [0x000ABD, 0x000ACC], + [0x000ACE, 0x000AFC], + [0x000B00, 0x000B3B], + [0x000B3D, 0x000B4C], + [0x000B4E, 0x000B54], + [0x000B56, 0x000BCC], + [0x000BCE, 0x000C3B], + [0x000C3D, 0x000C4C], + [0x000C4E, 0x000CBB], + [0x000CBD, 0x000CCC], + [0x000CCE, 0x000D3A], + [0x000D3D, 0x000D4C], + [0x000D4E, 0x000DC9], + [0x000DCB, 0x000E46], + [0x000E4F, 0x000EB9], + [0x000EBB, 0x000EC7], + [0x000ECD, 0x000F17], + [0x000F1A, 0x000F34], + [0x000F3A, 0x000F3D], + [0x000F40, 0x000F81], + [0x000F88, 0x000FC5], + [0x000FC7, 0x001036], + [0x00103B, 0x001062], + [0x001065, 0x001068], + [0x00106E, 0x001086], + [0x001090, 0x001099], + [0x00109C, 0x00135C], + [0x001360, 0x001713], + [0x001716, 0x0017C8], + [0x0017D4, 0x0017DC], + [0x0017DE, 0x001938], + [0x00193C, 0x001A74], + [0x001A7D, 0x001A7E], + [0x001A80, 0x001AAF], + [0x001ABF, 0x001AC0], + [0x001ACC, 0x001B33], + [0x001B35, 0x001B43], + [0x001B45, 0x001B6A], + [0x001B74, 0x001BA9], + [0x001BAC, 0x001C35], + [0x001C38, 0x001C77], + [0x001C7E, 0x001CCF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF6], + [0x001CFA, 0x001D2B], + [0x001D6B, 0x001DC3], + [0x001DD0, 0x001DF4], + [0x001E00, 0x001FBC], + [0x001FC2, 0x001FCC], + [0x001FD0, 0x001FDC], + [0x001FE0, 0x001FEC], + [0x001FF0, 0x001FFC], + [0x001FFF, 0x002CEE], + [0x002CF2, 0x002E2E], + [0x002E30, 0x003029], + [0x003030, 0x003098], + [0x00309D, 0x0030FB], + [0x0030FD, 0x00A66E], + [0x00A670, 0x00A67B], + [0x00A680, 0x00A69B], + [0x00A69E, 0x00A6EF], + [0x00A6F2, 0x00A6FF], + [0x00A722, 0x00A787], + [0x00A78B, 0x00A7F7], + [0x00A7FA, 0x00A8C3], + [0x00A8C5, 0x00A8DF], + [0x00A8F2, 0x00A92A], + [0x00A92F, 0x00A952], + [0x00A954, 0x00A9B2], + [0x00A9B4, 0x00A9BF], + [0x00A9C1, 0x00A9E4], + [0x00A9E6, 0x00AA7A], + [0x00AA7E, 0x00AABE], + [0x00AAC3, 0x00AAF5], + [0x00AAF7, 0x00AB5A], + [0x00AB60, 0x00AB68], + [0x00AB6C, 0x00ABEB], + [0x00ABEE, 0x00DBFF], + [0x00E000, 0x00FB1D], + [0x00FB1F, 0x00FE1F], + [0x00FE30, 0x00FF3D], + [0x00FF41, 0x00FF6F], + [0x00FF71, 0x00FF9D], + [0x00FFA0, 0x00FFE2], + [0x00FFE4, 0x0102DF], + [0x0102E1, 0x01077F], + [0x0107BB, 0x010AE4], + [0x010AE7, 0x010D21], + [0x010D28, 0x010EFC], + [0x010F00, 0x010F45], + [0x010F51, 0x010F81], + [0x010F86, 0x011045], + [0x011047, 0x01106F], + [0x011071, 0x0110B8], + [0x0110BB, 0x011132], + [0x011135, 0x011172], + [0x011174, 0x0111BF], + [0x0111C1, 0x0111C9], + [0x0111CD, 0x011234], + [0x011237, 0x0112E8], + [0x0112EB, 0x01133B], + [0x01133D, 0x01134C], + [0x01134E, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x011441], + [0x011443, 0x011445], + [0x011447, 0x0114C1], + [0x0114C4, 0x0115BE], + [0x0115C1, 0x01163E], + [0x011640, 0x0116B5], + [0x0116B8, 0x01172A], + [0x01172C, 0x011838], + [0x01183B, 0x01193C], + [0x01193F, 0x011942], + [0x011944, 0x0119DF], + [0x0119E1, 0x011A33], + [0x011A35, 0x011A46], + [0x011A48, 0x011A98], + [0x011A9A, 0x011C3E], + [0x011C40, 0x011D41], + [0x011D46, 0x011D96], + [0x011D98, 0x013446], + [0x013456, 0x016AEF], + [0x016AF5, 0x016B2F], + [0x016B37, 0x016F8E], + [0x016FA0, 0x016FEF], + [0x016FF2, 0x01AFEF], + [0x01AFFF, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01D166], + [0x01D16A, 0x01D16C], + [0x01D173, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01E02F], + [0x01E06E, 0x01E12F], + [0x01E137, 0x01E2AD], + [0x01E2AF, 0x01E2EB], + [0x01E2F0, 0x01E8CF], + [0x01E8D7, 0x01E943], + [0x01E94B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Diacritic}+$/u, + nonMatchSymbols, + "\\P{Diacritic}" +); +testPropertyEscapes( + /^\P{Dia}+$/u, + nonMatchSymbols, + "\\P{Dia}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji.js new file mode 100644 index 0000000000..18d81894c6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji.js @@ -0,0 +1,345 @@ +// Copyright 2022 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 for `Emoji` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000023, + 0x00002A, + 0x0000A9, + 0x0000AE, + 0x00203C, + 0x002049, + 0x002122, + 0x002139, + 0x002328, + 0x0023CF, + 0x0024C2, + 0x0025B6, + 0x0025C0, + 0x00260E, + 0x002611, + 0x002618, + 0x00261D, + 0x002620, + 0x002626, + 0x00262A, + 0x002640, + 0x002642, + 0x002663, + 0x002668, + 0x00267B, + 0x002699, + 0x0026A7, + 0x0026C8, + 0x0026D1, + 0x0026FD, + 0x002702, + 0x002705, + 0x00270F, + 0x002712, + 0x002714, + 0x002716, + 0x00271D, + 0x002721, + 0x002728, + 0x002744, + 0x002747, + 0x00274C, + 0x00274E, + 0x002757, + 0x0027A1, + 0x0027B0, + 0x0027BF, + 0x002B50, + 0x002B55, + 0x003030, + 0x00303D, + 0x003297, + 0x003299, + 0x01F004, + 0x01F0CF, + 0x01F18E, + 0x01F21A, + 0x01F22F, + 0x01F587, + 0x01F590, + 0x01F5A8, + 0x01F5BC, + 0x01F5E1, + 0x01F5E3, + 0x01F5E8, + 0x01F5EF, + 0x01F5F3, + 0x01F6E9, + 0x01F6F0, + 0x01F7F0 + ], + ranges: [ + [0x000030, 0x000039], + [0x002194, 0x002199], + [0x0021A9, 0x0021AA], + [0x00231A, 0x00231B], + [0x0023E9, 0x0023F3], + [0x0023F8, 0x0023FA], + [0x0025AA, 0x0025AB], + [0x0025FB, 0x0025FE], + [0x002600, 0x002604], + [0x002614, 0x002615], + [0x002622, 0x002623], + [0x00262E, 0x00262F], + [0x002638, 0x00263A], + [0x002648, 0x002653], + [0x00265F, 0x002660], + [0x002665, 0x002666], + [0x00267E, 0x00267F], + [0x002692, 0x002697], + [0x00269B, 0x00269C], + [0x0026A0, 0x0026A1], + [0x0026AA, 0x0026AB], + [0x0026B0, 0x0026B1], + [0x0026BD, 0x0026BE], + [0x0026C4, 0x0026C5], + [0x0026CE, 0x0026CF], + [0x0026D3, 0x0026D4], + [0x0026E9, 0x0026EA], + [0x0026F0, 0x0026F5], + [0x0026F7, 0x0026FA], + [0x002708, 0x00270D], + [0x002733, 0x002734], + [0x002753, 0x002755], + [0x002763, 0x002764], + [0x002795, 0x002797], + [0x002934, 0x002935], + [0x002B05, 0x002B07], + [0x002B1B, 0x002B1C], + [0x01F170, 0x01F171], + [0x01F17E, 0x01F17F], + [0x01F191, 0x01F19A], + [0x01F1E6, 0x01F1FF], + [0x01F201, 0x01F202], + [0x01F232, 0x01F23A], + [0x01F250, 0x01F251], + [0x01F300, 0x01F321], + [0x01F324, 0x01F393], + [0x01F396, 0x01F397], + [0x01F399, 0x01F39B], + [0x01F39E, 0x01F3F0], + [0x01F3F3, 0x01F3F5], + [0x01F3F7, 0x01F4FD], + [0x01F4FF, 0x01F53D], + [0x01F549, 0x01F54E], + [0x01F550, 0x01F567], + [0x01F56F, 0x01F570], + [0x01F573, 0x01F57A], + [0x01F58A, 0x01F58D], + [0x01F595, 0x01F596], + [0x01F5A4, 0x01F5A5], + [0x01F5B1, 0x01F5B2], + [0x01F5C2, 0x01F5C4], + [0x01F5D1, 0x01F5D3], + [0x01F5DC, 0x01F5DE], + [0x01F5FA, 0x01F64F], + [0x01F680, 0x01F6C5], + [0x01F6CB, 0x01F6D2], + [0x01F6D5, 0x01F6D7], + [0x01F6DC, 0x01F6E5], + [0x01F6EB, 0x01F6EC], + [0x01F6F3, 0x01F6FC], + [0x01F7E0, 0x01F7EB], + [0x01F90C, 0x01F93A], + [0x01F93C, 0x01F945], + [0x01F947, 0x01F9FF], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8] + ] +}); +testPropertyEscapes( + /^\p{Emoji}+$/u, + matchSymbols, + "\\p{Emoji}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0025FF, + 0x002621, + 0x002641, + 0x002664, + 0x002667, + 0x002698, + 0x00269A, + 0x0026D0, + 0x0026D2, + 0x0026F6, + 0x00270E, + 0x002713, + 0x002715, + 0x00274D, + 0x002756, + 0x003298, + 0x01F200, + 0x01F398, + 0x01F3F6, + 0x01F4FE, + 0x01F54F, + 0x01F5E2, + 0x01F6EA, + 0x01F93B, + 0x01F946, + 0x01FABE + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000022], + [0x000024, 0x000029], + [0x00002B, 0x00002F], + [0x00003A, 0x0000A8], + [0x0000AA, 0x0000AD], + [0x0000AF, 0x00203B], + [0x00203D, 0x002048], + [0x00204A, 0x002121], + [0x002123, 0x002138], + [0x00213A, 0x002193], + [0x00219A, 0x0021A8], + [0x0021AB, 0x002319], + [0x00231C, 0x002327], + [0x002329, 0x0023CE], + [0x0023D0, 0x0023E8], + [0x0023F4, 0x0023F7], + [0x0023FB, 0x0024C1], + [0x0024C3, 0x0025A9], + [0x0025AC, 0x0025B5], + [0x0025B7, 0x0025BF], + [0x0025C1, 0x0025FA], + [0x002605, 0x00260D], + [0x00260F, 0x002610], + [0x002612, 0x002613], + [0x002616, 0x002617], + [0x002619, 0x00261C], + [0x00261E, 0x00261F], + [0x002624, 0x002625], + [0x002627, 0x002629], + [0x00262B, 0x00262D], + [0x002630, 0x002637], + [0x00263B, 0x00263F], + [0x002643, 0x002647], + [0x002654, 0x00265E], + [0x002661, 0x002662], + [0x002669, 0x00267A], + [0x00267C, 0x00267D], + [0x002680, 0x002691], + [0x00269D, 0x00269F], + [0x0026A2, 0x0026A6], + [0x0026A8, 0x0026A9], + [0x0026AC, 0x0026AF], + [0x0026B2, 0x0026BC], + [0x0026BF, 0x0026C3], + [0x0026C6, 0x0026C7], + [0x0026C9, 0x0026CD], + [0x0026D5, 0x0026E8], + [0x0026EB, 0x0026EF], + [0x0026FB, 0x0026FC], + [0x0026FE, 0x002701], + [0x002703, 0x002704], + [0x002706, 0x002707], + [0x002710, 0x002711], + [0x002717, 0x00271C], + [0x00271E, 0x002720], + [0x002722, 0x002727], + [0x002729, 0x002732], + [0x002735, 0x002743], + [0x002745, 0x002746], + [0x002748, 0x00274B], + [0x00274F, 0x002752], + [0x002758, 0x002762], + [0x002765, 0x002794], + [0x002798, 0x0027A0], + [0x0027A2, 0x0027AF], + [0x0027B1, 0x0027BE], + [0x0027C0, 0x002933], + [0x002936, 0x002B04], + [0x002B08, 0x002B1A], + [0x002B1D, 0x002B4F], + [0x002B51, 0x002B54], + [0x002B56, 0x00302F], + [0x003031, 0x00303C], + [0x00303E, 0x003296], + [0x00329A, 0x00DBFF], + [0x00E000, 0x01F003], + [0x01F005, 0x01F0CE], + [0x01F0D0, 0x01F16F], + [0x01F172, 0x01F17D], + [0x01F180, 0x01F18D], + [0x01F18F, 0x01F190], + [0x01F19B, 0x01F1E5], + [0x01F203, 0x01F219], + [0x01F21B, 0x01F22E], + [0x01F230, 0x01F231], + [0x01F23B, 0x01F24F], + [0x01F252, 0x01F2FF], + [0x01F322, 0x01F323], + [0x01F394, 0x01F395], + [0x01F39C, 0x01F39D], + [0x01F3F1, 0x01F3F2], + [0x01F53E, 0x01F548], + [0x01F568, 0x01F56E], + [0x01F571, 0x01F572], + [0x01F57B, 0x01F586], + [0x01F588, 0x01F589], + [0x01F58E, 0x01F58F], + [0x01F591, 0x01F594], + [0x01F597, 0x01F5A3], + [0x01F5A6, 0x01F5A7], + [0x01F5A9, 0x01F5B0], + [0x01F5B3, 0x01F5BB], + [0x01F5BD, 0x01F5C1], + [0x01F5C5, 0x01F5D0], + [0x01F5D4, 0x01F5DB], + [0x01F5DF, 0x01F5E0], + [0x01F5E4, 0x01F5E7], + [0x01F5E9, 0x01F5EE], + [0x01F5F0, 0x01F5F2], + [0x01F5F4, 0x01F5F9], + [0x01F650, 0x01F67F], + [0x01F6C6, 0x01F6CA], + [0x01F6D3, 0x01F6D4], + [0x01F6D8, 0x01F6DB], + [0x01F6E6, 0x01F6E8], + [0x01F6ED, 0x01F6EF], + [0x01F6F1, 0x01F6F2], + [0x01F6FD, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F90B], + [0x01FA00, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Emoji}+$/u, + nonMatchSymbols, + "\\P{Emoji}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Component.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Component.js new file mode 100644 index 0000000000..a5b4e5f070 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Component.js @@ -0,0 +1,72 @@ +// Copyright 2022 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 for `Emoji_Component` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000023, + 0x00002A, + 0x00200D, + 0x0020E3, + 0x00FE0F + ], + ranges: [ + [0x000030, 0x000039], + [0x01F1E6, 0x01F1FF], + [0x01F3FB, 0x01F3FF], + [0x01F9B0, 0x01F9B3], + [0x0E0020, 0x0E007F] + ] +}); +testPropertyEscapes( + /^\p{Emoji_Component}+$/u, + matchSymbols, + "\\p{Emoji_Component}" +); +testPropertyEscapes( + /^\p{EComp}+$/u, + matchSymbols, + "\\p{EComp}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000022], + [0x000024, 0x000029], + [0x00002B, 0x00002F], + [0x00003A, 0x00200C], + [0x00200E, 0x0020E2], + [0x0020E4, 0x00DBFF], + [0x00E000, 0x00FE0E], + [0x00FE10, 0x01F1E5], + [0x01F200, 0x01F3FA], + [0x01F400, 0x01F9AF], + [0x01F9B4, 0x0E001F], + [0x0E0080, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Emoji_Component}+$/u, + nonMatchSymbols, + "\\P{Emoji_Component}" +); +testPropertyEscapes( + /^\P{EComp}+$/u, + nonMatchSymbols, + "\\P{EComp}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js new file mode 100644 index 0000000000..f1d711ca54 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Modifier.js @@ -0,0 +1,53 @@ +// Copyright 2022 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 for `Emoji_Modifier` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01F3FB, 0x01F3FF] + ] +}); +testPropertyEscapes( + /^\p{Emoji_Modifier}+$/u, + matchSymbols, + "\\p{Emoji_Modifier}" +); +testPropertyEscapes( + /^\p{EMod}+$/u, + matchSymbols, + "\\p{EMod}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01F3FA], + [0x01F400, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Emoji_Modifier}+$/u, + nonMatchSymbols, + "\\P{Emoji_Modifier}" +); +testPropertyEscapes( + /^\P{EMod}+$/u, + nonMatchSymbols, + "\\P{EMod}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js new file mode 100644 index 0000000000..ae31eb20f6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Modifier_Base.js @@ -0,0 +1,133 @@ +// Copyright 2022 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 for `Emoji_Modifier_Base` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00261D, + 0x0026F9, + 0x01F385, + 0x01F3C7, + 0x01F47C, + 0x01F48F, + 0x01F491, + 0x01F4AA, + 0x01F57A, + 0x01F590, + 0x01F6A3, + 0x01F6C0, + 0x01F6CC, + 0x01F90C, + 0x01F90F, + 0x01F926, + 0x01F977, + 0x01F9BB + ], + ranges: [ + [0x00270A, 0x00270D], + [0x01F3C2, 0x01F3C4], + [0x01F3CA, 0x01F3CC], + [0x01F442, 0x01F443], + [0x01F446, 0x01F450], + [0x01F466, 0x01F478], + [0x01F481, 0x01F483], + [0x01F485, 0x01F487], + [0x01F574, 0x01F575], + [0x01F595, 0x01F596], + [0x01F645, 0x01F647], + [0x01F64B, 0x01F64F], + [0x01F6B4, 0x01F6B6], + [0x01F918, 0x01F91F], + [0x01F930, 0x01F939], + [0x01F93C, 0x01F93E], + [0x01F9B5, 0x01F9B6], + [0x01F9B8, 0x01F9B9], + [0x01F9CD, 0x01F9CF], + [0x01F9D1, 0x01F9DD], + [0x01FAC3, 0x01FAC5], + [0x01FAF0, 0x01FAF8] + ] +}); +testPropertyEscapes( + /^\p{Emoji_Modifier_Base}+$/u, + matchSymbols, + "\\p{Emoji_Modifier_Base}" +); +testPropertyEscapes( + /^\p{EBase}+$/u, + matchSymbols, + "\\p{EBase}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01F484, + 0x01F490, + 0x01F9B7, + 0x01F9BA, + 0x01F9D0 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00261C], + [0x00261E, 0x0026F8], + [0x0026FA, 0x002709], + [0x00270E, 0x00DBFF], + [0x00E000, 0x01F384], + [0x01F386, 0x01F3C1], + [0x01F3C5, 0x01F3C6], + [0x01F3C8, 0x01F3C9], + [0x01F3CD, 0x01F441], + [0x01F444, 0x01F445], + [0x01F451, 0x01F465], + [0x01F479, 0x01F47B], + [0x01F47D, 0x01F480], + [0x01F488, 0x01F48E], + [0x01F492, 0x01F4A9], + [0x01F4AB, 0x01F573], + [0x01F576, 0x01F579], + [0x01F57B, 0x01F58F], + [0x01F591, 0x01F594], + [0x01F597, 0x01F644], + [0x01F648, 0x01F64A], + [0x01F650, 0x01F6A2], + [0x01F6A4, 0x01F6B3], + [0x01F6B7, 0x01F6BF], + [0x01F6C1, 0x01F6CB], + [0x01F6CD, 0x01F90B], + [0x01F90D, 0x01F90E], + [0x01F910, 0x01F917], + [0x01F920, 0x01F925], + [0x01F927, 0x01F92F], + [0x01F93A, 0x01F93B], + [0x01F93F, 0x01F976], + [0x01F978, 0x01F9B4], + [0x01F9BC, 0x01F9CC], + [0x01F9DE, 0x01FAC2], + [0x01FAC6, 0x01FAEF], + [0x01FAF9, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Emoji_Modifier_Base}+$/u, + nonMatchSymbols, + "\\P{Emoji_Modifier_Base}" +); +testPropertyEscapes( + /^\P{EBase}+$/u, + nonMatchSymbols, + "\\P{EBase}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js new file mode 100644 index 0000000000..41d2652685 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Emoji_Presentation.js @@ -0,0 +1,215 @@ +// Copyright 2022 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 for `Emoji_Presentation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0023F0, + 0x0023F3, + 0x00267F, + 0x002693, + 0x0026A1, + 0x0026CE, + 0x0026D4, + 0x0026EA, + 0x0026F5, + 0x0026FA, + 0x0026FD, + 0x002705, + 0x002728, + 0x00274C, + 0x00274E, + 0x002757, + 0x0027B0, + 0x0027BF, + 0x002B50, + 0x002B55, + 0x01F004, + 0x01F0CF, + 0x01F18E, + 0x01F201, + 0x01F21A, + 0x01F22F, + 0x01F3F4, + 0x01F440, + 0x01F57A, + 0x01F5A4, + 0x01F6CC, + 0x01F7F0 + ], + ranges: [ + [0x00231A, 0x00231B], + [0x0023E9, 0x0023EC], + [0x0025FD, 0x0025FE], + [0x002614, 0x002615], + [0x002648, 0x002653], + [0x0026AA, 0x0026AB], + [0x0026BD, 0x0026BE], + [0x0026C4, 0x0026C5], + [0x0026F2, 0x0026F3], + [0x00270A, 0x00270B], + [0x002753, 0x002755], + [0x002795, 0x002797], + [0x002B1B, 0x002B1C], + [0x01F191, 0x01F19A], + [0x01F1E6, 0x01F1FF], + [0x01F232, 0x01F236], + [0x01F238, 0x01F23A], + [0x01F250, 0x01F251], + [0x01F300, 0x01F320], + [0x01F32D, 0x01F335], + [0x01F337, 0x01F37C], + [0x01F37E, 0x01F393], + [0x01F3A0, 0x01F3CA], + [0x01F3CF, 0x01F3D3], + [0x01F3E0, 0x01F3F0], + [0x01F3F8, 0x01F43E], + [0x01F442, 0x01F4FC], + [0x01F4FF, 0x01F53D], + [0x01F54B, 0x01F54E], + [0x01F550, 0x01F567], + [0x01F595, 0x01F596], + [0x01F5FB, 0x01F64F], + [0x01F680, 0x01F6C5], + [0x01F6D0, 0x01F6D2], + [0x01F6D5, 0x01F6D7], + [0x01F6DC, 0x01F6DF], + [0x01F6EB, 0x01F6EC], + [0x01F6F4, 0x01F6FC], + [0x01F7E0, 0x01F7EB], + [0x01F90C, 0x01F93A], + [0x01F93C, 0x01F945], + [0x01F947, 0x01F9FF], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8] + ] +}); +testPropertyEscapes( + /^\p{Emoji_Presentation}+$/u, + matchSymbols, + "\\p{Emoji_Presentation}" +); +testPropertyEscapes( + /^\p{EPres}+$/u, + matchSymbols, + "\\p{EPres}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0026F4, + 0x00274D, + 0x002756, + 0x01F200, + 0x01F237, + 0x01F336, + 0x01F37D, + 0x01F43F, + 0x01F441, + 0x01F54F, + 0x01F93B, + 0x01F946, + 0x01FABE + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002319], + [0x00231C, 0x0023E8], + [0x0023ED, 0x0023EF], + [0x0023F1, 0x0023F2], + [0x0023F4, 0x0025FC], + [0x0025FF, 0x002613], + [0x002616, 0x002647], + [0x002654, 0x00267E], + [0x002680, 0x002692], + [0x002694, 0x0026A0], + [0x0026A2, 0x0026A9], + [0x0026AC, 0x0026BC], + [0x0026BF, 0x0026C3], + [0x0026C6, 0x0026CD], + [0x0026CF, 0x0026D3], + [0x0026D5, 0x0026E9], + [0x0026EB, 0x0026F1], + [0x0026F6, 0x0026F9], + [0x0026FB, 0x0026FC], + [0x0026FE, 0x002704], + [0x002706, 0x002709], + [0x00270C, 0x002727], + [0x002729, 0x00274B], + [0x00274F, 0x002752], + [0x002758, 0x002794], + [0x002798, 0x0027AF], + [0x0027B1, 0x0027BE], + [0x0027C0, 0x002B1A], + [0x002B1D, 0x002B4F], + [0x002B51, 0x002B54], + [0x002B56, 0x00DBFF], + [0x00E000, 0x01F003], + [0x01F005, 0x01F0CE], + [0x01F0D0, 0x01F18D], + [0x01F18F, 0x01F190], + [0x01F19B, 0x01F1E5], + [0x01F202, 0x01F219], + [0x01F21B, 0x01F22E], + [0x01F230, 0x01F231], + [0x01F23B, 0x01F24F], + [0x01F252, 0x01F2FF], + [0x01F321, 0x01F32C], + [0x01F394, 0x01F39F], + [0x01F3CB, 0x01F3CE], + [0x01F3D4, 0x01F3DF], + [0x01F3F1, 0x01F3F3], + [0x01F3F5, 0x01F3F7], + [0x01F4FD, 0x01F4FE], + [0x01F53E, 0x01F54A], + [0x01F568, 0x01F579], + [0x01F57B, 0x01F594], + [0x01F597, 0x01F5A3], + [0x01F5A5, 0x01F5FA], + [0x01F650, 0x01F67F], + [0x01F6C6, 0x01F6CB], + [0x01F6CD, 0x01F6CF], + [0x01F6D3, 0x01F6D4], + [0x01F6D8, 0x01F6DB], + [0x01F6E0, 0x01F6EA], + [0x01F6ED, 0x01F6F3], + [0x01F6FD, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F90B], + [0x01FA00, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Emoji_Presentation}+$/u, + nonMatchSymbols, + "\\P{Emoji_Presentation}" +); +testPropertyEscapes( + /^\P{EPres}+$/u, + nonMatchSymbols, + "\\P{EPres}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js new file mode 100644 index 0000000000..0ed7805aa5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Extended_Pictographic.js @@ -0,0 +1,209 @@ +// Copyright 2022 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 for `Extended_Pictographic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000A9, + 0x0000AE, + 0x00203C, + 0x002049, + 0x002122, + 0x002139, + 0x002328, + 0x002388, + 0x0023CF, + 0x0024C2, + 0x0025B6, + 0x0025C0, + 0x002714, + 0x002716, + 0x00271D, + 0x002721, + 0x002728, + 0x002744, + 0x002747, + 0x00274C, + 0x00274E, + 0x002757, + 0x0027A1, + 0x0027B0, + 0x0027BF, + 0x002B50, + 0x002B55, + 0x003030, + 0x00303D, + 0x003297, + 0x003299, + 0x01F12F, + 0x01F18E, + 0x01F21A, + 0x01F22F + ], + ranges: [ + [0x002194, 0x002199], + [0x0021A9, 0x0021AA], + [0x00231A, 0x00231B], + [0x0023E9, 0x0023F3], + [0x0023F8, 0x0023FA], + [0x0025AA, 0x0025AB], + [0x0025FB, 0x0025FE], + [0x002600, 0x002605], + [0x002607, 0x002612], + [0x002614, 0x002685], + [0x002690, 0x002705], + [0x002708, 0x002712], + [0x002733, 0x002734], + [0x002753, 0x002755], + [0x002763, 0x002767], + [0x002795, 0x002797], + [0x002934, 0x002935], + [0x002B05, 0x002B07], + [0x002B1B, 0x002B1C], + [0x01F000, 0x01F0FF], + [0x01F10D, 0x01F10F], + [0x01F16C, 0x01F171], + [0x01F17E, 0x01F17F], + [0x01F191, 0x01F19A], + [0x01F1AD, 0x01F1E5], + [0x01F201, 0x01F20F], + [0x01F232, 0x01F23A], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F3FA], + [0x01F400, 0x01F53D], + [0x01F546, 0x01F64F], + [0x01F680, 0x01F6FF], + [0x01F774, 0x01F77F], + [0x01F7D5, 0x01F7FF], + [0x01F80C, 0x01F80F], + [0x01F848, 0x01F84F], + [0x01F85A, 0x01F85F], + [0x01F888, 0x01F88F], + [0x01F8AE, 0x01F8FF], + [0x01F90C, 0x01F93A], + [0x01F93C, 0x01F945], + [0x01F947, 0x01FAFF], + [0x01FC00, 0x01FFFD] + ] +}); +testPropertyEscapes( + /^\p{Extended_Pictographic}+$/u, + matchSymbols, + "\\p{Extended_Pictographic}" +); +testPropertyEscapes( + /^\p{ExtPict}+$/u, + matchSymbols, + "\\p{ExtPict}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0025FF, + 0x002606, + 0x002613, + 0x002713, + 0x002715, + 0x00274D, + 0x002756, + 0x003298, + 0x01F23B, + 0x01F93B, + 0x01F946 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0000A8], + [0x0000AA, 0x0000AD], + [0x0000AF, 0x00203B], + [0x00203D, 0x002048], + [0x00204A, 0x002121], + [0x002123, 0x002138], + [0x00213A, 0x002193], + [0x00219A, 0x0021A8], + [0x0021AB, 0x002319], + [0x00231C, 0x002327], + [0x002329, 0x002387], + [0x002389, 0x0023CE], + [0x0023D0, 0x0023E8], + [0x0023F4, 0x0023F7], + [0x0023FB, 0x0024C1], + [0x0024C3, 0x0025A9], + [0x0025AC, 0x0025B5], + [0x0025B7, 0x0025BF], + [0x0025C1, 0x0025FA], + [0x002686, 0x00268F], + [0x002706, 0x002707], + [0x002717, 0x00271C], + [0x00271E, 0x002720], + [0x002722, 0x002727], + [0x002729, 0x002732], + [0x002735, 0x002743], + [0x002745, 0x002746], + [0x002748, 0x00274B], + [0x00274F, 0x002752], + [0x002758, 0x002762], + [0x002768, 0x002794], + [0x002798, 0x0027A0], + [0x0027A2, 0x0027AF], + [0x0027B1, 0x0027BE], + [0x0027C0, 0x002933], + [0x002936, 0x002B04], + [0x002B08, 0x002B1A], + [0x002B1D, 0x002B4F], + [0x002B51, 0x002B54], + [0x002B56, 0x00302F], + [0x003031, 0x00303C], + [0x00303E, 0x003296], + [0x00329A, 0x00DBFF], + [0x00E000, 0x01EFFF], + [0x01F100, 0x01F10C], + [0x01F110, 0x01F12E], + [0x01F130, 0x01F16B], + [0x01F172, 0x01F17D], + [0x01F180, 0x01F18D], + [0x01F18F, 0x01F190], + [0x01F19B, 0x01F1AC], + [0x01F1E6, 0x01F200], + [0x01F210, 0x01F219], + [0x01F21B, 0x01F22E], + [0x01F230, 0x01F231], + [0x01F240, 0x01F248], + [0x01F3FB, 0x01F3FF], + [0x01F53E, 0x01F545], + [0x01F650, 0x01F67F], + [0x01F700, 0x01F773], + [0x01F780, 0x01F7D4], + [0x01F800, 0x01F80B], + [0x01F810, 0x01F847], + [0x01F850, 0x01F859], + [0x01F860, 0x01F887], + [0x01F890, 0x01F8AD], + [0x01F900, 0x01F90B], + [0x01FB00, 0x01FBFF], + [0x01FFFE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Extended_Pictographic}+$/u, + nonMatchSymbols, + "\\P{Extended_Pictographic}" +); +testPropertyEscapes( + /^\P{ExtPict}+$/u, + nonMatchSymbols, + "\\P{ExtPict}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Extender.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Extender.js new file mode 100644 index 0000000000..92f9fb26d1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Extender.js @@ -0,0 +1,119 @@ +// Copyright 2022 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 for `Extender` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000B7, + 0x000640, + 0x0007FA, + 0x000B55, + 0x000E46, + 0x000EC6, + 0x00180A, + 0x001843, + 0x001AA7, + 0x001C36, + 0x001C7B, + 0x003005, + 0x00A015, + 0x00A60C, + 0x00A9CF, + 0x00A9E6, + 0x00AA70, + 0x00AADD, + 0x00FF70, + 0x01135D, + 0x011A98, + 0x016FE3 + ], + ranges: [ + [0x0002D0, 0x0002D1], + [0x003031, 0x003035], + [0x00309D, 0x00309E], + [0x0030FC, 0x0030FE], + [0x00AAF3, 0x00AAF4], + [0x010781, 0x010782], + [0x0115C6, 0x0115C8], + [0x016B42, 0x016B43], + [0x016FE0, 0x016FE1], + [0x01E13C, 0x01E13D], + [0x01E944, 0x01E946] + ] +}); +testPropertyEscapes( + /^\p{Extender}+$/u, + matchSymbols, + "\\p{Extender}" +); +testPropertyEscapes( + /^\p{Ext}+$/u, + matchSymbols, + "\\p{Ext}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x016FE2 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0000B6], + [0x0000B8, 0x0002CF], + [0x0002D2, 0x00063F], + [0x000641, 0x0007F9], + [0x0007FB, 0x000B54], + [0x000B56, 0x000E45], + [0x000E47, 0x000EC5], + [0x000EC7, 0x001809], + [0x00180B, 0x001842], + [0x001844, 0x001AA6], + [0x001AA8, 0x001C35], + [0x001C37, 0x001C7A], + [0x001C7C, 0x003004], + [0x003006, 0x003030], + [0x003036, 0x00309C], + [0x00309F, 0x0030FB], + [0x0030FF, 0x00A014], + [0x00A016, 0x00A60B], + [0x00A60D, 0x00A9CE], + [0x00A9D0, 0x00A9E5], + [0x00A9E7, 0x00AA6F], + [0x00AA71, 0x00AADC], + [0x00AADE, 0x00AAF2], + [0x00AAF5, 0x00DBFF], + [0x00E000, 0x00FF6F], + [0x00FF71, 0x010780], + [0x010783, 0x01135C], + [0x01135E, 0x0115C5], + [0x0115C9, 0x011A97], + [0x011A99, 0x016B41], + [0x016B44, 0x016FDF], + [0x016FE4, 0x01E13B], + [0x01E13E, 0x01E943], + [0x01E947, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Extender}+$/u, + nonMatchSymbols, + "\\P{Extender}" +); +testPropertyEscapes( + /^\P{Ext}+$/u, + nonMatchSymbols, + "\\P{Ext}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js new file mode 100644 index 0000000000..bd8f68fd18 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Cased_Letter.js @@ -0,0 +1,379 @@ +// Copyright 2022 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 for `General_Category=Cased_Letter` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000B5, + 0x00037F, + 0x000386, + 0x00038C, + 0x0010C7, + 0x0010CD, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001FBE, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x002139, + 0x00214E, + 0x002D27, + 0x002D2D, + 0x00A7D3, + 0x00A7FA, + 0x01D4A2, + 0x01D4BB, + 0x01D546 + ], + ranges: [ + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0001BA], + [0x0001BC, 0x0001BF], + [0x0001C4, 0x000293], + [0x000295, 0x0002AF], + [0x000370, 0x000373], + [0x000376, 0x000377], + [0x00037B, 0x00037D], + [0x000388, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003F5], + [0x0003F7, 0x000481], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000560, 0x000588], + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FD, 0x0010FF], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001D00, 0x001D2B], + [0x001D6B, 0x001D77], + [0x001D79, 0x001D9A], + [0x001E00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FCC], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FE0, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFC], + [0x00210A, 0x002113], + [0x002119, 0x00211D], + [0x00212A, 0x00212D], + [0x00212F, 0x002134], + [0x00213C, 0x00213F], + [0x002145, 0x002149], + [0x002183, 0x002184], + [0x002C00, 0x002C7B], + [0x002C7E, 0x002CE4], + [0x002CEB, 0x002CEE], + [0x002CF2, 0x002CF3], + [0x002D00, 0x002D25], + [0x00A640, 0x00A66D], + [0x00A680, 0x00A69B], + [0x00A722, 0x00A76F], + [0x00A771, 0x00A787], + [0x00A78B, 0x00A78E], + [0x00A790, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F5, 0x00A7F6], + [0x00AB30, 0x00AB5A], + [0x00AB60, 0x00AB68], + [0x00AB70, 0x00ABBF], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x010400, 0x01044F], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x0118A0, 0x0118DF], + [0x016E40, 0x016E7F], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7CB], + [0x01DF00, 0x01DF09], + [0x01DF0B, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E900, 0x01E943] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Cased_Letter}+$/u, + matchSymbols, + "\\p{General_Category=Cased_Letter}" +); +testPropertyEscapes( + /^\p{General_Category=LC}+$/u, + matchSymbols, + "\\p{General_Category=LC}" +); +testPropertyEscapes( + /^\p{gc=Cased_Letter}+$/u, + matchSymbols, + "\\p{gc=Cased_Letter}" +); +testPropertyEscapes( + /^\p{gc=LC}+$/u, + matchSymbols, + "\\p{gc=LC}" +); +testPropertyEscapes( + /^\p{Cased_Letter}+$/u, + matchSymbols, + "\\p{Cased_Letter}" +); +testPropertyEscapes( + /^\p{LC}+$/u, + matchSymbols, + "\\p{LC}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x0001BB, + 0x000294, + 0x00037E, + 0x000387, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x0003F6, + 0x000530, + 0x0010C6, + 0x001D78, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x00212E, + 0x002D26, + 0x00A770, + 0x00A78F, + 0x00A7D2, + 0x00A7D4, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3, + 0x01DF0A + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000B4], + [0x0000B6, 0x0000BF], + [0x0001C0, 0x0001C3], + [0x0002B0, 0x00036F], + [0x000374, 0x000375], + [0x000378, 0x00037A], + [0x000380, 0x000385], + [0x000482, 0x000489], + [0x000557, 0x00055F], + [0x000589, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x0010FB, 0x0010FC], + [0x001100, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001CFF], + [0x001D2C, 0x001D6A], + [0x001D9B, 0x001DFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FDC, 0x001FDF], + [0x001FED, 0x001FF1], + [0x001FFD, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002118], + [0x00211E, 0x002123], + [0x002135, 0x002138], + [0x00213A, 0x00213B], + [0x002140, 0x002144], + [0x00214A, 0x00214D], + [0x00214F, 0x002182], + [0x002185, 0x002BFF], + [0x002C7C, 0x002C7D], + [0x002CE5, 0x002CEA], + [0x002CEF, 0x002CF1], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x00A63F], + [0x00A66E, 0x00A67F], + [0x00A69C, 0x00A721], + [0x00A788, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F4], + [0x00A7F7, 0x00A7F9], + [0x00A7FB, 0x00AB2F], + [0x00AB5B, 0x00AB5F], + [0x00AB69, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x0103FF], + [0x010450, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x01056F], + [0x0105BD, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x01189F], + [0x0118E0, 0x016E3F], + [0x016E80, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01E8FF], + [0x01E944, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Cased_Letter}+$/u, + nonMatchSymbols, + "\\P{General_Category=Cased_Letter}" +); +testPropertyEscapes( + /^\P{General_Category=LC}+$/u, + nonMatchSymbols, + "\\P{General_Category=LC}" +); +testPropertyEscapes( + /^\P{gc=Cased_Letter}+$/u, + nonMatchSymbols, + "\\P{gc=Cased_Letter}" +); +testPropertyEscapes( + /^\P{gc=LC}+$/u, + nonMatchSymbols, + "\\P{gc=LC}" +); +testPropertyEscapes( + /^\P{Cased_Letter}+$/u, + nonMatchSymbols, + "\\P{Cased_Letter}" +); +testPropertyEscapes( + /^\P{LC}+$/u, + nonMatchSymbols, + "\\P{LC}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js new file mode 100644 index 0000000000..cc6c4ac2bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Close_Punctuation.js @@ -0,0 +1,245 @@ +// Copyright 2022 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 for `General_Category=Close_Punctuation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000029, + 0x00005D, + 0x00007D, + 0x000F3B, + 0x000F3D, + 0x00169C, + 0x002046, + 0x00207E, + 0x00208E, + 0x002309, + 0x00230B, + 0x00232A, + 0x002769, + 0x00276B, + 0x00276D, + 0x00276F, + 0x002771, + 0x002773, + 0x002775, + 0x0027C6, + 0x0027E7, + 0x0027E9, + 0x0027EB, + 0x0027ED, + 0x0027EF, + 0x002984, + 0x002986, + 0x002988, + 0x00298A, + 0x00298C, + 0x00298E, + 0x002990, + 0x002992, + 0x002994, + 0x002996, + 0x002998, + 0x0029D9, + 0x0029DB, + 0x0029FD, + 0x002E23, + 0x002E25, + 0x002E27, + 0x002E29, + 0x002E56, + 0x002E58, + 0x002E5A, + 0x002E5C, + 0x003009, + 0x00300B, + 0x00300D, + 0x00300F, + 0x003011, + 0x003015, + 0x003017, + 0x003019, + 0x00301B, + 0x00FD3E, + 0x00FE18, + 0x00FE36, + 0x00FE38, + 0x00FE3A, + 0x00FE3C, + 0x00FE3E, + 0x00FE40, + 0x00FE42, + 0x00FE44, + 0x00FE48, + 0x00FE5A, + 0x00FE5C, + 0x00FE5E, + 0x00FF09, + 0x00FF3D, + 0x00FF5D, + 0x00FF60, + 0x00FF63 + ], + ranges: [ + [0x00301E, 0x00301F] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Close_Punctuation}+$/u, + matchSymbols, + "\\p{General_Category=Close_Punctuation}" +); +testPropertyEscapes( + /^\p{General_Category=Pe}+$/u, + matchSymbols, + "\\p{General_Category=Pe}" +); +testPropertyEscapes( + /^\p{gc=Close_Punctuation}+$/u, + matchSymbols, + "\\p{gc=Close_Punctuation}" +); +testPropertyEscapes( + /^\p{gc=Pe}+$/u, + matchSymbols, + "\\p{gc=Pe}" +); +testPropertyEscapes( + /^\p{Close_Punctuation}+$/u, + matchSymbols, + "\\p{Close_Punctuation}" +); +testPropertyEscapes( + /^\p{Pe}+$/u, + matchSymbols, + "\\p{Pe}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000F3C, + 0x00230A, + 0x00276A, + 0x00276C, + 0x00276E, + 0x002770, + 0x002772, + 0x002774, + 0x0027E8, + 0x0027EA, + 0x0027EC, + 0x0027EE, + 0x002985, + 0x002987, + 0x002989, + 0x00298B, + 0x00298D, + 0x00298F, + 0x002991, + 0x002993, + 0x002995, + 0x002997, + 0x0029DA, + 0x002E24, + 0x002E26, + 0x002E28, + 0x002E57, + 0x002E59, + 0x002E5B, + 0x00300A, + 0x00300C, + 0x00300E, + 0x003010, + 0x003016, + 0x003018, + 0x00301A, + 0x00FE37, + 0x00FE39, + 0x00FE3B, + 0x00FE3D, + 0x00FE3F, + 0x00FE41, + 0x00FE43, + 0x00FE5B, + 0x00FE5D + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000028], + [0x00002A, 0x00005C], + [0x00005E, 0x00007C], + [0x00007E, 0x000F3A], + [0x000F3E, 0x00169B], + [0x00169D, 0x002045], + [0x002047, 0x00207D], + [0x00207F, 0x00208D], + [0x00208F, 0x002308], + [0x00230C, 0x002329], + [0x00232B, 0x002768], + [0x002776, 0x0027C5], + [0x0027C7, 0x0027E6], + [0x0027F0, 0x002983], + [0x002999, 0x0029D8], + [0x0029DC, 0x0029FC], + [0x0029FE, 0x002E22], + [0x002E2A, 0x002E55], + [0x002E5D, 0x003008], + [0x003012, 0x003014], + [0x00301C, 0x00301D], + [0x003020, 0x00DBFF], + [0x00E000, 0x00FD3D], + [0x00FD3F, 0x00FE17], + [0x00FE19, 0x00FE35], + [0x00FE45, 0x00FE47], + [0x00FE49, 0x00FE59], + [0x00FE5F, 0x00FF08], + [0x00FF0A, 0x00FF3C], + [0x00FF3E, 0x00FF5C], + [0x00FF5E, 0x00FF5F], + [0x00FF61, 0x00FF62], + [0x00FF64, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Close_Punctuation}+$/u, + nonMatchSymbols, + "\\P{General_Category=Close_Punctuation}" +); +testPropertyEscapes( + /^\P{General_Category=Pe}+$/u, + nonMatchSymbols, + "\\P{General_Category=Pe}" +); +testPropertyEscapes( + /^\P{gc=Close_Punctuation}+$/u, + nonMatchSymbols, + "\\P{gc=Close_Punctuation}" +); +testPropertyEscapes( + /^\P{gc=Pe}+$/u, + nonMatchSymbols, + "\\P{gc=Pe}" +); +testPropertyEscapes( + /^\P{Close_Punctuation}+$/u, + nonMatchSymbols, + "\\P{Close_Punctuation}" +); +testPropertyEscapes( + /^\P{Pe}+$/u, + nonMatchSymbols, + "\\P{Pe}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js new file mode 100644 index 0000000000..09d9f63e6b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Connector_Punctuation.js @@ -0,0 +1,104 @@ +// Copyright 2022 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 for `General_Category=Connector_Punctuation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00005F, + 0x002054, + 0x00FF3F + ], + ranges: [ + [0x00203F, 0x002040], + [0x00FE33, 0x00FE34], + [0x00FE4D, 0x00FE4F] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Connector_Punctuation}+$/u, + matchSymbols, + "\\p{General_Category=Connector_Punctuation}" +); +testPropertyEscapes( + /^\p{General_Category=Pc}+$/u, + matchSymbols, + "\\p{General_Category=Pc}" +); +testPropertyEscapes( + /^\p{gc=Connector_Punctuation}+$/u, + matchSymbols, + "\\p{gc=Connector_Punctuation}" +); +testPropertyEscapes( + /^\p{gc=Pc}+$/u, + matchSymbols, + "\\p{gc=Pc}" +); +testPropertyEscapes( + /^\p{Connector_Punctuation}+$/u, + matchSymbols, + "\\p{Connector_Punctuation}" +); +testPropertyEscapes( + /^\p{Pc}+$/u, + matchSymbols, + "\\p{Pc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00005E], + [0x000060, 0x00203E], + [0x002041, 0x002053], + [0x002055, 0x00DBFF], + [0x00E000, 0x00FE32], + [0x00FE35, 0x00FE4C], + [0x00FE50, 0x00FF3E], + [0x00FF40, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Connector_Punctuation}+$/u, + nonMatchSymbols, + "\\P{General_Category=Connector_Punctuation}" +); +testPropertyEscapes( + /^\P{General_Category=Pc}+$/u, + nonMatchSymbols, + "\\P{General_Category=Pc}" +); +testPropertyEscapes( + /^\P{gc=Connector_Punctuation}+$/u, + nonMatchSymbols, + "\\P{gc=Connector_Punctuation}" +); +testPropertyEscapes( + /^\P{gc=Pc}+$/u, + nonMatchSymbols, + "\\P{gc=Pc}" +); +testPropertyEscapes( + /^\P{Connector_Punctuation}+$/u, + nonMatchSymbols, + "\\P{Connector_Punctuation}" +); +testPropertyEscapes( + /^\P{Pc}+$/u, + nonMatchSymbols, + "\\P{Pc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js new file mode 100644 index 0000000000..830e4e3e01 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Control.js @@ -0,0 +1,124 @@ +// Copyright 2022 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 for `General_Category=Control` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000000, 0x00001F], + [0x00007F, 0x00009F] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Control}+$/u, + matchSymbols, + "\\p{General_Category=Control}" +); +testPropertyEscapes( + /^\p{General_Category=Cc}+$/u, + matchSymbols, + "\\p{General_Category=Cc}" +); +testPropertyEscapes( + /^\p{General_Category=cntrl}+$/u, + matchSymbols, + "\\p{General_Category=cntrl}" +); +testPropertyEscapes( + /^\p{gc=Control}+$/u, + matchSymbols, + "\\p{gc=Control}" +); +testPropertyEscapes( + /^\p{gc=Cc}+$/u, + matchSymbols, + "\\p{gc=Cc}" +); +testPropertyEscapes( + /^\p{gc=cntrl}+$/u, + matchSymbols, + "\\p{gc=cntrl}" +); +testPropertyEscapes( + /^\p{Control}+$/u, + matchSymbols, + "\\p{Control}" +); +testPropertyEscapes( + /^\p{Cc}+$/u, + matchSymbols, + "\\p{Cc}" +); +testPropertyEscapes( + /^\p{cntrl}+$/u, + matchSymbols, + "\\p{cntrl}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000020, 0x00007E], + [0x0000A0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Control}+$/u, + nonMatchSymbols, + "\\P{General_Category=Control}" +); +testPropertyEscapes( + /^\P{General_Category=Cc}+$/u, + nonMatchSymbols, + "\\P{General_Category=Cc}" +); +testPropertyEscapes( + /^\P{General_Category=cntrl}+$/u, + nonMatchSymbols, + "\\P{General_Category=cntrl}" +); +testPropertyEscapes( + /^\P{gc=Control}+$/u, + nonMatchSymbols, + "\\P{gc=Control}" +); +testPropertyEscapes( + /^\P{gc=Cc}+$/u, + nonMatchSymbols, + "\\P{gc=Cc}" +); +testPropertyEscapes( + /^\P{gc=cntrl}+$/u, + nonMatchSymbols, + "\\P{gc=cntrl}" +); +testPropertyEscapes( + /^\P{Control}+$/u, + nonMatchSymbols, + "\\P{Control}" +); +testPropertyEscapes( + /^\P{Cc}+$/u, + nonMatchSymbols, + "\\P{Cc}" +); +testPropertyEscapes( + /^\P{cntrl}+$/u, + nonMatchSymbols, + "\\P{cntrl}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js new file mode 100644 index 0000000000..692b589fa8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Currency_Symbol.js @@ -0,0 +1,134 @@ +// Copyright 2022 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 for `General_Category=Currency_Symbol` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000024, + 0x00058F, + 0x00060B, + 0x0009FB, + 0x000AF1, + 0x000BF9, + 0x000E3F, + 0x0017DB, + 0x00A838, + 0x00FDFC, + 0x00FE69, + 0x00FF04, + 0x01E2FF, + 0x01ECB0 + ], + ranges: [ + [0x0000A2, 0x0000A5], + [0x0007FE, 0x0007FF], + [0x0009F2, 0x0009F3], + [0x0020A0, 0x0020C0], + [0x00FFE0, 0x00FFE1], + [0x00FFE5, 0x00FFE6], + [0x011FDD, 0x011FE0] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Currency_Symbol}+$/u, + matchSymbols, + "\\p{General_Category=Currency_Symbol}" +); +testPropertyEscapes( + /^\p{General_Category=Sc}+$/u, + matchSymbols, + "\\p{General_Category=Sc}" +); +testPropertyEscapes( + /^\p{gc=Currency_Symbol}+$/u, + matchSymbols, + "\\p{gc=Currency_Symbol}" +); +testPropertyEscapes( + /^\p{gc=Sc}+$/u, + matchSymbols, + "\\p{gc=Sc}" +); +testPropertyEscapes( + /^\p{Currency_Symbol}+$/u, + matchSymbols, + "\\p{Currency_Symbol}" +); +testPropertyEscapes( + /^\p{Sc}+$/u, + matchSymbols, + "\\p{Sc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000023], + [0x000025, 0x0000A1], + [0x0000A6, 0x00058E], + [0x000590, 0x00060A], + [0x00060C, 0x0007FD], + [0x000800, 0x0009F1], + [0x0009F4, 0x0009FA], + [0x0009FC, 0x000AF0], + [0x000AF2, 0x000BF8], + [0x000BFA, 0x000E3E], + [0x000E40, 0x0017DA], + [0x0017DC, 0x00209F], + [0x0020C1, 0x00A837], + [0x00A839, 0x00DBFF], + [0x00E000, 0x00FDFB], + [0x00FDFD, 0x00FE68], + [0x00FE6A, 0x00FF03], + [0x00FF05, 0x00FFDF], + [0x00FFE2, 0x00FFE4], + [0x00FFE7, 0x011FDC], + [0x011FE1, 0x01E2FE], + [0x01E300, 0x01ECAF], + [0x01ECB1, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Currency_Symbol}+$/u, + nonMatchSymbols, + "\\P{General_Category=Currency_Symbol}" +); +testPropertyEscapes( + /^\P{General_Category=Sc}+$/u, + nonMatchSymbols, + "\\P{General_Category=Sc}" +); +testPropertyEscapes( + /^\P{gc=Currency_Symbol}+$/u, + nonMatchSymbols, + "\\P{gc=Currency_Symbol}" +); +testPropertyEscapes( + /^\P{gc=Sc}+$/u, + nonMatchSymbols, + "\\P{gc=Sc}" +); +testPropertyEscapes( + /^\P{Currency_Symbol}+$/u, + nonMatchSymbols, + "\\P{Currency_Symbol}" +); +testPropertyEscapes( + /^\P{Sc}+$/u, + nonMatchSymbols, + "\\P{Sc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js new file mode 100644 index 0000000000..7ea1218edb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Dash_Punctuation.js @@ -0,0 +1,130 @@ +// Copyright 2022 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 for `General_Category=Dash_Punctuation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00002D, + 0x00058A, + 0x0005BE, + 0x001400, + 0x001806, + 0x002E17, + 0x002E1A, + 0x002E40, + 0x002E5D, + 0x00301C, + 0x003030, + 0x0030A0, + 0x00FE58, + 0x00FE63, + 0x00FF0D, + 0x010EAD + ], + ranges: [ + [0x002010, 0x002015], + [0x002E3A, 0x002E3B], + [0x00FE31, 0x00FE32] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Dash_Punctuation}+$/u, + matchSymbols, + "\\p{General_Category=Dash_Punctuation}" +); +testPropertyEscapes( + /^\p{General_Category=Pd}+$/u, + matchSymbols, + "\\p{General_Category=Pd}" +); +testPropertyEscapes( + /^\p{gc=Dash_Punctuation}+$/u, + matchSymbols, + "\\p{gc=Dash_Punctuation}" +); +testPropertyEscapes( + /^\p{gc=Pd}+$/u, + matchSymbols, + "\\p{gc=Pd}" +); +testPropertyEscapes( + /^\p{Dash_Punctuation}+$/u, + matchSymbols, + "\\p{Dash_Punctuation}" +); +testPropertyEscapes( + /^\p{Pd}+$/u, + matchSymbols, + "\\p{Pd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002C], + [0x00002E, 0x000589], + [0x00058B, 0x0005BD], + [0x0005BF, 0x0013FF], + [0x001401, 0x001805], + [0x001807, 0x00200F], + [0x002016, 0x002E16], + [0x002E18, 0x002E19], + [0x002E1B, 0x002E39], + [0x002E3C, 0x002E3F], + [0x002E41, 0x002E5C], + [0x002E5E, 0x00301B], + [0x00301D, 0x00302F], + [0x003031, 0x00309F], + [0x0030A1, 0x00DBFF], + [0x00E000, 0x00FE30], + [0x00FE33, 0x00FE57], + [0x00FE59, 0x00FE62], + [0x00FE64, 0x00FF0C], + [0x00FF0E, 0x010EAC], + [0x010EAE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Dash_Punctuation}+$/u, + nonMatchSymbols, + "\\P{General_Category=Dash_Punctuation}" +); +testPropertyEscapes( + /^\P{General_Category=Pd}+$/u, + nonMatchSymbols, + "\\P{General_Category=Pd}" +); +testPropertyEscapes( + /^\P{gc=Dash_Punctuation}+$/u, + nonMatchSymbols, + "\\P{gc=Dash_Punctuation}" +); +testPropertyEscapes( + /^\P{gc=Pd}+$/u, + nonMatchSymbols, + "\\P{gc=Pd}" +); +testPropertyEscapes( + /^\P{Dash_Punctuation}+$/u, + nonMatchSymbols, + "\\P{Dash_Punctuation}" +); +testPropertyEscapes( + /^\P{Pd}+$/u, + nonMatchSymbols, + "\\P{Pd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js new file mode 100644 index 0000000000..4f7829fc14 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Decimal_Number.js @@ -0,0 +1,249 @@ +// Copyright 2022 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 for `General_Category=Decimal_Number` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000030, 0x000039], + [0x000660, 0x000669], + [0x0006F0, 0x0006F9], + [0x0007C0, 0x0007C9], + [0x000966, 0x00096F], + [0x0009E6, 0x0009EF], + [0x000A66, 0x000A6F], + [0x000AE6, 0x000AEF], + [0x000B66, 0x000B6F], + [0x000BE6, 0x000BEF], + [0x000C66, 0x000C6F], + [0x000CE6, 0x000CEF], + [0x000D66, 0x000D6F], + [0x000DE6, 0x000DEF], + [0x000E50, 0x000E59], + [0x000ED0, 0x000ED9], + [0x000F20, 0x000F29], + [0x001040, 0x001049], + [0x001090, 0x001099], + [0x0017E0, 0x0017E9], + [0x001810, 0x001819], + [0x001946, 0x00194F], + [0x0019D0, 0x0019D9], + [0x001A80, 0x001A89], + [0x001A90, 0x001A99], + [0x001B50, 0x001B59], + [0x001BB0, 0x001BB9], + [0x001C40, 0x001C49], + [0x001C50, 0x001C59], + [0x00A620, 0x00A629], + [0x00A8D0, 0x00A8D9], + [0x00A900, 0x00A909], + [0x00A9D0, 0x00A9D9], + [0x00A9F0, 0x00A9F9], + [0x00AA50, 0x00AA59], + [0x00ABF0, 0x00ABF9], + [0x00FF10, 0x00FF19], + [0x0104A0, 0x0104A9], + [0x010D30, 0x010D39], + [0x011066, 0x01106F], + [0x0110F0, 0x0110F9], + [0x011136, 0x01113F], + [0x0111D0, 0x0111D9], + [0x0112F0, 0x0112F9], + [0x011450, 0x011459], + [0x0114D0, 0x0114D9], + [0x011650, 0x011659], + [0x0116C0, 0x0116C9], + [0x011730, 0x011739], + [0x0118E0, 0x0118E9], + [0x011950, 0x011959], + [0x011C50, 0x011C59], + [0x011D50, 0x011D59], + [0x011DA0, 0x011DA9], + [0x011F50, 0x011F59], + [0x016A60, 0x016A69], + [0x016AC0, 0x016AC9], + [0x016B50, 0x016B59], + [0x01D7CE, 0x01D7FF], + [0x01E140, 0x01E149], + [0x01E2F0, 0x01E2F9], + [0x01E4F0, 0x01E4F9], + [0x01E950, 0x01E959], + [0x01FBF0, 0x01FBF9] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Decimal_Number}+$/u, + matchSymbols, + "\\p{General_Category=Decimal_Number}" +); +testPropertyEscapes( + /^\p{General_Category=Nd}+$/u, + matchSymbols, + "\\p{General_Category=Nd}" +); +testPropertyEscapes( + /^\p{General_Category=digit}+$/u, + matchSymbols, + "\\p{General_Category=digit}" +); +testPropertyEscapes( + /^\p{gc=Decimal_Number}+$/u, + matchSymbols, + "\\p{gc=Decimal_Number}" +); +testPropertyEscapes( + /^\p{gc=Nd}+$/u, + matchSymbols, + "\\p{gc=Nd}" +); +testPropertyEscapes( + /^\p{gc=digit}+$/u, + matchSymbols, + "\\p{gc=digit}" +); +testPropertyEscapes( + /^\p{Decimal_Number}+$/u, + matchSymbols, + "\\p{Decimal_Number}" +); +testPropertyEscapes( + /^\p{Nd}+$/u, + matchSymbols, + "\\p{Nd}" +); +testPropertyEscapes( + /^\p{digit}+$/u, + matchSymbols, + "\\p{digit}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x00065F], + [0x00066A, 0x0006EF], + [0x0006FA, 0x0007BF], + [0x0007CA, 0x000965], + [0x000970, 0x0009E5], + [0x0009F0, 0x000A65], + [0x000A70, 0x000AE5], + [0x000AF0, 0x000B65], + [0x000B70, 0x000BE5], + [0x000BF0, 0x000C65], + [0x000C70, 0x000CE5], + [0x000CF0, 0x000D65], + [0x000D70, 0x000DE5], + [0x000DF0, 0x000E4F], + [0x000E5A, 0x000ECF], + [0x000EDA, 0x000F1F], + [0x000F2A, 0x00103F], + [0x00104A, 0x00108F], + [0x00109A, 0x0017DF], + [0x0017EA, 0x00180F], + [0x00181A, 0x001945], + [0x001950, 0x0019CF], + [0x0019DA, 0x001A7F], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001B4F], + [0x001B5A, 0x001BAF], + [0x001BBA, 0x001C3F], + [0x001C4A, 0x001C4F], + [0x001C5A, 0x00A61F], + [0x00A62A, 0x00A8CF], + [0x00A8DA, 0x00A8FF], + [0x00A90A, 0x00A9CF], + [0x00A9DA, 0x00A9EF], + [0x00A9FA, 0x00AA4F], + [0x00AA5A, 0x00ABEF], + [0x00ABFA, 0x00DBFF], + [0x00E000, 0x00FF0F], + [0x00FF1A, 0x01049F], + [0x0104AA, 0x010D2F], + [0x010D3A, 0x011065], + [0x011070, 0x0110EF], + [0x0110FA, 0x011135], + [0x011140, 0x0111CF], + [0x0111DA, 0x0112EF], + [0x0112FA, 0x01144F], + [0x01145A, 0x0114CF], + [0x0114DA, 0x01164F], + [0x01165A, 0x0116BF], + [0x0116CA, 0x01172F], + [0x01173A, 0x0118DF], + [0x0118EA, 0x01194F], + [0x01195A, 0x011C4F], + [0x011C5A, 0x011D4F], + [0x011D5A, 0x011D9F], + [0x011DAA, 0x011F4F], + [0x011F5A, 0x016A5F], + [0x016A6A, 0x016ABF], + [0x016ACA, 0x016B4F], + [0x016B5A, 0x01D7CD], + [0x01D800, 0x01E13F], + [0x01E14A, 0x01E2EF], + [0x01E2FA, 0x01E4EF], + [0x01E4FA, 0x01E94F], + [0x01E95A, 0x01FBEF], + [0x01FBFA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Decimal_Number}+$/u, + nonMatchSymbols, + "\\P{General_Category=Decimal_Number}" +); +testPropertyEscapes( + /^\P{General_Category=Nd}+$/u, + nonMatchSymbols, + "\\P{General_Category=Nd}" +); +testPropertyEscapes( + /^\P{General_Category=digit}+$/u, + nonMatchSymbols, + "\\P{General_Category=digit}" +); +testPropertyEscapes( + /^\P{gc=Decimal_Number}+$/u, + nonMatchSymbols, + "\\P{gc=Decimal_Number}" +); +testPropertyEscapes( + /^\P{gc=Nd}+$/u, + nonMatchSymbols, + "\\P{gc=Nd}" +); +testPropertyEscapes( + /^\P{gc=digit}+$/u, + nonMatchSymbols, + "\\P{gc=digit}" +); +testPropertyEscapes( + /^\P{Decimal_Number}+$/u, + nonMatchSymbols, + "\\P{Decimal_Number}" +); +testPropertyEscapes( + /^\P{Nd}+$/u, + nonMatchSymbols, + "\\P{Nd}" +); +testPropertyEscapes( + /^\P{digit}+$/u, + nonMatchSymbols, + "\\P{digit}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js new file mode 100644 index 0000000000..eed7b242d5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Enclosing_Mark.js @@ -0,0 +1,103 @@ +// Copyright 2022 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 for `General_Category=Enclosing_Mark` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001ABE + ], + ranges: [ + [0x000488, 0x000489], + [0x0020DD, 0x0020E0], + [0x0020E2, 0x0020E4], + [0x00A670, 0x00A672] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Enclosing_Mark}+$/u, + matchSymbols, + "\\p{General_Category=Enclosing_Mark}" +); +testPropertyEscapes( + /^\p{General_Category=Me}+$/u, + matchSymbols, + "\\p{General_Category=Me}" +); +testPropertyEscapes( + /^\p{gc=Enclosing_Mark}+$/u, + matchSymbols, + "\\p{gc=Enclosing_Mark}" +); +testPropertyEscapes( + /^\p{gc=Me}+$/u, + matchSymbols, + "\\p{gc=Me}" +); +testPropertyEscapes( + /^\p{Enclosing_Mark}+$/u, + matchSymbols, + "\\p{Enclosing_Mark}" +); +testPropertyEscapes( + /^\p{Me}+$/u, + matchSymbols, + "\\p{Me}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0020E1 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000487], + [0x00048A, 0x001ABD], + [0x001ABF, 0x0020DC], + [0x0020E5, 0x00A66F], + [0x00A673, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Enclosing_Mark}+$/u, + nonMatchSymbols, + "\\P{General_Category=Enclosing_Mark}" +); +testPropertyEscapes( + /^\P{General_Category=Me}+$/u, + nonMatchSymbols, + "\\P{General_Category=Me}" +); +testPropertyEscapes( + /^\P{gc=Enclosing_Mark}+$/u, + nonMatchSymbols, + "\\P{gc=Enclosing_Mark}" +); +testPropertyEscapes( + /^\P{gc=Me}+$/u, + nonMatchSymbols, + "\\P{gc=Me}" +); +testPropertyEscapes( + /^\P{Enclosing_Mark}+$/u, + nonMatchSymbols, + "\\P{Enclosing_Mark}" +); +testPropertyEscapes( + /^\P{Me}+$/u, + nonMatchSymbols, + "\\P{Me}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js new file mode 100644 index 0000000000..6df4891851 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Final_Punctuation.js @@ -0,0 +1,112 @@ +// Copyright 2022 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 for `General_Category=Final_Punctuation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000BB, + 0x002019, + 0x00201D, + 0x00203A, + 0x002E03, + 0x002E05, + 0x002E0A, + 0x002E0D, + 0x002E1D, + 0x002E21 + ], + ranges: [] +}); +testPropertyEscapes( + /^\p{General_Category=Final_Punctuation}+$/u, + matchSymbols, + "\\p{General_Category=Final_Punctuation}" +); +testPropertyEscapes( + /^\p{General_Category=Pf}+$/u, + matchSymbols, + "\\p{General_Category=Pf}" +); +testPropertyEscapes( + /^\p{gc=Final_Punctuation}+$/u, + matchSymbols, + "\\p{gc=Final_Punctuation}" +); +testPropertyEscapes( + /^\p{gc=Pf}+$/u, + matchSymbols, + "\\p{gc=Pf}" +); +testPropertyEscapes( + /^\p{Final_Punctuation}+$/u, + matchSymbols, + "\\p{Final_Punctuation}" +); +testPropertyEscapes( + /^\p{Pf}+$/u, + matchSymbols, + "\\p{Pf}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x002E04 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0000BA], + [0x0000BC, 0x002018], + [0x00201A, 0x00201C], + [0x00201E, 0x002039], + [0x00203B, 0x002E02], + [0x002E06, 0x002E09], + [0x002E0B, 0x002E0C], + [0x002E0E, 0x002E1C], + [0x002E1E, 0x002E20], + [0x002E22, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Final_Punctuation}+$/u, + nonMatchSymbols, + "\\P{General_Category=Final_Punctuation}" +); +testPropertyEscapes( + /^\P{General_Category=Pf}+$/u, + nonMatchSymbols, + "\\P{General_Category=Pf}" +); +testPropertyEscapes( + /^\P{gc=Final_Punctuation}+$/u, + nonMatchSymbols, + "\\P{gc=Final_Punctuation}" +); +testPropertyEscapes( + /^\P{gc=Pf}+$/u, + nonMatchSymbols, + "\\P{gc=Pf}" +); +testPropertyEscapes( + /^\P{Final_Punctuation}+$/u, + nonMatchSymbols, + "\\P{Final_Punctuation}" +); +testPropertyEscapes( + /^\P{Pf}+$/u, + nonMatchSymbols, + "\\P{Pf}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js new file mode 100644 index 0000000000..918a6bc99c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Format.js @@ -0,0 +1,135 @@ +// Copyright 2022 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 for `General_Category=Format` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AD, + 0x00061C, + 0x0006DD, + 0x00070F, + 0x0008E2, + 0x00180E, + 0x00FEFF, + 0x0110BD, + 0x0110CD, + 0x0E0001 + ], + ranges: [ + [0x000600, 0x000605], + [0x000890, 0x000891], + [0x00200B, 0x00200F], + [0x00202A, 0x00202E], + [0x002060, 0x002064], + [0x002066, 0x00206F], + [0x00FFF9, 0x00FFFB], + [0x013430, 0x01343F], + [0x01BCA0, 0x01BCA3], + [0x01D173, 0x01D17A], + [0x0E0020, 0x0E007F] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Format}+$/u, + matchSymbols, + "\\p{General_Category=Format}" +); +testPropertyEscapes( + /^\p{General_Category=Cf}+$/u, + matchSymbols, + "\\p{General_Category=Cf}" +); +testPropertyEscapes( + /^\p{gc=Format}+$/u, + matchSymbols, + "\\p{gc=Format}" +); +testPropertyEscapes( + /^\p{gc=Cf}+$/u, + matchSymbols, + "\\p{gc=Cf}" +); +testPropertyEscapes( + /^\p{Format}+$/u, + matchSymbols, + "\\p{Format}" +); +testPropertyEscapes( + /^\p{Cf}+$/u, + matchSymbols, + "\\p{Cf}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x002065 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0000AC], + [0x0000AE, 0x0005FF], + [0x000606, 0x00061B], + [0x00061D, 0x0006DC], + [0x0006DE, 0x00070E], + [0x000710, 0x00088F], + [0x000892, 0x0008E1], + [0x0008E3, 0x00180D], + [0x00180F, 0x00200A], + [0x002010, 0x002029], + [0x00202F, 0x00205F], + [0x002070, 0x00DBFF], + [0x00E000, 0x00FEFE], + [0x00FF00, 0x00FFF8], + [0x00FFFC, 0x0110BC], + [0x0110BE, 0x0110CC], + [0x0110CE, 0x01342F], + [0x013440, 0x01BC9F], + [0x01BCA4, 0x01D172], + [0x01D17B, 0x0E0000], + [0x0E0002, 0x0E001F], + [0x0E0080, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Format}+$/u, + nonMatchSymbols, + "\\P{General_Category=Format}" +); +testPropertyEscapes( + /^\P{General_Category=Cf}+$/u, + nonMatchSymbols, + "\\P{General_Category=Cf}" +); +testPropertyEscapes( + /^\P{gc=Format}+$/u, + nonMatchSymbols, + "\\P{gc=Format}" +); +testPropertyEscapes( + /^\P{gc=Cf}+$/u, + nonMatchSymbols, + "\\P{gc=Cf}" +); +testPropertyEscapes( + /^\P{Format}+$/u, + nonMatchSymbols, + "\\P{Format}" +); +testPropertyEscapes( + /^\P{Cf}+$/u, + nonMatchSymbols, + "\\P{Cf}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js new file mode 100644 index 0000000000..98287d82bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Initial_Punctuation.js @@ -0,0 +1,115 @@ +// Copyright 2022 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 for `General_Category=Initial_Punctuation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AB, + 0x002018, + 0x00201F, + 0x002039, + 0x002E02, + 0x002E04, + 0x002E09, + 0x002E0C, + 0x002E1C, + 0x002E20 + ], + ranges: [ + [0x00201B, 0x00201C] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Initial_Punctuation}+$/u, + matchSymbols, + "\\p{General_Category=Initial_Punctuation}" +); +testPropertyEscapes( + /^\p{General_Category=Pi}+$/u, + matchSymbols, + "\\p{General_Category=Pi}" +); +testPropertyEscapes( + /^\p{gc=Initial_Punctuation}+$/u, + matchSymbols, + "\\p{gc=Initial_Punctuation}" +); +testPropertyEscapes( + /^\p{gc=Pi}+$/u, + matchSymbols, + "\\p{gc=Pi}" +); +testPropertyEscapes( + /^\p{Initial_Punctuation}+$/u, + matchSymbols, + "\\p{Initial_Punctuation}" +); +testPropertyEscapes( + /^\p{Pi}+$/u, + matchSymbols, + "\\p{Pi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x002E03 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0000AA], + [0x0000AC, 0x002017], + [0x002019, 0x00201A], + [0x00201D, 0x00201E], + [0x002020, 0x002038], + [0x00203A, 0x002E01], + [0x002E05, 0x002E08], + [0x002E0A, 0x002E0B], + [0x002E0D, 0x002E1B], + [0x002E1D, 0x002E1F], + [0x002E21, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Initial_Punctuation}+$/u, + nonMatchSymbols, + "\\P{General_Category=Initial_Punctuation}" +); +testPropertyEscapes( + /^\P{General_Category=Pi}+$/u, + nonMatchSymbols, + "\\P{General_Category=Pi}" +); +testPropertyEscapes( + /^\P{gc=Initial_Punctuation}+$/u, + nonMatchSymbols, + "\\P{gc=Initial_Punctuation}" +); +testPropertyEscapes( + /^\P{gc=Pi}+$/u, + nonMatchSymbols, + "\\P{gc=Pi}" +); +testPropertyEscapes( + /^\P{Initial_Punctuation}+$/u, + nonMatchSymbols, + "\\P{Initial_Punctuation}" +); +testPropertyEscapes( + /^\P{Pi}+$/u, + nonMatchSymbols, + "\\P{Pi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js new file mode 100644 index 0000000000..02ac0d31f1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter.js @@ -0,0 +1,1411 @@ +// Copyright 2022 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 for `General_Category=Letter` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000B5, + 0x0000BA, + 0x0002EC, + 0x0002EE, + 0x00037F, + 0x000386, + 0x00038C, + 0x000559, + 0x0006D5, + 0x0006FF, + 0x000710, + 0x0007B1, + 0x0007FA, + 0x00081A, + 0x000824, + 0x000828, + 0x00093D, + 0x000950, + 0x0009B2, + 0x0009BD, + 0x0009CE, + 0x0009FC, + 0x000A5E, + 0x000ABD, + 0x000AD0, + 0x000AF9, + 0x000B3D, + 0x000B71, + 0x000B83, + 0x000B9C, + 0x000BD0, + 0x000C3D, + 0x000C5D, + 0x000C80, + 0x000CBD, + 0x000D3D, + 0x000D4E, + 0x000DBD, + 0x000E84, + 0x000EA5, + 0x000EBD, + 0x000EC6, + 0x000F00, + 0x00103F, + 0x001061, + 0x00108E, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x0017D7, + 0x0017DC, + 0x0018AA, + 0x001AA7, + 0x001CFA, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001FBE, + 0x002071, + 0x00207F, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x00214E, + 0x002D27, + 0x002D2D, + 0x002D6F, + 0x002E2F, + 0x00A7D3, + 0x00A8FB, + 0x00A9CF, + 0x00AA7A, + 0x00AAB1, + 0x00AAC0, + 0x00AAC2, + 0x00FB1D, + 0x00FB3E, + 0x010808, + 0x01083C, + 0x010A00, + 0x010F27, + 0x011075, + 0x011144, + 0x011147, + 0x011176, + 0x0111DA, + 0x0111DC, + 0x011288, + 0x01133D, + 0x011350, + 0x0114C7, + 0x011644, + 0x0116B8, + 0x011909, + 0x01193F, + 0x011941, + 0x0119E1, + 0x0119E3, + 0x011A00, + 0x011A3A, + 0x011A50, + 0x011A9D, + 0x011C40, + 0x011D46, + 0x011D98, + 0x011F02, + 0x011FB0, + 0x016F50, + 0x016FE3, + 0x01B132, + 0x01B155, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01E14E, + 0x01E94B, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002C1], + [0x0002C6, 0x0002D1], + [0x0002E0, 0x0002E4], + [0x000370, 0x000374], + [0x000376, 0x000377], + [0x00037A, 0x00037D], + [0x000388, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003F5], + [0x0003F7, 0x000481], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000560, 0x000588], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F2], + [0x000620, 0x00064A], + [0x00066E, 0x00066F], + [0x000671, 0x0006D3], + [0x0006E5, 0x0006E6], + [0x0006EE, 0x0006EF], + [0x0006FA, 0x0006FC], + [0x000712, 0x00072F], + [0x00074D, 0x0007A5], + [0x0007CA, 0x0007EA], + [0x0007F4, 0x0007F5], + [0x000800, 0x000815], + [0x000840, 0x000858], + [0x000860, 0x00086A], + [0x000870, 0x000887], + [0x000889, 0x00088E], + [0x0008A0, 0x0008C9], + [0x000904, 0x000939], + [0x000958, 0x000961], + [0x000971, 0x000980], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E1], + [0x0009F0, 0x0009F1], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A59, 0x000A5C], + [0x000A72, 0x000A74], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000AE0, 0x000AE1], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B61], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000C05, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C61], + [0x000C85, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE1], + [0x000CF1, 0x000CF2], + [0x000D04, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D3A], + [0x000D54, 0x000D56], + [0x000D5F, 0x000D61], + [0x000D7A, 0x000D7F], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000E01, 0x000E30], + [0x000E32, 0x000E33], + [0x000E40, 0x000E46], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EB0], + [0x000EB2, 0x000EB3], + [0x000EC0, 0x000EC4], + [0x000EDC, 0x000EDF], + [0x000F40, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F88, 0x000F8C], + [0x001000, 0x00102A], + [0x001050, 0x001055], + [0x00105A, 0x00105D], + [0x001065, 0x001066], + [0x00106E, 0x001070], + [0x001075, 0x001081], + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FC, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x001380, 0x00138F], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001401, 0x00166C], + [0x00166F, 0x00167F], + [0x001681, 0x00169A], + [0x0016A0, 0x0016EA], + [0x0016F1, 0x0016F8], + [0x001700, 0x001711], + [0x00171F, 0x001731], + [0x001740, 0x001751], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001780, 0x0017B3], + [0x001820, 0x001878], + [0x001880, 0x001884], + [0x001887, 0x0018A8], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001950, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x001A00, 0x001A16], + [0x001A20, 0x001A54], + [0x001B05, 0x001B33], + [0x001B45, 0x001B4C], + [0x001B83, 0x001BA0], + [0x001BAE, 0x001BAF], + [0x001BBA, 0x001BE5], + [0x001C00, 0x001C23], + [0x001C4D, 0x001C4F], + [0x001C5A, 0x001C7D], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF6], + [0x001D00, 0x001DBF], + [0x001E00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FCC], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FE0, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFC], + [0x002090, 0x00209C], + [0x00210A, 0x002113], + [0x002119, 0x00211D], + [0x00212A, 0x00212D], + [0x00212F, 0x002139], + [0x00213C, 0x00213F], + [0x002145, 0x002149], + [0x002183, 0x002184], + [0x002C00, 0x002CE4], + [0x002CEB, 0x002CEE], + [0x002CF2, 0x002CF3], + [0x002D00, 0x002D25], + [0x002D30, 0x002D67], + [0x002D80, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x003005, 0x003006], + [0x003031, 0x003035], + [0x00303B, 0x00303C], + [0x003041, 0x003096], + [0x00309D, 0x00309F], + [0x0030A1, 0x0030FA], + [0x0030FC, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x0031A0, 0x0031BF], + [0x0031F0, 0x0031FF], + [0x003400, 0x004DBF], + [0x004E00, 0x00A48C], + [0x00A4D0, 0x00A4FD], + [0x00A500, 0x00A60C], + [0x00A610, 0x00A61F], + [0x00A62A, 0x00A62B], + [0x00A640, 0x00A66E], + [0x00A67F, 0x00A69D], + [0x00A6A0, 0x00A6E5], + [0x00A717, 0x00A71F], + [0x00A722, 0x00A788], + [0x00A78B, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A801], + [0x00A803, 0x00A805], + [0x00A807, 0x00A80A], + [0x00A80C, 0x00A822], + [0x00A840, 0x00A873], + [0x00A882, 0x00A8B3], + [0x00A8F2, 0x00A8F7], + [0x00A8FD, 0x00A8FE], + [0x00A90A, 0x00A925], + [0x00A930, 0x00A946], + [0x00A960, 0x00A97C], + [0x00A984, 0x00A9B2], + [0x00A9E0, 0x00A9E4], + [0x00A9E6, 0x00A9EF], + [0x00A9FA, 0x00A9FE], + [0x00AA00, 0x00AA28], + [0x00AA40, 0x00AA42], + [0x00AA44, 0x00AA4B], + [0x00AA60, 0x00AA76], + [0x00AA7E, 0x00AAAF], + [0x00AAB5, 0x00AAB6], + [0x00AAB9, 0x00AABD], + [0x00AADB, 0x00AADD], + [0x00AAE0, 0x00AAEA], + [0x00AAF2, 0x00AAF4], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB70, 0x00ABE2], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1F, 0x00FB28], + [0x00FB2A, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBB1], + [0x00FBD3, 0x00FD3D], + [0x00FD50, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDFB], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x00FF66, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x010300, 0x01031F], + [0x01032D, 0x010340], + [0x010342, 0x010349], + [0x010350, 0x010375], + [0x010380, 0x01039D], + [0x0103A0, 0x0103C3], + [0x0103C8, 0x0103CF], + [0x010400, 0x01049D], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010860, 0x010876], + [0x010880, 0x01089E], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x010900, 0x010915], + [0x010920, 0x010939], + [0x010980, 0x0109B7], + [0x0109BE, 0x0109BF], + [0x010A10, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A60, 0x010A7C], + [0x010A80, 0x010A9C], + [0x010AC0, 0x010AC7], + [0x010AC9, 0x010AE4], + [0x010B00, 0x010B35], + [0x010B40, 0x010B55], + [0x010B60, 0x010B72], + [0x010B80, 0x010B91], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010D00, 0x010D23], + [0x010E80, 0x010EA9], + [0x010EB0, 0x010EB1], + [0x010F00, 0x010F1C], + [0x010F30, 0x010F45], + [0x010F70, 0x010F81], + [0x010FB0, 0x010FC4], + [0x010FE0, 0x010FF6], + [0x011003, 0x011037], + [0x011071, 0x011072], + [0x011083, 0x0110AF], + [0x0110D0, 0x0110E8], + [0x011103, 0x011126], + [0x011150, 0x011172], + [0x011183, 0x0111B2], + [0x0111C1, 0x0111C4], + [0x011200, 0x011211], + [0x011213, 0x01122B], + [0x01123F, 0x011240], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A8], + [0x0112B0, 0x0112DE], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01135D, 0x011361], + [0x011400, 0x011434], + [0x011447, 0x01144A], + [0x01145F, 0x011461], + [0x011480, 0x0114AF], + [0x0114C4, 0x0114C5], + [0x011580, 0x0115AE], + [0x0115D8, 0x0115DB], + [0x011600, 0x01162F], + [0x011680, 0x0116AA], + [0x011700, 0x01171A], + [0x011740, 0x011746], + [0x011800, 0x01182B], + [0x0118A0, 0x0118DF], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x01192F], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D0], + [0x011A0B, 0x011A32], + [0x011A5C, 0x011A89], + [0x011AB0, 0x011AF8], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C2E], + [0x011C72, 0x011C8F], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D30], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D89], + [0x011EE0, 0x011EF2], + [0x011F04, 0x011F10], + [0x011F12, 0x011F33], + [0x012000, 0x012399], + [0x012480, 0x012543], + [0x012F90, 0x012FF0], + [0x013000, 0x01342F], + [0x013441, 0x013446], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A70, 0x016ABE], + [0x016AD0, 0x016AED], + [0x016B00, 0x016B2F], + [0x016B40, 0x016B43], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E7F], + [0x016F00, 0x016F4A], + [0x016F93, 0x016F9F], + [0x016FE0, 0x016FE1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7CB], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E137, 0x01E13D], + [0x01E290, 0x01E2AD], + [0x01E2C0, 0x01E2EB], + [0x01E4D0, 0x01E4EB], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E900, 0x01E943], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Letter}+$/u, + matchSymbols, + "\\p{General_Category=Letter}" +); +testPropertyEscapes( + /^\p{General_Category=L}+$/u, + matchSymbols, + "\\p{General_Category=L}" +); +testPropertyEscapes( + /^\p{gc=Letter}+$/u, + matchSymbols, + "\\p{gc=Letter}" +); +testPropertyEscapes( + /^\p{gc=L}+$/u, + matchSymbols, + "\\p{gc=L}" +); +testPropertyEscapes( + /^\p{Letter}+$/u, + matchSymbols, + "\\p{Letter}" +); +testPropertyEscapes( + /^\p{L}+$/u, + matchSymbols, + "\\p{L}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x0002ED, + 0x000375, + 0x00037E, + 0x000387, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x0003F6, + 0x000530, + 0x000670, + 0x0006D4, + 0x000711, + 0x000888, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A5D, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CDF, + 0x000D0D, + 0x000D11, + 0x000DB2, + 0x000DBC, + 0x000E31, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EB1, + 0x000EC5, + 0x000F48, + 0x0010C6, + 0x0010FB, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x001680, + 0x00176D, + 0x0018A9, + 0x001CED, + 0x001CF4, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x00212E, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x0030A0, + 0x0030FB, + 0x003130, + 0x00A7D2, + 0x00A7D4, + 0x00A802, + 0x00A806, + 0x00A80B, + 0x00A8FC, + 0x00A9E5, + 0x00A9FF, + 0x00AA43, + 0x00AAB0, + 0x00AAC1, + 0x00AB27, + 0x00AB2F, + 0x00AB5B, + 0x00FB1E, + 0x00FB29, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE75, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x010341, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x0108F3, + 0x010A14, + 0x010A18, + 0x010AC8, + 0x0111DB, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011329, + 0x011331, + 0x011334, + 0x0114C6, + 0x011914, + 0x011917, + 0x011940, + 0x0119E2, + 0x011C09, + 0x011D07, + 0x011D0A, + 0x011D66, + 0x011D69, + 0x011F03, + 0x011F11, + 0x016FE2, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B4], + [0x0000B6, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002C2, 0x0002C5], + [0x0002D2, 0x0002DF], + [0x0002E5, 0x0002EB], + [0x0002EF, 0x00036F], + [0x000378, 0x000379], + [0x000380, 0x000385], + [0x000482, 0x000489], + [0x000557, 0x000558], + [0x00055A, 0x00055F], + [0x000589, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F3, 0x00061F], + [0x00064B, 0x00066D], + [0x0006D6, 0x0006E4], + [0x0006E7, 0x0006ED], + [0x0006F0, 0x0006F9], + [0x0006FD, 0x0006FE], + [0x000700, 0x00070F], + [0x000730, 0x00074C], + [0x0007A6, 0x0007B0], + [0x0007B2, 0x0007C9], + [0x0007EB, 0x0007F3], + [0x0007F6, 0x0007F9], + [0x0007FB, 0x0007FF], + [0x000816, 0x000819], + [0x00081B, 0x000823], + [0x000825, 0x000827], + [0x000829, 0x00083F], + [0x000859, 0x00085F], + [0x00086B, 0x00086F], + [0x00088F, 0x00089F], + [0x0008CA, 0x000903], + [0x00093A, 0x00093C], + [0x00093E, 0x00094F], + [0x000951, 0x000957], + [0x000962, 0x000970], + [0x000981, 0x000984], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BC], + [0x0009BE, 0x0009CD], + [0x0009CF, 0x0009DB], + [0x0009E2, 0x0009EF], + [0x0009F2, 0x0009FB], + [0x0009FD, 0x000A04], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A58], + [0x000A5F, 0x000A71], + [0x000A75, 0x000A84], + [0x000ABA, 0x000ABC], + [0x000ABE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE2, 0x000AF8], + [0x000AFA, 0x000B04], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3C], + [0x000B3E, 0x000B5B], + [0x000B62, 0x000B70], + [0x000B72, 0x000B82], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BCF], + [0x000BD1, 0x000C04], + [0x000C3A, 0x000C3C], + [0x000C3E, 0x000C57], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C62, 0x000C7F], + [0x000C81, 0x000C84], + [0x000CBA, 0x000CBC], + [0x000CBE, 0x000CDC], + [0x000CE2, 0x000CF0], + [0x000CF3, 0x000D03], + [0x000D3B, 0x000D3C], + [0x000D3E, 0x000D4D], + [0x000D4F, 0x000D53], + [0x000D57, 0x000D5E], + [0x000D62, 0x000D79], + [0x000D80, 0x000D84], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000E00], + [0x000E34, 0x000E3F], + [0x000E47, 0x000E80], + [0x000EB4, 0x000EBC], + [0x000EBE, 0x000EBF], + [0x000EC7, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F01, 0x000F3F], + [0x000F6D, 0x000F87], + [0x000F8D, 0x000FFF], + [0x00102B, 0x00103E], + [0x001040, 0x00104F], + [0x001056, 0x001059], + [0x00105E, 0x001060], + [0x001062, 0x001064], + [0x001067, 0x00106D], + [0x001071, 0x001074], + [0x001082, 0x00108D], + [0x00108F, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00137F], + [0x001390, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x001400], + [0x00166D, 0x00166E], + [0x00169B, 0x00169F], + [0x0016EB, 0x0016F0], + [0x0016F9, 0x0016FF], + [0x001712, 0x00171E], + [0x001732, 0x00173F], + [0x001752, 0x00175F], + [0x001771, 0x00177F], + [0x0017B4, 0x0017D6], + [0x0017D8, 0x0017DB], + [0x0017DD, 0x00181F], + [0x001879, 0x00187F], + [0x001885, 0x001886], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00191F, 0x00194F], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019FF], + [0x001A17, 0x001A1F], + [0x001A55, 0x001AA6], + [0x001AA8, 0x001B04], + [0x001B34, 0x001B44], + [0x001B4D, 0x001B82], + [0x001BA1, 0x001BAD], + [0x001BB0, 0x001BB9], + [0x001BE6, 0x001BFF], + [0x001C24, 0x001C4C], + [0x001C50, 0x001C59], + [0x001C7E, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001CE8], + [0x001CF7, 0x001CF9], + [0x001CFB, 0x001CFF], + [0x001DC0, 0x001DFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FDC, 0x001FDF], + [0x001FED, 0x001FF1], + [0x001FFD, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002118], + [0x00211E, 0x002123], + [0x00213A, 0x00213B], + [0x002140, 0x002144], + [0x00214A, 0x00214D], + [0x00214F, 0x002182], + [0x002185, 0x002BFF], + [0x002CE5, 0x002CEA], + [0x002CEF, 0x002CF1], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D70, 0x002D7F], + [0x002D97, 0x002D9F], + [0x002DDF, 0x002E2E], + [0x002E30, 0x003004], + [0x003007, 0x003030], + [0x003036, 0x00303A], + [0x00303D, 0x003040], + [0x003097, 0x00309C], + [0x003100, 0x003104], + [0x00318F, 0x00319F], + [0x0031C0, 0x0031EF], + [0x003200, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A48D, 0x00A4CF], + [0x00A4FE, 0x00A4FF], + [0x00A60D, 0x00A60F], + [0x00A620, 0x00A629], + [0x00A62C, 0x00A63F], + [0x00A66F, 0x00A67E], + [0x00A69E, 0x00A69F], + [0x00A6E6, 0x00A716], + [0x00A720, 0x00A721], + [0x00A789, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A823, 0x00A83F], + [0x00A874, 0x00A881], + [0x00A8B4, 0x00A8F1], + [0x00A8F8, 0x00A8FA], + [0x00A8FF, 0x00A909], + [0x00A926, 0x00A92F], + [0x00A947, 0x00A95F], + [0x00A97D, 0x00A983], + [0x00A9B3, 0x00A9CE], + [0x00A9D0, 0x00A9DF], + [0x00A9F0, 0x00A9F9], + [0x00AA29, 0x00AA3F], + [0x00AA4C, 0x00AA5F], + [0x00AA77, 0x00AA79], + [0x00AA7B, 0x00AA7D], + [0x00AAB2, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABE, 0x00AABF], + [0x00AAC3, 0x00AADA], + [0x00AADE, 0x00AADF], + [0x00AAEB, 0x00AAF1], + [0x00AAF5, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6A, 0x00AB6F], + [0x00ABE3, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBB2, 0x00FBD2], + [0x00FD3E, 0x00FD4F], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDEF], + [0x00FDFC, 0x00FE6F], + [0x00FEFD, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x00FF65], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102FF], + [0x010320, 0x01032C], + [0x01034A, 0x01034F], + [0x010376, 0x01037F], + [0x01039E, 0x01039F], + [0x0103C4, 0x0103C7], + [0x0103D0, 0x0103FF], + [0x01049E, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056F], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x010856, 0x01085F], + [0x010877, 0x01087F], + [0x01089F, 0x0108DF], + [0x0108F6, 0x0108FF], + [0x010916, 0x01091F], + [0x01093A, 0x01097F], + [0x0109B8, 0x0109BD], + [0x0109C0, 0x0109FF], + [0x010A01, 0x010A0F], + [0x010A36, 0x010A5F], + [0x010A7D, 0x010A7F], + [0x010A9D, 0x010ABF], + [0x010AE5, 0x010AFF], + [0x010B36, 0x010B3F], + [0x010B56, 0x010B5F], + [0x010B73, 0x010B7F], + [0x010B92, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CFF], + [0x010D24, 0x010E7F], + [0x010EAA, 0x010EAF], + [0x010EB2, 0x010EFF], + [0x010F1D, 0x010F26], + [0x010F28, 0x010F2F], + [0x010F46, 0x010F6F], + [0x010F82, 0x010FAF], + [0x010FC5, 0x010FDF], + [0x010FF7, 0x011002], + [0x011038, 0x011070], + [0x011073, 0x011074], + [0x011076, 0x011082], + [0x0110B0, 0x0110CF], + [0x0110E9, 0x011102], + [0x011127, 0x011143], + [0x011145, 0x011146], + [0x011148, 0x01114F], + [0x011173, 0x011175], + [0x011177, 0x011182], + [0x0111B3, 0x0111C0], + [0x0111C5, 0x0111D9], + [0x0111DD, 0x0111FF], + [0x01122C, 0x01123E], + [0x011241, 0x01127F], + [0x0112A9, 0x0112AF], + [0x0112DF, 0x011304], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x01133A, 0x01133C], + [0x01133E, 0x01134F], + [0x011351, 0x01135C], + [0x011362, 0x0113FF], + [0x011435, 0x011446], + [0x01144B, 0x01145E], + [0x011462, 0x01147F], + [0x0114B0, 0x0114C3], + [0x0114C8, 0x01157F], + [0x0115AF, 0x0115D7], + [0x0115DC, 0x0115FF], + [0x011630, 0x011643], + [0x011645, 0x01167F], + [0x0116AB, 0x0116B7], + [0x0116B9, 0x0116FF], + [0x01171B, 0x01173F], + [0x011747, 0x0117FF], + [0x01182C, 0x01189F], + [0x0118E0, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011930, 0x01193E], + [0x011942, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D1, 0x0119E0], + [0x0119E4, 0x0119FF], + [0x011A01, 0x011A0A], + [0x011A33, 0x011A39], + [0x011A3B, 0x011A4F], + [0x011A51, 0x011A5B], + [0x011A8A, 0x011A9C], + [0x011A9E, 0x011AAF], + [0x011AF9, 0x011BFF], + [0x011C2F, 0x011C3F], + [0x011C41, 0x011C71], + [0x011C90, 0x011CFF], + [0x011D31, 0x011D45], + [0x011D47, 0x011D5F], + [0x011D8A, 0x011D97], + [0x011D99, 0x011EDF], + [0x011EF3, 0x011F01], + [0x011F34, 0x011FAF], + [0x011FB1, 0x011FFF], + [0x01239A, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF1, 0x012FFF], + [0x013430, 0x013440], + [0x013447, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A5F, 0x016A6F], + [0x016ABF, 0x016ACF], + [0x016AEE, 0x016AFF], + [0x016B30, 0x016B3F], + [0x016B44, 0x016B62], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E80, 0x016EFF], + [0x016F4B, 0x016F4F], + [0x016F51, 0x016F92], + [0x016FA0, 0x016FDF], + [0x016FE4, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01E02F], + [0x01E06E, 0x01E0FF], + [0x01E12D, 0x01E136], + [0x01E13E, 0x01E14D], + [0x01E14F, 0x01E28F], + [0x01E2AE, 0x01E2BF], + [0x01E2EC, 0x01E4CF], + [0x01E4EC, 0x01E7DF], + [0x01E8C5, 0x01E8FF], + [0x01E944, 0x01E94A], + [0x01E94C, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Letter}+$/u, + nonMatchSymbols, + "\\P{General_Category=Letter}" +); +testPropertyEscapes( + /^\P{General_Category=L}+$/u, + nonMatchSymbols, + "\\P{General_Category=L}" +); +testPropertyEscapes( + /^\P{gc=Letter}+$/u, + nonMatchSymbols, + "\\P{gc=Letter}" +); +testPropertyEscapes( + /^\P{gc=L}+$/u, + nonMatchSymbols, + "\\P{gc=L}" +); +testPropertyEscapes( + /^\P{Letter}+$/u, + nonMatchSymbols, + "\\P{Letter}" +); +testPropertyEscapes( + /^\P{L}+$/u, + nonMatchSymbols, + "\\P{L}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js new file mode 100644 index 0000000000..e61c58afa6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Letter_Number.js @@ -0,0 +1,116 @@ +// Copyright 2022 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 for `General_Category=Letter_Number` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x003007, + 0x010341, + 0x01034A + ], + ranges: [ + [0x0016EE, 0x0016F0], + [0x002160, 0x002182], + [0x002185, 0x002188], + [0x003021, 0x003029], + [0x003038, 0x00303A], + [0x00A6E6, 0x00A6EF], + [0x010140, 0x010174], + [0x0103D1, 0x0103D5], + [0x012400, 0x01246E] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Letter_Number}+$/u, + matchSymbols, + "\\p{General_Category=Letter_Number}" +); +testPropertyEscapes( + /^\p{General_Category=Nl}+$/u, + matchSymbols, + "\\p{General_Category=Nl}" +); +testPropertyEscapes( + /^\p{gc=Letter_Number}+$/u, + matchSymbols, + "\\p{gc=Letter_Number}" +); +testPropertyEscapes( + /^\p{gc=Nl}+$/u, + matchSymbols, + "\\p{gc=Nl}" +); +testPropertyEscapes( + /^\p{Letter_Number}+$/u, + matchSymbols, + "\\p{Letter_Number}" +); +testPropertyEscapes( + /^\p{Nl}+$/u, + matchSymbols, + "\\p{Nl}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0016ED], + [0x0016F1, 0x00215F], + [0x002183, 0x002184], + [0x002189, 0x003006], + [0x003008, 0x003020], + [0x00302A, 0x003037], + [0x00303B, 0x00A6E5], + [0x00A6F0, 0x00DBFF], + [0x00E000, 0x01013F], + [0x010175, 0x010340], + [0x010342, 0x010349], + [0x01034B, 0x0103D0], + [0x0103D6, 0x0123FF], + [0x01246F, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Letter_Number}+$/u, + nonMatchSymbols, + "\\P{General_Category=Letter_Number}" +); +testPropertyEscapes( + /^\P{General_Category=Nl}+$/u, + nonMatchSymbols, + "\\P{General_Category=Nl}" +); +testPropertyEscapes( + /^\P{gc=Letter_Number}+$/u, + nonMatchSymbols, + "\\P{gc=Letter_Number}" +); +testPropertyEscapes( + /^\P{gc=Nl}+$/u, + nonMatchSymbols, + "\\P{gc=Nl}" +); +testPropertyEscapes( + /^\P{Letter_Number}+$/u, + nonMatchSymbols, + "\\P{Letter_Number}" +); +testPropertyEscapes( + /^\P{Nl}+$/u, + nonMatchSymbols, + "\\P{Nl}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js new file mode 100644 index 0000000000..ee4b836290 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Line_Separator.js @@ -0,0 +1,93 @@ +// Copyright 2022 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 for `General_Category=Line_Separator` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x002028 + ], + ranges: [] +}); +testPropertyEscapes( + /^\p{General_Category=Line_Separator}+$/u, + matchSymbols, + "\\p{General_Category=Line_Separator}" +); +testPropertyEscapes( + /^\p{General_Category=Zl}+$/u, + matchSymbols, + "\\p{General_Category=Zl}" +); +testPropertyEscapes( + /^\p{gc=Line_Separator}+$/u, + matchSymbols, + "\\p{gc=Line_Separator}" +); +testPropertyEscapes( + /^\p{gc=Zl}+$/u, + matchSymbols, + "\\p{gc=Zl}" +); +testPropertyEscapes( + /^\p{Line_Separator}+$/u, + matchSymbols, + "\\p{Line_Separator}" +); +testPropertyEscapes( + /^\p{Zl}+$/u, + matchSymbols, + "\\p{Zl}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002027], + [0x002029, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Line_Separator}+$/u, + nonMatchSymbols, + "\\P{General_Category=Line_Separator}" +); +testPropertyEscapes( + /^\P{General_Category=Zl}+$/u, + nonMatchSymbols, + "\\P{General_Category=Zl}" +); +testPropertyEscapes( + /^\P{gc=Line_Separator}+$/u, + nonMatchSymbols, + "\\P{gc=Line_Separator}" +); +testPropertyEscapes( + /^\P{gc=Zl}+$/u, + nonMatchSymbols, + "\\P{gc=Zl}" +); +testPropertyEscapes( + /^\P{Line_Separator}+$/u, + nonMatchSymbols, + "\\P{Line_Separator}" +); +testPropertyEscapes( + /^\P{Zl}+$/u, + nonMatchSymbols, + "\\P{Zl}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js new file mode 100644 index 0000000000..f1858169ed --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Lowercase_Letter.js @@ -0,0 +1,1409 @@ +// Copyright 2022 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 for `General_Category=Lowercase_Letter` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000B5, + 0x000101, + 0x000103, + 0x000105, + 0x000107, + 0x000109, + 0x00010B, + 0x00010D, + 0x00010F, + 0x000111, + 0x000113, + 0x000115, + 0x000117, + 0x000119, + 0x00011B, + 0x00011D, + 0x00011F, + 0x000121, + 0x000123, + 0x000125, + 0x000127, + 0x000129, + 0x00012B, + 0x00012D, + 0x00012F, + 0x000131, + 0x000133, + 0x000135, + 0x00013A, + 0x00013C, + 0x00013E, + 0x000140, + 0x000142, + 0x000144, + 0x000146, + 0x00014B, + 0x00014D, + 0x00014F, + 0x000151, + 0x000153, + 0x000155, + 0x000157, + 0x000159, + 0x00015B, + 0x00015D, + 0x00015F, + 0x000161, + 0x000163, + 0x000165, + 0x000167, + 0x000169, + 0x00016B, + 0x00016D, + 0x00016F, + 0x000171, + 0x000173, + 0x000175, + 0x000177, + 0x00017A, + 0x00017C, + 0x000183, + 0x000185, + 0x000188, + 0x000192, + 0x000195, + 0x00019E, + 0x0001A1, + 0x0001A3, + 0x0001A5, + 0x0001A8, + 0x0001AD, + 0x0001B0, + 0x0001B4, + 0x0001B6, + 0x0001C6, + 0x0001C9, + 0x0001CC, + 0x0001CE, + 0x0001D0, + 0x0001D2, + 0x0001D4, + 0x0001D6, + 0x0001D8, + 0x0001DA, + 0x0001DF, + 0x0001E1, + 0x0001E3, + 0x0001E5, + 0x0001E7, + 0x0001E9, + 0x0001EB, + 0x0001ED, + 0x0001F3, + 0x0001F5, + 0x0001F9, + 0x0001FB, + 0x0001FD, + 0x0001FF, + 0x000201, + 0x000203, + 0x000205, + 0x000207, + 0x000209, + 0x00020B, + 0x00020D, + 0x00020F, + 0x000211, + 0x000213, + 0x000215, + 0x000217, + 0x000219, + 0x00021B, + 0x00021D, + 0x00021F, + 0x000221, + 0x000223, + 0x000225, + 0x000227, + 0x000229, + 0x00022B, + 0x00022D, + 0x00022F, + 0x000231, + 0x00023C, + 0x000242, + 0x000247, + 0x000249, + 0x00024B, + 0x00024D, + 0x000371, + 0x000373, + 0x000377, + 0x000390, + 0x0003D9, + 0x0003DB, + 0x0003DD, + 0x0003DF, + 0x0003E1, + 0x0003E3, + 0x0003E5, + 0x0003E7, + 0x0003E9, + 0x0003EB, + 0x0003ED, + 0x0003F5, + 0x0003F8, + 0x000461, + 0x000463, + 0x000465, + 0x000467, + 0x000469, + 0x00046B, + 0x00046D, + 0x00046F, + 0x000471, + 0x000473, + 0x000475, + 0x000477, + 0x000479, + 0x00047B, + 0x00047D, + 0x00047F, + 0x000481, + 0x00048B, + 0x00048D, + 0x00048F, + 0x000491, + 0x000493, + 0x000495, + 0x000497, + 0x000499, + 0x00049B, + 0x00049D, + 0x00049F, + 0x0004A1, + 0x0004A3, + 0x0004A5, + 0x0004A7, + 0x0004A9, + 0x0004AB, + 0x0004AD, + 0x0004AF, + 0x0004B1, + 0x0004B3, + 0x0004B5, + 0x0004B7, + 0x0004B9, + 0x0004BB, + 0x0004BD, + 0x0004BF, + 0x0004C2, + 0x0004C4, + 0x0004C6, + 0x0004C8, + 0x0004CA, + 0x0004CC, + 0x0004D1, + 0x0004D3, + 0x0004D5, + 0x0004D7, + 0x0004D9, + 0x0004DB, + 0x0004DD, + 0x0004DF, + 0x0004E1, + 0x0004E3, + 0x0004E5, + 0x0004E7, + 0x0004E9, + 0x0004EB, + 0x0004ED, + 0x0004EF, + 0x0004F1, + 0x0004F3, + 0x0004F5, + 0x0004F7, + 0x0004F9, + 0x0004FB, + 0x0004FD, + 0x0004FF, + 0x000501, + 0x000503, + 0x000505, + 0x000507, + 0x000509, + 0x00050B, + 0x00050D, + 0x00050F, + 0x000511, + 0x000513, + 0x000515, + 0x000517, + 0x000519, + 0x00051B, + 0x00051D, + 0x00051F, + 0x000521, + 0x000523, + 0x000525, + 0x000527, + 0x000529, + 0x00052B, + 0x00052D, + 0x00052F, + 0x001E01, + 0x001E03, + 0x001E05, + 0x001E07, + 0x001E09, + 0x001E0B, + 0x001E0D, + 0x001E0F, + 0x001E11, + 0x001E13, + 0x001E15, + 0x001E17, + 0x001E19, + 0x001E1B, + 0x001E1D, + 0x001E1F, + 0x001E21, + 0x001E23, + 0x001E25, + 0x001E27, + 0x001E29, + 0x001E2B, + 0x001E2D, + 0x001E2F, + 0x001E31, + 0x001E33, + 0x001E35, + 0x001E37, + 0x001E39, + 0x001E3B, + 0x001E3D, + 0x001E3F, + 0x001E41, + 0x001E43, + 0x001E45, + 0x001E47, + 0x001E49, + 0x001E4B, + 0x001E4D, + 0x001E4F, + 0x001E51, + 0x001E53, + 0x001E55, + 0x001E57, + 0x001E59, + 0x001E5B, + 0x001E5D, + 0x001E5F, + 0x001E61, + 0x001E63, + 0x001E65, + 0x001E67, + 0x001E69, + 0x001E6B, + 0x001E6D, + 0x001E6F, + 0x001E71, + 0x001E73, + 0x001E75, + 0x001E77, + 0x001E79, + 0x001E7B, + 0x001E7D, + 0x001E7F, + 0x001E81, + 0x001E83, + 0x001E85, + 0x001E87, + 0x001E89, + 0x001E8B, + 0x001E8D, + 0x001E8F, + 0x001E91, + 0x001E93, + 0x001E9F, + 0x001EA1, + 0x001EA3, + 0x001EA5, + 0x001EA7, + 0x001EA9, + 0x001EAB, + 0x001EAD, + 0x001EAF, + 0x001EB1, + 0x001EB3, + 0x001EB5, + 0x001EB7, + 0x001EB9, + 0x001EBB, + 0x001EBD, + 0x001EBF, + 0x001EC1, + 0x001EC3, + 0x001EC5, + 0x001EC7, + 0x001EC9, + 0x001ECB, + 0x001ECD, + 0x001ECF, + 0x001ED1, + 0x001ED3, + 0x001ED5, + 0x001ED7, + 0x001ED9, + 0x001EDB, + 0x001EDD, + 0x001EDF, + 0x001EE1, + 0x001EE3, + 0x001EE5, + 0x001EE7, + 0x001EE9, + 0x001EEB, + 0x001EED, + 0x001EEF, + 0x001EF1, + 0x001EF3, + 0x001EF5, + 0x001EF7, + 0x001EF9, + 0x001EFB, + 0x001EFD, + 0x001FBE, + 0x00210A, + 0x002113, + 0x00212F, + 0x002134, + 0x002139, + 0x00214E, + 0x002184, + 0x002C61, + 0x002C68, + 0x002C6A, + 0x002C6C, + 0x002C71, + 0x002C81, + 0x002C83, + 0x002C85, + 0x002C87, + 0x002C89, + 0x002C8B, + 0x002C8D, + 0x002C8F, + 0x002C91, + 0x002C93, + 0x002C95, + 0x002C97, + 0x002C99, + 0x002C9B, + 0x002C9D, + 0x002C9F, + 0x002CA1, + 0x002CA3, + 0x002CA5, + 0x002CA7, + 0x002CA9, + 0x002CAB, + 0x002CAD, + 0x002CAF, + 0x002CB1, + 0x002CB3, + 0x002CB5, + 0x002CB7, + 0x002CB9, + 0x002CBB, + 0x002CBD, + 0x002CBF, + 0x002CC1, + 0x002CC3, + 0x002CC5, + 0x002CC7, + 0x002CC9, + 0x002CCB, + 0x002CCD, + 0x002CCF, + 0x002CD1, + 0x002CD3, + 0x002CD5, + 0x002CD7, + 0x002CD9, + 0x002CDB, + 0x002CDD, + 0x002CDF, + 0x002CE1, + 0x002CEC, + 0x002CEE, + 0x002CF3, + 0x002D27, + 0x002D2D, + 0x00A641, + 0x00A643, + 0x00A645, + 0x00A647, + 0x00A649, + 0x00A64B, + 0x00A64D, + 0x00A64F, + 0x00A651, + 0x00A653, + 0x00A655, + 0x00A657, + 0x00A659, + 0x00A65B, + 0x00A65D, + 0x00A65F, + 0x00A661, + 0x00A663, + 0x00A665, + 0x00A667, + 0x00A669, + 0x00A66B, + 0x00A66D, + 0x00A681, + 0x00A683, + 0x00A685, + 0x00A687, + 0x00A689, + 0x00A68B, + 0x00A68D, + 0x00A68F, + 0x00A691, + 0x00A693, + 0x00A695, + 0x00A697, + 0x00A699, + 0x00A69B, + 0x00A723, + 0x00A725, + 0x00A727, + 0x00A729, + 0x00A72B, + 0x00A72D, + 0x00A733, + 0x00A735, + 0x00A737, + 0x00A739, + 0x00A73B, + 0x00A73D, + 0x00A73F, + 0x00A741, + 0x00A743, + 0x00A745, + 0x00A747, + 0x00A749, + 0x00A74B, + 0x00A74D, + 0x00A74F, + 0x00A751, + 0x00A753, + 0x00A755, + 0x00A757, + 0x00A759, + 0x00A75B, + 0x00A75D, + 0x00A75F, + 0x00A761, + 0x00A763, + 0x00A765, + 0x00A767, + 0x00A769, + 0x00A76B, + 0x00A76D, + 0x00A76F, + 0x00A77A, + 0x00A77C, + 0x00A77F, + 0x00A781, + 0x00A783, + 0x00A785, + 0x00A787, + 0x00A78C, + 0x00A78E, + 0x00A791, + 0x00A797, + 0x00A799, + 0x00A79B, + 0x00A79D, + 0x00A79F, + 0x00A7A1, + 0x00A7A3, + 0x00A7A5, + 0x00A7A7, + 0x00A7A9, + 0x00A7AF, + 0x00A7B5, + 0x00A7B7, + 0x00A7B9, + 0x00A7BB, + 0x00A7BD, + 0x00A7BF, + 0x00A7C1, + 0x00A7C3, + 0x00A7C8, + 0x00A7CA, + 0x00A7D1, + 0x00A7D3, + 0x00A7D5, + 0x00A7D7, + 0x00A7D9, + 0x00A7F6, + 0x00A7FA, + 0x01D4BB, + 0x01D7CB + ], + ranges: [ + [0x000061, 0x00007A], + [0x0000DF, 0x0000F6], + [0x0000F8, 0x0000FF], + [0x000137, 0x000138], + [0x000148, 0x000149], + [0x00017E, 0x000180], + [0x00018C, 0x00018D], + [0x000199, 0x00019B], + [0x0001AA, 0x0001AB], + [0x0001B9, 0x0001BA], + [0x0001BD, 0x0001BF], + [0x0001DC, 0x0001DD], + [0x0001EF, 0x0001F0], + [0x000233, 0x000239], + [0x00023F, 0x000240], + [0x00024F, 0x000293], + [0x000295, 0x0002AF], + [0x00037B, 0x00037D], + [0x0003AC, 0x0003CE], + [0x0003D0, 0x0003D1], + [0x0003D5, 0x0003D7], + [0x0003EF, 0x0003F3], + [0x0003FB, 0x0003FC], + [0x000430, 0x00045F], + [0x0004CE, 0x0004CF], + [0x000560, 0x000588], + [0x0010D0, 0x0010FA], + [0x0010FD, 0x0010FF], + [0x0013F8, 0x0013FD], + [0x001C80, 0x001C88], + [0x001D00, 0x001D2B], + [0x001D6B, 0x001D77], + [0x001D79, 0x001D9A], + [0x001E95, 0x001E9D], + [0x001EFF, 0x001F07], + [0x001F10, 0x001F15], + [0x001F20, 0x001F27], + [0x001F30, 0x001F37], + [0x001F40, 0x001F45], + [0x001F50, 0x001F57], + [0x001F60, 0x001F67], + [0x001F70, 0x001F7D], + [0x001F80, 0x001F87], + [0x001F90, 0x001F97], + [0x001FA0, 0x001FA7], + [0x001FB0, 0x001FB4], + [0x001FB6, 0x001FB7], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FC7], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FD7], + [0x001FE0, 0x001FE7], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FF7], + [0x00210E, 0x00210F], + [0x00213C, 0x00213D], + [0x002146, 0x002149], + [0x002C30, 0x002C5F], + [0x002C65, 0x002C66], + [0x002C73, 0x002C74], + [0x002C76, 0x002C7B], + [0x002CE3, 0x002CE4], + [0x002D00, 0x002D25], + [0x00A72F, 0x00A731], + [0x00A771, 0x00A778], + [0x00A793, 0x00A795], + [0x00AB30, 0x00AB5A], + [0x00AB60, 0x00AB68], + [0x00AB70, 0x00ABBF], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FF41, 0x00FF5A], + [0x010428, 0x01044F], + [0x0104D8, 0x0104FB], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010CC0, 0x010CF2], + [0x0118C0, 0x0118DF], + [0x016E60, 0x016E7F], + [0x01D41A, 0x01D433], + [0x01D44E, 0x01D454], + [0x01D456, 0x01D467], + [0x01D482, 0x01D49B], + [0x01D4B6, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D4CF], + [0x01D4EA, 0x01D503], + [0x01D51E, 0x01D537], + [0x01D552, 0x01D56B], + [0x01D586, 0x01D59F], + [0x01D5BA, 0x01D5D3], + [0x01D5EE, 0x01D607], + [0x01D622, 0x01D63B], + [0x01D656, 0x01D66F], + [0x01D68A, 0x01D6A5], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6E1], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D71B], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D755], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D78F], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7C9], + [0x01DF00, 0x01DF09], + [0x01DF0B, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E922, 0x01E943] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Lowercase_Letter}+$/u, + matchSymbols, + "\\p{General_Category=Lowercase_Letter}" +); +testPropertyEscapes( + /^\p{General_Category=Ll}+$/u, + matchSymbols, + "\\p{General_Category=Ll}" +); +testPropertyEscapes( + /^\p{gc=Lowercase_Letter}+$/u, + matchSymbols, + "\\p{gc=Lowercase_Letter}" +); +testPropertyEscapes( + /^\p{gc=Ll}+$/u, + matchSymbols, + "\\p{gc=Ll}" +); +testPropertyEscapes( + /^\p{Lowercase_Letter}+$/u, + matchSymbols, + "\\p{Lowercase_Letter}" +); +testPropertyEscapes( + /^\p{Ll}+$/u, + matchSymbols, + "\\p{Ll}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000F7, + 0x000100, + 0x000102, + 0x000104, + 0x000106, + 0x000108, + 0x00010A, + 0x00010C, + 0x00010E, + 0x000110, + 0x000112, + 0x000114, + 0x000116, + 0x000118, + 0x00011A, + 0x00011C, + 0x00011E, + 0x000120, + 0x000122, + 0x000124, + 0x000126, + 0x000128, + 0x00012A, + 0x00012C, + 0x00012E, + 0x000130, + 0x000132, + 0x000134, + 0x000136, + 0x000139, + 0x00013B, + 0x00013D, + 0x00013F, + 0x000141, + 0x000143, + 0x000145, + 0x000147, + 0x00014A, + 0x00014C, + 0x00014E, + 0x000150, + 0x000152, + 0x000154, + 0x000156, + 0x000158, + 0x00015A, + 0x00015C, + 0x00015E, + 0x000160, + 0x000162, + 0x000164, + 0x000166, + 0x000168, + 0x00016A, + 0x00016C, + 0x00016E, + 0x000170, + 0x000172, + 0x000174, + 0x000176, + 0x00017B, + 0x00017D, + 0x000184, + 0x0001A2, + 0x0001A4, + 0x0001A9, + 0x0001AC, + 0x0001B5, + 0x0001CD, + 0x0001CF, + 0x0001D1, + 0x0001D3, + 0x0001D5, + 0x0001D7, + 0x0001D9, + 0x0001DB, + 0x0001DE, + 0x0001E0, + 0x0001E2, + 0x0001E4, + 0x0001E6, + 0x0001E8, + 0x0001EA, + 0x0001EC, + 0x0001EE, + 0x0001F4, + 0x0001FA, + 0x0001FC, + 0x0001FE, + 0x000200, + 0x000202, + 0x000204, + 0x000206, + 0x000208, + 0x00020A, + 0x00020C, + 0x00020E, + 0x000210, + 0x000212, + 0x000214, + 0x000216, + 0x000218, + 0x00021A, + 0x00021C, + 0x00021E, + 0x000220, + 0x000222, + 0x000224, + 0x000226, + 0x000228, + 0x00022A, + 0x00022C, + 0x00022E, + 0x000230, + 0x000232, + 0x000241, + 0x000248, + 0x00024A, + 0x00024C, + 0x00024E, + 0x000294, + 0x000372, + 0x0003CF, + 0x0003D8, + 0x0003DA, + 0x0003DC, + 0x0003DE, + 0x0003E0, + 0x0003E2, + 0x0003E4, + 0x0003E6, + 0x0003E8, + 0x0003EA, + 0x0003EC, + 0x0003EE, + 0x0003F4, + 0x000460, + 0x000462, + 0x000464, + 0x000466, + 0x000468, + 0x00046A, + 0x00046C, + 0x00046E, + 0x000470, + 0x000472, + 0x000474, + 0x000476, + 0x000478, + 0x00047A, + 0x00047C, + 0x00047E, + 0x000480, + 0x00048C, + 0x00048E, + 0x000490, + 0x000492, + 0x000494, + 0x000496, + 0x000498, + 0x00049A, + 0x00049C, + 0x00049E, + 0x0004A0, + 0x0004A2, + 0x0004A4, + 0x0004A6, + 0x0004A8, + 0x0004AA, + 0x0004AC, + 0x0004AE, + 0x0004B0, + 0x0004B2, + 0x0004B4, + 0x0004B6, + 0x0004B8, + 0x0004BA, + 0x0004BC, + 0x0004BE, + 0x0004C3, + 0x0004C5, + 0x0004C7, + 0x0004C9, + 0x0004CB, + 0x0004CD, + 0x0004D0, + 0x0004D2, + 0x0004D4, + 0x0004D6, + 0x0004D8, + 0x0004DA, + 0x0004DC, + 0x0004DE, + 0x0004E0, + 0x0004E2, + 0x0004E4, + 0x0004E6, + 0x0004E8, + 0x0004EA, + 0x0004EC, + 0x0004EE, + 0x0004F0, + 0x0004F2, + 0x0004F4, + 0x0004F6, + 0x0004F8, + 0x0004FA, + 0x0004FC, + 0x0004FE, + 0x000500, + 0x000502, + 0x000504, + 0x000506, + 0x000508, + 0x00050A, + 0x00050C, + 0x00050E, + 0x000510, + 0x000512, + 0x000514, + 0x000516, + 0x000518, + 0x00051A, + 0x00051C, + 0x00051E, + 0x000520, + 0x000522, + 0x000524, + 0x000526, + 0x000528, + 0x00052A, + 0x00052C, + 0x00052E, + 0x001D78, + 0x001E02, + 0x001E04, + 0x001E06, + 0x001E08, + 0x001E0A, + 0x001E0C, + 0x001E0E, + 0x001E10, + 0x001E12, + 0x001E14, + 0x001E16, + 0x001E18, + 0x001E1A, + 0x001E1C, + 0x001E1E, + 0x001E20, + 0x001E22, + 0x001E24, + 0x001E26, + 0x001E28, + 0x001E2A, + 0x001E2C, + 0x001E2E, + 0x001E30, + 0x001E32, + 0x001E34, + 0x001E36, + 0x001E38, + 0x001E3A, + 0x001E3C, + 0x001E3E, + 0x001E40, + 0x001E42, + 0x001E44, + 0x001E46, + 0x001E48, + 0x001E4A, + 0x001E4C, + 0x001E4E, + 0x001E50, + 0x001E52, + 0x001E54, + 0x001E56, + 0x001E58, + 0x001E5A, + 0x001E5C, + 0x001E5E, + 0x001E60, + 0x001E62, + 0x001E64, + 0x001E66, + 0x001E68, + 0x001E6A, + 0x001E6C, + 0x001E6E, + 0x001E70, + 0x001E72, + 0x001E74, + 0x001E76, + 0x001E78, + 0x001E7A, + 0x001E7C, + 0x001E7E, + 0x001E80, + 0x001E82, + 0x001E84, + 0x001E86, + 0x001E88, + 0x001E8A, + 0x001E8C, + 0x001E8E, + 0x001E90, + 0x001E92, + 0x001E94, + 0x001E9E, + 0x001EA0, + 0x001EA2, + 0x001EA4, + 0x001EA6, + 0x001EA8, + 0x001EAA, + 0x001EAC, + 0x001EAE, + 0x001EB0, + 0x001EB2, + 0x001EB4, + 0x001EB6, + 0x001EB8, + 0x001EBA, + 0x001EBC, + 0x001EBE, + 0x001EC0, + 0x001EC2, + 0x001EC4, + 0x001EC6, + 0x001EC8, + 0x001ECA, + 0x001ECC, + 0x001ECE, + 0x001ED0, + 0x001ED2, + 0x001ED4, + 0x001ED6, + 0x001ED8, + 0x001EDA, + 0x001EDC, + 0x001EDE, + 0x001EE0, + 0x001EE2, + 0x001EE4, + 0x001EE6, + 0x001EE8, + 0x001EEA, + 0x001EEC, + 0x001EEE, + 0x001EF0, + 0x001EF2, + 0x001EF4, + 0x001EF6, + 0x001EF8, + 0x001EFA, + 0x001EFC, + 0x001EFE, + 0x001FB5, + 0x001FC5, + 0x001FF5, + 0x002C60, + 0x002C67, + 0x002C69, + 0x002C6B, + 0x002C72, + 0x002C75, + 0x002C82, + 0x002C84, + 0x002C86, + 0x002C88, + 0x002C8A, + 0x002C8C, + 0x002C8E, + 0x002C90, + 0x002C92, + 0x002C94, + 0x002C96, + 0x002C98, + 0x002C9A, + 0x002C9C, + 0x002C9E, + 0x002CA0, + 0x002CA2, + 0x002CA4, + 0x002CA6, + 0x002CA8, + 0x002CAA, + 0x002CAC, + 0x002CAE, + 0x002CB0, + 0x002CB2, + 0x002CB4, + 0x002CB6, + 0x002CB8, + 0x002CBA, + 0x002CBC, + 0x002CBE, + 0x002CC0, + 0x002CC2, + 0x002CC4, + 0x002CC6, + 0x002CC8, + 0x002CCA, + 0x002CCC, + 0x002CCE, + 0x002CD0, + 0x002CD2, + 0x002CD4, + 0x002CD6, + 0x002CD8, + 0x002CDA, + 0x002CDC, + 0x002CDE, + 0x002CE0, + 0x002CE2, + 0x002CED, + 0x002D26, + 0x00A642, + 0x00A644, + 0x00A646, + 0x00A648, + 0x00A64A, + 0x00A64C, + 0x00A64E, + 0x00A650, + 0x00A652, + 0x00A654, + 0x00A656, + 0x00A658, + 0x00A65A, + 0x00A65C, + 0x00A65E, + 0x00A660, + 0x00A662, + 0x00A664, + 0x00A666, + 0x00A668, + 0x00A66A, + 0x00A66C, + 0x00A682, + 0x00A684, + 0x00A686, + 0x00A688, + 0x00A68A, + 0x00A68C, + 0x00A68E, + 0x00A690, + 0x00A692, + 0x00A694, + 0x00A696, + 0x00A698, + 0x00A69A, + 0x00A724, + 0x00A726, + 0x00A728, + 0x00A72A, + 0x00A72C, + 0x00A72E, + 0x00A732, + 0x00A734, + 0x00A736, + 0x00A738, + 0x00A73A, + 0x00A73C, + 0x00A73E, + 0x00A740, + 0x00A742, + 0x00A744, + 0x00A746, + 0x00A748, + 0x00A74A, + 0x00A74C, + 0x00A74E, + 0x00A750, + 0x00A752, + 0x00A754, + 0x00A756, + 0x00A758, + 0x00A75A, + 0x00A75C, + 0x00A75E, + 0x00A760, + 0x00A762, + 0x00A764, + 0x00A766, + 0x00A768, + 0x00A76A, + 0x00A76C, + 0x00A76E, + 0x00A770, + 0x00A779, + 0x00A77B, + 0x00A780, + 0x00A782, + 0x00A784, + 0x00A786, + 0x00A78D, + 0x00A792, + 0x00A796, + 0x00A798, + 0x00A79A, + 0x00A79C, + 0x00A79E, + 0x00A7A0, + 0x00A7A2, + 0x00A7A4, + 0x00A7A6, + 0x00A7A8, + 0x00A7B6, + 0x00A7B8, + 0x00A7BA, + 0x00A7BC, + 0x00A7BE, + 0x00A7C0, + 0x00A7C2, + 0x00A7C9, + 0x00A7D2, + 0x00A7D4, + 0x00A7D6, + 0x00A7D8, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x01D455, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D6DB, + 0x01D715, + 0x01D74F, + 0x01D789, + 0x01D7C3, + 0x01D7CA, + 0x01DF0A + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000060], + [0x00007B, 0x0000B4], + [0x0000B6, 0x0000DE], + [0x000178, 0x000179], + [0x000181, 0x000182], + [0x000186, 0x000187], + [0x000189, 0x00018B], + [0x00018E, 0x000191], + [0x000193, 0x000194], + [0x000196, 0x000198], + [0x00019C, 0x00019D], + [0x00019F, 0x0001A0], + [0x0001A6, 0x0001A7], + [0x0001AE, 0x0001AF], + [0x0001B1, 0x0001B3], + [0x0001B7, 0x0001B8], + [0x0001BB, 0x0001BC], + [0x0001C0, 0x0001C5], + [0x0001C7, 0x0001C8], + [0x0001CA, 0x0001CB], + [0x0001F1, 0x0001F2], + [0x0001F6, 0x0001F8], + [0x00023A, 0x00023B], + [0x00023D, 0x00023E], + [0x000243, 0x000246], + [0x0002B0, 0x000370], + [0x000374, 0x000376], + [0x000378, 0x00037A], + [0x00037E, 0x00038F], + [0x000391, 0x0003AB], + [0x0003D2, 0x0003D4], + [0x0003F6, 0x0003F7], + [0x0003F9, 0x0003FA], + [0x0003FD, 0x00042F], + [0x000482, 0x00048A], + [0x0004C0, 0x0004C1], + [0x000530, 0x00055F], + [0x000589, 0x0010CF], + [0x0010FB, 0x0010FC], + [0x001100, 0x0013F7], + [0x0013FE, 0x001C7F], + [0x001C89, 0x001CFF], + [0x001D2C, 0x001D6A], + [0x001D9B, 0x001E00], + [0x001F08, 0x001F0F], + [0x001F16, 0x001F1F], + [0x001F28, 0x001F2F], + [0x001F38, 0x001F3F], + [0x001F46, 0x001F4F], + [0x001F58, 0x001F5F], + [0x001F68, 0x001F6F], + [0x001F7E, 0x001F7F], + [0x001F88, 0x001F8F], + [0x001F98, 0x001F9F], + [0x001FA8, 0x001FAF], + [0x001FB8, 0x001FBD], + [0x001FBF, 0x001FC1], + [0x001FC8, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FD8, 0x001FDF], + [0x001FE8, 0x001FF1], + [0x001FF8, 0x002109], + [0x00210B, 0x00210D], + [0x002110, 0x002112], + [0x002114, 0x00212E], + [0x002130, 0x002133], + [0x002135, 0x002138], + [0x00213A, 0x00213B], + [0x00213E, 0x002145], + [0x00214A, 0x00214D], + [0x00214F, 0x002183], + [0x002185, 0x002C2F], + [0x002C62, 0x002C64], + [0x002C6D, 0x002C70], + [0x002C7C, 0x002C80], + [0x002CE5, 0x002CEB], + [0x002CEF, 0x002CF2], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x00A640], + [0x00A66E, 0x00A680], + [0x00A69C, 0x00A722], + [0x00A77D, 0x00A77E], + [0x00A788, 0x00A78B], + [0x00A78F, 0x00A790], + [0x00A7AA, 0x00A7AE], + [0x00A7B0, 0x00A7B4], + [0x00A7C4, 0x00A7C7], + [0x00A7CB, 0x00A7D0], + [0x00A7DA, 0x00A7F5], + [0x00A7F7, 0x00A7F9], + [0x00A7FB, 0x00AB2F], + [0x00AB5B, 0x00AB5F], + [0x00AB69, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FF40], + [0x00FF5B, 0x010427], + [0x010450, 0x0104D7], + [0x0104FC, 0x010596], + [0x0105BD, 0x010CBF], + [0x010CF3, 0x0118BF], + [0x0118E0, 0x016E5F], + [0x016E80, 0x01D419], + [0x01D434, 0x01D44D], + [0x01D468, 0x01D481], + [0x01D49C, 0x01D4B5], + [0x01D4D0, 0x01D4E9], + [0x01D504, 0x01D51D], + [0x01D538, 0x01D551], + [0x01D56C, 0x01D585], + [0x01D5A0, 0x01D5B9], + [0x01D5D4, 0x01D5ED], + [0x01D608, 0x01D621], + [0x01D63C, 0x01D655], + [0x01D670, 0x01D689], + [0x01D6A6, 0x01D6C1], + [0x01D6E2, 0x01D6FB], + [0x01D71C, 0x01D735], + [0x01D756, 0x01D76F], + [0x01D790, 0x01D7A9], + [0x01D7CC, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01E921], + [0x01E944, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Lowercase_Letter}+$/u, + nonMatchSymbols, + "\\P{General_Category=Lowercase_Letter}" +); +testPropertyEscapes( + /^\P{General_Category=Ll}+$/u, + nonMatchSymbols, + "\\P{General_Category=Ll}" +); +testPropertyEscapes( + /^\P{gc=Lowercase_Letter}+$/u, + nonMatchSymbols, + "\\P{gc=Lowercase_Letter}" +); +testPropertyEscapes( + /^\P{gc=Ll}+$/u, + nonMatchSymbols, + "\\P{gc=Ll}" +); +testPropertyEscapes( + /^\P{Lowercase_Letter}+$/u, + nonMatchSymbols, + "\\P{Lowercase_Letter}" +); +testPropertyEscapes( + /^\P{Ll}+$/u, + nonMatchSymbols, + "\\P{Ll}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js new file mode 100644 index 0000000000..14b1aed760 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Mark.js @@ -0,0 +1,743 @@ +// Copyright 2022 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 for `General_Category=Mark` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0005BF, + 0x0005C7, + 0x000670, + 0x000711, + 0x0007FD, + 0x0009BC, + 0x0009D7, + 0x0009FE, + 0x000A3C, + 0x000A51, + 0x000A75, + 0x000ABC, + 0x000B3C, + 0x000B82, + 0x000BD7, + 0x000C3C, + 0x000CBC, + 0x000CF3, + 0x000D57, + 0x000DCA, + 0x000DD6, + 0x000E31, + 0x000EB1, + 0x000F35, + 0x000F37, + 0x000F39, + 0x000FC6, + 0x00108F, + 0x0017DD, + 0x00180F, + 0x0018A9, + 0x001A7F, + 0x001CED, + 0x001CF4, + 0x002D7F, + 0x00A802, + 0x00A806, + 0x00A80B, + 0x00A82C, + 0x00A8FF, + 0x00A9E5, + 0x00AA43, + 0x00AAB0, + 0x00AAC1, + 0x00FB1E, + 0x0101FD, + 0x0102E0, + 0x010A3F, + 0x011070, + 0x0110C2, + 0x011173, + 0x01123E, + 0x011241, + 0x011357, + 0x01145E, + 0x011940, + 0x0119E4, + 0x011A47, + 0x011D3A, + 0x011D47, + 0x011F03, + 0x013440, + 0x016F4F, + 0x016FE4, + 0x01DA75, + 0x01DA84, + 0x01E08F, + 0x01E2AE + ], + ranges: [ + [0x000300, 0x00036F], + [0x000483, 0x000489], + [0x000591, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x000610, 0x00061A], + [0x00064B, 0x00065F], + [0x0006D6, 0x0006DC], + [0x0006DF, 0x0006E4], + [0x0006E7, 0x0006E8], + [0x0006EA, 0x0006ED], + [0x000730, 0x00074A], + [0x0007A6, 0x0007B0], + [0x0007EB, 0x0007F3], + [0x000816, 0x000819], + [0x00081B, 0x000823], + [0x000825, 0x000827], + [0x000829, 0x00082D], + [0x000859, 0x00085B], + [0x000898, 0x00089F], + [0x0008CA, 0x0008E1], + [0x0008E3, 0x000903], + [0x00093A, 0x00093C], + [0x00093E, 0x00094F], + [0x000951, 0x000957], + [0x000962, 0x000963], + [0x000981, 0x000983], + [0x0009BE, 0x0009C4], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CD], + [0x0009E2, 0x0009E3], + [0x000A01, 0x000A03], + [0x000A3E, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A70, 0x000A71], + [0x000A81, 0x000A83], + [0x000ABE, 0x000AC5], + [0x000AC7, 0x000AC9], + [0x000ACB, 0x000ACD], + [0x000AE2, 0x000AE3], + [0x000AFA, 0x000AFF], + [0x000B01, 0x000B03], + [0x000B3E, 0x000B44], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4D], + [0x000B55, 0x000B57], + [0x000B62, 0x000B63], + [0x000BBE, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCD], + [0x000C00, 0x000C04], + [0x000C3E, 0x000C44], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C62, 0x000C63], + [0x000C81, 0x000C83], + [0x000CBE, 0x000CC4], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCD], + [0x000CD5, 0x000CD6], + [0x000CE2, 0x000CE3], + [0x000D00, 0x000D03], + [0x000D3B, 0x000D3C], + [0x000D3E, 0x000D44], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4D], + [0x000D62, 0x000D63], + [0x000D81, 0x000D83], + [0x000DCF, 0x000DD4], + [0x000DD8, 0x000DDF], + [0x000DF2, 0x000DF3], + [0x000E34, 0x000E3A], + [0x000E47, 0x000E4E], + [0x000EB4, 0x000EBC], + [0x000EC8, 0x000ECE], + [0x000F18, 0x000F19], + [0x000F3E, 0x000F3F], + [0x000F71, 0x000F84], + [0x000F86, 0x000F87], + [0x000F8D, 0x000F97], + [0x000F99, 0x000FBC], + [0x00102B, 0x00103E], + [0x001056, 0x001059], + [0x00105E, 0x001060], + [0x001062, 0x001064], + [0x001067, 0x00106D], + [0x001071, 0x001074], + [0x001082, 0x00108D], + [0x00109A, 0x00109D], + [0x00135D, 0x00135F], + [0x001712, 0x001715], + [0x001732, 0x001734], + [0x001752, 0x001753], + [0x001772, 0x001773], + [0x0017B4, 0x0017D3], + [0x00180B, 0x00180D], + [0x001885, 0x001886], + [0x001920, 0x00192B], + [0x001930, 0x00193B], + [0x001A17, 0x001A1B], + [0x001A55, 0x001A5E], + [0x001A60, 0x001A7C], + [0x001AB0, 0x001ACE], + [0x001B00, 0x001B04], + [0x001B34, 0x001B44], + [0x001B6B, 0x001B73], + [0x001B80, 0x001B82], + [0x001BA1, 0x001BAD], + [0x001BE6, 0x001BF3], + [0x001C24, 0x001C37], + [0x001CD0, 0x001CD2], + [0x001CD4, 0x001CE8], + [0x001CF7, 0x001CF9], + [0x001DC0, 0x001DFF], + [0x0020D0, 0x0020F0], + [0x002CEF, 0x002CF1], + [0x002DE0, 0x002DFF], + [0x00302A, 0x00302F], + [0x003099, 0x00309A], + [0x00A66F, 0x00A672], + [0x00A674, 0x00A67D], + [0x00A69E, 0x00A69F], + [0x00A6F0, 0x00A6F1], + [0x00A823, 0x00A827], + [0x00A880, 0x00A881], + [0x00A8B4, 0x00A8C5], + [0x00A8E0, 0x00A8F1], + [0x00A926, 0x00A92D], + [0x00A947, 0x00A953], + [0x00A980, 0x00A983], + [0x00A9B3, 0x00A9C0], + [0x00AA29, 0x00AA36], + [0x00AA4C, 0x00AA4D], + [0x00AA7B, 0x00AA7D], + [0x00AAB2, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABE, 0x00AABF], + [0x00AAEB, 0x00AAEF], + [0x00AAF5, 0x00AAF6], + [0x00ABE3, 0x00ABEA], + [0x00ABEC, 0x00ABED], + [0x00FE00, 0x00FE0F], + [0x00FE20, 0x00FE2F], + [0x010376, 0x01037A], + [0x010A01, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A0F], + [0x010A38, 0x010A3A], + [0x010AE5, 0x010AE6], + [0x010D24, 0x010D27], + [0x010EAB, 0x010EAC], + [0x010EFD, 0x010EFF], + [0x010F46, 0x010F50], + [0x010F82, 0x010F85], + [0x011000, 0x011002], + [0x011038, 0x011046], + [0x011073, 0x011074], + [0x01107F, 0x011082], + [0x0110B0, 0x0110BA], + [0x011100, 0x011102], + [0x011127, 0x011134], + [0x011145, 0x011146], + [0x011180, 0x011182], + [0x0111B3, 0x0111C0], + [0x0111C9, 0x0111CC], + [0x0111CE, 0x0111CF], + [0x01122C, 0x011237], + [0x0112DF, 0x0112EA], + [0x011300, 0x011303], + [0x01133B, 0x01133C], + [0x01133E, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x011362, 0x011363], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011435, 0x011446], + [0x0114B0, 0x0114C3], + [0x0115AF, 0x0115B5], + [0x0115B8, 0x0115C0], + [0x0115DC, 0x0115DD], + [0x011630, 0x011640], + [0x0116AB, 0x0116B7], + [0x01171D, 0x01172B], + [0x01182C, 0x01183A], + [0x011930, 0x011935], + [0x011937, 0x011938], + [0x01193B, 0x01193E], + [0x011942, 0x011943], + [0x0119D1, 0x0119D7], + [0x0119DA, 0x0119E0], + [0x011A01, 0x011A0A], + [0x011A33, 0x011A39], + [0x011A3B, 0x011A3E], + [0x011A51, 0x011A5B], + [0x011A8A, 0x011A99], + [0x011C2F, 0x011C36], + [0x011C38, 0x011C3F], + [0x011C92, 0x011CA7], + [0x011CA9, 0x011CB6], + [0x011D31, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D45], + [0x011D8A, 0x011D8E], + [0x011D90, 0x011D91], + [0x011D93, 0x011D97], + [0x011EF3, 0x011EF6], + [0x011F00, 0x011F01], + [0x011F34, 0x011F3A], + [0x011F3E, 0x011F42], + [0x013447, 0x013455], + [0x016AF0, 0x016AF4], + [0x016B30, 0x016B36], + [0x016F51, 0x016F87], + [0x016F8F, 0x016F92], + [0x016FF0, 0x016FF1], + [0x01BC9D, 0x01BC9E], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01D165, 0x01D169], + [0x01D16D, 0x01D172], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D242, 0x01D244], + [0x01DA00, 0x01DA36], + [0x01DA3B, 0x01DA6C], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E130, 0x01E136], + [0x01E2EC, 0x01E2EF], + [0x01E4EC, 0x01E4EF], + [0x01E8D0, 0x01E8D6], + [0x01E944, 0x01E94A], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Mark}+$/u, + matchSymbols, + "\\p{General_Category=Mark}" +); +testPropertyEscapes( + /^\p{General_Category=M}+$/u, + matchSymbols, + "\\p{General_Category=M}" +); +testPropertyEscapes( + /^\p{General_Category=Combining_Mark}+$/u, + matchSymbols, + "\\p{General_Category=Combining_Mark}" +); +testPropertyEscapes( + /^\p{gc=Mark}+$/u, + matchSymbols, + "\\p{gc=Mark}" +); +testPropertyEscapes( + /^\p{gc=M}+$/u, + matchSymbols, + "\\p{gc=M}" +); +testPropertyEscapes( + /^\p{gc=Combining_Mark}+$/u, + matchSymbols, + "\\p{gc=Combining_Mark}" +); +testPropertyEscapes( + /^\p{Mark}+$/u, + matchSymbols, + "\\p{Mark}" +); +testPropertyEscapes( + /^\p{M}+$/u, + matchSymbols, + "\\p{M}" +); +testPropertyEscapes( + /^\p{Combining_Mark}+$/u, + matchSymbols, + "\\p{Combining_Mark}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x0006E9, + 0x00081A, + 0x000824, + 0x000828, + 0x0008E2, + 0x00093D, + 0x000950, + 0x0009BD, + 0x000A3D, + 0x000ABD, + 0x000AC6, + 0x000ACA, + 0x000B00, + 0x000B3D, + 0x000BC9, + 0x000C3D, + 0x000C45, + 0x000C49, + 0x000CBD, + 0x000CC5, + 0x000CC9, + 0x000D3D, + 0x000D45, + 0x000D49, + 0x000DD5, + 0x000DD7, + 0x000F36, + 0x000F38, + 0x000F85, + 0x000F98, + 0x001061, + 0x00108E, + 0x00180E, + 0x001A5F, + 0x001CD3, + 0x00A673, + 0x00AAB1, + 0x00AAC0, + 0x00ABEB, + 0x010A04, + 0x0111CD, + 0x01133D, + 0x011936, + 0x01193F, + 0x011941, + 0x011A3A, + 0x011C37, + 0x011CA8, + 0x011D3B, + 0x011D3E, + 0x011D46, + 0x011D8F, + 0x011D92, + 0x011F02, + 0x016F50, + 0x01DAA0, + 0x01E007, + 0x01E022, + 0x01E025 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0002FF], + [0x000370, 0x000482], + [0x00048A, 0x000590], + [0x0005C8, 0x00060F], + [0x00061B, 0x00064A], + [0x000660, 0x00066F], + [0x000671, 0x0006D5], + [0x0006DD, 0x0006DE], + [0x0006E5, 0x0006E6], + [0x0006EE, 0x000710], + [0x000712, 0x00072F], + [0x00074B, 0x0007A5], + [0x0007B1, 0x0007EA], + [0x0007F4, 0x0007FC], + [0x0007FE, 0x000815], + [0x00082E, 0x000858], + [0x00085C, 0x000897], + [0x0008A0, 0x0008C9], + [0x000904, 0x000939], + [0x000958, 0x000961], + [0x000964, 0x000980], + [0x000984, 0x0009BB], + [0x0009C5, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CE, 0x0009D6], + [0x0009D8, 0x0009E1], + [0x0009E4, 0x0009FD], + [0x0009FF, 0x000A00], + [0x000A04, 0x000A3B], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A6F], + [0x000A72, 0x000A74], + [0x000A76, 0x000A80], + [0x000A84, 0x000ABB], + [0x000ACE, 0x000AE1], + [0x000AE4, 0x000AF9], + [0x000B04, 0x000B3B], + [0x000B45, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4E, 0x000B54], + [0x000B58, 0x000B61], + [0x000B64, 0x000B81], + [0x000B83, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCE, 0x000BD6], + [0x000BD8, 0x000BFF], + [0x000C05, 0x000C3B], + [0x000C4E, 0x000C54], + [0x000C57, 0x000C61], + [0x000C64, 0x000C80], + [0x000C84, 0x000CBB], + [0x000CCE, 0x000CD4], + [0x000CD7, 0x000CE1], + [0x000CE4, 0x000CF2], + [0x000CF4, 0x000CFF], + [0x000D04, 0x000D3A], + [0x000D4E, 0x000D56], + [0x000D58, 0x000D61], + [0x000D64, 0x000D80], + [0x000D84, 0x000DC9], + [0x000DCB, 0x000DCE], + [0x000DE0, 0x000DF1], + [0x000DF4, 0x000E30], + [0x000E32, 0x000E33], + [0x000E3B, 0x000E46], + [0x000E4F, 0x000EB0], + [0x000EB2, 0x000EB3], + [0x000EBD, 0x000EC7], + [0x000ECF, 0x000F17], + [0x000F1A, 0x000F34], + [0x000F3A, 0x000F3D], + [0x000F40, 0x000F70], + [0x000F88, 0x000F8C], + [0x000FBD, 0x000FC5], + [0x000FC7, 0x00102A], + [0x00103F, 0x001055], + [0x00105A, 0x00105D], + [0x001065, 0x001066], + [0x00106E, 0x001070], + [0x001075, 0x001081], + [0x001090, 0x001099], + [0x00109E, 0x00135C], + [0x001360, 0x001711], + [0x001716, 0x001731], + [0x001735, 0x001751], + [0x001754, 0x001771], + [0x001774, 0x0017B3], + [0x0017D4, 0x0017DC], + [0x0017DE, 0x00180A], + [0x001810, 0x001884], + [0x001887, 0x0018A8], + [0x0018AA, 0x00191F], + [0x00192C, 0x00192F], + [0x00193C, 0x001A16], + [0x001A1C, 0x001A54], + [0x001A7D, 0x001A7E], + [0x001A80, 0x001AAF], + [0x001ACF, 0x001AFF], + [0x001B05, 0x001B33], + [0x001B45, 0x001B6A], + [0x001B74, 0x001B7F], + [0x001B83, 0x001BA0], + [0x001BAE, 0x001BE5], + [0x001BF4, 0x001C23], + [0x001C38, 0x001CCF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF6], + [0x001CFA, 0x001DBF], + [0x001E00, 0x0020CF], + [0x0020F1, 0x002CEE], + [0x002CF2, 0x002D7E], + [0x002D80, 0x002DDF], + [0x002E00, 0x003029], + [0x003030, 0x003098], + [0x00309B, 0x00A66E], + [0x00A67E, 0x00A69D], + [0x00A6A0, 0x00A6EF], + [0x00A6F2, 0x00A801], + [0x00A803, 0x00A805], + [0x00A807, 0x00A80A], + [0x00A80C, 0x00A822], + [0x00A828, 0x00A82B], + [0x00A82D, 0x00A87F], + [0x00A882, 0x00A8B3], + [0x00A8C6, 0x00A8DF], + [0x00A8F2, 0x00A8FE], + [0x00A900, 0x00A925], + [0x00A92E, 0x00A946], + [0x00A954, 0x00A97F], + [0x00A984, 0x00A9B2], + [0x00A9C1, 0x00A9E4], + [0x00A9E6, 0x00AA28], + [0x00AA37, 0x00AA42], + [0x00AA44, 0x00AA4B], + [0x00AA4E, 0x00AA7A], + [0x00AA7E, 0x00AAAF], + [0x00AAB5, 0x00AAB6], + [0x00AAB9, 0x00AABD], + [0x00AAC2, 0x00AAEA], + [0x00AAF0, 0x00AAF4], + [0x00AAF7, 0x00ABE2], + [0x00ABEE, 0x00DBFF], + [0x00E000, 0x00FB1D], + [0x00FB1F, 0x00FDFF], + [0x00FE10, 0x00FE1F], + [0x00FE30, 0x0101FC], + [0x0101FE, 0x0102DF], + [0x0102E1, 0x010375], + [0x01037B, 0x010A00], + [0x010A07, 0x010A0B], + [0x010A10, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A40, 0x010AE4], + [0x010AE7, 0x010D23], + [0x010D28, 0x010EAA], + [0x010EAD, 0x010EFC], + [0x010F00, 0x010F45], + [0x010F51, 0x010F81], + [0x010F86, 0x010FFF], + [0x011003, 0x011037], + [0x011047, 0x01106F], + [0x011071, 0x011072], + [0x011075, 0x01107E], + [0x011083, 0x0110AF], + [0x0110BB, 0x0110C1], + [0x0110C3, 0x0110FF], + [0x011103, 0x011126], + [0x011135, 0x011144], + [0x011147, 0x011172], + [0x011174, 0x01117F], + [0x011183, 0x0111B2], + [0x0111C1, 0x0111C8], + [0x0111D0, 0x01122B], + [0x011238, 0x01123D], + [0x01123F, 0x011240], + [0x011242, 0x0112DE], + [0x0112EB, 0x0112FF], + [0x011304, 0x01133A], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x011356], + [0x011358, 0x011361], + [0x011364, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x011434], + [0x011447, 0x01145D], + [0x01145F, 0x0114AF], + [0x0114C4, 0x0115AE], + [0x0115B6, 0x0115B7], + [0x0115C1, 0x0115DB], + [0x0115DE, 0x01162F], + [0x011641, 0x0116AA], + [0x0116B8, 0x01171C], + [0x01172C, 0x01182B], + [0x01183B, 0x01192F], + [0x011939, 0x01193A], + [0x011944, 0x0119D0], + [0x0119D8, 0x0119D9], + [0x0119E1, 0x0119E3], + [0x0119E5, 0x011A00], + [0x011A0B, 0x011A32], + [0x011A3F, 0x011A46], + [0x011A48, 0x011A50], + [0x011A5C, 0x011A89], + [0x011A9A, 0x011C2E], + [0x011C40, 0x011C91], + [0x011CB7, 0x011D30], + [0x011D37, 0x011D39], + [0x011D48, 0x011D89], + [0x011D98, 0x011EF2], + [0x011EF7, 0x011EFF], + [0x011F04, 0x011F33], + [0x011F3B, 0x011F3D], + [0x011F43, 0x01343F], + [0x013441, 0x013446], + [0x013456, 0x016AEF], + [0x016AF5, 0x016B2F], + [0x016B37, 0x016F4E], + [0x016F88, 0x016F8E], + [0x016F93, 0x016FE3], + [0x016FE5, 0x016FEF], + [0x016FF2, 0x01BC9C], + [0x01BC9F, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01D164], + [0x01D16A, 0x01D16C], + [0x01D173, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D241], + [0x01D245, 0x01D9FF], + [0x01DA37, 0x01DA3A], + [0x01DA6D, 0x01DA74], + [0x01DA76, 0x01DA83], + [0x01DA85, 0x01DA9A], + [0x01DAB0, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E08E], + [0x01E090, 0x01E12F], + [0x01E137, 0x01E2AD], + [0x01E2AF, 0x01E2EB], + [0x01E2F0, 0x01E4EB], + [0x01E4F0, 0x01E8CF], + [0x01E8D7, 0x01E943], + [0x01E94B, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Mark}+$/u, + nonMatchSymbols, + "\\P{General_Category=Mark}" +); +testPropertyEscapes( + /^\P{General_Category=M}+$/u, + nonMatchSymbols, + "\\P{General_Category=M}" +); +testPropertyEscapes( + /^\P{General_Category=Combining_Mark}+$/u, + nonMatchSymbols, + "\\P{General_Category=Combining_Mark}" +); +testPropertyEscapes( + /^\P{gc=Mark}+$/u, + nonMatchSymbols, + "\\P{gc=Mark}" +); +testPropertyEscapes( + /^\P{gc=M}+$/u, + nonMatchSymbols, + "\\P{gc=M}" +); +testPropertyEscapes( + /^\P{gc=Combining_Mark}+$/u, + nonMatchSymbols, + "\\P{gc=Combining_Mark}" +); +testPropertyEscapes( + /^\P{Mark}+$/u, + nonMatchSymbols, + "\\P{Mark}" +); +testPropertyEscapes( + /^\P{M}+$/u, + nonMatchSymbols, + "\\P{M}" +); +testPropertyEscapes( + /^\P{Combining_Mark}+$/u, + nonMatchSymbols, + "\\P{Combining_Mark}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js new file mode 100644 index 0000000000..563d334e4e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Math_Symbol.js @@ -0,0 +1,221 @@ +// Copyright 2022 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 for `General_Category=Math_Symbol` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00002B, + 0x00007C, + 0x00007E, + 0x0000AC, + 0x0000B1, + 0x0000D7, + 0x0000F7, + 0x0003F6, + 0x002044, + 0x002052, + 0x002118, + 0x00214B, + 0x0021A0, + 0x0021A3, + 0x0021A6, + 0x0021AE, + 0x0021D2, + 0x0021D4, + 0x00237C, + 0x0025B7, + 0x0025C1, + 0x00266F, + 0x00FB29, + 0x00FE62, + 0x00FF0B, + 0x00FF5C, + 0x00FF5E, + 0x00FFE2, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3 + ], + ranges: [ + [0x00003C, 0x00003E], + [0x000606, 0x000608], + [0x00207A, 0x00207C], + [0x00208A, 0x00208C], + [0x002140, 0x002144], + [0x002190, 0x002194], + [0x00219A, 0x00219B], + [0x0021CE, 0x0021CF], + [0x0021F4, 0x0022FF], + [0x002320, 0x002321], + [0x00239B, 0x0023B3], + [0x0023DC, 0x0023E1], + [0x0025F8, 0x0025FF], + [0x0027C0, 0x0027C4], + [0x0027C7, 0x0027E5], + [0x0027F0, 0x0027FF], + [0x002900, 0x002982], + [0x002999, 0x0029D7], + [0x0029DC, 0x0029FB], + [0x0029FE, 0x002AFF], + [0x002B30, 0x002B44], + [0x002B47, 0x002B4C], + [0x00FE64, 0x00FE66], + [0x00FF1C, 0x00FF1E], + [0x00FFE9, 0x00FFEC], + [0x01EEF0, 0x01EEF1] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Math_Symbol}+$/u, + matchSymbols, + "\\p{General_Category=Math_Symbol}" +); +testPropertyEscapes( + /^\p{General_Category=Sm}+$/u, + matchSymbols, + "\\p{General_Category=Sm}" +); +testPropertyEscapes( + /^\p{gc=Math_Symbol}+$/u, + matchSymbols, + "\\p{gc=Math_Symbol}" +); +testPropertyEscapes( + /^\p{gc=Sm}+$/u, + matchSymbols, + "\\p{gc=Sm}" +); +testPropertyEscapes( + /^\p{Math_Symbol}+$/u, + matchSymbols, + "\\p{Math_Symbol}" +); +testPropertyEscapes( + /^\p{Sm}+$/u, + matchSymbols, + "\\p{Sm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00007D, + 0x0021D3, + 0x00FE63, + 0x00FF5D + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002A], + [0x00002C, 0x00003B], + [0x00003F, 0x00007B], + [0x00007F, 0x0000AB], + [0x0000AD, 0x0000B0], + [0x0000B2, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0003F5], + [0x0003F7, 0x000605], + [0x000609, 0x002043], + [0x002045, 0x002051], + [0x002053, 0x002079], + [0x00207D, 0x002089], + [0x00208D, 0x002117], + [0x002119, 0x00213F], + [0x002145, 0x00214A], + [0x00214C, 0x00218F], + [0x002195, 0x002199], + [0x00219C, 0x00219F], + [0x0021A1, 0x0021A2], + [0x0021A4, 0x0021A5], + [0x0021A7, 0x0021AD], + [0x0021AF, 0x0021CD], + [0x0021D0, 0x0021D1], + [0x0021D5, 0x0021F3], + [0x002300, 0x00231F], + [0x002322, 0x00237B], + [0x00237D, 0x00239A], + [0x0023B4, 0x0023DB], + [0x0023E2, 0x0025B6], + [0x0025B8, 0x0025C0], + [0x0025C2, 0x0025F7], + [0x002600, 0x00266E], + [0x002670, 0x0027BF], + [0x0027C5, 0x0027C6], + [0x0027E6, 0x0027EF], + [0x002800, 0x0028FF], + [0x002983, 0x002998], + [0x0029D8, 0x0029DB], + [0x0029FC, 0x0029FD], + [0x002B00, 0x002B2F], + [0x002B45, 0x002B46], + [0x002B4D, 0x00DBFF], + [0x00E000, 0x00FB28], + [0x00FB2A, 0x00FE61], + [0x00FE67, 0x00FF0A], + [0x00FF0C, 0x00FF1B], + [0x00FF1F, 0x00FF5B], + [0x00FF5F, 0x00FFE1], + [0x00FFE3, 0x00FFE8], + [0x00FFED, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01EEEF], + [0x01EEF2, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Math_Symbol}+$/u, + nonMatchSymbols, + "\\P{General_Category=Math_Symbol}" +); +testPropertyEscapes( + /^\P{General_Category=Sm}+$/u, + nonMatchSymbols, + "\\P{General_Category=Sm}" +); +testPropertyEscapes( + /^\P{gc=Math_Symbol}+$/u, + nonMatchSymbols, + "\\P{gc=Math_Symbol}" +); +testPropertyEscapes( + /^\P{gc=Sm}+$/u, + nonMatchSymbols, + "\\P{gc=Sm}" +); +testPropertyEscapes( + /^\P{Math_Symbol}+$/u, + nonMatchSymbols, + "\\P{Math_Symbol}" +); +testPropertyEscapes( + /^\P{Sm}+$/u, + nonMatchSymbols, + "\\P{Sm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js new file mode 100644 index 0000000000..5569499ea6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Letter.js @@ -0,0 +1,235 @@ +// Copyright 2022 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 for `General_Category=Modifier_Letter` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0002EC, + 0x0002EE, + 0x000374, + 0x00037A, + 0x000559, + 0x000640, + 0x0007FA, + 0x00081A, + 0x000824, + 0x000828, + 0x0008C9, + 0x000971, + 0x000E46, + 0x000EC6, + 0x0010FC, + 0x0017D7, + 0x001843, + 0x001AA7, + 0x001D78, + 0x002071, + 0x00207F, + 0x002D6F, + 0x002E2F, + 0x003005, + 0x00303B, + 0x00A015, + 0x00A60C, + 0x00A67F, + 0x00A770, + 0x00A788, + 0x00A9CF, + 0x00A9E6, + 0x00AA70, + 0x00AADD, + 0x00AB69, + 0x00FF70, + 0x016FE3, + 0x01E4EB, + 0x01E94B + ], + ranges: [ + [0x0002B0, 0x0002C1], + [0x0002C6, 0x0002D1], + [0x0002E0, 0x0002E4], + [0x0006E5, 0x0006E6], + [0x0007F4, 0x0007F5], + [0x001C78, 0x001C7D], + [0x001D2C, 0x001D6A], + [0x001D9B, 0x001DBF], + [0x002090, 0x00209C], + [0x002C7C, 0x002C7D], + [0x003031, 0x003035], + [0x00309D, 0x00309E], + [0x0030FC, 0x0030FE], + [0x00A4F8, 0x00A4FD], + [0x00A69C, 0x00A69D], + [0x00A717, 0x00A71F], + [0x00A7F2, 0x00A7F4], + [0x00A7F8, 0x00A7F9], + [0x00AAF3, 0x00AAF4], + [0x00AB5C, 0x00AB5F], + [0x00FF9E, 0x00FF9F], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x016B40, 0x016B43], + [0x016F93, 0x016F9F], + [0x016FE0, 0x016FE1], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01E030, 0x01E06D], + [0x01E137, 0x01E13D] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Modifier_Letter}+$/u, + matchSymbols, + "\\p{General_Category=Modifier_Letter}" +); +testPropertyEscapes( + /^\p{General_Category=Lm}+$/u, + matchSymbols, + "\\p{General_Category=Lm}" +); +testPropertyEscapes( + /^\p{gc=Modifier_Letter}+$/u, + matchSymbols, + "\\p{gc=Modifier_Letter}" +); +testPropertyEscapes( + /^\p{gc=Lm}+$/u, + matchSymbols, + "\\p{gc=Lm}" +); +testPropertyEscapes( + /^\p{Modifier_Letter}+$/u, + matchSymbols, + "\\p{Modifier_Letter}" +); +testPropertyEscapes( + /^\p{Lm}+$/u, + matchSymbols, + "\\p{Lm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0002ED, + 0x010786, + 0x0107B1, + 0x016FE2, + 0x01AFF4, + 0x01AFFC + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0002AF], + [0x0002C2, 0x0002C5], + [0x0002D2, 0x0002DF], + [0x0002E5, 0x0002EB], + [0x0002EF, 0x000373], + [0x000375, 0x000379], + [0x00037B, 0x000558], + [0x00055A, 0x00063F], + [0x000641, 0x0006E4], + [0x0006E7, 0x0007F3], + [0x0007F6, 0x0007F9], + [0x0007FB, 0x000819], + [0x00081B, 0x000823], + [0x000825, 0x000827], + [0x000829, 0x0008C8], + [0x0008CA, 0x000970], + [0x000972, 0x000E45], + [0x000E47, 0x000EC5], + [0x000EC7, 0x0010FB], + [0x0010FD, 0x0017D6], + [0x0017D8, 0x001842], + [0x001844, 0x001AA6], + [0x001AA8, 0x001C77], + [0x001C7E, 0x001D2B], + [0x001D6B, 0x001D77], + [0x001D79, 0x001D9A], + [0x001DC0, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x002C7B], + [0x002C7E, 0x002D6E], + [0x002D70, 0x002E2E], + [0x002E30, 0x003004], + [0x003006, 0x003030], + [0x003036, 0x00303A], + [0x00303C, 0x00309C], + [0x00309F, 0x0030FB], + [0x0030FF, 0x00A014], + [0x00A016, 0x00A4F7], + [0x00A4FE, 0x00A60B], + [0x00A60D, 0x00A67E], + [0x00A680, 0x00A69B], + [0x00A69E, 0x00A716], + [0x00A720, 0x00A76F], + [0x00A771, 0x00A787], + [0x00A789, 0x00A7F1], + [0x00A7F5, 0x00A7F7], + [0x00A7FA, 0x00A9CE], + [0x00A9D0, 0x00A9E5], + [0x00A9E7, 0x00AA6F], + [0x00AA71, 0x00AADC], + [0x00AADE, 0x00AAF2], + [0x00AAF5, 0x00AB5B], + [0x00AB60, 0x00AB68], + [0x00AB6A, 0x00DBFF], + [0x00E000, 0x00FF6F], + [0x00FF71, 0x00FF9D], + [0x00FFA0, 0x01077F], + [0x0107BB, 0x016B3F], + [0x016B44, 0x016F92], + [0x016FA0, 0x016FDF], + [0x016FE4, 0x01AFEF], + [0x01AFFF, 0x01E02F], + [0x01E06E, 0x01E136], + [0x01E13E, 0x01E4EA], + [0x01E4EC, 0x01E94A], + [0x01E94C, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Modifier_Letter}+$/u, + nonMatchSymbols, + "\\P{General_Category=Modifier_Letter}" +); +testPropertyEscapes( + /^\P{General_Category=Lm}+$/u, + nonMatchSymbols, + "\\P{General_Category=Lm}" +); +testPropertyEscapes( + /^\P{gc=Modifier_Letter}+$/u, + nonMatchSymbols, + "\\P{gc=Modifier_Letter}" +); +testPropertyEscapes( + /^\P{gc=Lm}+$/u, + nonMatchSymbols, + "\\P{gc=Lm}" +); +testPropertyEscapes( + /^\P{Modifier_Letter}+$/u, + nonMatchSymbols, + "\\P{Modifier_Letter}" +); +testPropertyEscapes( + /^\P{Lm}+$/u, + nonMatchSymbols, + "\\P{Lm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js new file mode 100644 index 0000000000..b40382c0dc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Modifier_Symbol.js @@ -0,0 +1,155 @@ +// Copyright 2022 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 for `General_Category=Modifier_Symbol` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00005E, + 0x000060, + 0x0000A8, + 0x0000AF, + 0x0000B4, + 0x0000B8, + 0x0002ED, + 0x000375, + 0x000888, + 0x001FBD, + 0x00AB5B, + 0x00FF3E, + 0x00FF40, + 0x00FFE3 + ], + ranges: [ + [0x0002C2, 0x0002C5], + [0x0002D2, 0x0002DF], + [0x0002E5, 0x0002EB], + [0x0002EF, 0x0002FF], + [0x000384, 0x000385], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FDD, 0x001FDF], + [0x001FED, 0x001FEF], + [0x001FFD, 0x001FFE], + [0x00309B, 0x00309C], + [0x00A700, 0x00A716], + [0x00A720, 0x00A721], + [0x00A789, 0x00A78A], + [0x00AB6A, 0x00AB6B], + [0x00FBB2, 0x00FBC2], + [0x01F3FB, 0x01F3FF] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Modifier_Symbol}+$/u, + matchSymbols, + "\\p{General_Category=Modifier_Symbol}" +); +testPropertyEscapes( + /^\p{General_Category=Sk}+$/u, + matchSymbols, + "\\p{General_Category=Sk}" +); +testPropertyEscapes( + /^\p{gc=Modifier_Symbol}+$/u, + matchSymbols, + "\\p{gc=Modifier_Symbol}" +); +testPropertyEscapes( + /^\p{gc=Sk}+$/u, + matchSymbols, + "\\p{gc=Sk}" +); +testPropertyEscapes( + /^\p{Modifier_Symbol}+$/u, + matchSymbols, + "\\p{Modifier_Symbol}" +); +testPropertyEscapes( + /^\p{Sk}+$/u, + matchSymbols, + "\\p{Sk}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00005F, + 0x0002EC, + 0x0002EE, + 0x001FBE, + 0x00FF3F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00005D], + [0x000061, 0x0000A7], + [0x0000A9, 0x0000AE], + [0x0000B0, 0x0000B3], + [0x0000B5, 0x0000B7], + [0x0000B9, 0x0002C1], + [0x0002C6, 0x0002D1], + [0x0002E0, 0x0002E4], + [0x000300, 0x000374], + [0x000376, 0x000383], + [0x000386, 0x000887], + [0x000889, 0x001FBC], + [0x001FC2, 0x001FCC], + [0x001FD0, 0x001FDC], + [0x001FE0, 0x001FEC], + [0x001FF0, 0x001FFC], + [0x001FFF, 0x00309A], + [0x00309D, 0x00A6FF], + [0x00A717, 0x00A71F], + [0x00A722, 0x00A788], + [0x00A78B, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB6C, 0x00DBFF], + [0x00E000, 0x00FBB1], + [0x00FBC3, 0x00FF3D], + [0x00FF41, 0x00FFE2], + [0x00FFE4, 0x01F3FA], + [0x01F400, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Modifier_Symbol}+$/u, + nonMatchSymbols, + "\\P{General_Category=Modifier_Symbol}" +); +testPropertyEscapes( + /^\P{General_Category=Sk}+$/u, + nonMatchSymbols, + "\\P{General_Category=Sk}" +); +testPropertyEscapes( + /^\P{gc=Modifier_Symbol}+$/u, + nonMatchSymbols, + "\\P{gc=Modifier_Symbol}" +); +testPropertyEscapes( + /^\P{gc=Sk}+$/u, + nonMatchSymbols, + "\\P{gc=Sk}" +); +testPropertyEscapes( + /^\P{Modifier_Symbol}+$/u, + nonMatchSymbols, + "\\P{Modifier_Symbol}" +); +testPropertyEscapes( + /^\P{Sk}+$/u, + nonMatchSymbols, + "\\P{Sk}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js new file mode 100644 index 0000000000..4a987a35aa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Nonspacing_Mark.js @@ -0,0 +1,785 @@ +// Copyright 2022 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 for `General_Category=Nonspacing_Mark` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0005BF, + 0x0005C7, + 0x000670, + 0x000711, + 0x0007FD, + 0x00093A, + 0x00093C, + 0x00094D, + 0x000981, + 0x0009BC, + 0x0009CD, + 0x0009FE, + 0x000A3C, + 0x000A51, + 0x000A75, + 0x000ABC, + 0x000ACD, + 0x000B01, + 0x000B3C, + 0x000B3F, + 0x000B4D, + 0x000B82, + 0x000BC0, + 0x000BCD, + 0x000C00, + 0x000C04, + 0x000C3C, + 0x000C81, + 0x000CBC, + 0x000CBF, + 0x000CC6, + 0x000D4D, + 0x000D81, + 0x000DCA, + 0x000DD6, + 0x000E31, + 0x000EB1, + 0x000F35, + 0x000F37, + 0x000F39, + 0x000FC6, + 0x001082, + 0x00108D, + 0x00109D, + 0x0017C6, + 0x0017DD, + 0x00180F, + 0x0018A9, + 0x001932, + 0x001A1B, + 0x001A56, + 0x001A60, + 0x001A62, + 0x001A7F, + 0x001B34, + 0x001B3C, + 0x001B42, + 0x001BE6, + 0x001BED, + 0x001CED, + 0x001CF4, + 0x0020E1, + 0x002D7F, + 0x00A66F, + 0x00A802, + 0x00A806, + 0x00A80B, + 0x00A82C, + 0x00A8FF, + 0x00A9B3, + 0x00A9E5, + 0x00AA43, + 0x00AA4C, + 0x00AA7C, + 0x00AAB0, + 0x00AAC1, + 0x00AAF6, + 0x00ABE5, + 0x00ABE8, + 0x00ABED, + 0x00FB1E, + 0x0101FD, + 0x0102E0, + 0x010A3F, + 0x011001, + 0x011070, + 0x0110C2, + 0x011173, + 0x0111CF, + 0x011234, + 0x01123E, + 0x011241, + 0x0112DF, + 0x011340, + 0x011446, + 0x01145E, + 0x0114BA, + 0x01163D, + 0x0116AB, + 0x0116AD, + 0x0116B7, + 0x01193E, + 0x011943, + 0x0119E0, + 0x011A47, + 0x011C3F, + 0x011D3A, + 0x011D47, + 0x011D95, + 0x011D97, + 0x011F40, + 0x011F42, + 0x013440, + 0x016F4F, + 0x016FE4, + 0x01DA75, + 0x01DA84, + 0x01E08F, + 0x01E2AE + ], + ranges: [ + [0x000300, 0x00036F], + [0x000483, 0x000487], + [0x000591, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x000610, 0x00061A], + [0x00064B, 0x00065F], + [0x0006D6, 0x0006DC], + [0x0006DF, 0x0006E4], + [0x0006E7, 0x0006E8], + [0x0006EA, 0x0006ED], + [0x000730, 0x00074A], + [0x0007A6, 0x0007B0], + [0x0007EB, 0x0007F3], + [0x000816, 0x000819], + [0x00081B, 0x000823], + [0x000825, 0x000827], + [0x000829, 0x00082D], + [0x000859, 0x00085B], + [0x000898, 0x00089F], + [0x0008CA, 0x0008E1], + [0x0008E3, 0x000902], + [0x000941, 0x000948], + [0x000951, 0x000957], + [0x000962, 0x000963], + [0x0009C1, 0x0009C4], + [0x0009E2, 0x0009E3], + [0x000A01, 0x000A02], + [0x000A41, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A70, 0x000A71], + [0x000A81, 0x000A82], + [0x000AC1, 0x000AC5], + [0x000AC7, 0x000AC8], + [0x000AE2, 0x000AE3], + [0x000AFA, 0x000AFF], + [0x000B41, 0x000B44], + [0x000B55, 0x000B56], + [0x000B62, 0x000B63], + [0x000C3E, 0x000C40], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C62, 0x000C63], + [0x000CCC, 0x000CCD], + [0x000CE2, 0x000CE3], + [0x000D00, 0x000D01], + [0x000D3B, 0x000D3C], + [0x000D41, 0x000D44], + [0x000D62, 0x000D63], + [0x000DD2, 0x000DD4], + [0x000E34, 0x000E3A], + [0x000E47, 0x000E4E], + [0x000EB4, 0x000EBC], + [0x000EC8, 0x000ECE], + [0x000F18, 0x000F19], + [0x000F71, 0x000F7E], + [0x000F80, 0x000F84], + [0x000F86, 0x000F87], + [0x000F8D, 0x000F97], + [0x000F99, 0x000FBC], + [0x00102D, 0x001030], + [0x001032, 0x001037], + [0x001039, 0x00103A], + [0x00103D, 0x00103E], + [0x001058, 0x001059], + [0x00105E, 0x001060], + [0x001071, 0x001074], + [0x001085, 0x001086], + [0x00135D, 0x00135F], + [0x001712, 0x001714], + [0x001732, 0x001733], + [0x001752, 0x001753], + [0x001772, 0x001773], + [0x0017B4, 0x0017B5], + [0x0017B7, 0x0017BD], + [0x0017C9, 0x0017D3], + [0x00180B, 0x00180D], + [0x001885, 0x001886], + [0x001920, 0x001922], + [0x001927, 0x001928], + [0x001939, 0x00193B], + [0x001A17, 0x001A18], + [0x001A58, 0x001A5E], + [0x001A65, 0x001A6C], + [0x001A73, 0x001A7C], + [0x001AB0, 0x001ABD], + [0x001ABF, 0x001ACE], + [0x001B00, 0x001B03], + [0x001B36, 0x001B3A], + [0x001B6B, 0x001B73], + [0x001B80, 0x001B81], + [0x001BA2, 0x001BA5], + [0x001BA8, 0x001BA9], + [0x001BAB, 0x001BAD], + [0x001BE8, 0x001BE9], + [0x001BEF, 0x001BF1], + [0x001C2C, 0x001C33], + [0x001C36, 0x001C37], + [0x001CD0, 0x001CD2], + [0x001CD4, 0x001CE0], + [0x001CE2, 0x001CE8], + [0x001CF8, 0x001CF9], + [0x001DC0, 0x001DFF], + [0x0020D0, 0x0020DC], + [0x0020E5, 0x0020F0], + [0x002CEF, 0x002CF1], + [0x002DE0, 0x002DFF], + [0x00302A, 0x00302D], + [0x003099, 0x00309A], + [0x00A674, 0x00A67D], + [0x00A69E, 0x00A69F], + [0x00A6F0, 0x00A6F1], + [0x00A825, 0x00A826], + [0x00A8C4, 0x00A8C5], + [0x00A8E0, 0x00A8F1], + [0x00A926, 0x00A92D], + [0x00A947, 0x00A951], + [0x00A980, 0x00A982], + [0x00A9B6, 0x00A9B9], + [0x00A9BC, 0x00A9BD], + [0x00AA29, 0x00AA2E], + [0x00AA31, 0x00AA32], + [0x00AA35, 0x00AA36], + [0x00AAB2, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABE, 0x00AABF], + [0x00AAEC, 0x00AAED], + [0x00FE00, 0x00FE0F], + [0x00FE20, 0x00FE2F], + [0x010376, 0x01037A], + [0x010A01, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A0F], + [0x010A38, 0x010A3A], + [0x010AE5, 0x010AE6], + [0x010D24, 0x010D27], + [0x010EAB, 0x010EAC], + [0x010EFD, 0x010EFF], + [0x010F46, 0x010F50], + [0x010F82, 0x010F85], + [0x011038, 0x011046], + [0x011073, 0x011074], + [0x01107F, 0x011081], + [0x0110B3, 0x0110B6], + [0x0110B9, 0x0110BA], + [0x011100, 0x011102], + [0x011127, 0x01112B], + [0x01112D, 0x011134], + [0x011180, 0x011181], + [0x0111B6, 0x0111BE], + [0x0111C9, 0x0111CC], + [0x01122F, 0x011231], + [0x011236, 0x011237], + [0x0112E3, 0x0112EA], + [0x011300, 0x011301], + [0x01133B, 0x01133C], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011438, 0x01143F], + [0x011442, 0x011444], + [0x0114B3, 0x0114B8], + [0x0114BF, 0x0114C0], + [0x0114C2, 0x0114C3], + [0x0115B2, 0x0115B5], + [0x0115BC, 0x0115BD], + [0x0115BF, 0x0115C0], + [0x0115DC, 0x0115DD], + [0x011633, 0x01163A], + [0x01163F, 0x011640], + [0x0116B0, 0x0116B5], + [0x01171D, 0x01171F], + [0x011722, 0x011725], + [0x011727, 0x01172B], + [0x01182F, 0x011837], + [0x011839, 0x01183A], + [0x01193B, 0x01193C], + [0x0119D4, 0x0119D7], + [0x0119DA, 0x0119DB], + [0x011A01, 0x011A0A], + [0x011A33, 0x011A38], + [0x011A3B, 0x011A3E], + [0x011A51, 0x011A56], + [0x011A59, 0x011A5B], + [0x011A8A, 0x011A96], + [0x011A98, 0x011A99], + [0x011C30, 0x011C36], + [0x011C38, 0x011C3D], + [0x011C92, 0x011CA7], + [0x011CAA, 0x011CB0], + [0x011CB2, 0x011CB3], + [0x011CB5, 0x011CB6], + [0x011D31, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D45], + [0x011D90, 0x011D91], + [0x011EF3, 0x011EF4], + [0x011F00, 0x011F01], + [0x011F36, 0x011F3A], + [0x013447, 0x013455], + [0x016AF0, 0x016AF4], + [0x016B30, 0x016B36], + [0x016F8F, 0x016F92], + [0x01BC9D, 0x01BC9E], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01D167, 0x01D169], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D242, 0x01D244], + [0x01DA00, 0x01DA36], + [0x01DA3B, 0x01DA6C], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E130, 0x01E136], + [0x01E2EC, 0x01E2EF], + [0x01E4EC, 0x01E4EF], + [0x01E8D0, 0x01E8D6], + [0x01E944, 0x01E94A], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Nonspacing_Mark}+$/u, + matchSymbols, + "\\p{General_Category=Nonspacing_Mark}" +); +testPropertyEscapes( + /^\p{General_Category=Mn}+$/u, + matchSymbols, + "\\p{General_Category=Mn}" +); +testPropertyEscapes( + /^\p{gc=Nonspacing_Mark}+$/u, + matchSymbols, + "\\p{gc=Nonspacing_Mark}" +); +testPropertyEscapes( + /^\p{gc=Mn}+$/u, + matchSymbols, + "\\p{gc=Mn}" +); +testPropertyEscapes( + /^\p{Nonspacing_Mark}+$/u, + matchSymbols, + "\\p{Nonspacing_Mark}" +); +testPropertyEscapes( + /^\p{Mn}+$/u, + matchSymbols, + "\\p{Mn}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x0006E9, + 0x00081A, + 0x000824, + 0x000828, + 0x0008E2, + 0x00093B, + 0x000AC6, + 0x000B00, + 0x000B40, + 0x000C3D, + 0x000C49, + 0x000DD5, + 0x000F36, + 0x000F38, + 0x000F7F, + 0x000F85, + 0x000F98, + 0x001031, + 0x001038, + 0x0017B6, + 0x00180E, + 0x001A57, + 0x001A5F, + 0x001A61, + 0x001ABE, + 0x001B35, + 0x001B3B, + 0x001BAA, + 0x001BE7, + 0x001BEE, + 0x001CD3, + 0x001CE1, + 0x00AAB1, + 0x00AAC0, + 0x010A04, + 0x01112C, + 0x011235, + 0x011445, + 0x0114B9, + 0x0114C1, + 0x0115BE, + 0x01163E, + 0x0116AC, + 0x0116B6, + 0x011726, + 0x011838, + 0x01193D, + 0x011A97, + 0x011C37, + 0x011C3E, + 0x011CB1, + 0x011CB4, + 0x011D3B, + 0x011D3E, + 0x011D46, + 0x011D96, + 0x011F41, + 0x01DAA0, + 0x01E007, + 0x01E022, + 0x01E025 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0002FF], + [0x000370, 0x000482], + [0x000488, 0x000590], + [0x0005C8, 0x00060F], + [0x00061B, 0x00064A], + [0x000660, 0x00066F], + [0x000671, 0x0006D5], + [0x0006DD, 0x0006DE], + [0x0006E5, 0x0006E6], + [0x0006EE, 0x000710], + [0x000712, 0x00072F], + [0x00074B, 0x0007A5], + [0x0007B1, 0x0007EA], + [0x0007F4, 0x0007FC], + [0x0007FE, 0x000815], + [0x00082E, 0x000858], + [0x00085C, 0x000897], + [0x0008A0, 0x0008C9], + [0x000903, 0x000939], + [0x00093D, 0x000940], + [0x000949, 0x00094C], + [0x00094E, 0x000950], + [0x000958, 0x000961], + [0x000964, 0x000980], + [0x000982, 0x0009BB], + [0x0009BD, 0x0009C0], + [0x0009C5, 0x0009CC], + [0x0009CE, 0x0009E1], + [0x0009E4, 0x0009FD], + [0x0009FF, 0x000A00], + [0x000A03, 0x000A3B], + [0x000A3D, 0x000A40], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A6F], + [0x000A72, 0x000A74], + [0x000A76, 0x000A80], + [0x000A83, 0x000ABB], + [0x000ABD, 0x000AC0], + [0x000AC9, 0x000ACC], + [0x000ACE, 0x000AE1], + [0x000AE4, 0x000AF9], + [0x000B02, 0x000B3B], + [0x000B3D, 0x000B3E], + [0x000B45, 0x000B4C], + [0x000B4E, 0x000B54], + [0x000B57, 0x000B61], + [0x000B64, 0x000B81], + [0x000B83, 0x000BBF], + [0x000BC1, 0x000BCC], + [0x000BCE, 0x000BFF], + [0x000C01, 0x000C03], + [0x000C05, 0x000C3B], + [0x000C41, 0x000C45], + [0x000C4E, 0x000C54], + [0x000C57, 0x000C61], + [0x000C64, 0x000C80], + [0x000C82, 0x000CBB], + [0x000CBD, 0x000CBE], + [0x000CC0, 0x000CC5], + [0x000CC7, 0x000CCB], + [0x000CCE, 0x000CE1], + [0x000CE4, 0x000CFF], + [0x000D02, 0x000D3A], + [0x000D3D, 0x000D40], + [0x000D45, 0x000D4C], + [0x000D4E, 0x000D61], + [0x000D64, 0x000D80], + [0x000D82, 0x000DC9], + [0x000DCB, 0x000DD1], + [0x000DD7, 0x000E30], + [0x000E32, 0x000E33], + [0x000E3B, 0x000E46], + [0x000E4F, 0x000EB0], + [0x000EB2, 0x000EB3], + [0x000EBD, 0x000EC7], + [0x000ECF, 0x000F17], + [0x000F1A, 0x000F34], + [0x000F3A, 0x000F70], + [0x000F88, 0x000F8C], + [0x000FBD, 0x000FC5], + [0x000FC7, 0x00102C], + [0x00103B, 0x00103C], + [0x00103F, 0x001057], + [0x00105A, 0x00105D], + [0x001061, 0x001070], + [0x001075, 0x001081], + [0x001083, 0x001084], + [0x001087, 0x00108C], + [0x00108E, 0x00109C], + [0x00109E, 0x00135C], + [0x001360, 0x001711], + [0x001715, 0x001731], + [0x001734, 0x001751], + [0x001754, 0x001771], + [0x001774, 0x0017B3], + [0x0017BE, 0x0017C5], + [0x0017C7, 0x0017C8], + [0x0017D4, 0x0017DC], + [0x0017DE, 0x00180A], + [0x001810, 0x001884], + [0x001887, 0x0018A8], + [0x0018AA, 0x00191F], + [0x001923, 0x001926], + [0x001929, 0x001931], + [0x001933, 0x001938], + [0x00193C, 0x001A16], + [0x001A19, 0x001A1A], + [0x001A1C, 0x001A55], + [0x001A63, 0x001A64], + [0x001A6D, 0x001A72], + [0x001A7D, 0x001A7E], + [0x001A80, 0x001AAF], + [0x001ACF, 0x001AFF], + [0x001B04, 0x001B33], + [0x001B3D, 0x001B41], + [0x001B43, 0x001B6A], + [0x001B74, 0x001B7F], + [0x001B82, 0x001BA1], + [0x001BA6, 0x001BA7], + [0x001BAE, 0x001BE5], + [0x001BEA, 0x001BEC], + [0x001BF2, 0x001C2B], + [0x001C34, 0x001C35], + [0x001C38, 0x001CCF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF7], + [0x001CFA, 0x001DBF], + [0x001E00, 0x0020CF], + [0x0020DD, 0x0020E0], + [0x0020E2, 0x0020E4], + [0x0020F1, 0x002CEE], + [0x002CF2, 0x002D7E], + [0x002D80, 0x002DDF], + [0x002E00, 0x003029], + [0x00302E, 0x003098], + [0x00309B, 0x00A66E], + [0x00A670, 0x00A673], + [0x00A67E, 0x00A69D], + [0x00A6A0, 0x00A6EF], + [0x00A6F2, 0x00A801], + [0x00A803, 0x00A805], + [0x00A807, 0x00A80A], + [0x00A80C, 0x00A824], + [0x00A827, 0x00A82B], + [0x00A82D, 0x00A8C3], + [0x00A8C6, 0x00A8DF], + [0x00A8F2, 0x00A8FE], + [0x00A900, 0x00A925], + [0x00A92E, 0x00A946], + [0x00A952, 0x00A97F], + [0x00A983, 0x00A9B2], + [0x00A9B4, 0x00A9B5], + [0x00A9BA, 0x00A9BB], + [0x00A9BE, 0x00A9E4], + [0x00A9E6, 0x00AA28], + [0x00AA2F, 0x00AA30], + [0x00AA33, 0x00AA34], + [0x00AA37, 0x00AA42], + [0x00AA44, 0x00AA4B], + [0x00AA4D, 0x00AA7B], + [0x00AA7D, 0x00AAAF], + [0x00AAB5, 0x00AAB6], + [0x00AAB9, 0x00AABD], + [0x00AAC2, 0x00AAEB], + [0x00AAEE, 0x00AAF5], + [0x00AAF7, 0x00ABE4], + [0x00ABE6, 0x00ABE7], + [0x00ABE9, 0x00ABEC], + [0x00ABEE, 0x00DBFF], + [0x00E000, 0x00FB1D], + [0x00FB1F, 0x00FDFF], + [0x00FE10, 0x00FE1F], + [0x00FE30, 0x0101FC], + [0x0101FE, 0x0102DF], + [0x0102E1, 0x010375], + [0x01037B, 0x010A00], + [0x010A07, 0x010A0B], + [0x010A10, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A40, 0x010AE4], + [0x010AE7, 0x010D23], + [0x010D28, 0x010EAA], + [0x010EAD, 0x010EFC], + [0x010F00, 0x010F45], + [0x010F51, 0x010F81], + [0x010F86, 0x011000], + [0x011002, 0x011037], + [0x011047, 0x01106F], + [0x011071, 0x011072], + [0x011075, 0x01107E], + [0x011082, 0x0110B2], + [0x0110B7, 0x0110B8], + [0x0110BB, 0x0110C1], + [0x0110C3, 0x0110FF], + [0x011103, 0x011126], + [0x011135, 0x011172], + [0x011174, 0x01117F], + [0x011182, 0x0111B5], + [0x0111BF, 0x0111C8], + [0x0111CD, 0x0111CE], + [0x0111D0, 0x01122E], + [0x011232, 0x011233], + [0x011238, 0x01123D], + [0x01123F, 0x011240], + [0x011242, 0x0112DE], + [0x0112E0, 0x0112E2], + [0x0112EB, 0x0112FF], + [0x011302, 0x01133A], + [0x01133D, 0x01133F], + [0x011341, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x011437], + [0x011440, 0x011441], + [0x011447, 0x01145D], + [0x01145F, 0x0114B2], + [0x0114BB, 0x0114BE], + [0x0114C4, 0x0115B1], + [0x0115B6, 0x0115BB], + [0x0115C1, 0x0115DB], + [0x0115DE, 0x011632], + [0x01163B, 0x01163C], + [0x011641, 0x0116AA], + [0x0116AE, 0x0116AF], + [0x0116B8, 0x01171C], + [0x011720, 0x011721], + [0x01172C, 0x01182E], + [0x01183B, 0x01193A], + [0x01193F, 0x011942], + [0x011944, 0x0119D3], + [0x0119D8, 0x0119D9], + [0x0119DC, 0x0119DF], + [0x0119E1, 0x011A00], + [0x011A0B, 0x011A32], + [0x011A39, 0x011A3A], + [0x011A3F, 0x011A46], + [0x011A48, 0x011A50], + [0x011A57, 0x011A58], + [0x011A5C, 0x011A89], + [0x011A9A, 0x011C2F], + [0x011C40, 0x011C91], + [0x011CA8, 0x011CA9], + [0x011CB7, 0x011D30], + [0x011D37, 0x011D39], + [0x011D48, 0x011D8F], + [0x011D92, 0x011D94], + [0x011D98, 0x011EF2], + [0x011EF5, 0x011EFF], + [0x011F02, 0x011F35], + [0x011F3B, 0x011F3F], + [0x011F43, 0x01343F], + [0x013441, 0x013446], + [0x013456, 0x016AEF], + [0x016AF5, 0x016B2F], + [0x016B37, 0x016F4E], + [0x016F50, 0x016F8E], + [0x016F93, 0x016FE3], + [0x016FE5, 0x01BC9C], + [0x01BC9F, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01D166], + [0x01D16A, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D241], + [0x01D245, 0x01D9FF], + [0x01DA37, 0x01DA3A], + [0x01DA6D, 0x01DA74], + [0x01DA76, 0x01DA83], + [0x01DA85, 0x01DA9A], + [0x01DAB0, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E08E], + [0x01E090, 0x01E12F], + [0x01E137, 0x01E2AD], + [0x01E2AF, 0x01E2EB], + [0x01E2F0, 0x01E4EB], + [0x01E4F0, 0x01E8CF], + [0x01E8D7, 0x01E943], + [0x01E94B, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Nonspacing_Mark}+$/u, + nonMatchSymbols, + "\\P{General_Category=Nonspacing_Mark}" +); +testPropertyEscapes( + /^\P{General_Category=Mn}+$/u, + nonMatchSymbols, + "\\P{General_Category=Mn}" +); +testPropertyEscapes( + /^\P{gc=Nonspacing_Mark}+$/u, + nonMatchSymbols, + "\\P{gc=Nonspacing_Mark}" +); +testPropertyEscapes( + /^\P{gc=Mn}+$/u, + nonMatchSymbols, + "\\P{gc=Mn}" +); +testPropertyEscapes( + /^\P{Nonspacing_Mark}+$/u, + nonMatchSymbols, + "\\P{Nonspacing_Mark}" +); +testPropertyEscapes( + /^\P{Mn}+$/u, + nonMatchSymbols, + "\\P{Mn}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js new file mode 100644 index 0000000000..0747f117b1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Number.js @@ -0,0 +1,367 @@ +// Copyright 2022 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 for `General_Category=Number` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000B9, + 0x002070, + 0x002CFD, + 0x003007, + 0x010341, + 0x01034A + ], + ranges: [ + [0x000030, 0x000039], + [0x0000B2, 0x0000B3], + [0x0000BC, 0x0000BE], + [0x000660, 0x000669], + [0x0006F0, 0x0006F9], + [0x0007C0, 0x0007C9], + [0x000966, 0x00096F], + [0x0009E6, 0x0009EF], + [0x0009F4, 0x0009F9], + [0x000A66, 0x000A6F], + [0x000AE6, 0x000AEF], + [0x000B66, 0x000B6F], + [0x000B72, 0x000B77], + [0x000BE6, 0x000BF2], + [0x000C66, 0x000C6F], + [0x000C78, 0x000C7E], + [0x000CE6, 0x000CEF], + [0x000D58, 0x000D5E], + [0x000D66, 0x000D78], + [0x000DE6, 0x000DEF], + [0x000E50, 0x000E59], + [0x000ED0, 0x000ED9], + [0x000F20, 0x000F33], + [0x001040, 0x001049], + [0x001090, 0x001099], + [0x001369, 0x00137C], + [0x0016EE, 0x0016F0], + [0x0017E0, 0x0017E9], + [0x0017F0, 0x0017F9], + [0x001810, 0x001819], + [0x001946, 0x00194F], + [0x0019D0, 0x0019DA], + [0x001A80, 0x001A89], + [0x001A90, 0x001A99], + [0x001B50, 0x001B59], + [0x001BB0, 0x001BB9], + [0x001C40, 0x001C49], + [0x001C50, 0x001C59], + [0x002074, 0x002079], + [0x002080, 0x002089], + [0x002150, 0x002182], + [0x002185, 0x002189], + [0x002460, 0x00249B], + [0x0024EA, 0x0024FF], + [0x002776, 0x002793], + [0x003021, 0x003029], + [0x003038, 0x00303A], + [0x003192, 0x003195], + [0x003220, 0x003229], + [0x003248, 0x00324F], + [0x003251, 0x00325F], + [0x003280, 0x003289], + [0x0032B1, 0x0032BF], + [0x00A620, 0x00A629], + [0x00A6E6, 0x00A6EF], + [0x00A830, 0x00A835], + [0x00A8D0, 0x00A8D9], + [0x00A900, 0x00A909], + [0x00A9D0, 0x00A9D9], + [0x00A9F0, 0x00A9F9], + [0x00AA50, 0x00AA59], + [0x00ABF0, 0x00ABF9], + [0x00FF10, 0x00FF19], + [0x010107, 0x010133], + [0x010140, 0x010178], + [0x01018A, 0x01018B], + [0x0102E1, 0x0102FB], + [0x010320, 0x010323], + [0x0103D1, 0x0103D5], + [0x0104A0, 0x0104A9], + [0x010858, 0x01085F], + [0x010879, 0x01087F], + [0x0108A7, 0x0108AF], + [0x0108FB, 0x0108FF], + [0x010916, 0x01091B], + [0x0109BC, 0x0109BD], + [0x0109C0, 0x0109CF], + [0x0109D2, 0x0109FF], + [0x010A40, 0x010A48], + [0x010A7D, 0x010A7E], + [0x010A9D, 0x010A9F], + [0x010AEB, 0x010AEF], + [0x010B58, 0x010B5F], + [0x010B78, 0x010B7F], + [0x010BA9, 0x010BAF], + [0x010CFA, 0x010CFF], + [0x010D30, 0x010D39], + [0x010E60, 0x010E7E], + [0x010F1D, 0x010F26], + [0x010F51, 0x010F54], + [0x010FC5, 0x010FCB], + [0x011052, 0x01106F], + [0x0110F0, 0x0110F9], + [0x011136, 0x01113F], + [0x0111D0, 0x0111D9], + [0x0111E1, 0x0111F4], + [0x0112F0, 0x0112F9], + [0x011450, 0x011459], + [0x0114D0, 0x0114D9], + [0x011650, 0x011659], + [0x0116C0, 0x0116C9], + [0x011730, 0x01173B], + [0x0118E0, 0x0118F2], + [0x011950, 0x011959], + [0x011C50, 0x011C6C], + [0x011D50, 0x011D59], + [0x011DA0, 0x011DA9], + [0x011F50, 0x011F59], + [0x011FC0, 0x011FD4], + [0x012400, 0x01246E], + [0x016A60, 0x016A69], + [0x016AC0, 0x016AC9], + [0x016B50, 0x016B59], + [0x016B5B, 0x016B61], + [0x016E80, 0x016E96], + [0x01D2C0, 0x01D2D3], + [0x01D2E0, 0x01D2F3], + [0x01D360, 0x01D378], + [0x01D7CE, 0x01D7FF], + [0x01E140, 0x01E149], + [0x01E2F0, 0x01E2F9], + [0x01E4F0, 0x01E4F9], + [0x01E8C7, 0x01E8CF], + [0x01E950, 0x01E959], + [0x01EC71, 0x01ECAB], + [0x01ECAD, 0x01ECAF], + [0x01ECB1, 0x01ECB4], + [0x01ED01, 0x01ED2D], + [0x01ED2F, 0x01ED3D], + [0x01F100, 0x01F10C], + [0x01FBF0, 0x01FBF9] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Number}+$/u, + matchSymbols, + "\\p{General_Category=Number}" +); +testPropertyEscapes( + /^\p{General_Category=N}+$/u, + matchSymbols, + "\\p{General_Category=N}" +); +testPropertyEscapes( + /^\p{gc=Number}+$/u, + matchSymbols, + "\\p{gc=Number}" +); +testPropertyEscapes( + /^\p{gc=N}+$/u, + matchSymbols, + "\\p{gc=N}" +); +testPropertyEscapes( + /^\p{Number}+$/u, + matchSymbols, + "\\p{Number}" +); +testPropertyEscapes( + /^\p{N}+$/u, + matchSymbols, + "\\p{N}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x003250, + 0x016B5A, + 0x01ECAC, + 0x01ECB0, + 0x01ED2E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x0000B1], + [0x0000B4, 0x0000B8], + [0x0000BA, 0x0000BB], + [0x0000BF, 0x00065F], + [0x00066A, 0x0006EF], + [0x0006FA, 0x0007BF], + [0x0007CA, 0x000965], + [0x000970, 0x0009E5], + [0x0009F0, 0x0009F3], + [0x0009FA, 0x000A65], + [0x000A70, 0x000AE5], + [0x000AF0, 0x000B65], + [0x000B70, 0x000B71], + [0x000B78, 0x000BE5], + [0x000BF3, 0x000C65], + [0x000C70, 0x000C77], + [0x000C7F, 0x000CE5], + [0x000CF0, 0x000D57], + [0x000D5F, 0x000D65], + [0x000D79, 0x000DE5], + [0x000DF0, 0x000E4F], + [0x000E5A, 0x000ECF], + [0x000EDA, 0x000F1F], + [0x000F34, 0x00103F], + [0x00104A, 0x00108F], + [0x00109A, 0x001368], + [0x00137D, 0x0016ED], + [0x0016F1, 0x0017DF], + [0x0017EA, 0x0017EF], + [0x0017FA, 0x00180F], + [0x00181A, 0x001945], + [0x001950, 0x0019CF], + [0x0019DB, 0x001A7F], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001B4F], + [0x001B5A, 0x001BAF], + [0x001BBA, 0x001C3F], + [0x001C4A, 0x001C4F], + [0x001C5A, 0x00206F], + [0x002071, 0x002073], + [0x00207A, 0x00207F], + [0x00208A, 0x00214F], + [0x002183, 0x002184], + [0x00218A, 0x00245F], + [0x00249C, 0x0024E9], + [0x002500, 0x002775], + [0x002794, 0x002CFC], + [0x002CFE, 0x003006], + [0x003008, 0x003020], + [0x00302A, 0x003037], + [0x00303B, 0x003191], + [0x003196, 0x00321F], + [0x00322A, 0x003247], + [0x003260, 0x00327F], + [0x00328A, 0x0032B0], + [0x0032C0, 0x00A61F], + [0x00A62A, 0x00A6E5], + [0x00A6F0, 0x00A82F], + [0x00A836, 0x00A8CF], + [0x00A8DA, 0x00A8FF], + [0x00A90A, 0x00A9CF], + [0x00A9DA, 0x00A9EF], + [0x00A9FA, 0x00AA4F], + [0x00AA5A, 0x00ABEF], + [0x00ABFA, 0x00DBFF], + [0x00E000, 0x00FF0F], + [0x00FF1A, 0x010106], + [0x010134, 0x01013F], + [0x010179, 0x010189], + [0x01018C, 0x0102E0], + [0x0102FC, 0x01031F], + [0x010324, 0x010340], + [0x010342, 0x010349], + [0x01034B, 0x0103D0], + [0x0103D6, 0x01049F], + [0x0104AA, 0x010857], + [0x010860, 0x010878], + [0x010880, 0x0108A6], + [0x0108B0, 0x0108FA], + [0x010900, 0x010915], + [0x01091C, 0x0109BB], + [0x0109BE, 0x0109BF], + [0x0109D0, 0x0109D1], + [0x010A00, 0x010A3F], + [0x010A49, 0x010A7C], + [0x010A7F, 0x010A9C], + [0x010AA0, 0x010AEA], + [0x010AF0, 0x010B57], + [0x010B60, 0x010B77], + [0x010B80, 0x010BA8], + [0x010BB0, 0x010CF9], + [0x010D00, 0x010D2F], + [0x010D3A, 0x010E5F], + [0x010E7F, 0x010F1C], + [0x010F27, 0x010F50], + [0x010F55, 0x010FC4], + [0x010FCC, 0x011051], + [0x011070, 0x0110EF], + [0x0110FA, 0x011135], + [0x011140, 0x0111CF], + [0x0111DA, 0x0111E0], + [0x0111F5, 0x0112EF], + [0x0112FA, 0x01144F], + [0x01145A, 0x0114CF], + [0x0114DA, 0x01164F], + [0x01165A, 0x0116BF], + [0x0116CA, 0x01172F], + [0x01173C, 0x0118DF], + [0x0118F3, 0x01194F], + [0x01195A, 0x011C4F], + [0x011C6D, 0x011D4F], + [0x011D5A, 0x011D9F], + [0x011DAA, 0x011F4F], + [0x011F5A, 0x011FBF], + [0x011FD5, 0x0123FF], + [0x01246F, 0x016A5F], + [0x016A6A, 0x016ABF], + [0x016ACA, 0x016B4F], + [0x016B62, 0x016E7F], + [0x016E97, 0x01D2BF], + [0x01D2D4, 0x01D2DF], + [0x01D2F4, 0x01D35F], + [0x01D379, 0x01D7CD], + [0x01D800, 0x01E13F], + [0x01E14A, 0x01E2EF], + [0x01E2FA, 0x01E4EF], + [0x01E4FA, 0x01E8C6], + [0x01E8D0, 0x01E94F], + [0x01E95A, 0x01EC70], + [0x01ECB5, 0x01ED00], + [0x01ED3E, 0x01F0FF], + [0x01F10D, 0x01FBEF], + [0x01FBFA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Number}+$/u, + nonMatchSymbols, + "\\P{General_Category=Number}" +); +testPropertyEscapes( + /^\P{General_Category=N}+$/u, + nonMatchSymbols, + "\\P{General_Category=N}" +); +testPropertyEscapes( + /^\P{gc=Number}+$/u, + nonMatchSymbols, + "\\P{gc=Number}" +); +testPropertyEscapes( + /^\P{gc=N}+$/u, + nonMatchSymbols, + "\\P{gc=N}" +); +testPropertyEscapes( + /^\P{Number}+$/u, + nonMatchSymbols, + "\\P{Number}" +); +testPropertyEscapes( + /^\P{N}+$/u, + nonMatchSymbols, + "\\P{N}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js new file mode 100644 index 0000000000..6fe55cc1ab --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Open_Punctuation.js @@ -0,0 +1,250 @@ +// Copyright 2022 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 for `General_Category=Open_Punctuation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000028, + 0x00005B, + 0x00007B, + 0x000F3A, + 0x000F3C, + 0x00169B, + 0x00201A, + 0x00201E, + 0x002045, + 0x00207D, + 0x00208D, + 0x002308, + 0x00230A, + 0x002329, + 0x002768, + 0x00276A, + 0x00276C, + 0x00276E, + 0x002770, + 0x002772, + 0x002774, + 0x0027C5, + 0x0027E6, + 0x0027E8, + 0x0027EA, + 0x0027EC, + 0x0027EE, + 0x002983, + 0x002985, + 0x002987, + 0x002989, + 0x00298B, + 0x00298D, + 0x00298F, + 0x002991, + 0x002993, + 0x002995, + 0x002997, + 0x0029D8, + 0x0029DA, + 0x0029FC, + 0x002E22, + 0x002E24, + 0x002E26, + 0x002E28, + 0x002E42, + 0x002E55, + 0x002E57, + 0x002E59, + 0x002E5B, + 0x003008, + 0x00300A, + 0x00300C, + 0x00300E, + 0x003010, + 0x003014, + 0x003016, + 0x003018, + 0x00301A, + 0x00301D, + 0x00FD3F, + 0x00FE17, + 0x00FE35, + 0x00FE37, + 0x00FE39, + 0x00FE3B, + 0x00FE3D, + 0x00FE3F, + 0x00FE41, + 0x00FE43, + 0x00FE47, + 0x00FE59, + 0x00FE5B, + 0x00FE5D, + 0x00FF08, + 0x00FF3B, + 0x00FF5B, + 0x00FF5F, + 0x00FF62 + ], + ranges: [] +}); +testPropertyEscapes( + /^\p{General_Category=Open_Punctuation}+$/u, + matchSymbols, + "\\p{General_Category=Open_Punctuation}" +); +testPropertyEscapes( + /^\p{General_Category=Ps}+$/u, + matchSymbols, + "\\p{General_Category=Ps}" +); +testPropertyEscapes( + /^\p{gc=Open_Punctuation}+$/u, + matchSymbols, + "\\p{gc=Open_Punctuation}" +); +testPropertyEscapes( + /^\p{gc=Ps}+$/u, + matchSymbols, + "\\p{gc=Ps}" +); +testPropertyEscapes( + /^\p{Open_Punctuation}+$/u, + matchSymbols, + "\\p{Open_Punctuation}" +); +testPropertyEscapes( + /^\p{Ps}+$/u, + matchSymbols, + "\\p{Ps}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000F3B, + 0x002309, + 0x002769, + 0x00276B, + 0x00276D, + 0x00276F, + 0x002771, + 0x002773, + 0x0027E7, + 0x0027E9, + 0x0027EB, + 0x0027ED, + 0x002984, + 0x002986, + 0x002988, + 0x00298A, + 0x00298C, + 0x00298E, + 0x002990, + 0x002992, + 0x002994, + 0x002996, + 0x0029D9, + 0x002E23, + 0x002E25, + 0x002E27, + 0x002E56, + 0x002E58, + 0x002E5A, + 0x003009, + 0x00300B, + 0x00300D, + 0x00300F, + 0x003015, + 0x003017, + 0x003019, + 0x00FE36, + 0x00FE38, + 0x00FE3A, + 0x00FE3C, + 0x00FE3E, + 0x00FE40, + 0x00FE42, + 0x00FE5A, + 0x00FE5C + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000027], + [0x000029, 0x00005A], + [0x00005C, 0x00007A], + [0x00007C, 0x000F39], + [0x000F3D, 0x00169A], + [0x00169C, 0x002019], + [0x00201B, 0x00201D], + [0x00201F, 0x002044], + [0x002046, 0x00207C], + [0x00207E, 0x00208C], + [0x00208E, 0x002307], + [0x00230B, 0x002328], + [0x00232A, 0x002767], + [0x002775, 0x0027C4], + [0x0027C6, 0x0027E5], + [0x0027EF, 0x002982], + [0x002998, 0x0029D7], + [0x0029DB, 0x0029FB], + [0x0029FD, 0x002E21], + [0x002E29, 0x002E41], + [0x002E43, 0x002E54], + [0x002E5C, 0x003007], + [0x003011, 0x003013], + [0x00301B, 0x00301C], + [0x00301E, 0x00DBFF], + [0x00E000, 0x00FD3E], + [0x00FD40, 0x00FE16], + [0x00FE18, 0x00FE34], + [0x00FE44, 0x00FE46], + [0x00FE48, 0x00FE58], + [0x00FE5E, 0x00FF07], + [0x00FF09, 0x00FF3A], + [0x00FF3C, 0x00FF5A], + [0x00FF5C, 0x00FF5E], + [0x00FF60, 0x00FF61], + [0x00FF63, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Open_Punctuation}+$/u, + nonMatchSymbols, + "\\P{General_Category=Open_Punctuation}" +); +testPropertyEscapes( + /^\P{General_Category=Ps}+$/u, + nonMatchSymbols, + "\\P{General_Category=Ps}" +); +testPropertyEscapes( + /^\P{gc=Open_Punctuation}+$/u, + nonMatchSymbols, + "\\P{gc=Open_Punctuation}" +); +testPropertyEscapes( + /^\P{gc=Ps}+$/u, + nonMatchSymbols, + "\\P{gc=Ps}" +); +testPropertyEscapes( + /^\P{Open_Punctuation}+$/u, + nonMatchSymbols, + "\\P{Open_Punctuation}" +); +testPropertyEscapes( + /^\P{Ps}+$/u, + nonMatchSymbols, + "\\P{Ps}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js new file mode 100644 index 0000000000..f55f147910 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other.js @@ -0,0 +1,1515 @@ +// Copyright 2022 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 for `General_Category=Other` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AD, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x000530, + 0x000590, + 0x00061C, + 0x0006DD, + 0x00083F, + 0x00085F, + 0x0008E2, + 0x000984, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x000A04, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A3D, + 0x000A5D, + 0x000A84, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000AC6, + 0x000ACA, + 0x000B00, + 0x000B04, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000BC9, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C45, + 0x000C49, + 0x000C57, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CC5, + 0x000CC9, + 0x000CDF, + 0x000CF0, + 0x000D0D, + 0x000D11, + 0x000D45, + 0x000D49, + 0x000D80, + 0x000D84, + 0x000DB2, + 0x000DBC, + 0x000DD5, + 0x000DD7, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EC5, + 0x000EC7, + 0x000ECF, + 0x000F48, + 0x000F98, + 0x000FBD, + 0x000FCD, + 0x0010C6, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x00176D, + 0x001771, + 0x00180E, + 0x00191F, + 0x001A5F, + 0x001B7F, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FC5, + 0x001FDC, + 0x001FF5, + 0x001FFF, + 0x00208F, + 0x002B96, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x002DDF, + 0x002E9A, + 0x003040, + 0x003130, + 0x00318F, + 0x00321F, + 0x00A7D2, + 0x00A7D4, + 0x00A9CE, + 0x00A9FF, + 0x00AB27, + 0x00AB2F, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE53, + 0x00FE67, + 0x00FE75, + 0x00FFE7, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x01018F, + 0x01039E, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x010856, + 0x0108F3, + 0x010A04, + 0x010A14, + 0x010A18, + 0x010E7F, + 0x010EAA, + 0x0110BD, + 0x011135, + 0x0111E0, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011304, + 0x011329, + 0x011331, + 0x011334, + 0x01133A, + 0x01145C, + 0x011914, + 0x011917, + 0x011936, + 0x011C09, + 0x011C37, + 0x011CA8, + 0x011D07, + 0x011D0A, + 0x011D3B, + 0x011D3E, + 0x011D66, + 0x011D69, + 0x011D8F, + 0x011D92, + 0x011F11, + 0x01246F, + 0x016A5F, + 0x016ABF, + 0x016B5A, + 0x016B62, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01DAA0, + 0x01E007, + 0x01E022, + 0x01E025, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA, + 0x01F0C0, + 0x01F0D0, + 0x01FABE, + 0x01FB93 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00001F], + [0x00007F, 0x00009F], + [0x000378, 0x000379], + [0x000380, 0x000383], + [0x000557, 0x000558], + [0x00058B, 0x00058C], + [0x0005C8, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F5, 0x000605], + [0x00070E, 0x00070F], + [0x00074B, 0x00074C], + [0x0007B2, 0x0007BF], + [0x0007FB, 0x0007FC], + [0x00082E, 0x00082F], + [0x00085C, 0x00085D], + [0x00086B, 0x00086F], + [0x00088F, 0x000897], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BB], + [0x0009C5, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CF, 0x0009D6], + [0x0009D8, 0x0009DB], + [0x0009E4, 0x0009E5], + [0x0009FF, 0x000A00], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A3B], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A58], + [0x000A5F, 0x000A65], + [0x000A77, 0x000A80], + [0x000ABA, 0x000ABB], + [0x000ACE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE4, 0x000AE5], + [0x000AF2, 0x000AF8], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3B], + [0x000B45, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4E, 0x000B54], + [0x000B58, 0x000B5B], + [0x000B64, 0x000B65], + [0x000B78, 0x000B81], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCE, 0x000BCF], + [0x000BD1, 0x000BD6], + [0x000BD8, 0x000BE5], + [0x000BFB, 0x000BFF], + [0x000C3A, 0x000C3B], + [0x000C4E, 0x000C54], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C64, 0x000C65], + [0x000C70, 0x000C76], + [0x000CBA, 0x000CBB], + [0x000CCE, 0x000CD4], + [0x000CD7, 0x000CDC], + [0x000CE4, 0x000CE5], + [0x000CF4, 0x000CFF], + [0x000D50, 0x000D53], + [0x000D64, 0x000D65], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000DC9], + [0x000DCB, 0x000DCE], + [0x000DE0, 0x000DE5], + [0x000DF0, 0x000DF1], + [0x000DF5, 0x000E00], + [0x000E3B, 0x000E3E], + [0x000E5C, 0x000E80], + [0x000EBE, 0x000EBF], + [0x000EDA, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F6D, 0x000F70], + [0x000FDB, 0x000FFF], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00135C], + [0x00137D, 0x00137F], + [0x00139A, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x0013FF], + [0x00169D, 0x00169F], + [0x0016F9, 0x0016FF], + [0x001716, 0x00171E], + [0x001737, 0x00173F], + [0x001754, 0x00175F], + [0x001774, 0x00177F], + [0x0017DE, 0x0017DF], + [0x0017EA, 0x0017EF], + [0x0017FA, 0x0017FF], + [0x00181A, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00192C, 0x00192F], + [0x00193C, 0x00193F], + [0x001941, 0x001943], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019CF], + [0x0019DB, 0x0019DD], + [0x001A1C, 0x001A1D], + [0x001A7D, 0x001A7E], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001A9F], + [0x001AAE, 0x001AAF], + [0x001ACF, 0x001AFF], + [0x001B4D, 0x001B4F], + [0x001BF4, 0x001BFB], + [0x001C38, 0x001C3A], + [0x001C4A, 0x001C4C], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC8, 0x001CCF], + [0x001CFB, 0x001CFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FD4, 0x001FD5], + [0x001FF0, 0x001FF1], + [0x00200B, 0x00200F], + [0x00202A, 0x00202E], + [0x002060, 0x00206F], + [0x002072, 0x002073], + [0x00209D, 0x00209F], + [0x0020C1, 0x0020CF], + [0x0020F1, 0x0020FF], + [0x00218C, 0x00218F], + [0x002427, 0x00243F], + [0x00244B, 0x00245F], + [0x002B74, 0x002B75], + [0x002CF4, 0x002CF8], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D71, 0x002D7E], + [0x002D97, 0x002D9F], + [0x002E5E, 0x002E7F], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x002FEF], + [0x002FFC, 0x002FFF], + [0x003097, 0x003098], + [0x003100, 0x003104], + [0x0031E4, 0x0031EF], + [0x00A48D, 0x00A48F], + [0x00A4C7, 0x00A4CF], + [0x00A62C, 0x00A63F], + [0x00A6F8, 0x00A6FF], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A82D, 0x00A82F], + [0x00A83A, 0x00A83F], + [0x00A878, 0x00A87F], + [0x00A8C6, 0x00A8CD], + [0x00A8DA, 0x00A8DF], + [0x00A954, 0x00A95E], + [0x00A97D, 0x00A97F], + [0x00A9DA, 0x00A9DD], + [0x00AA37, 0x00AA3F], + [0x00AA4E, 0x00AA4F], + [0x00AA5A, 0x00AA5B], + [0x00AAC3, 0x00AADA], + [0x00AAF7, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6C, 0x00AB6F], + [0x00ABEE, 0x00ABEF], + [0x00ABFA, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBC3, 0x00FBD2], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDCE], + [0x00FDD0, 0x00FDEF], + [0x00FE1A, 0x00FE1F], + [0x00FE6C, 0x00FE6F], + [0x00FEFD, 0x00FF00], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFDF], + [0x00FFEF, 0x00FFFB], + [0x00FFFE, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x0100FF], + [0x010103, 0x010106], + [0x010134, 0x010136], + [0x01019D, 0x01019F], + [0x0101A1, 0x0101CF], + [0x0101FE, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102DF], + [0x0102FC, 0x0102FF], + [0x010324, 0x01032C], + [0x01034B, 0x01034F], + [0x01037B, 0x01037F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x0103FF], + [0x01049E, 0x01049F], + [0x0104AA, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056E], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x01089F, 0x0108A6], + [0x0108B0, 0x0108DF], + [0x0108F6, 0x0108FA], + [0x01091C, 0x01091E], + [0x01093A, 0x01093E], + [0x010940, 0x01097F], + [0x0109B8, 0x0109BB], + [0x0109D0, 0x0109D1], + [0x010A07, 0x010A0B], + [0x010A36, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A49, 0x010A4F], + [0x010A59, 0x010A5F], + [0x010AA0, 0x010ABF], + [0x010AE7, 0x010AEA], + [0x010AF7, 0x010AFF], + [0x010B36, 0x010B38], + [0x010B56, 0x010B57], + [0x010B73, 0x010B77], + [0x010B92, 0x010B98], + [0x010B9D, 0x010BA8], + [0x010BB0, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CF9], + [0x010D28, 0x010D2F], + [0x010D3A, 0x010E5F], + [0x010EAE, 0x010EAF], + [0x010EB2, 0x010EFC], + [0x010F28, 0x010F2F], + [0x010F5A, 0x010F6F], + [0x010F8A, 0x010FAF], + [0x010FCC, 0x010FDF], + [0x010FF7, 0x010FFF], + [0x01104E, 0x011051], + [0x011076, 0x01107E], + [0x0110C3, 0x0110CF], + [0x0110E9, 0x0110EF], + [0x0110FA, 0x0110FF], + [0x011148, 0x01114F], + [0x011177, 0x01117F], + [0x0111F5, 0x0111FF], + [0x011242, 0x01127F], + [0x0112AA, 0x0112AF], + [0x0112EB, 0x0112EF], + [0x0112FA, 0x0112FF], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x01134F], + [0x011351, 0x011356], + [0x011358, 0x01135C], + [0x011364, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x0113FF], + [0x011462, 0x01147F], + [0x0114C8, 0x0114CF], + [0x0114DA, 0x01157F], + [0x0115B6, 0x0115B7], + [0x0115DE, 0x0115FF], + [0x011645, 0x01164F], + [0x01165A, 0x01165F], + [0x01166D, 0x01167F], + [0x0116BA, 0x0116BF], + [0x0116CA, 0x0116FF], + [0x01171B, 0x01171C], + [0x01172C, 0x01172F], + [0x011747, 0x0117FF], + [0x01183C, 0x01189F], + [0x0118F3, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011939, 0x01193A], + [0x011947, 0x01194F], + [0x01195A, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D8, 0x0119D9], + [0x0119E5, 0x0119FF], + [0x011A48, 0x011A4F], + [0x011AA3, 0x011AAF], + [0x011AF9, 0x011AFF], + [0x011B0A, 0x011BFF], + [0x011C46, 0x011C4F], + [0x011C6D, 0x011C6F], + [0x011C90, 0x011C91], + [0x011CB7, 0x011CFF], + [0x011D37, 0x011D39], + [0x011D48, 0x011D4F], + [0x011D5A, 0x011D5F], + [0x011D99, 0x011D9F], + [0x011DAA, 0x011EDF], + [0x011EF9, 0x011EFF], + [0x011F3B, 0x011F3D], + [0x011F5A, 0x011FAF], + [0x011FB1, 0x011FBF], + [0x011FF2, 0x011FFE], + [0x01239A, 0x0123FF], + [0x012475, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF3, 0x012FFF], + [0x013430, 0x01343F], + [0x013456, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A6A, 0x016A6D], + [0x016ACA, 0x016ACF], + [0x016AEE, 0x016AEF], + [0x016AF6, 0x016AFF], + [0x016B46, 0x016B4F], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E9B, 0x016EFF], + [0x016F4B, 0x016F4E], + [0x016F88, 0x016F8E], + [0x016FA0, 0x016FDF], + [0x016FE5, 0x016FEF], + [0x016FF2, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01BC9B], + [0x01BCA0, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01CF4F], + [0x01CFC4, 0x01CFFF], + [0x01D0F6, 0x01D0FF], + [0x01D127, 0x01D128], + [0x01D173, 0x01D17A], + [0x01D1EB, 0x01D1FF], + [0x01D246, 0x01D2BF], + [0x01D2D4, 0x01D2DF], + [0x01D2F4, 0x01D2FF], + [0x01D357, 0x01D35F], + [0x01D379, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01DA8C, 0x01DA9A], + [0x01DAB0, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E02F], + [0x01E06E, 0x01E08E], + [0x01E090, 0x01E0FF], + [0x01E12D, 0x01E12F], + [0x01E13E, 0x01E13F], + [0x01E14A, 0x01E14D], + [0x01E150, 0x01E28F], + [0x01E2AF, 0x01E2BF], + [0x01E2FA, 0x01E2FE], + [0x01E300, 0x01E4CF], + [0x01E4FA, 0x01E7DF], + [0x01E8C5, 0x01E8C6], + [0x01E8D7, 0x01E8FF], + [0x01E94C, 0x01E94F], + [0x01E95A, 0x01E95D], + [0x01E960, 0x01EC70], + [0x01ECB5, 0x01ED00], + [0x01ED3E, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01EEEF], + [0x01EEF2, 0x01EFFF], + [0x01F02C, 0x01F02F], + [0x01F094, 0x01F09F], + [0x01F0AF, 0x01F0B0], + [0x01F0F6, 0x01F0FF], + [0x01F1AE, 0x01F1E5], + [0x01F203, 0x01F20F], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F24F], + [0x01F252, 0x01F25F], + [0x01F266, 0x01F2FF], + [0x01F6D8, 0x01F6DB], + [0x01F6ED, 0x01F6EF], + [0x01F6FD, 0x01F6FF], + [0x01F777, 0x01F77A], + [0x01F7DA, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F7FF], + [0x01F80C, 0x01F80F], + [0x01F848, 0x01F84F], + [0x01F85A, 0x01F85F], + [0x01F888, 0x01F88F], + [0x01F8AE, 0x01F8AF], + [0x01F8B2, 0x01F8FF], + [0x01FA54, 0x01FA5F], + [0x01FA6E, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x01FAFF], + [0x01FBCB, 0x01FBEF], + [0x01FBFA, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Other}+$/u, + matchSymbols, + "\\p{General_Category=Other}" +); +testPropertyEscapes( + /^\p{General_Category=C}+$/u, + matchSymbols, + "\\p{General_Category=C}" +); +testPropertyEscapes( + /^\p{gc=Other}+$/u, + matchSymbols, + "\\p{gc=Other}" +); +testPropertyEscapes( + /^\p{gc=C}+$/u, + matchSymbols, + "\\p{gc=C}" +); +testPropertyEscapes( + /^\p{Other}+$/u, + matchSymbols, + "\\p{Other}" +); +testPropertyEscapes( + /^\p{C}+$/u, + matchSymbols, + "\\p{C}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00038C, + 0x00085E, + 0x0009B2, + 0x0009D7, + 0x000A3C, + 0x000A51, + 0x000A5E, + 0x000AD0, + 0x000B9C, + 0x000BD0, + 0x000BD7, + 0x000C5D, + 0x000DBD, + 0x000DCA, + 0x000DD6, + 0x000E84, + 0x000EA5, + 0x000EC6, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x001940, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x002D27, + 0x002D2D, + 0x00A7D3, + 0x00FB3E, + 0x00FDCF, + 0x0101A0, + 0x010808, + 0x01083C, + 0x01093F, + 0x011288, + 0x011350, + 0x011357, + 0x011909, + 0x011D3A, + 0x011FB0, + 0x01B132, + 0x01B155, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01E08F, + 0x01E2FF, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E, + 0x01F7F0 + ], + ranges: [ + [0x000020, 0x00007E], + [0x0000A0, 0x0000AC], + [0x0000AE, 0x000377], + [0x00037A, 0x00037F], + [0x000384, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x00052F], + [0x000531, 0x000556], + [0x000559, 0x00058A], + [0x00058D, 0x00058F], + [0x000591, 0x0005C7], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F4], + [0x000606, 0x00061B], + [0x00061D, 0x0006DC], + [0x0006DE, 0x00070D], + [0x000710, 0x00074A], + [0x00074D, 0x0007B1], + [0x0007C0, 0x0007FA], + [0x0007FD, 0x00082D], + [0x000830, 0x00083E], + [0x000840, 0x00085B], + [0x000860, 0x00086A], + [0x000870, 0x00088E], + [0x000898, 0x0008E1], + [0x0008E3, 0x000983], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009BC, 0x0009C4], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CE], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E3], + [0x0009E6, 0x0009FE], + [0x000A01, 0x000A03], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A3E, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A59, 0x000A5C], + [0x000A66, 0x000A76], + [0x000A81, 0x000A83], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000ABC, 0x000AC5], + [0x000AC7, 0x000AC9], + [0x000ACB, 0x000ACD], + [0x000AE0, 0x000AE3], + [0x000AE6, 0x000AF1], + [0x000AF9, 0x000AFF], + [0x000B01, 0x000B03], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B3C, 0x000B44], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4D], + [0x000B55, 0x000B57], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B63], + [0x000B66, 0x000B77], + [0x000B82, 0x000B83], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000BBE, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCD], + [0x000BE6, 0x000BFA], + [0x000C00, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C3C, 0x000C44], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C63], + [0x000C66, 0x000C6F], + [0x000C77, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CBC, 0x000CC4], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCD], + [0x000CD5, 0x000CD6], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE3], + [0x000CE6, 0x000CEF], + [0x000CF1, 0x000CF3], + [0x000D00, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D44], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4F], + [0x000D54, 0x000D63], + [0x000D66, 0x000D7F], + [0x000D81, 0x000D83], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000DCF, 0x000DD4], + [0x000DD8, 0x000DDF], + [0x000DE6, 0x000DEF], + [0x000DF2, 0x000DF4], + [0x000E01, 0x000E3A], + [0x000E3F, 0x000E5B], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EBD], + [0x000EC0, 0x000EC4], + [0x000EC8, 0x000ECE], + [0x000ED0, 0x000ED9], + [0x000EDC, 0x000EDF], + [0x000F00, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F71, 0x000F97], + [0x000F99, 0x000FBC], + [0x000FBE, 0x000FCC], + [0x000FCE, 0x000FDA], + [0x001000, 0x0010C5], + [0x0010D0, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x00135D, 0x00137C], + [0x001380, 0x001399], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001400, 0x00169C], + [0x0016A0, 0x0016F8], + [0x001700, 0x001715], + [0x00171F, 0x001736], + [0x001740, 0x001753], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001772, 0x001773], + [0x001780, 0x0017DD], + [0x0017E0, 0x0017E9], + [0x0017F0, 0x0017F9], + [0x001800, 0x00180D], + [0x00180F, 0x001819], + [0x001820, 0x001878], + [0x001880, 0x0018AA], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001920, 0x00192B], + [0x001930, 0x00193B], + [0x001944, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x0019D0, 0x0019DA], + [0x0019DE, 0x001A1B], + [0x001A1E, 0x001A5E], + [0x001A60, 0x001A7C], + [0x001A7F, 0x001A89], + [0x001A90, 0x001A99], + [0x001AA0, 0x001AAD], + [0x001AB0, 0x001ACE], + [0x001B00, 0x001B4C], + [0x001B50, 0x001B7E], + [0x001B80, 0x001BF3], + [0x001BFC, 0x001C37], + [0x001C3B, 0x001C49], + [0x001C4D, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CC7], + [0x001CD0, 0x001CFA], + [0x001D00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FC4], + [0x001FC6, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FDD, 0x001FEF], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFE], + [0x002000, 0x00200A], + [0x002010, 0x002029], + [0x00202F, 0x00205F], + [0x002070, 0x002071], + [0x002074, 0x00208E], + [0x002090, 0x00209C], + [0x0020A0, 0x0020C0], + [0x0020D0, 0x0020F0], + [0x002100, 0x00218B], + [0x002190, 0x002426], + [0x002440, 0x00244A], + [0x002460, 0x002B73], + [0x002B76, 0x002B95], + [0x002B97, 0x002CF3], + [0x002CF9, 0x002D25], + [0x002D30, 0x002D67], + [0x002D6F, 0x002D70], + [0x002D7F, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x002DE0, 0x002E5D], + [0x002E80, 0x002E99], + [0x002E9B, 0x002EF3], + [0x002F00, 0x002FD5], + [0x002FF0, 0x002FFB], + [0x003000, 0x00303F], + [0x003041, 0x003096], + [0x003099, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x003190, 0x0031E3], + [0x0031F0, 0x00321E], + [0x003220, 0x00A48C], + [0x00A490, 0x00A4C6], + [0x00A4D0, 0x00A62B], + [0x00A640, 0x00A6F7], + [0x00A700, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A82C], + [0x00A830, 0x00A839], + [0x00A840, 0x00A877], + [0x00A880, 0x00A8C5], + [0x00A8CE, 0x00A8D9], + [0x00A8E0, 0x00A953], + [0x00A95F, 0x00A97C], + [0x00A980, 0x00A9CD], + [0x00A9CF, 0x00A9D9], + [0x00A9DE, 0x00A9FE], + [0x00AA00, 0x00AA36], + [0x00AA40, 0x00AA4D], + [0x00AA50, 0x00AA59], + [0x00AA5C, 0x00AAC2], + [0x00AADB, 0x00AAF6], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB6B], + [0x00AB70, 0x00ABED], + [0x00ABF0, 0x00ABF9], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1D, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBC2], + [0x00FBD3, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FE19], + [0x00FE20, 0x00FE52], + [0x00FE54, 0x00FE66], + [0x00FE68, 0x00FE6B], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x00FF01, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x00FFE0, 0x00FFE6], + [0x00FFE8, 0x00FFEE], + [0x00FFFC, 0x00FFFD], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010100, 0x010102], + [0x010107, 0x010133], + [0x010137, 0x01018E], + [0x010190, 0x01019C], + [0x0101D0, 0x0101FD], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x0102E0, 0x0102FB], + [0x010300, 0x010323], + [0x01032D, 0x01034A], + [0x010350, 0x01037A], + [0x010380, 0x01039D], + [0x01039F, 0x0103C3], + [0x0103C8, 0x0103D5], + [0x010400, 0x01049D], + [0x0104A0, 0x0104A9], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x01056F, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010857, 0x01089E], + [0x0108A7, 0x0108AF], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x0108FB, 0x01091B], + [0x01091F, 0x010939], + [0x010980, 0x0109B7], + [0x0109BC, 0x0109CF], + [0x0109D2, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A38, 0x010A3A], + [0x010A3F, 0x010A48], + [0x010A50, 0x010A58], + [0x010A60, 0x010A9F], + [0x010AC0, 0x010AE6], + [0x010AEB, 0x010AF6], + [0x010B00, 0x010B35], + [0x010B39, 0x010B55], + [0x010B58, 0x010B72], + [0x010B78, 0x010B91], + [0x010B99, 0x010B9C], + [0x010BA9, 0x010BAF], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010CFA, 0x010D27], + [0x010D30, 0x010D39], + [0x010E60, 0x010E7E], + [0x010E80, 0x010EA9], + [0x010EAB, 0x010EAD], + [0x010EB0, 0x010EB1], + [0x010EFD, 0x010F27], + [0x010F30, 0x010F59], + [0x010F70, 0x010F89], + [0x010FB0, 0x010FCB], + [0x010FE0, 0x010FF6], + [0x011000, 0x01104D], + [0x011052, 0x011075], + [0x01107F, 0x0110BC], + [0x0110BE, 0x0110C2], + [0x0110D0, 0x0110E8], + [0x0110F0, 0x0110F9], + [0x011100, 0x011134], + [0x011136, 0x011147], + [0x011150, 0x011176], + [0x011180, 0x0111DF], + [0x0111E1, 0x0111F4], + [0x011200, 0x011211], + [0x011213, 0x011241], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A9], + [0x0112B0, 0x0112EA], + [0x0112F0, 0x0112F9], + [0x011300, 0x011303], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01133B, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x01135D, 0x011363], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011400, 0x01145B], + [0x01145D, 0x011461], + [0x011480, 0x0114C7], + [0x0114D0, 0x0114D9], + [0x011580, 0x0115B5], + [0x0115B8, 0x0115DD], + [0x011600, 0x011644], + [0x011650, 0x011659], + [0x011660, 0x01166C], + [0x011680, 0x0116B9], + [0x0116C0, 0x0116C9], + [0x011700, 0x01171A], + [0x01171D, 0x01172B], + [0x011730, 0x011746], + [0x011800, 0x01183B], + [0x0118A0, 0x0118F2], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x011935], + [0x011937, 0x011938], + [0x01193B, 0x011946], + [0x011950, 0x011959], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D7], + [0x0119DA, 0x0119E4], + [0x011A00, 0x011A47], + [0x011A50, 0x011AA2], + [0x011AB0, 0x011AF8], + [0x011B00, 0x011B09], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C36], + [0x011C38, 0x011C45], + [0x011C50, 0x011C6C], + [0x011C70, 0x011C8F], + [0x011C92, 0x011CA7], + [0x011CA9, 0x011CB6], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D47], + [0x011D50, 0x011D59], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D8E], + [0x011D90, 0x011D91], + [0x011D93, 0x011D98], + [0x011DA0, 0x011DA9], + [0x011EE0, 0x011EF8], + [0x011F00, 0x011F10], + [0x011F12, 0x011F3A], + [0x011F3E, 0x011F59], + [0x011FC0, 0x011FF1], + [0x011FFF, 0x012399], + [0x012400, 0x01246E], + [0x012470, 0x012474], + [0x012480, 0x012543], + [0x012F90, 0x012FF2], + [0x013000, 0x01342F], + [0x013440, 0x013455], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A60, 0x016A69], + [0x016A6E, 0x016ABE], + [0x016AC0, 0x016AC9], + [0x016AD0, 0x016AED], + [0x016AF0, 0x016AF5], + [0x016B00, 0x016B45], + [0x016B50, 0x016B59], + [0x016B5B, 0x016B61], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E9A], + [0x016F00, 0x016F4A], + [0x016F4F, 0x016F87], + [0x016F8F, 0x016F9F], + [0x016FE0, 0x016FE4], + [0x016FF0, 0x016FF1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01BC9C, 0x01BC9F], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01CF50, 0x01CFC3], + [0x01D000, 0x01D0F5], + [0x01D100, 0x01D126], + [0x01D129, 0x01D172], + [0x01D17B, 0x01D1EA], + [0x01D200, 0x01D245], + [0x01D2C0, 0x01D2D3], + [0x01D2E0, 0x01D2F3], + [0x01D300, 0x01D356], + [0x01D360, 0x01D378], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D7CB], + [0x01D7CE, 0x01DA8B], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E130, 0x01E13D], + [0x01E140, 0x01E149], + [0x01E14E, 0x01E14F], + [0x01E290, 0x01E2AE], + [0x01E2C0, 0x01E2F9], + [0x01E4D0, 0x01E4F9], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E8C7, 0x01E8D6], + [0x01E900, 0x01E94B], + [0x01E950, 0x01E959], + [0x01E95E, 0x01E95F], + [0x01EC71, 0x01ECB4], + [0x01ED01, 0x01ED3D], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01EEF0, 0x01EEF1], + [0x01F000, 0x01F02B], + [0x01F030, 0x01F093], + [0x01F0A0, 0x01F0AE], + [0x01F0B1, 0x01F0BF], + [0x01F0C1, 0x01F0CF], + [0x01F0D1, 0x01F0F5], + [0x01F100, 0x01F1AD], + [0x01F1E6, 0x01F202], + [0x01F210, 0x01F23B], + [0x01F240, 0x01F248], + [0x01F250, 0x01F251], + [0x01F260, 0x01F265], + [0x01F300, 0x01F6D7], + [0x01F6DC, 0x01F6EC], + [0x01F6F0, 0x01F6FC], + [0x01F700, 0x01F776], + [0x01F77B, 0x01F7D9], + [0x01F7E0, 0x01F7EB], + [0x01F800, 0x01F80B], + [0x01F810, 0x01F847], + [0x01F850, 0x01F859], + [0x01F860, 0x01F887], + [0x01F890, 0x01F8AD], + [0x01F8B0, 0x01F8B1], + [0x01F900, 0x01FA53], + [0x01FA60, 0x01FA6D], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8], + [0x01FB00, 0x01FB92], + [0x01FB94, 0x01FBCA], + [0x01FBF0, 0x01FBF9], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Other}+$/u, + nonMatchSymbols, + "\\P{General_Category=Other}" +); +testPropertyEscapes( + /^\P{General_Category=C}+$/u, + nonMatchSymbols, + "\\P{General_Category=C}" +); +testPropertyEscapes( + /^\P{gc=Other}+$/u, + nonMatchSymbols, + "\\P{gc=Other}" +); +testPropertyEscapes( + /^\P{gc=C}+$/u, + nonMatchSymbols, + "\\P{gc=C}" +); +testPropertyEscapes( + /^\P{Other}+$/u, + nonMatchSymbols, + "\\P{Other}" +); +testPropertyEscapes( + /^\P{C}+$/u, + nonMatchSymbols, + "\\P{C}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js new file mode 100644 index 0000000000..a9d0f1944c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Letter.js @@ -0,0 +1,1113 @@ +// Copyright 2022 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 for `General_Category=Other_Letter` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000BA, + 0x0001BB, + 0x000294, + 0x0006D5, + 0x0006FF, + 0x000710, + 0x0007B1, + 0x00093D, + 0x000950, + 0x0009B2, + 0x0009BD, + 0x0009CE, + 0x0009FC, + 0x000A5E, + 0x000ABD, + 0x000AD0, + 0x000AF9, + 0x000B3D, + 0x000B71, + 0x000B83, + 0x000B9C, + 0x000BD0, + 0x000C3D, + 0x000C5D, + 0x000C80, + 0x000CBD, + 0x000D3D, + 0x000D4E, + 0x000DBD, + 0x000E84, + 0x000EA5, + 0x000EBD, + 0x000F00, + 0x00103F, + 0x001061, + 0x00108E, + 0x001258, + 0x0012C0, + 0x0017DC, + 0x0018AA, + 0x001CFA, + 0x003006, + 0x00303C, + 0x00309F, + 0x0030FF, + 0x00A66E, + 0x00A78F, + 0x00A7F7, + 0x00A8FB, + 0x00AA7A, + 0x00AAB1, + 0x00AAC0, + 0x00AAC2, + 0x00AAF2, + 0x00FB1D, + 0x00FB3E, + 0x010808, + 0x01083C, + 0x010A00, + 0x010F27, + 0x011075, + 0x011144, + 0x011147, + 0x011176, + 0x0111DA, + 0x0111DC, + 0x011288, + 0x01133D, + 0x011350, + 0x0114C7, + 0x011644, + 0x0116B8, + 0x011909, + 0x01193F, + 0x011941, + 0x0119E1, + 0x0119E3, + 0x011A00, + 0x011A3A, + 0x011A50, + 0x011A9D, + 0x011C40, + 0x011D46, + 0x011D98, + 0x011F02, + 0x011FB0, + 0x016F50, + 0x01B132, + 0x01B155, + 0x01DF0A, + 0x01E14E, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x0001C0, 0x0001C3], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F2], + [0x000620, 0x00063F], + [0x000641, 0x00064A], + [0x00066E, 0x00066F], + [0x000671, 0x0006D3], + [0x0006EE, 0x0006EF], + [0x0006FA, 0x0006FC], + [0x000712, 0x00072F], + [0x00074D, 0x0007A5], + [0x0007CA, 0x0007EA], + [0x000800, 0x000815], + [0x000840, 0x000858], + [0x000860, 0x00086A], + [0x000870, 0x000887], + [0x000889, 0x00088E], + [0x0008A0, 0x0008C8], + [0x000904, 0x000939], + [0x000958, 0x000961], + [0x000972, 0x000980], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E1], + [0x0009F0, 0x0009F1], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A59, 0x000A5C], + [0x000A72, 0x000A74], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000AE0, 0x000AE1], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B61], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000C05, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C61], + [0x000C85, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE1], + [0x000CF1, 0x000CF2], + [0x000D04, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D3A], + [0x000D54, 0x000D56], + [0x000D5F, 0x000D61], + [0x000D7A, 0x000D7F], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000E01, 0x000E30], + [0x000E32, 0x000E33], + [0x000E40, 0x000E45], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EB0], + [0x000EB2, 0x000EB3], + [0x000EC0, 0x000EC4], + [0x000EDC, 0x000EDF], + [0x000F40, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F88, 0x000F8C], + [0x001000, 0x00102A], + [0x001050, 0x001055], + [0x00105A, 0x00105D], + [0x001065, 0x001066], + [0x00106E, 0x001070], + [0x001075, 0x001081], + [0x001100, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x001380, 0x00138F], + [0x001401, 0x00166C], + [0x00166F, 0x00167F], + [0x001681, 0x00169A], + [0x0016A0, 0x0016EA], + [0x0016F1, 0x0016F8], + [0x001700, 0x001711], + [0x00171F, 0x001731], + [0x001740, 0x001751], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001780, 0x0017B3], + [0x001820, 0x001842], + [0x001844, 0x001878], + [0x001880, 0x001884], + [0x001887, 0x0018A8], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001950, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x001A00, 0x001A16], + [0x001A20, 0x001A54], + [0x001B05, 0x001B33], + [0x001B45, 0x001B4C], + [0x001B83, 0x001BA0], + [0x001BAE, 0x001BAF], + [0x001BBA, 0x001BE5], + [0x001C00, 0x001C23], + [0x001C4D, 0x001C4F], + [0x001C5A, 0x001C77], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF6], + [0x002135, 0x002138], + [0x002D30, 0x002D67], + [0x002D80, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x003041, 0x003096], + [0x0030A1, 0x0030FA], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x0031A0, 0x0031BF], + [0x0031F0, 0x0031FF], + [0x003400, 0x004DBF], + [0x004E00, 0x00A014], + [0x00A016, 0x00A48C], + [0x00A4D0, 0x00A4F7], + [0x00A500, 0x00A60B], + [0x00A610, 0x00A61F], + [0x00A62A, 0x00A62B], + [0x00A6A0, 0x00A6E5], + [0x00A7FB, 0x00A801], + [0x00A803, 0x00A805], + [0x00A807, 0x00A80A], + [0x00A80C, 0x00A822], + [0x00A840, 0x00A873], + [0x00A882, 0x00A8B3], + [0x00A8F2, 0x00A8F7], + [0x00A8FD, 0x00A8FE], + [0x00A90A, 0x00A925], + [0x00A930, 0x00A946], + [0x00A960, 0x00A97C], + [0x00A984, 0x00A9B2], + [0x00A9E0, 0x00A9E4], + [0x00A9E7, 0x00A9EF], + [0x00A9FA, 0x00A9FE], + [0x00AA00, 0x00AA28], + [0x00AA40, 0x00AA42], + [0x00AA44, 0x00AA4B], + [0x00AA60, 0x00AA6F], + [0x00AA71, 0x00AA76], + [0x00AA7E, 0x00AAAF], + [0x00AAB5, 0x00AAB6], + [0x00AAB9, 0x00AABD], + [0x00AADB, 0x00AADC], + [0x00AAE0, 0x00AAEA], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00ABC0, 0x00ABE2], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB1F, 0x00FB28], + [0x00FB2A, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBB1], + [0x00FBD3, 0x00FD3D], + [0x00FD50, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDFB], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x00FF66, 0x00FF6F], + [0x00FF71, 0x00FF9D], + [0x00FFA0, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x010300, 0x01031F], + [0x01032D, 0x010340], + [0x010342, 0x010349], + [0x010350, 0x010375], + [0x010380, 0x01039D], + [0x0103A0, 0x0103C3], + [0x0103C8, 0x0103CF], + [0x010450, 0x01049D], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010860, 0x010876], + [0x010880, 0x01089E], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x010900, 0x010915], + [0x010920, 0x010939], + [0x010980, 0x0109B7], + [0x0109BE, 0x0109BF], + [0x010A10, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A60, 0x010A7C], + [0x010A80, 0x010A9C], + [0x010AC0, 0x010AC7], + [0x010AC9, 0x010AE4], + [0x010B00, 0x010B35], + [0x010B40, 0x010B55], + [0x010B60, 0x010B72], + [0x010B80, 0x010B91], + [0x010C00, 0x010C48], + [0x010D00, 0x010D23], + [0x010E80, 0x010EA9], + [0x010EB0, 0x010EB1], + [0x010F00, 0x010F1C], + [0x010F30, 0x010F45], + [0x010F70, 0x010F81], + [0x010FB0, 0x010FC4], + [0x010FE0, 0x010FF6], + [0x011003, 0x011037], + [0x011071, 0x011072], + [0x011083, 0x0110AF], + [0x0110D0, 0x0110E8], + [0x011103, 0x011126], + [0x011150, 0x011172], + [0x011183, 0x0111B2], + [0x0111C1, 0x0111C4], + [0x011200, 0x011211], + [0x011213, 0x01122B], + [0x01123F, 0x011240], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A8], + [0x0112B0, 0x0112DE], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01135D, 0x011361], + [0x011400, 0x011434], + [0x011447, 0x01144A], + [0x01145F, 0x011461], + [0x011480, 0x0114AF], + [0x0114C4, 0x0114C5], + [0x011580, 0x0115AE], + [0x0115D8, 0x0115DB], + [0x011600, 0x01162F], + [0x011680, 0x0116AA], + [0x011700, 0x01171A], + [0x011740, 0x011746], + [0x011800, 0x01182B], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x01192F], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D0], + [0x011A0B, 0x011A32], + [0x011A5C, 0x011A89], + [0x011AB0, 0x011AF8], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C2E], + [0x011C72, 0x011C8F], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D30], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D89], + [0x011EE0, 0x011EF2], + [0x011F04, 0x011F10], + [0x011F12, 0x011F33], + [0x012000, 0x012399], + [0x012480, 0x012543], + [0x012F90, 0x012FF0], + [0x013000, 0x01342F], + [0x013441, 0x013446], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A70, 0x016ABE], + [0x016AD0, 0x016AED], + [0x016B00, 0x016B2F], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016F00, 0x016F4A], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01E100, 0x01E12C], + [0x01E290, 0x01E2AD], + [0x01E2C0, 0x01E2EB], + [0x01E4D0, 0x01E4EA], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Other_Letter}+$/u, + matchSymbols, + "\\p{General_Category=Other_Letter}" +); +testPropertyEscapes( + /^\p{General_Category=Lo}+$/u, + matchSymbols, + "\\p{General_Category=Lo}" +); +testPropertyEscapes( + /^\p{gc=Other_Letter}+$/u, + matchSymbols, + "\\p{gc=Other_Letter}" +); +testPropertyEscapes( + /^\p{gc=Lo}+$/u, + matchSymbols, + "\\p{gc=Lo}" +); +testPropertyEscapes( + /^\p{Other_Letter}+$/u, + matchSymbols, + "\\p{Other_Letter}" +); +testPropertyEscapes( + /^\p{Lo}+$/u, + matchSymbols, + "\\p{Lo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000640, + 0x000670, + 0x0006D4, + 0x000711, + 0x000888, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A5D, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CDF, + 0x000D0D, + 0x000D11, + 0x000DB2, + 0x000DBC, + 0x000E31, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EB1, + 0x000F48, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x001680, + 0x00176D, + 0x001843, + 0x0018A9, + 0x001CED, + 0x001CF4, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x0030A0, + 0x003130, + 0x00A015, + 0x00A802, + 0x00A806, + 0x00A80B, + 0x00A8FC, + 0x00A9FF, + 0x00AA43, + 0x00AA70, + 0x00AAB0, + 0x00AAC1, + 0x00AB27, + 0x00FB1E, + 0x00FB29, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE75, + 0x00FF70, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x010341, + 0x010809, + 0x010836, + 0x0108F3, + 0x010A14, + 0x010A18, + 0x010AC8, + 0x0111DB, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011329, + 0x011331, + 0x011334, + 0x0114C6, + 0x011914, + 0x011917, + 0x011940, + 0x0119E2, + 0x011C09, + 0x011D07, + 0x011D0A, + 0x011D66, + 0x011D69, + 0x011F03, + 0x011F11, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0000A9], + [0x0000AB, 0x0000B9], + [0x0000BB, 0x0001BA], + [0x0001BC, 0x0001BF], + [0x0001C4, 0x000293], + [0x000295, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F3, 0x00061F], + [0x00064B, 0x00066D], + [0x0006D6, 0x0006ED], + [0x0006F0, 0x0006F9], + [0x0006FD, 0x0006FE], + [0x000700, 0x00070F], + [0x000730, 0x00074C], + [0x0007A6, 0x0007B0], + [0x0007B2, 0x0007C9], + [0x0007EB, 0x0007FF], + [0x000816, 0x00083F], + [0x000859, 0x00085F], + [0x00086B, 0x00086F], + [0x00088F, 0x00089F], + [0x0008C9, 0x000903], + [0x00093A, 0x00093C], + [0x00093E, 0x00094F], + [0x000951, 0x000957], + [0x000962, 0x000971], + [0x000981, 0x000984], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BC], + [0x0009BE, 0x0009CD], + [0x0009CF, 0x0009DB], + [0x0009E2, 0x0009EF], + [0x0009F2, 0x0009FB], + [0x0009FD, 0x000A04], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A58], + [0x000A5F, 0x000A71], + [0x000A75, 0x000A84], + [0x000ABA, 0x000ABC], + [0x000ABE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE2, 0x000AF8], + [0x000AFA, 0x000B04], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3C], + [0x000B3E, 0x000B5B], + [0x000B62, 0x000B70], + [0x000B72, 0x000B82], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BCF], + [0x000BD1, 0x000C04], + [0x000C3A, 0x000C3C], + [0x000C3E, 0x000C57], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C62, 0x000C7F], + [0x000C81, 0x000C84], + [0x000CBA, 0x000CBC], + [0x000CBE, 0x000CDC], + [0x000CE2, 0x000CF0], + [0x000CF3, 0x000D03], + [0x000D3B, 0x000D3C], + [0x000D3E, 0x000D4D], + [0x000D4F, 0x000D53], + [0x000D57, 0x000D5E], + [0x000D62, 0x000D79], + [0x000D80, 0x000D84], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000E00], + [0x000E34, 0x000E3F], + [0x000E46, 0x000E80], + [0x000EB4, 0x000EBC], + [0x000EBE, 0x000EBF], + [0x000EC5, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F01, 0x000F3F], + [0x000F6D, 0x000F87], + [0x000F8D, 0x000FFF], + [0x00102B, 0x00103E], + [0x001040, 0x00104F], + [0x001056, 0x001059], + [0x00105E, 0x001060], + [0x001062, 0x001064], + [0x001067, 0x00106D], + [0x001071, 0x001074], + [0x001082, 0x00108D], + [0x00108F, 0x0010FF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00137F], + [0x001390, 0x001400], + [0x00166D, 0x00166E], + [0x00169B, 0x00169F], + [0x0016EB, 0x0016F0], + [0x0016F9, 0x0016FF], + [0x001712, 0x00171E], + [0x001732, 0x00173F], + [0x001752, 0x00175F], + [0x001771, 0x00177F], + [0x0017B4, 0x0017DB], + [0x0017DD, 0x00181F], + [0x001879, 0x00187F], + [0x001885, 0x001886], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00191F, 0x00194F], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019FF], + [0x001A17, 0x001A1F], + [0x001A55, 0x001B04], + [0x001B34, 0x001B44], + [0x001B4D, 0x001B82], + [0x001BA1, 0x001BAD], + [0x001BB0, 0x001BB9], + [0x001BE6, 0x001BFF], + [0x001C24, 0x001C4C], + [0x001C50, 0x001C59], + [0x001C78, 0x001CE8], + [0x001CF7, 0x001CF9], + [0x001CFB, 0x002134], + [0x002139, 0x002D2F], + [0x002D68, 0x002D7F], + [0x002D97, 0x002D9F], + [0x002DDF, 0x003005], + [0x003007, 0x00303B], + [0x00303D, 0x003040], + [0x003097, 0x00309E], + [0x0030FB, 0x0030FE], + [0x003100, 0x003104], + [0x00318F, 0x00319F], + [0x0031C0, 0x0031EF], + [0x003200, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A48D, 0x00A4CF], + [0x00A4F8, 0x00A4FF], + [0x00A60C, 0x00A60F], + [0x00A620, 0x00A629], + [0x00A62C, 0x00A66D], + [0x00A66F, 0x00A69F], + [0x00A6E6, 0x00A78E], + [0x00A790, 0x00A7F6], + [0x00A7F8, 0x00A7FA], + [0x00A823, 0x00A83F], + [0x00A874, 0x00A881], + [0x00A8B4, 0x00A8F1], + [0x00A8F8, 0x00A8FA], + [0x00A8FF, 0x00A909], + [0x00A926, 0x00A92F], + [0x00A947, 0x00A95F], + [0x00A97D, 0x00A983], + [0x00A9B3, 0x00A9DF], + [0x00A9E5, 0x00A9E6], + [0x00A9F0, 0x00A9F9], + [0x00AA29, 0x00AA3F], + [0x00AA4C, 0x00AA5F], + [0x00AA77, 0x00AA79], + [0x00AA7B, 0x00AA7D], + [0x00AAB2, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABE, 0x00AABF], + [0x00AAC3, 0x00AADA], + [0x00AADD, 0x00AADF], + [0x00AAEB, 0x00AAF1], + [0x00AAF3, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB2F, 0x00ABBF], + [0x00ABE3, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FB1C], + [0x00FBB2, 0x00FBD2], + [0x00FD3E, 0x00FD4F], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDEF], + [0x00FDFC, 0x00FE6F], + [0x00FEFD, 0x00FF65], + [0x00FF9E, 0x00FF9F], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102FF], + [0x010320, 0x01032C], + [0x01034A, 0x01034F], + [0x010376, 0x01037F], + [0x01039E, 0x01039F], + [0x0103C4, 0x0103C7], + [0x0103D0, 0x01044F], + [0x01049E, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x010856, 0x01085F], + [0x010877, 0x01087F], + [0x01089F, 0x0108DF], + [0x0108F6, 0x0108FF], + [0x010916, 0x01091F], + [0x01093A, 0x01097F], + [0x0109B8, 0x0109BD], + [0x0109C0, 0x0109FF], + [0x010A01, 0x010A0F], + [0x010A36, 0x010A5F], + [0x010A7D, 0x010A7F], + [0x010A9D, 0x010ABF], + [0x010AE5, 0x010AFF], + [0x010B36, 0x010B3F], + [0x010B56, 0x010B5F], + [0x010B73, 0x010B7F], + [0x010B92, 0x010BFF], + [0x010C49, 0x010CFF], + [0x010D24, 0x010E7F], + [0x010EAA, 0x010EAF], + [0x010EB2, 0x010EFF], + [0x010F1D, 0x010F26], + [0x010F28, 0x010F2F], + [0x010F46, 0x010F6F], + [0x010F82, 0x010FAF], + [0x010FC5, 0x010FDF], + [0x010FF7, 0x011002], + [0x011038, 0x011070], + [0x011073, 0x011074], + [0x011076, 0x011082], + [0x0110B0, 0x0110CF], + [0x0110E9, 0x011102], + [0x011127, 0x011143], + [0x011145, 0x011146], + [0x011148, 0x01114F], + [0x011173, 0x011175], + [0x011177, 0x011182], + [0x0111B3, 0x0111C0], + [0x0111C5, 0x0111D9], + [0x0111DD, 0x0111FF], + [0x01122C, 0x01123E], + [0x011241, 0x01127F], + [0x0112A9, 0x0112AF], + [0x0112DF, 0x011304], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x01133A, 0x01133C], + [0x01133E, 0x01134F], + [0x011351, 0x01135C], + [0x011362, 0x0113FF], + [0x011435, 0x011446], + [0x01144B, 0x01145E], + [0x011462, 0x01147F], + [0x0114B0, 0x0114C3], + [0x0114C8, 0x01157F], + [0x0115AF, 0x0115D7], + [0x0115DC, 0x0115FF], + [0x011630, 0x011643], + [0x011645, 0x01167F], + [0x0116AB, 0x0116B7], + [0x0116B9, 0x0116FF], + [0x01171B, 0x01173F], + [0x011747, 0x0117FF], + [0x01182C, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011930, 0x01193E], + [0x011942, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D1, 0x0119E0], + [0x0119E4, 0x0119FF], + [0x011A01, 0x011A0A], + [0x011A33, 0x011A39], + [0x011A3B, 0x011A4F], + [0x011A51, 0x011A5B], + [0x011A8A, 0x011A9C], + [0x011A9E, 0x011AAF], + [0x011AF9, 0x011BFF], + [0x011C2F, 0x011C3F], + [0x011C41, 0x011C71], + [0x011C90, 0x011CFF], + [0x011D31, 0x011D45], + [0x011D47, 0x011D5F], + [0x011D8A, 0x011D97], + [0x011D99, 0x011EDF], + [0x011EF3, 0x011F01], + [0x011F34, 0x011FAF], + [0x011FB1, 0x011FFF], + [0x01239A, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF1, 0x012FFF], + [0x013430, 0x013440], + [0x013447, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A5F, 0x016A6F], + [0x016ABF, 0x016ACF], + [0x016AEE, 0x016AFF], + [0x016B30, 0x016B62], + [0x016B78, 0x016B7C], + [0x016B90, 0x016EFF], + [0x016F4B, 0x016F4F], + [0x016F51, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFFF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01DF09], + [0x01DF0B, 0x01E0FF], + [0x01E12D, 0x01E14D], + [0x01E14F, 0x01E28F], + [0x01E2AE, 0x01E2BF], + [0x01E2EC, 0x01E4CF], + [0x01E4EB, 0x01E7DF], + [0x01E8C5, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Other_Letter}+$/u, + nonMatchSymbols, + "\\P{General_Category=Other_Letter}" +); +testPropertyEscapes( + /^\P{General_Category=Lo}+$/u, + nonMatchSymbols, + "\\P{General_Category=Lo}" +); +testPropertyEscapes( + /^\P{gc=Other_Letter}+$/u, + nonMatchSymbols, + "\\P{gc=Other_Letter}" +); +testPropertyEscapes( + /^\P{gc=Lo}+$/u, + nonMatchSymbols, + "\\P{gc=Lo}" +); +testPropertyEscapes( + /^\P{Other_Letter}+$/u, + nonMatchSymbols, + "\\P{Other_Letter}" +); +testPropertyEscapes( + /^\P{Lo}+$/u, + nonMatchSymbols, + "\\P{Lo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js new file mode 100644 index 0000000000..b83fc97949 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Number.js @@ -0,0 +1,237 @@ +// Copyright 2022 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 for `General_Category=Other_Number` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000B9, + 0x0019DA, + 0x002070, + 0x002189, + 0x002CFD + ], + ranges: [ + [0x0000B2, 0x0000B3], + [0x0000BC, 0x0000BE], + [0x0009F4, 0x0009F9], + [0x000B72, 0x000B77], + [0x000BF0, 0x000BF2], + [0x000C78, 0x000C7E], + [0x000D58, 0x000D5E], + [0x000D70, 0x000D78], + [0x000F2A, 0x000F33], + [0x001369, 0x00137C], + [0x0017F0, 0x0017F9], + [0x002074, 0x002079], + [0x002080, 0x002089], + [0x002150, 0x00215F], + [0x002460, 0x00249B], + [0x0024EA, 0x0024FF], + [0x002776, 0x002793], + [0x003192, 0x003195], + [0x003220, 0x003229], + [0x003248, 0x00324F], + [0x003251, 0x00325F], + [0x003280, 0x003289], + [0x0032B1, 0x0032BF], + [0x00A830, 0x00A835], + [0x010107, 0x010133], + [0x010175, 0x010178], + [0x01018A, 0x01018B], + [0x0102E1, 0x0102FB], + [0x010320, 0x010323], + [0x010858, 0x01085F], + [0x010879, 0x01087F], + [0x0108A7, 0x0108AF], + [0x0108FB, 0x0108FF], + [0x010916, 0x01091B], + [0x0109BC, 0x0109BD], + [0x0109C0, 0x0109CF], + [0x0109D2, 0x0109FF], + [0x010A40, 0x010A48], + [0x010A7D, 0x010A7E], + [0x010A9D, 0x010A9F], + [0x010AEB, 0x010AEF], + [0x010B58, 0x010B5F], + [0x010B78, 0x010B7F], + [0x010BA9, 0x010BAF], + [0x010CFA, 0x010CFF], + [0x010E60, 0x010E7E], + [0x010F1D, 0x010F26], + [0x010F51, 0x010F54], + [0x010FC5, 0x010FCB], + [0x011052, 0x011065], + [0x0111E1, 0x0111F4], + [0x01173A, 0x01173B], + [0x0118EA, 0x0118F2], + [0x011C5A, 0x011C6C], + [0x011FC0, 0x011FD4], + [0x016B5B, 0x016B61], + [0x016E80, 0x016E96], + [0x01D2C0, 0x01D2D3], + [0x01D2E0, 0x01D2F3], + [0x01D360, 0x01D378], + [0x01E8C7, 0x01E8CF], + [0x01EC71, 0x01ECAB], + [0x01ECAD, 0x01ECAF], + [0x01ECB1, 0x01ECB4], + [0x01ED01, 0x01ED2D], + [0x01ED2F, 0x01ED3D], + [0x01F100, 0x01F10C] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Other_Number}+$/u, + matchSymbols, + "\\p{General_Category=Other_Number}" +); +testPropertyEscapes( + /^\p{General_Category=No}+$/u, + matchSymbols, + "\\p{General_Category=No}" +); +testPropertyEscapes( + /^\p{gc=Other_Number}+$/u, + matchSymbols, + "\\p{gc=Other_Number}" +); +testPropertyEscapes( + /^\p{gc=No}+$/u, + matchSymbols, + "\\p{gc=No}" +); +testPropertyEscapes( + /^\p{Other_Number}+$/u, + matchSymbols, + "\\p{Other_Number}" +); +testPropertyEscapes( + /^\p{No}+$/u, + matchSymbols, + "\\p{No}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x003250, + 0x01ECAC, + 0x01ECB0, + 0x01ED2E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0000B1], + [0x0000B4, 0x0000B8], + [0x0000BA, 0x0000BB], + [0x0000BF, 0x0009F3], + [0x0009FA, 0x000B71], + [0x000B78, 0x000BEF], + [0x000BF3, 0x000C77], + [0x000C7F, 0x000D57], + [0x000D5F, 0x000D6F], + [0x000D79, 0x000F29], + [0x000F34, 0x001368], + [0x00137D, 0x0017EF], + [0x0017FA, 0x0019D9], + [0x0019DB, 0x00206F], + [0x002071, 0x002073], + [0x00207A, 0x00207F], + [0x00208A, 0x00214F], + [0x002160, 0x002188], + [0x00218A, 0x00245F], + [0x00249C, 0x0024E9], + [0x002500, 0x002775], + [0x002794, 0x002CFC], + [0x002CFE, 0x003191], + [0x003196, 0x00321F], + [0x00322A, 0x003247], + [0x003260, 0x00327F], + [0x00328A, 0x0032B0], + [0x0032C0, 0x00A82F], + [0x00A836, 0x00DBFF], + [0x00E000, 0x010106], + [0x010134, 0x010174], + [0x010179, 0x010189], + [0x01018C, 0x0102E0], + [0x0102FC, 0x01031F], + [0x010324, 0x010857], + [0x010860, 0x010878], + [0x010880, 0x0108A6], + [0x0108B0, 0x0108FA], + [0x010900, 0x010915], + [0x01091C, 0x0109BB], + [0x0109BE, 0x0109BF], + [0x0109D0, 0x0109D1], + [0x010A00, 0x010A3F], + [0x010A49, 0x010A7C], + [0x010A7F, 0x010A9C], + [0x010AA0, 0x010AEA], + [0x010AF0, 0x010B57], + [0x010B60, 0x010B77], + [0x010B80, 0x010BA8], + [0x010BB0, 0x010CF9], + [0x010D00, 0x010E5F], + [0x010E7F, 0x010F1C], + [0x010F27, 0x010F50], + [0x010F55, 0x010FC4], + [0x010FCC, 0x011051], + [0x011066, 0x0111E0], + [0x0111F5, 0x011739], + [0x01173C, 0x0118E9], + [0x0118F3, 0x011C59], + [0x011C6D, 0x011FBF], + [0x011FD5, 0x016B5A], + [0x016B62, 0x016E7F], + [0x016E97, 0x01D2BF], + [0x01D2D4, 0x01D2DF], + [0x01D2F4, 0x01D35F], + [0x01D379, 0x01E8C6], + [0x01E8D0, 0x01EC70], + [0x01ECB5, 0x01ED00], + [0x01ED3E, 0x01F0FF], + [0x01F10D, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Other_Number}+$/u, + nonMatchSymbols, + "\\P{General_Category=Other_Number}" +); +testPropertyEscapes( + /^\P{General_Category=No}+$/u, + nonMatchSymbols, + "\\P{General_Category=No}" +); +testPropertyEscapes( + /^\P{gc=Other_Number}+$/u, + nonMatchSymbols, + "\\P{gc=Other_Number}" +); +testPropertyEscapes( + /^\P{gc=No}+$/u, + nonMatchSymbols, + "\\P{gc=No}" +); +testPropertyEscapes( + /^\P{Other_Number}+$/u, + nonMatchSymbols, + "\\P{Other_Number}" +); +testPropertyEscapes( + /^\P{No}+$/u, + nonMatchSymbols, + "\\P{No}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js new file mode 100644 index 0000000000..2a11adff1b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Punctuation.js @@ -0,0 +1,467 @@ +// Copyright 2022 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 for `General_Category=Other_Punctuation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00002A, + 0x00002C, + 0x00005C, + 0x0000A1, + 0x0000A7, + 0x0000BF, + 0x00037E, + 0x000387, + 0x000589, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x00061B, + 0x0006D4, + 0x00085E, + 0x000970, + 0x0009FD, + 0x000A76, + 0x000AF0, + 0x000C77, + 0x000C84, + 0x000DF4, + 0x000E4F, + 0x000F14, + 0x000F85, + 0x0010FB, + 0x00166E, + 0x001CD3, + 0x002053, + 0x002D70, + 0x002E0B, + 0x002E1B, + 0x002E41, + 0x00303D, + 0x0030FB, + 0x00A673, + 0x00A67E, + 0x00A8FC, + 0x00A95F, + 0x00ABEB, + 0x00FE19, + 0x00FE30, + 0x00FE68, + 0x00FF0A, + 0x00FF0C, + 0x00FF3C, + 0x00FF61, + 0x01039F, + 0x0103D0, + 0x01056F, + 0x010857, + 0x01091F, + 0x01093F, + 0x010A7F, + 0x0111CD, + 0x0111DB, + 0x0112A9, + 0x01145D, + 0x0114C6, + 0x0116B9, + 0x01183B, + 0x0119E2, + 0x011FFF, + 0x016AF5, + 0x016B44, + 0x016FE2, + 0x01BC9F + ], + ranges: [ + [0x000021, 0x000023], + [0x000025, 0x000027], + [0x00002E, 0x00002F], + [0x00003A, 0x00003B], + [0x00003F, 0x000040], + [0x0000B6, 0x0000B7], + [0x00055A, 0x00055F], + [0x0005F3, 0x0005F4], + [0x000609, 0x00060A], + [0x00060C, 0x00060D], + [0x00061D, 0x00061F], + [0x00066A, 0x00066D], + [0x000700, 0x00070D], + [0x0007F7, 0x0007F9], + [0x000830, 0x00083E], + [0x000964, 0x000965], + [0x000E5A, 0x000E5B], + [0x000F04, 0x000F12], + [0x000FD0, 0x000FD4], + [0x000FD9, 0x000FDA], + [0x00104A, 0x00104F], + [0x001360, 0x001368], + [0x0016EB, 0x0016ED], + [0x001735, 0x001736], + [0x0017D4, 0x0017D6], + [0x0017D8, 0x0017DA], + [0x001800, 0x001805], + [0x001807, 0x00180A], + [0x001944, 0x001945], + [0x001A1E, 0x001A1F], + [0x001AA0, 0x001AA6], + [0x001AA8, 0x001AAD], + [0x001B5A, 0x001B60], + [0x001B7D, 0x001B7E], + [0x001BFC, 0x001BFF], + [0x001C3B, 0x001C3F], + [0x001C7E, 0x001C7F], + [0x001CC0, 0x001CC7], + [0x002016, 0x002017], + [0x002020, 0x002027], + [0x002030, 0x002038], + [0x00203B, 0x00203E], + [0x002041, 0x002043], + [0x002047, 0x002051], + [0x002055, 0x00205E], + [0x002CF9, 0x002CFC], + [0x002CFE, 0x002CFF], + [0x002E00, 0x002E01], + [0x002E06, 0x002E08], + [0x002E0E, 0x002E16], + [0x002E18, 0x002E19], + [0x002E1E, 0x002E1F], + [0x002E2A, 0x002E2E], + [0x002E30, 0x002E39], + [0x002E3C, 0x002E3F], + [0x002E43, 0x002E4F], + [0x002E52, 0x002E54], + [0x003001, 0x003003], + [0x00A4FE, 0x00A4FF], + [0x00A60D, 0x00A60F], + [0x00A6F2, 0x00A6F7], + [0x00A874, 0x00A877], + [0x00A8CE, 0x00A8CF], + [0x00A8F8, 0x00A8FA], + [0x00A92E, 0x00A92F], + [0x00A9C1, 0x00A9CD], + [0x00A9DE, 0x00A9DF], + [0x00AA5C, 0x00AA5F], + [0x00AADE, 0x00AADF], + [0x00AAF0, 0x00AAF1], + [0x00FE10, 0x00FE16], + [0x00FE45, 0x00FE46], + [0x00FE49, 0x00FE4C], + [0x00FE50, 0x00FE52], + [0x00FE54, 0x00FE57], + [0x00FE5F, 0x00FE61], + [0x00FE6A, 0x00FE6B], + [0x00FF01, 0x00FF03], + [0x00FF05, 0x00FF07], + [0x00FF0E, 0x00FF0F], + [0x00FF1A, 0x00FF1B], + [0x00FF1F, 0x00FF20], + [0x00FF64, 0x00FF65], + [0x010100, 0x010102], + [0x010A50, 0x010A58], + [0x010AF0, 0x010AF6], + [0x010B39, 0x010B3F], + [0x010B99, 0x010B9C], + [0x010F55, 0x010F59], + [0x010F86, 0x010F89], + [0x011047, 0x01104D], + [0x0110BB, 0x0110BC], + [0x0110BE, 0x0110C1], + [0x011140, 0x011143], + [0x011174, 0x011175], + [0x0111C5, 0x0111C8], + [0x0111DD, 0x0111DF], + [0x011238, 0x01123D], + [0x01144B, 0x01144F], + [0x01145A, 0x01145B], + [0x0115C1, 0x0115D7], + [0x011641, 0x011643], + [0x011660, 0x01166C], + [0x01173C, 0x01173E], + [0x011944, 0x011946], + [0x011A3F, 0x011A46], + [0x011A9A, 0x011A9C], + [0x011A9E, 0x011AA2], + [0x011B00, 0x011B09], + [0x011C41, 0x011C45], + [0x011C70, 0x011C71], + [0x011EF7, 0x011EF8], + [0x011F43, 0x011F4F], + [0x012470, 0x012474], + [0x012FF1, 0x012FF2], + [0x016A6E, 0x016A6F], + [0x016B37, 0x016B3B], + [0x016E97, 0x016E9A], + [0x01DA87, 0x01DA8B], + [0x01E95E, 0x01E95F] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Other_Punctuation}+$/u, + matchSymbols, + "\\p{General_Category=Other_Punctuation}" +); +testPropertyEscapes( + /^\p{General_Category=Po}+$/u, + matchSymbols, + "\\p{General_Category=Po}" +); +testPropertyEscapes( + /^\p{gc=Other_Punctuation}+$/u, + matchSymbols, + "\\p{gc=Other_Punctuation}" +); +testPropertyEscapes( + /^\p{gc=Po}+$/u, + matchSymbols, + "\\p{gc=Po}" +); +testPropertyEscapes( + /^\p{Other_Punctuation}+$/u, + matchSymbols, + "\\p{Other_Punctuation}" +); +testPropertyEscapes( + /^\p{Po}+$/u, + matchSymbols, + "\\p{Po}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000024, + 0x00002B, + 0x00002D, + 0x00060B, + 0x00061C, + 0x000F13, + 0x0017D7, + 0x001806, + 0x001AA7, + 0x002052, + 0x002054, + 0x002CFD, + 0x002E17, + 0x002E1A, + 0x002E2F, + 0x002E40, + 0x002E42, + 0x00A8FB, + 0x00FE53, + 0x00FE69, + 0x00FF04, + 0x00FF0B, + 0x00FF0D, + 0x0110BD, + 0x0111DC, + 0x01145C, + 0x011A9D + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000020], + [0x000028, 0x000029], + [0x000030, 0x000039], + [0x00003C, 0x00003E], + [0x000041, 0x00005B], + [0x00005D, 0x0000A0], + [0x0000A2, 0x0000A6], + [0x0000A8, 0x0000B5], + [0x0000B8, 0x0000BE], + [0x0000C0, 0x00037D], + [0x00037F, 0x000386], + [0x000388, 0x000559], + [0x000560, 0x000588], + [0x00058A, 0x0005BF], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x0005C7, 0x0005F2], + [0x0005F5, 0x000608], + [0x00060E, 0x00061A], + [0x000620, 0x000669], + [0x00066E, 0x0006D3], + [0x0006D5, 0x0006FF], + [0x00070E, 0x0007F6], + [0x0007FA, 0x00082F], + [0x00083F, 0x00085D], + [0x00085F, 0x000963], + [0x000966, 0x00096F], + [0x000971, 0x0009FC], + [0x0009FE, 0x000A75], + [0x000A77, 0x000AEF], + [0x000AF1, 0x000C76], + [0x000C78, 0x000C83], + [0x000C85, 0x000DF3], + [0x000DF5, 0x000E4E], + [0x000E50, 0x000E59], + [0x000E5C, 0x000F03], + [0x000F15, 0x000F84], + [0x000F86, 0x000FCF], + [0x000FD5, 0x000FD8], + [0x000FDB, 0x001049], + [0x001050, 0x0010FA], + [0x0010FC, 0x00135F], + [0x001369, 0x00166D], + [0x00166F, 0x0016EA], + [0x0016EE, 0x001734], + [0x001737, 0x0017D3], + [0x0017DB, 0x0017FF], + [0x00180B, 0x001943], + [0x001946, 0x001A1D], + [0x001A20, 0x001A9F], + [0x001AAE, 0x001B59], + [0x001B61, 0x001B7C], + [0x001B7F, 0x001BFB], + [0x001C00, 0x001C3A], + [0x001C40, 0x001C7D], + [0x001C80, 0x001CBF], + [0x001CC8, 0x001CD2], + [0x001CD4, 0x002015], + [0x002018, 0x00201F], + [0x002028, 0x00202F], + [0x002039, 0x00203A], + [0x00203F, 0x002040], + [0x002044, 0x002046], + [0x00205F, 0x002CF8], + [0x002D00, 0x002D6F], + [0x002D71, 0x002DFF], + [0x002E02, 0x002E05], + [0x002E09, 0x002E0A], + [0x002E0C, 0x002E0D], + [0x002E1C, 0x002E1D], + [0x002E20, 0x002E29], + [0x002E3A, 0x002E3B], + [0x002E50, 0x002E51], + [0x002E55, 0x003000], + [0x003004, 0x00303C], + [0x00303E, 0x0030FA], + [0x0030FC, 0x00A4FD], + [0x00A500, 0x00A60C], + [0x00A610, 0x00A672], + [0x00A674, 0x00A67D], + [0x00A67F, 0x00A6F1], + [0x00A6F8, 0x00A873], + [0x00A878, 0x00A8CD], + [0x00A8D0, 0x00A8F7], + [0x00A8FD, 0x00A92D], + [0x00A930, 0x00A95E], + [0x00A960, 0x00A9C0], + [0x00A9CE, 0x00A9DD], + [0x00A9E0, 0x00AA5B], + [0x00AA60, 0x00AADD], + [0x00AAE0, 0x00AAEF], + [0x00AAF2, 0x00ABEA], + [0x00ABEC, 0x00DBFF], + [0x00E000, 0x00FE0F], + [0x00FE17, 0x00FE18], + [0x00FE1A, 0x00FE2F], + [0x00FE31, 0x00FE44], + [0x00FE47, 0x00FE48], + [0x00FE4D, 0x00FE4F], + [0x00FE58, 0x00FE5E], + [0x00FE62, 0x00FE67], + [0x00FE6C, 0x00FF00], + [0x00FF08, 0x00FF09], + [0x00FF10, 0x00FF19], + [0x00FF1C, 0x00FF1E], + [0x00FF21, 0x00FF3B], + [0x00FF3D, 0x00FF60], + [0x00FF62, 0x00FF63], + [0x00FF66, 0x0100FF], + [0x010103, 0x01039E], + [0x0103A0, 0x0103CF], + [0x0103D1, 0x01056E], + [0x010570, 0x010856], + [0x010858, 0x01091E], + [0x010920, 0x01093E], + [0x010940, 0x010A4F], + [0x010A59, 0x010A7E], + [0x010A80, 0x010AEF], + [0x010AF7, 0x010B38], + [0x010B40, 0x010B98], + [0x010B9D, 0x010F54], + [0x010F5A, 0x010F85], + [0x010F8A, 0x011046], + [0x01104E, 0x0110BA], + [0x0110C2, 0x01113F], + [0x011144, 0x011173], + [0x011176, 0x0111C4], + [0x0111C9, 0x0111CC], + [0x0111CE, 0x0111DA], + [0x0111E0, 0x011237], + [0x01123E, 0x0112A8], + [0x0112AA, 0x01144A], + [0x011450, 0x011459], + [0x01145E, 0x0114C5], + [0x0114C7, 0x0115C0], + [0x0115D8, 0x011640], + [0x011644, 0x01165F], + [0x01166D, 0x0116B8], + [0x0116BA, 0x01173B], + [0x01173F, 0x01183A], + [0x01183C, 0x011943], + [0x011947, 0x0119E1], + [0x0119E3, 0x011A3E], + [0x011A47, 0x011A99], + [0x011AA3, 0x011AFF], + [0x011B0A, 0x011C40], + [0x011C46, 0x011C6F], + [0x011C72, 0x011EF6], + [0x011EF9, 0x011F42], + [0x011F50, 0x011FFE], + [0x012000, 0x01246F], + [0x012475, 0x012FF0], + [0x012FF3, 0x016A6D], + [0x016A70, 0x016AF4], + [0x016AF6, 0x016B36], + [0x016B3C, 0x016B43], + [0x016B45, 0x016E96], + [0x016E9B, 0x016FE1], + [0x016FE3, 0x01BC9E], + [0x01BCA0, 0x01DA86], + [0x01DA8C, 0x01E95D], + [0x01E960, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Other_Punctuation}+$/u, + nonMatchSymbols, + "\\P{General_Category=Other_Punctuation}" +); +testPropertyEscapes( + /^\P{General_Category=Po}+$/u, + nonMatchSymbols, + "\\P{General_Category=Po}" +); +testPropertyEscapes( + /^\P{gc=Other_Punctuation}+$/u, + nonMatchSymbols, + "\\P{gc=Other_Punctuation}" +); +testPropertyEscapes( + /^\P{gc=Po}+$/u, + nonMatchSymbols, + "\\P{gc=Po}" +); +testPropertyEscapes( + /^\P{Other_Punctuation}+$/u, + nonMatchSymbols, + "\\P{Other_Punctuation}" +); +testPropertyEscapes( + /^\P{Po}+$/u, + nonMatchSymbols, + "\\P{Po}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js new file mode 100644 index 0000000000..a6b9bf15a2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Other_Symbol.js @@ -0,0 +1,461 @@ +// Copyright 2022 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 for `General_Category=Other_Symbol` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000A6, + 0x0000A9, + 0x0000AE, + 0x0000B0, + 0x000482, + 0x0006DE, + 0x0006E9, + 0x0007F6, + 0x0009FA, + 0x000B70, + 0x000BFA, + 0x000C7F, + 0x000D4F, + 0x000D79, + 0x000F13, + 0x000F34, + 0x000F36, + 0x000F38, + 0x00166D, + 0x001940, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x00212E, + 0x00214A, + 0x00214F, + 0x0021D3, + 0x003004, + 0x003020, + 0x003250, + 0x00A839, + 0x00FDCF, + 0x00FFE4, + 0x00FFE8, + 0x0101A0, + 0x010AC8, + 0x01173F, + 0x016B45, + 0x01BC9C, + 0x01D245, + 0x01E14F, + 0x01ECAC, + 0x01ED2E, + 0x01F7F0 + ], + ranges: [ + [0x00058D, 0x00058E], + [0x00060E, 0x00060F], + [0x0006FD, 0x0006FE], + [0x000BF3, 0x000BF8], + [0x000F01, 0x000F03], + [0x000F15, 0x000F17], + [0x000F1A, 0x000F1F], + [0x000FBE, 0x000FC5], + [0x000FC7, 0x000FCC], + [0x000FCE, 0x000FCF], + [0x000FD5, 0x000FD8], + [0x00109E, 0x00109F], + [0x001390, 0x001399], + [0x0019DE, 0x0019FF], + [0x001B61, 0x001B6A], + [0x001B74, 0x001B7C], + [0x002100, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002117], + [0x00211E, 0x002123], + [0x00213A, 0x00213B], + [0x00214C, 0x00214D], + [0x00218A, 0x00218B], + [0x002195, 0x002199], + [0x00219C, 0x00219F], + [0x0021A1, 0x0021A2], + [0x0021A4, 0x0021A5], + [0x0021A7, 0x0021AD], + [0x0021AF, 0x0021CD], + [0x0021D0, 0x0021D1], + [0x0021D5, 0x0021F3], + [0x002300, 0x002307], + [0x00230C, 0x00231F], + [0x002322, 0x002328], + [0x00232B, 0x00237B], + [0x00237D, 0x00239A], + [0x0023B4, 0x0023DB], + [0x0023E2, 0x002426], + [0x002440, 0x00244A], + [0x00249C, 0x0024E9], + [0x002500, 0x0025B6], + [0x0025B8, 0x0025C0], + [0x0025C2, 0x0025F7], + [0x002600, 0x00266E], + [0x002670, 0x002767], + [0x002794, 0x0027BF], + [0x002800, 0x0028FF], + [0x002B00, 0x002B2F], + [0x002B45, 0x002B46], + [0x002B4D, 0x002B73], + [0x002B76, 0x002B95], + [0x002B97, 0x002BFF], + [0x002CE5, 0x002CEA], + [0x002E50, 0x002E51], + [0x002E80, 0x002E99], + [0x002E9B, 0x002EF3], + [0x002F00, 0x002FD5], + [0x002FF0, 0x002FFB], + [0x003012, 0x003013], + [0x003036, 0x003037], + [0x00303E, 0x00303F], + [0x003190, 0x003191], + [0x003196, 0x00319F], + [0x0031C0, 0x0031E3], + [0x003200, 0x00321E], + [0x00322A, 0x003247], + [0x003260, 0x00327F], + [0x00328A, 0x0032B0], + [0x0032C0, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A490, 0x00A4C6], + [0x00A828, 0x00A82B], + [0x00A836, 0x00A837], + [0x00AA77, 0x00AA79], + [0x00FD40, 0x00FD4F], + [0x00FDFD, 0x00FDFF], + [0x00FFED, 0x00FFEE], + [0x00FFFC, 0x00FFFD], + [0x010137, 0x01013F], + [0x010179, 0x010189], + [0x01018C, 0x01018E], + [0x010190, 0x01019C], + [0x0101D0, 0x0101FC], + [0x010877, 0x010878], + [0x011FD5, 0x011FDC], + [0x011FE1, 0x011FF1], + [0x016B3C, 0x016B3F], + [0x01CF50, 0x01CFC3], + [0x01D000, 0x01D0F5], + [0x01D100, 0x01D126], + [0x01D129, 0x01D164], + [0x01D16A, 0x01D16C], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D1EA], + [0x01D200, 0x01D241], + [0x01D300, 0x01D356], + [0x01D800, 0x01D9FF], + [0x01DA37, 0x01DA3A], + [0x01DA6D, 0x01DA74], + [0x01DA76, 0x01DA83], + [0x01DA85, 0x01DA86], + [0x01F000, 0x01F02B], + [0x01F030, 0x01F093], + [0x01F0A0, 0x01F0AE], + [0x01F0B1, 0x01F0BF], + [0x01F0C1, 0x01F0CF], + [0x01F0D1, 0x01F0F5], + [0x01F10D, 0x01F1AD], + [0x01F1E6, 0x01F202], + [0x01F210, 0x01F23B], + [0x01F240, 0x01F248], + [0x01F250, 0x01F251], + [0x01F260, 0x01F265], + [0x01F300, 0x01F3FA], + [0x01F400, 0x01F6D7], + [0x01F6DC, 0x01F6EC], + [0x01F6F0, 0x01F6FC], + [0x01F700, 0x01F776], + [0x01F77B, 0x01F7D9], + [0x01F7E0, 0x01F7EB], + [0x01F800, 0x01F80B], + [0x01F810, 0x01F847], + [0x01F850, 0x01F859], + [0x01F860, 0x01F887], + [0x01F890, 0x01F8AD], + [0x01F8B0, 0x01F8B1], + [0x01F900, 0x01FA53], + [0x01FA60, 0x01FA6D], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8], + [0x01FB00, 0x01FB92], + [0x01FB94, 0x01FBCA] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Other_Symbol}+$/u, + matchSymbols, + "\\p{General_Category=Other_Symbol}" +); +testPropertyEscapes( + /^\p{General_Category=So}+$/u, + matchSymbols, + "\\p{General_Category=So}" +); +testPropertyEscapes( + /^\p{gc=Other_Symbol}+$/u, + matchSymbols, + "\\p{gc=Other_Symbol}" +); +testPropertyEscapes( + /^\p{gc=So}+$/u, + matchSymbols, + "\\p{gc=So}" +); +testPropertyEscapes( + /^\p{Other_Symbol}+$/u, + matchSymbols, + "\\p{Other_Symbol}" +); +testPropertyEscapes( + /^\p{So}+$/u, + matchSymbols, + "\\p{So}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000AF, + 0x000BF9, + 0x000F14, + 0x000F35, + 0x000F37, + 0x000FC6, + 0x000FCD, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x00214B, + 0x00214E, + 0x0021A0, + 0x0021A3, + 0x0021A6, + 0x0021AE, + 0x0021D2, + 0x0021D4, + 0x00237C, + 0x0025B7, + 0x0025C1, + 0x00266F, + 0x002B96, + 0x002E9A, + 0x00A838, + 0x01018F, + 0x01DA75, + 0x01DA84, + 0x01F0C0, + 0x01F0D0, + 0x01FABE, + 0x01FB93 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0000A5], + [0x0000A7, 0x0000A8], + [0x0000AA, 0x0000AD], + [0x0000B1, 0x000481], + [0x000483, 0x00058C], + [0x00058F, 0x00060D], + [0x000610, 0x0006DD], + [0x0006DF, 0x0006E8], + [0x0006EA, 0x0006FC], + [0x0006FF, 0x0007F5], + [0x0007F7, 0x0009F9], + [0x0009FB, 0x000B6F], + [0x000B71, 0x000BF2], + [0x000BFB, 0x000C7E], + [0x000C80, 0x000D4E], + [0x000D50, 0x000D78], + [0x000D7A, 0x000F00], + [0x000F04, 0x000F12], + [0x000F18, 0x000F19], + [0x000F20, 0x000F33], + [0x000F39, 0x000FBD], + [0x000FD0, 0x000FD4], + [0x000FD9, 0x00109D], + [0x0010A0, 0x00138F], + [0x00139A, 0x00166C], + [0x00166E, 0x00193F], + [0x001941, 0x0019DD], + [0x001A00, 0x001B60], + [0x001B6B, 0x001B73], + [0x001B7D, 0x0020FF], + [0x00210A, 0x002113], + [0x002118, 0x00211D], + [0x00212A, 0x00212D], + [0x00212F, 0x002139], + [0x00213C, 0x002149], + [0x002150, 0x002189], + [0x00218C, 0x002194], + [0x00219A, 0x00219B], + [0x0021CE, 0x0021CF], + [0x0021F4, 0x0022FF], + [0x002308, 0x00230B], + [0x002320, 0x002321], + [0x002329, 0x00232A], + [0x00239B, 0x0023B3], + [0x0023DC, 0x0023E1], + [0x002427, 0x00243F], + [0x00244B, 0x00249B], + [0x0024EA, 0x0024FF], + [0x0025F8, 0x0025FF], + [0x002768, 0x002793], + [0x0027C0, 0x0027FF], + [0x002900, 0x002AFF], + [0x002B30, 0x002B44], + [0x002B47, 0x002B4C], + [0x002B74, 0x002B75], + [0x002C00, 0x002CE4], + [0x002CEB, 0x002E4F], + [0x002E52, 0x002E7F], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x002FEF], + [0x002FFC, 0x003003], + [0x003005, 0x003011], + [0x003014, 0x00301F], + [0x003021, 0x003035], + [0x003038, 0x00303D], + [0x003040, 0x00318F], + [0x003192, 0x003195], + [0x0031A0, 0x0031BF], + [0x0031E4, 0x0031FF], + [0x00321F, 0x003229], + [0x003248, 0x00324F], + [0x003251, 0x00325F], + [0x003280, 0x003289], + [0x0032B1, 0x0032BF], + [0x003400, 0x004DBF], + [0x004E00, 0x00A48F], + [0x00A4C7, 0x00A827], + [0x00A82C, 0x00A835], + [0x00A83A, 0x00AA76], + [0x00AA7A, 0x00DBFF], + [0x00E000, 0x00FD3F], + [0x00FD50, 0x00FDCE], + [0x00FDD0, 0x00FDFC], + [0x00FE00, 0x00FFE3], + [0x00FFE5, 0x00FFE7], + [0x00FFE9, 0x00FFEC], + [0x00FFEF, 0x00FFFB], + [0x00FFFE, 0x010136], + [0x010140, 0x010178], + [0x01018A, 0x01018B], + [0x01019D, 0x01019F], + [0x0101A1, 0x0101CF], + [0x0101FD, 0x010876], + [0x010879, 0x010AC7], + [0x010AC9, 0x01173E], + [0x011740, 0x011FD4], + [0x011FDD, 0x011FE0], + [0x011FF2, 0x016B3B], + [0x016B40, 0x016B44], + [0x016B46, 0x01BC9B], + [0x01BC9D, 0x01CF4F], + [0x01CFC4, 0x01CFFF], + [0x01D0F6, 0x01D0FF], + [0x01D127, 0x01D128], + [0x01D165, 0x01D169], + [0x01D16D, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D1EB, 0x01D1FF], + [0x01D242, 0x01D244], + [0x01D246, 0x01D2FF], + [0x01D357, 0x01D7FF], + [0x01DA00, 0x01DA36], + [0x01DA3B, 0x01DA6C], + [0x01DA87, 0x01E14E], + [0x01E150, 0x01ECAB], + [0x01ECAD, 0x01ED2D], + [0x01ED2F, 0x01EFFF], + [0x01F02C, 0x01F02F], + [0x01F094, 0x01F09F], + [0x01F0AF, 0x01F0B0], + [0x01F0F6, 0x01F10C], + [0x01F1AE, 0x01F1E5], + [0x01F203, 0x01F20F], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F24F], + [0x01F252, 0x01F25F], + [0x01F266, 0x01F2FF], + [0x01F3FB, 0x01F3FF], + [0x01F6D8, 0x01F6DB], + [0x01F6ED, 0x01F6EF], + [0x01F6FD, 0x01F6FF], + [0x01F777, 0x01F77A], + [0x01F7DA, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F7FF], + [0x01F80C, 0x01F80F], + [0x01F848, 0x01F84F], + [0x01F85A, 0x01F85F], + [0x01F888, 0x01F88F], + [0x01F8AE, 0x01F8AF], + [0x01F8B2, 0x01F8FF], + [0x01FA54, 0x01FA5F], + [0x01FA6E, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x01FAFF], + [0x01FBCB, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Other_Symbol}+$/u, + nonMatchSymbols, + "\\P{General_Category=Other_Symbol}" +); +testPropertyEscapes( + /^\P{General_Category=So}+$/u, + nonMatchSymbols, + "\\P{General_Category=So}" +); +testPropertyEscapes( + /^\P{gc=Other_Symbol}+$/u, + nonMatchSymbols, + "\\P{gc=Other_Symbol}" +); +testPropertyEscapes( + /^\P{gc=So}+$/u, + nonMatchSymbols, + "\\P{gc=So}" +); +testPropertyEscapes( + /^\P{Other_Symbol}+$/u, + nonMatchSymbols, + "\\P{Other_Symbol}" +); +testPropertyEscapes( + /^\P{So}+$/u, + nonMatchSymbols, + "\\P{So}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js new file mode 100644 index 0000000000..0972be7d5e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Paragraph_Separator.js @@ -0,0 +1,93 @@ +// Copyright 2022 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 for `General_Category=Paragraph_Separator` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x002029 + ], + ranges: [] +}); +testPropertyEscapes( + /^\p{General_Category=Paragraph_Separator}+$/u, + matchSymbols, + "\\p{General_Category=Paragraph_Separator}" +); +testPropertyEscapes( + /^\p{General_Category=Zp}+$/u, + matchSymbols, + "\\p{General_Category=Zp}" +); +testPropertyEscapes( + /^\p{gc=Paragraph_Separator}+$/u, + matchSymbols, + "\\p{gc=Paragraph_Separator}" +); +testPropertyEscapes( + /^\p{gc=Zp}+$/u, + matchSymbols, + "\\p{gc=Zp}" +); +testPropertyEscapes( + /^\p{Paragraph_Separator}+$/u, + matchSymbols, + "\\p{Paragraph_Separator}" +); +testPropertyEscapes( + /^\p{Zp}+$/u, + matchSymbols, + "\\p{Zp}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002028], + [0x00202A, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Paragraph_Separator}+$/u, + nonMatchSymbols, + "\\P{General_Category=Paragraph_Separator}" +); +testPropertyEscapes( + /^\P{General_Category=Zp}+$/u, + nonMatchSymbols, + "\\P{General_Category=Zp}" +); +testPropertyEscapes( + /^\P{gc=Paragraph_Separator}+$/u, + nonMatchSymbols, + "\\P{gc=Paragraph_Separator}" +); +testPropertyEscapes( + /^\P{gc=Zp}+$/u, + nonMatchSymbols, + "\\P{gc=Zp}" +); +testPropertyEscapes( + /^\P{Paragraph_Separator}+$/u, + nonMatchSymbols, + "\\P{Paragraph_Separator}" +); +testPropertyEscapes( + /^\P{Zp}+$/u, + nonMatchSymbols, + "\\P{Zp}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js new file mode 100644 index 0000000000..4f798e94fe --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Private_Use.js @@ -0,0 +1,96 @@ +// Copyright 2022 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 for `General_Category=Private_Use` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00E000, 0x00F8FF], + [0x0F0000, 0x0FFFFD], + [0x100000, 0x10FFFD] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Private_Use}+$/u, + matchSymbols, + "\\p{General_Category=Private_Use}" +); +testPropertyEscapes( + /^\p{General_Category=Co}+$/u, + matchSymbols, + "\\p{General_Category=Co}" +); +testPropertyEscapes( + /^\p{gc=Private_Use}+$/u, + matchSymbols, + "\\p{gc=Private_Use}" +); +testPropertyEscapes( + /^\p{gc=Co}+$/u, + matchSymbols, + "\\p{gc=Co}" +); +testPropertyEscapes( + /^\p{Private_Use}+$/u, + matchSymbols, + "\\p{Private_Use}" +); +testPropertyEscapes( + /^\p{Co}+$/u, + matchSymbols, + "\\p{Co}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00F900, 0x0EFFFF], + [0x0FFFFE, 0x0FFFFF], + [0x10FFFE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Private_Use}+$/u, + nonMatchSymbols, + "\\P{General_Category=Private_Use}" +); +testPropertyEscapes( + /^\P{General_Category=Co}+$/u, + nonMatchSymbols, + "\\P{General_Category=Co}" +); +testPropertyEscapes( + /^\P{gc=Private_Use}+$/u, + nonMatchSymbols, + "\\P{gc=Private_Use}" +); +testPropertyEscapes( + /^\P{gc=Co}+$/u, + nonMatchSymbols, + "\\P{gc=Co}" +); +testPropertyEscapes( + /^\P{Private_Use}+$/u, + nonMatchSymbols, + "\\P{Private_Use}" +); +testPropertyEscapes( + /^\P{Co}+$/u, + nonMatchSymbols, + "\\P{Co}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js new file mode 100644 index 0000000000..96aee950d1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Punctuation.js @@ -0,0 +1,505 @@ +// Copyright 2022 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 for `General_Category=Punctuation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00005F, + 0x00007B, + 0x00007D, + 0x0000A1, + 0x0000A7, + 0x0000AB, + 0x0000BB, + 0x0000BF, + 0x00037E, + 0x000387, + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x00061B, + 0x0006D4, + 0x00085E, + 0x000970, + 0x0009FD, + 0x000A76, + 0x000AF0, + 0x000C77, + 0x000C84, + 0x000DF4, + 0x000E4F, + 0x000F14, + 0x000F85, + 0x0010FB, + 0x001400, + 0x00166E, + 0x001CD3, + 0x002D70, + 0x003030, + 0x00303D, + 0x0030A0, + 0x0030FB, + 0x00A673, + 0x00A67E, + 0x00A8FC, + 0x00A95F, + 0x00ABEB, + 0x00FE63, + 0x00FE68, + 0x00FF3F, + 0x00FF5B, + 0x00FF5D, + 0x01039F, + 0x0103D0, + 0x01056F, + 0x010857, + 0x01091F, + 0x01093F, + 0x010A7F, + 0x010EAD, + 0x0111CD, + 0x0111DB, + 0x0112A9, + 0x01145D, + 0x0114C6, + 0x0116B9, + 0x01183B, + 0x0119E2, + 0x011FFF, + 0x016AF5, + 0x016B44, + 0x016FE2, + 0x01BC9F + ], + ranges: [ + [0x000021, 0x000023], + [0x000025, 0x00002A], + [0x00002C, 0x00002F], + [0x00003A, 0x00003B], + [0x00003F, 0x000040], + [0x00005B, 0x00005D], + [0x0000B6, 0x0000B7], + [0x00055A, 0x00055F], + [0x000589, 0x00058A], + [0x0005F3, 0x0005F4], + [0x000609, 0x00060A], + [0x00060C, 0x00060D], + [0x00061D, 0x00061F], + [0x00066A, 0x00066D], + [0x000700, 0x00070D], + [0x0007F7, 0x0007F9], + [0x000830, 0x00083E], + [0x000964, 0x000965], + [0x000E5A, 0x000E5B], + [0x000F04, 0x000F12], + [0x000F3A, 0x000F3D], + [0x000FD0, 0x000FD4], + [0x000FD9, 0x000FDA], + [0x00104A, 0x00104F], + [0x001360, 0x001368], + [0x00169B, 0x00169C], + [0x0016EB, 0x0016ED], + [0x001735, 0x001736], + [0x0017D4, 0x0017D6], + [0x0017D8, 0x0017DA], + [0x001800, 0x00180A], + [0x001944, 0x001945], + [0x001A1E, 0x001A1F], + [0x001AA0, 0x001AA6], + [0x001AA8, 0x001AAD], + [0x001B5A, 0x001B60], + [0x001B7D, 0x001B7E], + [0x001BFC, 0x001BFF], + [0x001C3B, 0x001C3F], + [0x001C7E, 0x001C7F], + [0x001CC0, 0x001CC7], + [0x002010, 0x002027], + [0x002030, 0x002043], + [0x002045, 0x002051], + [0x002053, 0x00205E], + [0x00207D, 0x00207E], + [0x00208D, 0x00208E], + [0x002308, 0x00230B], + [0x002329, 0x00232A], + [0x002768, 0x002775], + [0x0027C5, 0x0027C6], + [0x0027E6, 0x0027EF], + [0x002983, 0x002998], + [0x0029D8, 0x0029DB], + [0x0029FC, 0x0029FD], + [0x002CF9, 0x002CFC], + [0x002CFE, 0x002CFF], + [0x002E00, 0x002E2E], + [0x002E30, 0x002E4F], + [0x002E52, 0x002E5D], + [0x003001, 0x003003], + [0x003008, 0x003011], + [0x003014, 0x00301F], + [0x00A4FE, 0x00A4FF], + [0x00A60D, 0x00A60F], + [0x00A6F2, 0x00A6F7], + [0x00A874, 0x00A877], + [0x00A8CE, 0x00A8CF], + [0x00A8F8, 0x00A8FA], + [0x00A92E, 0x00A92F], + [0x00A9C1, 0x00A9CD], + [0x00A9DE, 0x00A9DF], + [0x00AA5C, 0x00AA5F], + [0x00AADE, 0x00AADF], + [0x00AAF0, 0x00AAF1], + [0x00FD3E, 0x00FD3F], + [0x00FE10, 0x00FE19], + [0x00FE30, 0x00FE52], + [0x00FE54, 0x00FE61], + [0x00FE6A, 0x00FE6B], + [0x00FF01, 0x00FF03], + [0x00FF05, 0x00FF0A], + [0x00FF0C, 0x00FF0F], + [0x00FF1A, 0x00FF1B], + [0x00FF1F, 0x00FF20], + [0x00FF3B, 0x00FF3D], + [0x00FF5F, 0x00FF65], + [0x010100, 0x010102], + [0x010A50, 0x010A58], + [0x010AF0, 0x010AF6], + [0x010B39, 0x010B3F], + [0x010B99, 0x010B9C], + [0x010F55, 0x010F59], + [0x010F86, 0x010F89], + [0x011047, 0x01104D], + [0x0110BB, 0x0110BC], + [0x0110BE, 0x0110C1], + [0x011140, 0x011143], + [0x011174, 0x011175], + [0x0111C5, 0x0111C8], + [0x0111DD, 0x0111DF], + [0x011238, 0x01123D], + [0x01144B, 0x01144F], + [0x01145A, 0x01145B], + [0x0115C1, 0x0115D7], + [0x011641, 0x011643], + [0x011660, 0x01166C], + [0x01173C, 0x01173E], + [0x011944, 0x011946], + [0x011A3F, 0x011A46], + [0x011A9A, 0x011A9C], + [0x011A9E, 0x011AA2], + [0x011B00, 0x011B09], + [0x011C41, 0x011C45], + [0x011C70, 0x011C71], + [0x011EF7, 0x011EF8], + [0x011F43, 0x011F4F], + [0x012470, 0x012474], + [0x012FF1, 0x012FF2], + [0x016A6E, 0x016A6F], + [0x016B37, 0x016B3B], + [0x016E97, 0x016E9A], + [0x01DA87, 0x01DA8B], + [0x01E95E, 0x01E95F] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Punctuation}+$/u, + matchSymbols, + "\\p{General_Category=Punctuation}" +); +testPropertyEscapes( + /^\p{General_Category=P}+$/u, + matchSymbols, + "\\p{General_Category=P}" +); +testPropertyEscapes( + /^\p{General_Category=punct}+$/u, + matchSymbols, + "\\p{General_Category=punct}" +); +testPropertyEscapes( + /^\p{gc=Punctuation}+$/u, + matchSymbols, + "\\p{gc=Punctuation}" +); +testPropertyEscapes( + /^\p{gc=P}+$/u, + matchSymbols, + "\\p{gc=P}" +); +testPropertyEscapes( + /^\p{gc=punct}+$/u, + matchSymbols, + "\\p{gc=punct}" +); +testPropertyEscapes( + /^\p{Punctuation}+$/u, + matchSymbols, + "\\p{Punctuation}" +); +testPropertyEscapes( + /^\p{P}+$/u, + matchSymbols, + "\\p{P}" +); +testPropertyEscapes( + /^\p{punct}+$/u, + matchSymbols, + "\\p{punct}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000024, + 0x00002B, + 0x00005E, + 0x00007C, + 0x0005BF, + 0x00060B, + 0x00061C, + 0x000F13, + 0x0017D7, + 0x001AA7, + 0x002044, + 0x002052, + 0x002CFD, + 0x002E2F, + 0x00A8FB, + 0x00FE53, + 0x00FE62, + 0x00FE69, + 0x00FF04, + 0x00FF0B, + 0x00FF3E, + 0x00FF5C, + 0x00FF5E, + 0x0110BD, + 0x0111DC, + 0x01145C, + 0x011A9D + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000020], + [0x000030, 0x000039], + [0x00003C, 0x00003E], + [0x000041, 0x00005A], + [0x000060, 0x00007A], + [0x00007E, 0x0000A0], + [0x0000A2, 0x0000A6], + [0x0000A8, 0x0000AA], + [0x0000AC, 0x0000B5], + [0x0000B8, 0x0000BA], + [0x0000BC, 0x0000BE], + [0x0000C0, 0x00037D], + [0x00037F, 0x000386], + [0x000388, 0x000559], + [0x000560, 0x000588], + [0x00058B, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x0005C7, 0x0005F2], + [0x0005F5, 0x000608], + [0x00060E, 0x00061A], + [0x000620, 0x000669], + [0x00066E, 0x0006D3], + [0x0006D5, 0x0006FF], + [0x00070E, 0x0007F6], + [0x0007FA, 0x00082F], + [0x00083F, 0x00085D], + [0x00085F, 0x000963], + [0x000966, 0x00096F], + [0x000971, 0x0009FC], + [0x0009FE, 0x000A75], + [0x000A77, 0x000AEF], + [0x000AF1, 0x000C76], + [0x000C78, 0x000C83], + [0x000C85, 0x000DF3], + [0x000DF5, 0x000E4E], + [0x000E50, 0x000E59], + [0x000E5C, 0x000F03], + [0x000F15, 0x000F39], + [0x000F3E, 0x000F84], + [0x000F86, 0x000FCF], + [0x000FD5, 0x000FD8], + [0x000FDB, 0x001049], + [0x001050, 0x0010FA], + [0x0010FC, 0x00135F], + [0x001369, 0x0013FF], + [0x001401, 0x00166D], + [0x00166F, 0x00169A], + [0x00169D, 0x0016EA], + [0x0016EE, 0x001734], + [0x001737, 0x0017D3], + [0x0017DB, 0x0017FF], + [0x00180B, 0x001943], + [0x001946, 0x001A1D], + [0x001A20, 0x001A9F], + [0x001AAE, 0x001B59], + [0x001B61, 0x001B7C], + [0x001B7F, 0x001BFB], + [0x001C00, 0x001C3A], + [0x001C40, 0x001C7D], + [0x001C80, 0x001CBF], + [0x001CC8, 0x001CD2], + [0x001CD4, 0x00200F], + [0x002028, 0x00202F], + [0x00205F, 0x00207C], + [0x00207F, 0x00208C], + [0x00208F, 0x002307], + [0x00230C, 0x002328], + [0x00232B, 0x002767], + [0x002776, 0x0027C4], + [0x0027C7, 0x0027E5], + [0x0027F0, 0x002982], + [0x002999, 0x0029D7], + [0x0029DC, 0x0029FB], + [0x0029FE, 0x002CF8], + [0x002D00, 0x002D6F], + [0x002D71, 0x002DFF], + [0x002E50, 0x002E51], + [0x002E5E, 0x003000], + [0x003004, 0x003007], + [0x003012, 0x003013], + [0x003020, 0x00302F], + [0x003031, 0x00303C], + [0x00303E, 0x00309F], + [0x0030A1, 0x0030FA], + [0x0030FC, 0x00A4FD], + [0x00A500, 0x00A60C], + [0x00A610, 0x00A672], + [0x00A674, 0x00A67D], + [0x00A67F, 0x00A6F1], + [0x00A6F8, 0x00A873], + [0x00A878, 0x00A8CD], + [0x00A8D0, 0x00A8F7], + [0x00A8FD, 0x00A92D], + [0x00A930, 0x00A95E], + [0x00A960, 0x00A9C0], + [0x00A9CE, 0x00A9DD], + [0x00A9E0, 0x00AA5B], + [0x00AA60, 0x00AADD], + [0x00AAE0, 0x00AAEF], + [0x00AAF2, 0x00ABEA], + [0x00ABEC, 0x00DBFF], + [0x00E000, 0x00FD3D], + [0x00FD40, 0x00FE0F], + [0x00FE1A, 0x00FE2F], + [0x00FE64, 0x00FE67], + [0x00FE6C, 0x00FF00], + [0x00FF10, 0x00FF19], + [0x00FF1C, 0x00FF1E], + [0x00FF21, 0x00FF3A], + [0x00FF40, 0x00FF5A], + [0x00FF66, 0x0100FF], + [0x010103, 0x01039E], + [0x0103A0, 0x0103CF], + [0x0103D1, 0x01056E], + [0x010570, 0x010856], + [0x010858, 0x01091E], + [0x010920, 0x01093E], + [0x010940, 0x010A4F], + [0x010A59, 0x010A7E], + [0x010A80, 0x010AEF], + [0x010AF7, 0x010B38], + [0x010B40, 0x010B98], + [0x010B9D, 0x010EAC], + [0x010EAE, 0x010F54], + [0x010F5A, 0x010F85], + [0x010F8A, 0x011046], + [0x01104E, 0x0110BA], + [0x0110C2, 0x01113F], + [0x011144, 0x011173], + [0x011176, 0x0111C4], + [0x0111C9, 0x0111CC], + [0x0111CE, 0x0111DA], + [0x0111E0, 0x011237], + [0x01123E, 0x0112A8], + [0x0112AA, 0x01144A], + [0x011450, 0x011459], + [0x01145E, 0x0114C5], + [0x0114C7, 0x0115C0], + [0x0115D8, 0x011640], + [0x011644, 0x01165F], + [0x01166D, 0x0116B8], + [0x0116BA, 0x01173B], + [0x01173F, 0x01183A], + [0x01183C, 0x011943], + [0x011947, 0x0119E1], + [0x0119E3, 0x011A3E], + [0x011A47, 0x011A99], + [0x011AA3, 0x011AFF], + [0x011B0A, 0x011C40], + [0x011C46, 0x011C6F], + [0x011C72, 0x011EF6], + [0x011EF9, 0x011F42], + [0x011F50, 0x011FFE], + [0x012000, 0x01246F], + [0x012475, 0x012FF0], + [0x012FF3, 0x016A6D], + [0x016A70, 0x016AF4], + [0x016AF6, 0x016B36], + [0x016B3C, 0x016B43], + [0x016B45, 0x016E96], + [0x016E9B, 0x016FE1], + [0x016FE3, 0x01BC9E], + [0x01BCA0, 0x01DA86], + [0x01DA8C, 0x01E95D], + [0x01E960, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Punctuation}+$/u, + nonMatchSymbols, + "\\P{General_Category=Punctuation}" +); +testPropertyEscapes( + /^\P{General_Category=P}+$/u, + nonMatchSymbols, + "\\P{General_Category=P}" +); +testPropertyEscapes( + /^\P{General_Category=punct}+$/u, + nonMatchSymbols, + "\\P{General_Category=punct}" +); +testPropertyEscapes( + /^\P{gc=Punctuation}+$/u, + nonMatchSymbols, + "\\P{gc=Punctuation}" +); +testPropertyEscapes( + /^\P{gc=P}+$/u, + nonMatchSymbols, + "\\P{gc=P}" +); +testPropertyEscapes( + /^\P{gc=punct}+$/u, + nonMatchSymbols, + "\\P{gc=punct}" +); +testPropertyEscapes( + /^\P{Punctuation}+$/u, + nonMatchSymbols, + "\\P{Punctuation}" +); +testPropertyEscapes( + /^\P{P}+$/u, + nonMatchSymbols, + "\\P{P}" +); +testPropertyEscapes( + /^\P{punct}+$/u, + nonMatchSymbols, + "\\P{punct}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js new file mode 100644 index 0000000000..757520dba4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Separator.js @@ -0,0 +1,108 @@ +// Copyright 2022 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 for `General_Category=Separator` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000020, + 0x0000A0, + 0x001680, + 0x00202F, + 0x00205F, + 0x003000 + ], + ranges: [ + [0x002000, 0x00200A], + [0x002028, 0x002029] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Separator}+$/u, + matchSymbols, + "\\p{General_Category=Separator}" +); +testPropertyEscapes( + /^\p{General_Category=Z}+$/u, + matchSymbols, + "\\p{General_Category=Z}" +); +testPropertyEscapes( + /^\p{gc=Separator}+$/u, + matchSymbols, + "\\p{gc=Separator}" +); +testPropertyEscapes( + /^\p{gc=Z}+$/u, + matchSymbols, + "\\p{gc=Z}" +); +testPropertyEscapes( + /^\p{Separator}+$/u, + matchSymbols, + "\\p{Separator}" +); +testPropertyEscapes( + /^\p{Z}+$/u, + matchSymbols, + "\\p{Z}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00001F], + [0x000021, 0x00009F], + [0x0000A1, 0x00167F], + [0x001681, 0x001FFF], + [0x00200B, 0x002027], + [0x00202A, 0x00202E], + [0x002030, 0x00205E], + [0x002060, 0x002FFF], + [0x003001, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Separator}+$/u, + nonMatchSymbols, + "\\P{General_Category=Separator}" +); +testPropertyEscapes( + /^\P{General_Category=Z}+$/u, + nonMatchSymbols, + "\\P{General_Category=Z}" +); +testPropertyEscapes( + /^\P{gc=Separator}+$/u, + nonMatchSymbols, + "\\P{gc=Separator}" +); +testPropertyEscapes( + /^\P{gc=Z}+$/u, + nonMatchSymbols, + "\\P{gc=Z}" +); +testPropertyEscapes( + /^\P{Separator}+$/u, + nonMatchSymbols, + "\\P{Separator}" +); +testPropertyEscapes( + /^\P{Z}+$/u, + nonMatchSymbols, + "\\P{Z}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js new file mode 100644 index 0000000000..a9b15a6ced --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Space_Separator.js @@ -0,0 +1,106 @@ +// Copyright 2022 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 for `General_Category=Space_Separator` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000020, + 0x0000A0, + 0x001680, + 0x00202F, + 0x00205F, + 0x003000 + ], + ranges: [ + [0x002000, 0x00200A] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Space_Separator}+$/u, + matchSymbols, + "\\p{General_Category=Space_Separator}" +); +testPropertyEscapes( + /^\p{General_Category=Zs}+$/u, + matchSymbols, + "\\p{General_Category=Zs}" +); +testPropertyEscapes( + /^\p{gc=Space_Separator}+$/u, + matchSymbols, + "\\p{gc=Space_Separator}" +); +testPropertyEscapes( + /^\p{gc=Zs}+$/u, + matchSymbols, + "\\p{gc=Zs}" +); +testPropertyEscapes( + /^\p{Space_Separator}+$/u, + matchSymbols, + "\\p{Space_Separator}" +); +testPropertyEscapes( + /^\p{Zs}+$/u, + matchSymbols, + "\\p{Zs}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00001F], + [0x000021, 0x00009F], + [0x0000A1, 0x00167F], + [0x001681, 0x001FFF], + [0x00200B, 0x00202E], + [0x002030, 0x00205E], + [0x002060, 0x002FFF], + [0x003001, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Space_Separator}+$/u, + nonMatchSymbols, + "\\P{General_Category=Space_Separator}" +); +testPropertyEscapes( + /^\P{General_Category=Zs}+$/u, + nonMatchSymbols, + "\\P{General_Category=Zs}" +); +testPropertyEscapes( + /^\P{gc=Space_Separator}+$/u, + nonMatchSymbols, + "\\P{gc=Space_Separator}" +); +testPropertyEscapes( + /^\P{gc=Zs}+$/u, + nonMatchSymbols, + "\\P{gc=Zs}" +); +testPropertyEscapes( + /^\P{Space_Separator}+$/u, + nonMatchSymbols, + "\\P{Space_Separator}" +); +testPropertyEscapes( + /^\P{Zs}+$/u, + nonMatchSymbols, + "\\P{Zs}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js new file mode 100644 index 0000000000..bd8c74b973 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Spacing_Mark.js @@ -0,0 +1,457 @@ +// Copyright 2022 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 for `General_Category=Spacing_Mark` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000903, + 0x00093B, + 0x0009D7, + 0x000A03, + 0x000A83, + 0x000AC9, + 0x000B3E, + 0x000B40, + 0x000B57, + 0x000BD7, + 0x000CBE, + 0x000CF3, + 0x000D57, + 0x000F7F, + 0x001031, + 0x001038, + 0x00108F, + 0x001715, + 0x001734, + 0x0017B6, + 0x001A55, + 0x001A57, + 0x001A61, + 0x001B04, + 0x001B35, + 0x001B3B, + 0x001B82, + 0x001BA1, + 0x001BAA, + 0x001BE7, + 0x001BEE, + 0x001CE1, + 0x001CF7, + 0x00A827, + 0x00A983, + 0x00AA4D, + 0x00AA7B, + 0x00AA7D, + 0x00AAEB, + 0x00AAF5, + 0x00ABEC, + 0x011000, + 0x011002, + 0x011082, + 0x01112C, + 0x011182, + 0x0111CE, + 0x011235, + 0x011357, + 0x011445, + 0x0114B9, + 0x0114C1, + 0x0115BE, + 0x01163E, + 0x0116AC, + 0x0116B6, + 0x011726, + 0x011838, + 0x01193D, + 0x011940, + 0x011942, + 0x0119E4, + 0x011A39, + 0x011A97, + 0x011C2F, + 0x011C3E, + 0x011CA9, + 0x011CB1, + 0x011CB4, + 0x011D96, + 0x011F03, + 0x011F41 + ], + ranges: [ + [0x00093E, 0x000940], + [0x000949, 0x00094C], + [0x00094E, 0x00094F], + [0x000982, 0x000983], + [0x0009BE, 0x0009C0], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CC], + [0x000A3E, 0x000A40], + [0x000ABE, 0x000AC0], + [0x000ACB, 0x000ACC], + [0x000B02, 0x000B03], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4C], + [0x000BBE, 0x000BBF], + [0x000BC1, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCC], + [0x000C01, 0x000C03], + [0x000C41, 0x000C44], + [0x000C82, 0x000C83], + [0x000CC0, 0x000CC4], + [0x000CC7, 0x000CC8], + [0x000CCA, 0x000CCB], + [0x000CD5, 0x000CD6], + [0x000D02, 0x000D03], + [0x000D3E, 0x000D40], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4C], + [0x000D82, 0x000D83], + [0x000DCF, 0x000DD1], + [0x000DD8, 0x000DDF], + [0x000DF2, 0x000DF3], + [0x000F3E, 0x000F3F], + [0x00102B, 0x00102C], + [0x00103B, 0x00103C], + [0x001056, 0x001057], + [0x001062, 0x001064], + [0x001067, 0x00106D], + [0x001083, 0x001084], + [0x001087, 0x00108C], + [0x00109A, 0x00109C], + [0x0017BE, 0x0017C5], + [0x0017C7, 0x0017C8], + [0x001923, 0x001926], + [0x001929, 0x00192B], + [0x001930, 0x001931], + [0x001933, 0x001938], + [0x001A19, 0x001A1A], + [0x001A63, 0x001A64], + [0x001A6D, 0x001A72], + [0x001B3D, 0x001B41], + [0x001B43, 0x001B44], + [0x001BA6, 0x001BA7], + [0x001BEA, 0x001BEC], + [0x001BF2, 0x001BF3], + [0x001C24, 0x001C2B], + [0x001C34, 0x001C35], + [0x00302E, 0x00302F], + [0x00A823, 0x00A824], + [0x00A880, 0x00A881], + [0x00A8B4, 0x00A8C3], + [0x00A952, 0x00A953], + [0x00A9B4, 0x00A9B5], + [0x00A9BA, 0x00A9BB], + [0x00A9BE, 0x00A9C0], + [0x00AA2F, 0x00AA30], + [0x00AA33, 0x00AA34], + [0x00AAEE, 0x00AAEF], + [0x00ABE3, 0x00ABE4], + [0x00ABE6, 0x00ABE7], + [0x00ABE9, 0x00ABEA], + [0x0110B0, 0x0110B2], + [0x0110B7, 0x0110B8], + [0x011145, 0x011146], + [0x0111B3, 0x0111B5], + [0x0111BF, 0x0111C0], + [0x01122C, 0x01122E], + [0x011232, 0x011233], + [0x0112E0, 0x0112E2], + [0x011302, 0x011303], + [0x01133E, 0x01133F], + [0x011341, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x011362, 0x011363], + [0x011435, 0x011437], + [0x011440, 0x011441], + [0x0114B0, 0x0114B2], + [0x0114BB, 0x0114BE], + [0x0115AF, 0x0115B1], + [0x0115B8, 0x0115BB], + [0x011630, 0x011632], + [0x01163B, 0x01163C], + [0x0116AE, 0x0116AF], + [0x011720, 0x011721], + [0x01182C, 0x01182E], + [0x011930, 0x011935], + [0x011937, 0x011938], + [0x0119D1, 0x0119D3], + [0x0119DC, 0x0119DF], + [0x011A57, 0x011A58], + [0x011D8A, 0x011D8E], + [0x011D93, 0x011D94], + [0x011EF5, 0x011EF6], + [0x011F34, 0x011F35], + [0x011F3E, 0x011F3F], + [0x016F51, 0x016F87], + [0x016FF0, 0x016FF1], + [0x01D165, 0x01D166], + [0x01D16D, 0x01D172] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Spacing_Mark}+$/u, + matchSymbols, + "\\p{General_Category=Spacing_Mark}" +); +testPropertyEscapes( + /^\p{General_Category=Mc}+$/u, + matchSymbols, + "\\p{General_Category=Mc}" +); +testPropertyEscapes( + /^\p{gc=Spacing_Mark}+$/u, + matchSymbols, + "\\p{gc=Spacing_Mark}" +); +testPropertyEscapes( + /^\p{gc=Mc}+$/u, + matchSymbols, + "\\p{gc=Mc}" +); +testPropertyEscapes( + /^\p{Spacing_Mark}+$/u, + matchSymbols, + "\\p{Spacing_Mark}" +); +testPropertyEscapes( + /^\p{Mc}+$/u, + matchSymbols, + "\\p{Mc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00094D, + 0x000ACA, + 0x000B3F, + 0x000BC0, + 0x000BC9, + 0x000CBF, + 0x000CC9, + 0x000D49, + 0x0017C6, + 0x001932, + 0x001A56, + 0x001A62, + 0x001B3C, + 0x001B42, + 0x001BED, + 0x00AA7C, + 0x00ABE5, + 0x00ABE8, + 0x00ABEB, + 0x011001, + 0x011234, + 0x011340, + 0x0114BA, + 0x01163D, + 0x0116AD, + 0x011936, + 0x011941, + 0x011D95, + 0x011F40 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000902], + [0x000904, 0x00093A], + [0x00093C, 0x00093D], + [0x000941, 0x000948], + [0x000950, 0x000981], + [0x000984, 0x0009BD], + [0x0009C1, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CD, 0x0009D6], + [0x0009D8, 0x000A02], + [0x000A04, 0x000A3D], + [0x000A41, 0x000A82], + [0x000A84, 0x000ABD], + [0x000AC1, 0x000AC8], + [0x000ACD, 0x000B01], + [0x000B04, 0x000B3D], + [0x000B41, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4D, 0x000B56], + [0x000B58, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCD, 0x000BD6], + [0x000BD8, 0x000C00], + [0x000C04, 0x000C40], + [0x000C45, 0x000C81], + [0x000C84, 0x000CBD], + [0x000CC5, 0x000CC6], + [0x000CCC, 0x000CD4], + [0x000CD7, 0x000CF2], + [0x000CF4, 0x000D01], + [0x000D04, 0x000D3D], + [0x000D41, 0x000D45], + [0x000D4D, 0x000D56], + [0x000D58, 0x000D81], + [0x000D84, 0x000DCE], + [0x000DD2, 0x000DD7], + [0x000DE0, 0x000DF1], + [0x000DF4, 0x000F3D], + [0x000F40, 0x000F7E], + [0x000F80, 0x00102A], + [0x00102D, 0x001030], + [0x001032, 0x001037], + [0x001039, 0x00103A], + [0x00103D, 0x001055], + [0x001058, 0x001061], + [0x001065, 0x001066], + [0x00106E, 0x001082], + [0x001085, 0x001086], + [0x00108D, 0x00108E], + [0x001090, 0x001099], + [0x00109D, 0x001714], + [0x001716, 0x001733], + [0x001735, 0x0017B5], + [0x0017B7, 0x0017BD], + [0x0017C9, 0x001922], + [0x001927, 0x001928], + [0x00192C, 0x00192F], + [0x001939, 0x001A18], + [0x001A1B, 0x001A54], + [0x001A58, 0x001A60], + [0x001A65, 0x001A6C], + [0x001A73, 0x001B03], + [0x001B05, 0x001B34], + [0x001B36, 0x001B3A], + [0x001B45, 0x001B81], + [0x001B83, 0x001BA0], + [0x001BA2, 0x001BA5], + [0x001BA8, 0x001BA9], + [0x001BAB, 0x001BE6], + [0x001BE8, 0x001BE9], + [0x001BEF, 0x001BF1], + [0x001BF4, 0x001C23], + [0x001C2C, 0x001C33], + [0x001C36, 0x001CE0], + [0x001CE2, 0x001CF6], + [0x001CF8, 0x00302D], + [0x003030, 0x00A822], + [0x00A825, 0x00A826], + [0x00A828, 0x00A87F], + [0x00A882, 0x00A8B3], + [0x00A8C4, 0x00A951], + [0x00A954, 0x00A982], + [0x00A984, 0x00A9B3], + [0x00A9B6, 0x00A9B9], + [0x00A9BC, 0x00A9BD], + [0x00A9C1, 0x00AA2E], + [0x00AA31, 0x00AA32], + [0x00AA35, 0x00AA4C], + [0x00AA4E, 0x00AA7A], + [0x00AA7E, 0x00AAEA], + [0x00AAEC, 0x00AAED], + [0x00AAF0, 0x00AAF4], + [0x00AAF6, 0x00ABE2], + [0x00ABED, 0x00DBFF], + [0x00E000, 0x010FFF], + [0x011003, 0x011081], + [0x011083, 0x0110AF], + [0x0110B3, 0x0110B6], + [0x0110B9, 0x01112B], + [0x01112D, 0x011144], + [0x011147, 0x011181], + [0x011183, 0x0111B2], + [0x0111B6, 0x0111BE], + [0x0111C1, 0x0111CD], + [0x0111CF, 0x01122B], + [0x01122F, 0x011231], + [0x011236, 0x0112DF], + [0x0112E3, 0x011301], + [0x011304, 0x01133D], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x011356], + [0x011358, 0x011361], + [0x011364, 0x011434], + [0x011438, 0x01143F], + [0x011442, 0x011444], + [0x011446, 0x0114AF], + [0x0114B3, 0x0114B8], + [0x0114BF, 0x0114C0], + [0x0114C2, 0x0115AE], + [0x0115B2, 0x0115B7], + [0x0115BC, 0x0115BD], + [0x0115BF, 0x01162F], + [0x011633, 0x01163A], + [0x01163F, 0x0116AB], + [0x0116B0, 0x0116B5], + [0x0116B7, 0x01171F], + [0x011722, 0x011725], + [0x011727, 0x01182B], + [0x01182F, 0x011837], + [0x011839, 0x01192F], + [0x011939, 0x01193C], + [0x01193E, 0x01193F], + [0x011943, 0x0119D0], + [0x0119D4, 0x0119DB], + [0x0119E0, 0x0119E3], + [0x0119E5, 0x011A38], + [0x011A3A, 0x011A56], + [0x011A59, 0x011A96], + [0x011A98, 0x011C2E], + [0x011C30, 0x011C3D], + [0x011C3F, 0x011CA8], + [0x011CAA, 0x011CB0], + [0x011CB2, 0x011CB3], + [0x011CB5, 0x011D89], + [0x011D8F, 0x011D92], + [0x011D97, 0x011EF4], + [0x011EF7, 0x011F02], + [0x011F04, 0x011F33], + [0x011F36, 0x011F3D], + [0x011F42, 0x016F50], + [0x016F88, 0x016FEF], + [0x016FF2, 0x01D164], + [0x01D167, 0x01D16C], + [0x01D173, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Spacing_Mark}+$/u, + nonMatchSymbols, + "\\P{General_Category=Spacing_Mark}" +); +testPropertyEscapes( + /^\P{General_Category=Mc}+$/u, + nonMatchSymbols, + "\\P{General_Category=Mc}" +); +testPropertyEscapes( + /^\P{gc=Spacing_Mark}+$/u, + nonMatchSymbols, + "\\P{gc=Spacing_Mark}" +); +testPropertyEscapes( + /^\P{gc=Mc}+$/u, + nonMatchSymbols, + "\\P{gc=Mc}" +); +testPropertyEscapes( + /^\P{Spacing_Mark}+$/u, + nonMatchSymbols, + "\\P{Spacing_Mark}" +); +testPropertyEscapes( + /^\P{Mc}+$/u, + nonMatchSymbols, + "\\P{Mc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js new file mode 100644 index 0000000000..4228824da2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Surrogate.js @@ -0,0 +1,92 @@ +// Copyright 2022 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 for `General_Category=Surrogate` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x00D800, 0x00DBFF] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Surrogate}+$/u, + matchSymbols, + "\\p{General_Category=Surrogate}" +); +testPropertyEscapes( + /^\p{General_Category=Cs}+$/u, + matchSymbols, + "\\p{General_Category=Cs}" +); +testPropertyEscapes( + /^\p{gc=Surrogate}+$/u, + matchSymbols, + "\\p{gc=Surrogate}" +); +testPropertyEscapes( + /^\p{gc=Cs}+$/u, + matchSymbols, + "\\p{gc=Cs}" +); +testPropertyEscapes( + /^\p{Surrogate}+$/u, + matchSymbols, + "\\p{Surrogate}" +); +testPropertyEscapes( + /^\p{Cs}+$/u, + matchSymbols, + "\\p{Cs}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000000, 0x00D7FF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Surrogate}+$/u, + nonMatchSymbols, + "\\P{General_Category=Surrogate}" +); +testPropertyEscapes( + /^\P{General_Category=Cs}+$/u, + nonMatchSymbols, + "\\P{General_Category=Cs}" +); +testPropertyEscapes( + /^\P{gc=Surrogate}+$/u, + nonMatchSymbols, + "\\P{gc=Surrogate}" +); +testPropertyEscapes( + /^\P{gc=Cs}+$/u, + nonMatchSymbols, + "\\P{gc=Cs}" +); +testPropertyEscapes( + /^\P{Surrogate}+$/u, + nonMatchSymbols, + "\\P{Surrogate}" +); +testPropertyEscapes( + /^\P{Cs}+$/u, + nonMatchSymbols, + "\\P{Cs}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js new file mode 100644 index 0000000000..a95fa50957 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Symbol.js @@ -0,0 +1,557 @@ +// Copyright 2022 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 for `General_Category=Symbol` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000024, + 0x00002B, + 0x00005E, + 0x000060, + 0x00007C, + 0x00007E, + 0x0000AC, + 0x0000B4, + 0x0000B8, + 0x0000D7, + 0x0000F7, + 0x0002ED, + 0x000375, + 0x0003F6, + 0x000482, + 0x00060B, + 0x0006DE, + 0x0006E9, + 0x0007F6, + 0x000888, + 0x000AF1, + 0x000B70, + 0x000C7F, + 0x000D4F, + 0x000D79, + 0x000E3F, + 0x000F13, + 0x000F34, + 0x000F36, + 0x000F38, + 0x00166D, + 0x0017DB, + 0x001940, + 0x001FBD, + 0x002044, + 0x002052, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x00212E, + 0x00214F, + 0x003004, + 0x003020, + 0x003250, + 0x00AB5B, + 0x00FB29, + 0x00FDCF, + 0x00FE62, + 0x00FE69, + 0x00FF04, + 0x00FF0B, + 0x00FF3E, + 0x00FF40, + 0x00FF5C, + 0x00FF5E, + 0x0101A0, + 0x010AC8, + 0x01173F, + 0x016B45, + 0x01BC9C, + 0x01D245, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3, + 0x01E14F, + 0x01E2FF, + 0x01ECAC, + 0x01ECB0, + 0x01ED2E, + 0x01F7F0 + ], + ranges: [ + [0x00003C, 0x00003E], + [0x0000A2, 0x0000A6], + [0x0000A8, 0x0000A9], + [0x0000AE, 0x0000B1], + [0x0002C2, 0x0002C5], + [0x0002D2, 0x0002DF], + [0x0002E5, 0x0002EB], + [0x0002EF, 0x0002FF], + [0x000384, 0x000385], + [0x00058D, 0x00058F], + [0x000606, 0x000608], + [0x00060E, 0x00060F], + [0x0006FD, 0x0006FE], + [0x0007FE, 0x0007FF], + [0x0009F2, 0x0009F3], + [0x0009FA, 0x0009FB], + [0x000BF3, 0x000BFA], + [0x000F01, 0x000F03], + [0x000F15, 0x000F17], + [0x000F1A, 0x000F1F], + [0x000FBE, 0x000FC5], + [0x000FC7, 0x000FCC], + [0x000FCE, 0x000FCF], + [0x000FD5, 0x000FD8], + [0x00109E, 0x00109F], + [0x001390, 0x001399], + [0x0019DE, 0x0019FF], + [0x001B61, 0x001B6A], + [0x001B74, 0x001B7C], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FDD, 0x001FDF], + [0x001FED, 0x001FEF], + [0x001FFD, 0x001FFE], + [0x00207A, 0x00207C], + [0x00208A, 0x00208C], + [0x0020A0, 0x0020C0], + [0x002100, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002118], + [0x00211E, 0x002123], + [0x00213A, 0x00213B], + [0x002140, 0x002144], + [0x00214A, 0x00214D], + [0x00218A, 0x00218B], + [0x002190, 0x002307], + [0x00230C, 0x002328], + [0x00232B, 0x002426], + [0x002440, 0x00244A], + [0x00249C, 0x0024E9], + [0x002500, 0x002767], + [0x002794, 0x0027C4], + [0x0027C7, 0x0027E5], + [0x0027F0, 0x002982], + [0x002999, 0x0029D7], + [0x0029DC, 0x0029FB], + [0x0029FE, 0x002B73], + [0x002B76, 0x002B95], + [0x002B97, 0x002BFF], + [0x002CE5, 0x002CEA], + [0x002E50, 0x002E51], + [0x002E80, 0x002E99], + [0x002E9B, 0x002EF3], + [0x002F00, 0x002FD5], + [0x002FF0, 0x002FFB], + [0x003012, 0x003013], + [0x003036, 0x003037], + [0x00303E, 0x00303F], + [0x00309B, 0x00309C], + [0x003190, 0x003191], + [0x003196, 0x00319F], + [0x0031C0, 0x0031E3], + [0x003200, 0x00321E], + [0x00322A, 0x003247], + [0x003260, 0x00327F], + [0x00328A, 0x0032B0], + [0x0032C0, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A490, 0x00A4C6], + [0x00A700, 0x00A716], + [0x00A720, 0x00A721], + [0x00A789, 0x00A78A], + [0x00A828, 0x00A82B], + [0x00A836, 0x00A839], + [0x00AA77, 0x00AA79], + [0x00AB6A, 0x00AB6B], + [0x00FBB2, 0x00FBC2], + [0x00FD40, 0x00FD4F], + [0x00FDFC, 0x00FDFF], + [0x00FE64, 0x00FE66], + [0x00FF1C, 0x00FF1E], + [0x00FFE0, 0x00FFE6], + [0x00FFE8, 0x00FFEE], + [0x00FFFC, 0x00FFFD], + [0x010137, 0x01013F], + [0x010179, 0x010189], + [0x01018C, 0x01018E], + [0x010190, 0x01019C], + [0x0101D0, 0x0101FC], + [0x010877, 0x010878], + [0x011FD5, 0x011FF1], + [0x016B3C, 0x016B3F], + [0x01CF50, 0x01CFC3], + [0x01D000, 0x01D0F5], + [0x01D100, 0x01D126], + [0x01D129, 0x01D164], + [0x01D16A, 0x01D16C], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D1EA], + [0x01D200, 0x01D241], + [0x01D300, 0x01D356], + [0x01D800, 0x01D9FF], + [0x01DA37, 0x01DA3A], + [0x01DA6D, 0x01DA74], + [0x01DA76, 0x01DA83], + [0x01DA85, 0x01DA86], + [0x01EEF0, 0x01EEF1], + [0x01F000, 0x01F02B], + [0x01F030, 0x01F093], + [0x01F0A0, 0x01F0AE], + [0x01F0B1, 0x01F0BF], + [0x01F0C1, 0x01F0CF], + [0x01F0D1, 0x01F0F5], + [0x01F10D, 0x01F1AD], + [0x01F1E6, 0x01F202], + [0x01F210, 0x01F23B], + [0x01F240, 0x01F248], + [0x01F250, 0x01F251], + [0x01F260, 0x01F265], + [0x01F300, 0x01F6D7], + [0x01F6DC, 0x01F6EC], + [0x01F6F0, 0x01F6FC], + [0x01F700, 0x01F776], + [0x01F77B, 0x01F7D9], + [0x01F7E0, 0x01F7EB], + [0x01F800, 0x01F80B], + [0x01F810, 0x01F847], + [0x01F850, 0x01F859], + [0x01F860, 0x01F887], + [0x01F890, 0x01F8AD], + [0x01F8B0, 0x01F8B1], + [0x01F900, 0x01FA53], + [0x01FA60, 0x01FA6D], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8], + [0x01FB00, 0x01FB92], + [0x01FB94, 0x01FBCA] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Symbol}+$/u, + matchSymbols, + "\\p{General_Category=Symbol}" +); +testPropertyEscapes( + /^\p{General_Category=S}+$/u, + matchSymbols, + "\\p{General_Category=S}" +); +testPropertyEscapes( + /^\p{gc=Symbol}+$/u, + matchSymbols, + "\\p{gc=Symbol}" +); +testPropertyEscapes( + /^\p{gc=S}+$/u, + matchSymbols, + "\\p{gc=S}" +); +testPropertyEscapes( + /^\p{Symbol}+$/u, + matchSymbols, + "\\p{Symbol}" +); +testPropertyEscapes( + /^\p{S}+$/u, + matchSymbols, + "\\p{S}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00005F, + 0x00007D, + 0x0000A7, + 0x0000AD, + 0x0002EC, + 0x0002EE, + 0x000F14, + 0x000F35, + 0x000F37, + 0x000FC6, + 0x000FCD, + 0x001FBE, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x00214E, + 0x002B96, + 0x002E9A, + 0x00FE63, + 0x00FF3F, + 0x00FF5D, + 0x00FFE7, + 0x01018F, + 0x01DA75, + 0x01DA84, + 0x01F0C0, + 0x01F0D0, + 0x01FABE, + 0x01FB93 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000023], + [0x000025, 0x00002A], + [0x00002C, 0x00003B], + [0x00003F, 0x00005D], + [0x000061, 0x00007B], + [0x00007F, 0x0000A1], + [0x0000AA, 0x0000AB], + [0x0000B2, 0x0000B3], + [0x0000B5, 0x0000B7], + [0x0000B9, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002C1], + [0x0002C6, 0x0002D1], + [0x0002E0, 0x0002E4], + [0x000300, 0x000374], + [0x000376, 0x000383], + [0x000386, 0x0003F5], + [0x0003F7, 0x000481], + [0x000483, 0x00058C], + [0x000590, 0x000605], + [0x000609, 0x00060A], + [0x00060C, 0x00060D], + [0x000610, 0x0006DD], + [0x0006DF, 0x0006E8], + [0x0006EA, 0x0006FC], + [0x0006FF, 0x0007F5], + [0x0007F7, 0x0007FD], + [0x000800, 0x000887], + [0x000889, 0x0009F1], + [0x0009F4, 0x0009F9], + [0x0009FC, 0x000AF0], + [0x000AF2, 0x000B6F], + [0x000B71, 0x000BF2], + [0x000BFB, 0x000C7E], + [0x000C80, 0x000D4E], + [0x000D50, 0x000D78], + [0x000D7A, 0x000E3E], + [0x000E40, 0x000F00], + [0x000F04, 0x000F12], + [0x000F18, 0x000F19], + [0x000F20, 0x000F33], + [0x000F39, 0x000FBD], + [0x000FD0, 0x000FD4], + [0x000FD9, 0x00109D], + [0x0010A0, 0x00138F], + [0x00139A, 0x00166C], + [0x00166E, 0x0017DA], + [0x0017DC, 0x00193F], + [0x001941, 0x0019DD], + [0x001A00, 0x001B60], + [0x001B6B, 0x001B73], + [0x001B7D, 0x001FBC], + [0x001FC2, 0x001FCC], + [0x001FD0, 0x001FDC], + [0x001FE0, 0x001FEC], + [0x001FF0, 0x001FFC], + [0x001FFF, 0x002043], + [0x002045, 0x002051], + [0x002053, 0x002079], + [0x00207D, 0x002089], + [0x00208D, 0x00209F], + [0x0020C1, 0x0020FF], + [0x00210A, 0x002113], + [0x002119, 0x00211D], + [0x00212A, 0x00212D], + [0x00212F, 0x002139], + [0x00213C, 0x00213F], + [0x002145, 0x002149], + [0x002150, 0x002189], + [0x00218C, 0x00218F], + [0x002308, 0x00230B], + [0x002329, 0x00232A], + [0x002427, 0x00243F], + [0x00244B, 0x00249B], + [0x0024EA, 0x0024FF], + [0x002768, 0x002793], + [0x0027C5, 0x0027C6], + [0x0027E6, 0x0027EF], + [0x002983, 0x002998], + [0x0029D8, 0x0029DB], + [0x0029FC, 0x0029FD], + [0x002B74, 0x002B75], + [0x002C00, 0x002CE4], + [0x002CEB, 0x002E4F], + [0x002E52, 0x002E7F], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x002FEF], + [0x002FFC, 0x003003], + [0x003005, 0x003011], + [0x003014, 0x00301F], + [0x003021, 0x003035], + [0x003038, 0x00303D], + [0x003040, 0x00309A], + [0x00309D, 0x00318F], + [0x003192, 0x003195], + [0x0031A0, 0x0031BF], + [0x0031E4, 0x0031FF], + [0x00321F, 0x003229], + [0x003248, 0x00324F], + [0x003251, 0x00325F], + [0x003280, 0x003289], + [0x0032B1, 0x0032BF], + [0x003400, 0x004DBF], + [0x004E00, 0x00A48F], + [0x00A4C7, 0x00A6FF], + [0x00A717, 0x00A71F], + [0x00A722, 0x00A788], + [0x00A78B, 0x00A827], + [0x00A82C, 0x00A835], + [0x00A83A, 0x00AA76], + [0x00AA7A, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB6C, 0x00DBFF], + [0x00E000, 0x00FB28], + [0x00FB2A, 0x00FBB1], + [0x00FBC3, 0x00FD3F], + [0x00FD50, 0x00FDCE], + [0x00FDD0, 0x00FDFB], + [0x00FE00, 0x00FE61], + [0x00FE67, 0x00FE68], + [0x00FE6A, 0x00FF03], + [0x00FF05, 0x00FF0A], + [0x00FF0C, 0x00FF1B], + [0x00FF1F, 0x00FF3D], + [0x00FF41, 0x00FF5B], + [0x00FF5F, 0x00FFDF], + [0x00FFEF, 0x00FFFB], + [0x00FFFE, 0x010136], + [0x010140, 0x010178], + [0x01018A, 0x01018B], + [0x01019D, 0x01019F], + [0x0101A1, 0x0101CF], + [0x0101FD, 0x010876], + [0x010879, 0x010AC7], + [0x010AC9, 0x01173E], + [0x011740, 0x011FD4], + [0x011FF2, 0x016B3B], + [0x016B40, 0x016B44], + [0x016B46, 0x01BC9B], + [0x01BC9D, 0x01CF4F], + [0x01CFC4, 0x01CFFF], + [0x01D0F6, 0x01D0FF], + [0x01D127, 0x01D128], + [0x01D165, 0x01D169], + [0x01D16D, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D1EB, 0x01D1FF], + [0x01D242, 0x01D244], + [0x01D246, 0x01D2FF], + [0x01D357, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7FF], + [0x01DA00, 0x01DA36], + [0x01DA3B, 0x01DA6C], + [0x01DA87, 0x01E14E], + [0x01E150, 0x01E2FE], + [0x01E300, 0x01ECAB], + [0x01ECAD, 0x01ECAF], + [0x01ECB1, 0x01ED2D], + [0x01ED2F, 0x01EEEF], + [0x01EEF2, 0x01EFFF], + [0x01F02C, 0x01F02F], + [0x01F094, 0x01F09F], + [0x01F0AF, 0x01F0B0], + [0x01F0F6, 0x01F10C], + [0x01F1AE, 0x01F1E5], + [0x01F203, 0x01F20F], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F24F], + [0x01F252, 0x01F25F], + [0x01F266, 0x01F2FF], + [0x01F6D8, 0x01F6DB], + [0x01F6ED, 0x01F6EF], + [0x01F6FD, 0x01F6FF], + [0x01F777, 0x01F77A], + [0x01F7DA, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F7FF], + [0x01F80C, 0x01F80F], + [0x01F848, 0x01F84F], + [0x01F85A, 0x01F85F], + [0x01F888, 0x01F88F], + [0x01F8AE, 0x01F8AF], + [0x01F8B2, 0x01F8FF], + [0x01FA54, 0x01FA5F], + [0x01FA6E, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x01FAFF], + [0x01FBCB, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Symbol}+$/u, + nonMatchSymbols, + "\\P{General_Category=Symbol}" +); +testPropertyEscapes( + /^\P{General_Category=S}+$/u, + nonMatchSymbols, + "\\P{General_Category=S}" +); +testPropertyEscapes( + /^\P{gc=Symbol}+$/u, + nonMatchSymbols, + "\\P{gc=Symbol}" +); +testPropertyEscapes( + /^\P{gc=S}+$/u, + nonMatchSymbols, + "\\P{gc=S}" +); +testPropertyEscapes( + /^\P{Symbol}+$/u, + nonMatchSymbols, + "\\P{Symbol}" +); +testPropertyEscapes( + /^\P{S}+$/u, + nonMatchSymbols, + "\\P{S}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js new file mode 100644 index 0000000000..bf5c339fbe --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Titlecase_Letter.js @@ -0,0 +1,112 @@ +// Copyright 2022 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 for `General_Category=Titlecase_Letter` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0001C5, + 0x0001C8, + 0x0001CB, + 0x0001F2, + 0x001FBC, + 0x001FCC, + 0x001FFC + ], + ranges: [ + [0x001F88, 0x001F8F], + [0x001F98, 0x001F9F], + [0x001FA8, 0x001FAF] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Titlecase_Letter}+$/u, + matchSymbols, + "\\p{General_Category=Titlecase_Letter}" +); +testPropertyEscapes( + /^\p{General_Category=Lt}+$/u, + matchSymbols, + "\\p{General_Category=Lt}" +); +testPropertyEscapes( + /^\p{gc=Titlecase_Letter}+$/u, + matchSymbols, + "\\p{gc=Titlecase_Letter}" +); +testPropertyEscapes( + /^\p{gc=Lt}+$/u, + matchSymbols, + "\\p{gc=Lt}" +); +testPropertyEscapes( + /^\p{Titlecase_Letter}+$/u, + matchSymbols, + "\\p{Titlecase_Letter}" +); +testPropertyEscapes( + /^\p{Lt}+$/u, + matchSymbols, + "\\p{Lt}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0001C4], + [0x0001C6, 0x0001C7], + [0x0001C9, 0x0001CA], + [0x0001CC, 0x0001F1], + [0x0001F3, 0x001F87], + [0x001F90, 0x001F97], + [0x001FA0, 0x001FA7], + [0x001FB0, 0x001FBB], + [0x001FBD, 0x001FCB], + [0x001FCD, 0x001FFB], + [0x001FFD, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Titlecase_Letter}+$/u, + nonMatchSymbols, + "\\P{General_Category=Titlecase_Letter}" +); +testPropertyEscapes( + /^\P{General_Category=Lt}+$/u, + nonMatchSymbols, + "\\P{General_Category=Lt}" +); +testPropertyEscapes( + /^\P{gc=Titlecase_Letter}+$/u, + nonMatchSymbols, + "\\P{gc=Titlecase_Letter}" +); +testPropertyEscapes( + /^\P{gc=Lt}+$/u, + nonMatchSymbols, + "\\P{gc=Lt}" +); +testPropertyEscapes( + /^\P{Titlecase_Letter}+$/u, + nonMatchSymbols, + "\\P{Titlecase_Letter}" +); +testPropertyEscapes( + /^\P{Lt}+$/u, + nonMatchSymbols, + "\\P{Lt}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js new file mode 100644 index 0000000000..ebf245235f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Unassigned.js @@ -0,0 +1,1506 @@ +// Copyright 2022 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 for `General_Category=Unassigned` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00038B, + 0x00038D, + 0x0003A2, + 0x000530, + 0x000590, + 0x00070E, + 0x00083F, + 0x00085F, + 0x00088F, + 0x000984, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x000A04, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A3D, + 0x000A5D, + 0x000A84, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000AC6, + 0x000ACA, + 0x000B00, + 0x000B04, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000BC9, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C45, + 0x000C49, + 0x000C57, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CC5, + 0x000CC9, + 0x000CDF, + 0x000CF0, + 0x000D0D, + 0x000D11, + 0x000D45, + 0x000D49, + 0x000D80, + 0x000D84, + 0x000DB2, + 0x000DBC, + 0x000DD5, + 0x000DD7, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EC5, + 0x000EC7, + 0x000ECF, + 0x000F48, + 0x000F98, + 0x000FBD, + 0x000FCD, + 0x0010C6, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x00176D, + 0x001771, + 0x00191F, + 0x001A5F, + 0x001B7F, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FC5, + 0x001FDC, + 0x001FF5, + 0x001FFF, + 0x002065, + 0x00208F, + 0x002B96, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x002DDF, + 0x002E9A, + 0x003040, + 0x003130, + 0x00318F, + 0x00321F, + 0x00A7D2, + 0x00A7D4, + 0x00A9CE, + 0x00A9FF, + 0x00AB27, + 0x00AB2F, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE53, + 0x00FE67, + 0x00FE75, + 0x00FF00, + 0x00FFE7, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x01018F, + 0x01039E, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x010856, + 0x0108F3, + 0x010A04, + 0x010A14, + 0x010A18, + 0x010E7F, + 0x010EAA, + 0x011135, + 0x0111E0, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011304, + 0x011329, + 0x011331, + 0x011334, + 0x01133A, + 0x01145C, + 0x011914, + 0x011917, + 0x011936, + 0x011C09, + 0x011C37, + 0x011CA8, + 0x011D07, + 0x011D0A, + 0x011D3B, + 0x011D3E, + 0x011D66, + 0x011D69, + 0x011D8F, + 0x011D92, + 0x011F11, + 0x01246F, + 0x016A5F, + 0x016ABF, + 0x016B5A, + 0x016B62, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01DAA0, + 0x01E007, + 0x01E022, + 0x01E025, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA, + 0x01F0C0, + 0x01F0D0, + 0x01FABE, + 0x01FB93 + ], + ranges: [ + [0x000378, 0x000379], + [0x000380, 0x000383], + [0x000557, 0x000558], + [0x00058B, 0x00058C], + [0x0005C8, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F5, 0x0005FF], + [0x00074B, 0x00074C], + [0x0007B2, 0x0007BF], + [0x0007FB, 0x0007FC], + [0x00082E, 0x00082F], + [0x00085C, 0x00085D], + [0x00086B, 0x00086F], + [0x000892, 0x000897], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BB], + [0x0009C5, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CF, 0x0009D6], + [0x0009D8, 0x0009DB], + [0x0009E4, 0x0009E5], + [0x0009FF, 0x000A00], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A3B], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A58], + [0x000A5F, 0x000A65], + [0x000A77, 0x000A80], + [0x000ABA, 0x000ABB], + [0x000ACE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE4, 0x000AE5], + [0x000AF2, 0x000AF8], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3B], + [0x000B45, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4E, 0x000B54], + [0x000B58, 0x000B5B], + [0x000B64, 0x000B65], + [0x000B78, 0x000B81], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCE, 0x000BCF], + [0x000BD1, 0x000BD6], + [0x000BD8, 0x000BE5], + [0x000BFB, 0x000BFF], + [0x000C3A, 0x000C3B], + [0x000C4E, 0x000C54], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C64, 0x000C65], + [0x000C70, 0x000C76], + [0x000CBA, 0x000CBB], + [0x000CCE, 0x000CD4], + [0x000CD7, 0x000CDC], + [0x000CE4, 0x000CE5], + [0x000CF4, 0x000CFF], + [0x000D50, 0x000D53], + [0x000D64, 0x000D65], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000DC9], + [0x000DCB, 0x000DCE], + [0x000DE0, 0x000DE5], + [0x000DF0, 0x000DF1], + [0x000DF5, 0x000E00], + [0x000E3B, 0x000E3E], + [0x000E5C, 0x000E80], + [0x000EBE, 0x000EBF], + [0x000EDA, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F6D, 0x000F70], + [0x000FDB, 0x000FFF], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00135C], + [0x00137D, 0x00137F], + [0x00139A, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x0013FF], + [0x00169D, 0x00169F], + [0x0016F9, 0x0016FF], + [0x001716, 0x00171E], + [0x001737, 0x00173F], + [0x001754, 0x00175F], + [0x001774, 0x00177F], + [0x0017DE, 0x0017DF], + [0x0017EA, 0x0017EF], + [0x0017FA, 0x0017FF], + [0x00181A, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00192C, 0x00192F], + [0x00193C, 0x00193F], + [0x001941, 0x001943], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019CF], + [0x0019DB, 0x0019DD], + [0x001A1C, 0x001A1D], + [0x001A7D, 0x001A7E], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001A9F], + [0x001AAE, 0x001AAF], + [0x001ACF, 0x001AFF], + [0x001B4D, 0x001B4F], + [0x001BF4, 0x001BFB], + [0x001C38, 0x001C3A], + [0x001C4A, 0x001C4C], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC8, 0x001CCF], + [0x001CFB, 0x001CFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FD4, 0x001FD5], + [0x001FF0, 0x001FF1], + [0x002072, 0x002073], + [0x00209D, 0x00209F], + [0x0020C1, 0x0020CF], + [0x0020F1, 0x0020FF], + [0x00218C, 0x00218F], + [0x002427, 0x00243F], + [0x00244B, 0x00245F], + [0x002B74, 0x002B75], + [0x002CF4, 0x002CF8], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D71, 0x002D7E], + [0x002D97, 0x002D9F], + [0x002E5E, 0x002E7F], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x002FEF], + [0x002FFC, 0x002FFF], + [0x003097, 0x003098], + [0x003100, 0x003104], + [0x0031E4, 0x0031EF], + [0x00A48D, 0x00A48F], + [0x00A4C7, 0x00A4CF], + [0x00A62C, 0x00A63F], + [0x00A6F8, 0x00A6FF], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A82D, 0x00A82F], + [0x00A83A, 0x00A83F], + [0x00A878, 0x00A87F], + [0x00A8C6, 0x00A8CD], + [0x00A8DA, 0x00A8DF], + [0x00A954, 0x00A95E], + [0x00A97D, 0x00A97F], + [0x00A9DA, 0x00A9DD], + [0x00AA37, 0x00AA3F], + [0x00AA4E, 0x00AA4F], + [0x00AA5A, 0x00AA5B], + [0x00AAC3, 0x00AADA], + [0x00AAF7, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6C, 0x00AB6F], + [0x00ABEE, 0x00ABEF], + [0x00ABFA, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00D7FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBC3, 0x00FBD2], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDCE], + [0x00FDD0, 0x00FDEF], + [0x00FE1A, 0x00FE1F], + [0x00FE6C, 0x00FE6F], + [0x00FEFD, 0x00FEFE], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFDF], + [0x00FFEF, 0x00FFF8], + [0x00FFFE, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x0100FF], + [0x010103, 0x010106], + [0x010134, 0x010136], + [0x01019D, 0x01019F], + [0x0101A1, 0x0101CF], + [0x0101FE, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102DF], + [0x0102FC, 0x0102FF], + [0x010324, 0x01032C], + [0x01034B, 0x01034F], + [0x01037B, 0x01037F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x0103FF], + [0x01049E, 0x01049F], + [0x0104AA, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056E], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x01089F, 0x0108A6], + [0x0108B0, 0x0108DF], + [0x0108F6, 0x0108FA], + [0x01091C, 0x01091E], + [0x01093A, 0x01093E], + [0x010940, 0x01097F], + [0x0109B8, 0x0109BB], + [0x0109D0, 0x0109D1], + [0x010A07, 0x010A0B], + [0x010A36, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A49, 0x010A4F], + [0x010A59, 0x010A5F], + [0x010AA0, 0x010ABF], + [0x010AE7, 0x010AEA], + [0x010AF7, 0x010AFF], + [0x010B36, 0x010B38], + [0x010B56, 0x010B57], + [0x010B73, 0x010B77], + [0x010B92, 0x010B98], + [0x010B9D, 0x010BA8], + [0x010BB0, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CF9], + [0x010D28, 0x010D2F], + [0x010D3A, 0x010E5F], + [0x010EAE, 0x010EAF], + [0x010EB2, 0x010EFC], + [0x010F28, 0x010F2F], + [0x010F5A, 0x010F6F], + [0x010F8A, 0x010FAF], + [0x010FCC, 0x010FDF], + [0x010FF7, 0x010FFF], + [0x01104E, 0x011051], + [0x011076, 0x01107E], + [0x0110C3, 0x0110CC], + [0x0110CE, 0x0110CF], + [0x0110E9, 0x0110EF], + [0x0110FA, 0x0110FF], + [0x011148, 0x01114F], + [0x011177, 0x01117F], + [0x0111F5, 0x0111FF], + [0x011242, 0x01127F], + [0x0112AA, 0x0112AF], + [0x0112EB, 0x0112EF], + [0x0112FA, 0x0112FF], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x01134F], + [0x011351, 0x011356], + [0x011358, 0x01135C], + [0x011364, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x0113FF], + [0x011462, 0x01147F], + [0x0114C8, 0x0114CF], + [0x0114DA, 0x01157F], + [0x0115B6, 0x0115B7], + [0x0115DE, 0x0115FF], + [0x011645, 0x01164F], + [0x01165A, 0x01165F], + [0x01166D, 0x01167F], + [0x0116BA, 0x0116BF], + [0x0116CA, 0x0116FF], + [0x01171B, 0x01171C], + [0x01172C, 0x01172F], + [0x011747, 0x0117FF], + [0x01183C, 0x01189F], + [0x0118F3, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011939, 0x01193A], + [0x011947, 0x01194F], + [0x01195A, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D8, 0x0119D9], + [0x0119E5, 0x0119FF], + [0x011A48, 0x011A4F], + [0x011AA3, 0x011AAF], + [0x011AF9, 0x011AFF], + [0x011B0A, 0x011BFF], + [0x011C46, 0x011C4F], + [0x011C6D, 0x011C6F], + [0x011C90, 0x011C91], + [0x011CB7, 0x011CFF], + [0x011D37, 0x011D39], + [0x011D48, 0x011D4F], + [0x011D5A, 0x011D5F], + [0x011D99, 0x011D9F], + [0x011DAA, 0x011EDF], + [0x011EF9, 0x011EFF], + [0x011F3B, 0x011F3D], + [0x011F5A, 0x011FAF], + [0x011FB1, 0x011FBF], + [0x011FF2, 0x011FFE], + [0x01239A, 0x0123FF], + [0x012475, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF3, 0x012FFF], + [0x013456, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A6A, 0x016A6D], + [0x016ACA, 0x016ACF], + [0x016AEE, 0x016AEF], + [0x016AF6, 0x016AFF], + [0x016B46, 0x016B4F], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E9B, 0x016EFF], + [0x016F4B, 0x016F4E], + [0x016F88, 0x016F8E], + [0x016FA0, 0x016FDF], + [0x016FE5, 0x016FEF], + [0x016FF2, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01BC9B], + [0x01BCA4, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01CF4F], + [0x01CFC4, 0x01CFFF], + [0x01D0F6, 0x01D0FF], + [0x01D127, 0x01D128], + [0x01D1EB, 0x01D1FF], + [0x01D246, 0x01D2BF], + [0x01D2D4, 0x01D2DF], + [0x01D2F4, 0x01D2FF], + [0x01D357, 0x01D35F], + [0x01D379, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01DA8C, 0x01DA9A], + [0x01DAB0, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E02F], + [0x01E06E, 0x01E08E], + [0x01E090, 0x01E0FF], + [0x01E12D, 0x01E12F], + [0x01E13E, 0x01E13F], + [0x01E14A, 0x01E14D], + [0x01E150, 0x01E28F], + [0x01E2AF, 0x01E2BF], + [0x01E2FA, 0x01E2FE], + [0x01E300, 0x01E4CF], + [0x01E4FA, 0x01E7DF], + [0x01E8C5, 0x01E8C6], + [0x01E8D7, 0x01E8FF], + [0x01E94C, 0x01E94F], + [0x01E95A, 0x01E95D], + [0x01E960, 0x01EC70], + [0x01ECB5, 0x01ED00], + [0x01ED3E, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01EEEF], + [0x01EEF2, 0x01EFFF], + [0x01F02C, 0x01F02F], + [0x01F094, 0x01F09F], + [0x01F0AF, 0x01F0B0], + [0x01F0F6, 0x01F0FF], + [0x01F1AE, 0x01F1E5], + [0x01F203, 0x01F20F], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F24F], + [0x01F252, 0x01F25F], + [0x01F266, 0x01F2FF], + [0x01F6D8, 0x01F6DB], + [0x01F6ED, 0x01F6EF], + [0x01F6FD, 0x01F6FF], + [0x01F777, 0x01F77A], + [0x01F7DA, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F7FF], + [0x01F80C, 0x01F80F], + [0x01F848, 0x01F84F], + [0x01F85A, 0x01F85F], + [0x01F888, 0x01F88F], + [0x01F8AE, 0x01F8AF], + [0x01F8B2, 0x01F8FF], + [0x01FA54, 0x01FA5F], + [0x01FA6E, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x01FAFF], + [0x01FBCB, 0x01FBEF], + [0x01FBFA, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x0E0000], + [0x0E0002, 0x0E001F], + [0x0E0080, 0x0E00FF], + [0x0E01F0, 0x0EFFFF], + [0x0FFFFE, 0x0FFFFF], + [0x10FFFE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Unassigned}+$/u, + matchSymbols, + "\\p{General_Category=Unassigned}" +); +testPropertyEscapes( + /^\p{General_Category=Cn}+$/u, + matchSymbols, + "\\p{General_Category=Cn}" +); +testPropertyEscapes( + /^\p{gc=Unassigned}+$/u, + matchSymbols, + "\\p{gc=Unassigned}" +); +testPropertyEscapes( + /^\p{gc=Cn}+$/u, + matchSymbols, + "\\p{gc=Cn}" +); +testPropertyEscapes( + /^\p{Unassigned}+$/u, + matchSymbols, + "\\p{Unassigned}" +); +testPropertyEscapes( + /^\p{Cn}+$/u, + matchSymbols, + "\\p{Cn}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00038C, + 0x00085E, + 0x0009B2, + 0x0009D7, + 0x000A3C, + 0x000A51, + 0x000A5E, + 0x000AD0, + 0x000B9C, + 0x000BD0, + 0x000BD7, + 0x000C5D, + 0x000DBD, + 0x000DCA, + 0x000DD6, + 0x000E84, + 0x000EA5, + 0x000EC6, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x001940, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x002D27, + 0x002D2D, + 0x00A7D3, + 0x00FB3E, + 0x00FDCF, + 0x00FEFF, + 0x0101A0, + 0x010808, + 0x01083C, + 0x01093F, + 0x0110CD, + 0x011288, + 0x011350, + 0x011357, + 0x011909, + 0x011D3A, + 0x011FB0, + 0x01B132, + 0x01B155, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01E08F, + 0x01E2FF, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E, + 0x01F7F0, + 0x0E0001 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000377], + [0x00037A, 0x00037F], + [0x000384, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x00052F], + [0x000531, 0x000556], + [0x000559, 0x00058A], + [0x00058D, 0x00058F], + [0x000591, 0x0005C7], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F4], + [0x000600, 0x00070D], + [0x00070F, 0x00074A], + [0x00074D, 0x0007B1], + [0x0007C0, 0x0007FA], + [0x0007FD, 0x00082D], + [0x000830, 0x00083E], + [0x000840, 0x00085B], + [0x000860, 0x00086A], + [0x000870, 0x00088E], + [0x000890, 0x000891], + [0x000898, 0x000983], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009BC, 0x0009C4], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CE], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E3], + [0x0009E6, 0x0009FE], + [0x000A01, 0x000A03], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A3E, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A59, 0x000A5C], + [0x000A66, 0x000A76], + [0x000A81, 0x000A83], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000ABC, 0x000AC5], + [0x000AC7, 0x000AC9], + [0x000ACB, 0x000ACD], + [0x000AE0, 0x000AE3], + [0x000AE6, 0x000AF1], + [0x000AF9, 0x000AFF], + [0x000B01, 0x000B03], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B3C, 0x000B44], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4D], + [0x000B55, 0x000B57], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B63], + [0x000B66, 0x000B77], + [0x000B82, 0x000B83], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000BBE, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCD], + [0x000BE6, 0x000BFA], + [0x000C00, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C3C, 0x000C44], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C63], + [0x000C66, 0x000C6F], + [0x000C77, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CBC, 0x000CC4], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCD], + [0x000CD5, 0x000CD6], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE3], + [0x000CE6, 0x000CEF], + [0x000CF1, 0x000CF3], + [0x000D00, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D44], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4F], + [0x000D54, 0x000D63], + [0x000D66, 0x000D7F], + [0x000D81, 0x000D83], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000DCF, 0x000DD4], + [0x000DD8, 0x000DDF], + [0x000DE6, 0x000DEF], + [0x000DF2, 0x000DF4], + [0x000E01, 0x000E3A], + [0x000E3F, 0x000E5B], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EBD], + [0x000EC0, 0x000EC4], + [0x000EC8, 0x000ECE], + [0x000ED0, 0x000ED9], + [0x000EDC, 0x000EDF], + [0x000F00, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F71, 0x000F97], + [0x000F99, 0x000FBC], + [0x000FBE, 0x000FCC], + [0x000FCE, 0x000FDA], + [0x001000, 0x0010C5], + [0x0010D0, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x00135D, 0x00137C], + [0x001380, 0x001399], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001400, 0x00169C], + [0x0016A0, 0x0016F8], + [0x001700, 0x001715], + [0x00171F, 0x001736], + [0x001740, 0x001753], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001772, 0x001773], + [0x001780, 0x0017DD], + [0x0017E0, 0x0017E9], + [0x0017F0, 0x0017F9], + [0x001800, 0x001819], + [0x001820, 0x001878], + [0x001880, 0x0018AA], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001920, 0x00192B], + [0x001930, 0x00193B], + [0x001944, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x0019D0, 0x0019DA], + [0x0019DE, 0x001A1B], + [0x001A1E, 0x001A5E], + [0x001A60, 0x001A7C], + [0x001A7F, 0x001A89], + [0x001A90, 0x001A99], + [0x001AA0, 0x001AAD], + [0x001AB0, 0x001ACE], + [0x001B00, 0x001B4C], + [0x001B50, 0x001B7E], + [0x001B80, 0x001BF3], + [0x001BFC, 0x001C37], + [0x001C3B, 0x001C49], + [0x001C4D, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CC7], + [0x001CD0, 0x001CFA], + [0x001D00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FC4], + [0x001FC6, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FDD, 0x001FEF], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFE], + [0x002000, 0x002064], + [0x002066, 0x002071], + [0x002074, 0x00208E], + [0x002090, 0x00209C], + [0x0020A0, 0x0020C0], + [0x0020D0, 0x0020F0], + [0x002100, 0x00218B], + [0x002190, 0x002426], + [0x002440, 0x00244A], + [0x002460, 0x002B73], + [0x002B76, 0x002B95], + [0x002B97, 0x002CF3], + [0x002CF9, 0x002D25], + [0x002D30, 0x002D67], + [0x002D6F, 0x002D70], + [0x002D7F, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x002DE0, 0x002E5D], + [0x002E80, 0x002E99], + [0x002E9B, 0x002EF3], + [0x002F00, 0x002FD5], + [0x002FF0, 0x002FFB], + [0x003000, 0x00303F], + [0x003041, 0x003096], + [0x003099, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x003190, 0x0031E3], + [0x0031F0, 0x00321E], + [0x003220, 0x00A48C], + [0x00A490, 0x00A4C6], + [0x00A4D0, 0x00A62B], + [0x00A640, 0x00A6F7], + [0x00A700, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A82C], + [0x00A830, 0x00A839], + [0x00A840, 0x00A877], + [0x00A880, 0x00A8C5], + [0x00A8CE, 0x00A8D9], + [0x00A8E0, 0x00A953], + [0x00A95F, 0x00A97C], + [0x00A980, 0x00A9CD], + [0x00A9CF, 0x00A9D9], + [0x00A9DE, 0x00A9FE], + [0x00AA00, 0x00AA36], + [0x00AA40, 0x00AA4D], + [0x00AA50, 0x00AA59], + [0x00AA5C, 0x00AAC2], + [0x00AADB, 0x00AAF6], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB6B], + [0x00AB70, 0x00ABED], + [0x00ABF0, 0x00ABF9], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00D800, 0x00DBFF], + [0x00E000, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1D, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBC2], + [0x00FBD3, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FE19], + [0x00FE20, 0x00FE52], + [0x00FE54, 0x00FE66], + [0x00FE68, 0x00FE6B], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x00FF01, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x00FFE0, 0x00FFE6], + [0x00FFE8, 0x00FFEE], + [0x00FFF9, 0x00FFFD], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010100, 0x010102], + [0x010107, 0x010133], + [0x010137, 0x01018E], + [0x010190, 0x01019C], + [0x0101D0, 0x0101FD], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x0102E0, 0x0102FB], + [0x010300, 0x010323], + [0x01032D, 0x01034A], + [0x010350, 0x01037A], + [0x010380, 0x01039D], + [0x01039F, 0x0103C3], + [0x0103C8, 0x0103D5], + [0x010400, 0x01049D], + [0x0104A0, 0x0104A9], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x01056F, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010857, 0x01089E], + [0x0108A7, 0x0108AF], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x0108FB, 0x01091B], + [0x01091F, 0x010939], + [0x010980, 0x0109B7], + [0x0109BC, 0x0109CF], + [0x0109D2, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A38, 0x010A3A], + [0x010A3F, 0x010A48], + [0x010A50, 0x010A58], + [0x010A60, 0x010A9F], + [0x010AC0, 0x010AE6], + [0x010AEB, 0x010AF6], + [0x010B00, 0x010B35], + [0x010B39, 0x010B55], + [0x010B58, 0x010B72], + [0x010B78, 0x010B91], + [0x010B99, 0x010B9C], + [0x010BA9, 0x010BAF], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010CFA, 0x010D27], + [0x010D30, 0x010D39], + [0x010E60, 0x010E7E], + [0x010E80, 0x010EA9], + [0x010EAB, 0x010EAD], + [0x010EB0, 0x010EB1], + [0x010EFD, 0x010F27], + [0x010F30, 0x010F59], + [0x010F70, 0x010F89], + [0x010FB0, 0x010FCB], + [0x010FE0, 0x010FF6], + [0x011000, 0x01104D], + [0x011052, 0x011075], + [0x01107F, 0x0110C2], + [0x0110D0, 0x0110E8], + [0x0110F0, 0x0110F9], + [0x011100, 0x011134], + [0x011136, 0x011147], + [0x011150, 0x011176], + [0x011180, 0x0111DF], + [0x0111E1, 0x0111F4], + [0x011200, 0x011211], + [0x011213, 0x011241], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A9], + [0x0112B0, 0x0112EA], + [0x0112F0, 0x0112F9], + [0x011300, 0x011303], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01133B, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x01135D, 0x011363], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011400, 0x01145B], + [0x01145D, 0x011461], + [0x011480, 0x0114C7], + [0x0114D0, 0x0114D9], + [0x011580, 0x0115B5], + [0x0115B8, 0x0115DD], + [0x011600, 0x011644], + [0x011650, 0x011659], + [0x011660, 0x01166C], + [0x011680, 0x0116B9], + [0x0116C0, 0x0116C9], + [0x011700, 0x01171A], + [0x01171D, 0x01172B], + [0x011730, 0x011746], + [0x011800, 0x01183B], + [0x0118A0, 0x0118F2], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x011935], + [0x011937, 0x011938], + [0x01193B, 0x011946], + [0x011950, 0x011959], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D7], + [0x0119DA, 0x0119E4], + [0x011A00, 0x011A47], + [0x011A50, 0x011AA2], + [0x011AB0, 0x011AF8], + [0x011B00, 0x011B09], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C36], + [0x011C38, 0x011C45], + [0x011C50, 0x011C6C], + [0x011C70, 0x011C8F], + [0x011C92, 0x011CA7], + [0x011CA9, 0x011CB6], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D47], + [0x011D50, 0x011D59], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D8E], + [0x011D90, 0x011D91], + [0x011D93, 0x011D98], + [0x011DA0, 0x011DA9], + [0x011EE0, 0x011EF8], + [0x011F00, 0x011F10], + [0x011F12, 0x011F3A], + [0x011F3E, 0x011F59], + [0x011FC0, 0x011FF1], + [0x011FFF, 0x012399], + [0x012400, 0x01246E], + [0x012470, 0x012474], + [0x012480, 0x012543], + [0x012F90, 0x012FF2], + [0x013000, 0x013455], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A60, 0x016A69], + [0x016A6E, 0x016ABE], + [0x016AC0, 0x016AC9], + [0x016AD0, 0x016AED], + [0x016AF0, 0x016AF5], + [0x016B00, 0x016B45], + [0x016B50, 0x016B59], + [0x016B5B, 0x016B61], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E9A], + [0x016F00, 0x016F4A], + [0x016F4F, 0x016F87], + [0x016F8F, 0x016F9F], + [0x016FE0, 0x016FE4], + [0x016FF0, 0x016FF1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01BC9C, 0x01BCA3], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01CF50, 0x01CFC3], + [0x01D000, 0x01D0F5], + [0x01D100, 0x01D126], + [0x01D129, 0x01D1EA], + [0x01D200, 0x01D245], + [0x01D2C0, 0x01D2D3], + [0x01D2E0, 0x01D2F3], + [0x01D300, 0x01D356], + [0x01D360, 0x01D378], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D7CB], + [0x01D7CE, 0x01DA8B], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E130, 0x01E13D], + [0x01E140, 0x01E149], + [0x01E14E, 0x01E14F], + [0x01E290, 0x01E2AE], + [0x01E2C0, 0x01E2F9], + [0x01E4D0, 0x01E4F9], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E8C7, 0x01E8D6], + [0x01E900, 0x01E94B], + [0x01E950, 0x01E959], + [0x01E95E, 0x01E95F], + [0x01EC71, 0x01ECB4], + [0x01ED01, 0x01ED3D], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01EEF0, 0x01EEF1], + [0x01F000, 0x01F02B], + [0x01F030, 0x01F093], + [0x01F0A0, 0x01F0AE], + [0x01F0B1, 0x01F0BF], + [0x01F0C1, 0x01F0CF], + [0x01F0D1, 0x01F0F5], + [0x01F100, 0x01F1AD], + [0x01F1E6, 0x01F202], + [0x01F210, 0x01F23B], + [0x01F240, 0x01F248], + [0x01F250, 0x01F251], + [0x01F260, 0x01F265], + [0x01F300, 0x01F6D7], + [0x01F6DC, 0x01F6EC], + [0x01F6F0, 0x01F6FC], + [0x01F700, 0x01F776], + [0x01F77B, 0x01F7D9], + [0x01F7E0, 0x01F7EB], + [0x01F800, 0x01F80B], + [0x01F810, 0x01F847], + [0x01F850, 0x01F859], + [0x01F860, 0x01F887], + [0x01F890, 0x01F8AD], + [0x01F8B0, 0x01F8B1], + [0x01F900, 0x01FA53], + [0x01FA60, 0x01FA6D], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8], + [0x01FB00, 0x01FB92], + [0x01FB94, 0x01FBCA], + [0x01FBF0, 0x01FBF9], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF], + [0x0E0020, 0x0E007F], + [0x0E0100, 0x0E01EF], + [0x0F0000, 0x0FFFFD], + [0x100000, 0x10FFFD] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Unassigned}+$/u, + nonMatchSymbols, + "\\P{General_Category=Unassigned}" +); +testPropertyEscapes( + /^\P{General_Category=Cn}+$/u, + nonMatchSymbols, + "\\P{General_Category=Cn}" +); +testPropertyEscapes( + /^\P{gc=Unassigned}+$/u, + nonMatchSymbols, + "\\P{gc=Unassigned}" +); +testPropertyEscapes( + /^\P{gc=Cn}+$/u, + nonMatchSymbols, + "\\P{gc=Cn}" +); +testPropertyEscapes( + /^\P{Unassigned}+$/u, + nonMatchSymbols, + "\\P{Unassigned}" +); +testPropertyEscapes( + /^\P{Cn}+$/u, + nonMatchSymbols, + "\\P{Cn}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js new file mode 100644 index 0000000000..d3204204e4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/General_Category_-_Uppercase_Letter.js @@ -0,0 +1,1385 @@ +// Copyright 2022 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 for `General_Category=Uppercase_Letter` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000100, + 0x000102, + 0x000104, + 0x000106, + 0x000108, + 0x00010A, + 0x00010C, + 0x00010E, + 0x000110, + 0x000112, + 0x000114, + 0x000116, + 0x000118, + 0x00011A, + 0x00011C, + 0x00011E, + 0x000120, + 0x000122, + 0x000124, + 0x000126, + 0x000128, + 0x00012A, + 0x00012C, + 0x00012E, + 0x000130, + 0x000132, + 0x000134, + 0x000136, + 0x000139, + 0x00013B, + 0x00013D, + 0x00013F, + 0x000141, + 0x000143, + 0x000145, + 0x000147, + 0x00014A, + 0x00014C, + 0x00014E, + 0x000150, + 0x000152, + 0x000154, + 0x000156, + 0x000158, + 0x00015A, + 0x00015C, + 0x00015E, + 0x000160, + 0x000162, + 0x000164, + 0x000166, + 0x000168, + 0x00016A, + 0x00016C, + 0x00016E, + 0x000170, + 0x000172, + 0x000174, + 0x000176, + 0x00017B, + 0x00017D, + 0x000184, + 0x0001A2, + 0x0001A4, + 0x0001A9, + 0x0001AC, + 0x0001B5, + 0x0001BC, + 0x0001C4, + 0x0001C7, + 0x0001CA, + 0x0001CD, + 0x0001CF, + 0x0001D1, + 0x0001D3, + 0x0001D5, + 0x0001D7, + 0x0001D9, + 0x0001DB, + 0x0001DE, + 0x0001E0, + 0x0001E2, + 0x0001E4, + 0x0001E6, + 0x0001E8, + 0x0001EA, + 0x0001EC, + 0x0001EE, + 0x0001F1, + 0x0001F4, + 0x0001FA, + 0x0001FC, + 0x0001FE, + 0x000200, + 0x000202, + 0x000204, + 0x000206, + 0x000208, + 0x00020A, + 0x00020C, + 0x00020E, + 0x000210, + 0x000212, + 0x000214, + 0x000216, + 0x000218, + 0x00021A, + 0x00021C, + 0x00021E, + 0x000220, + 0x000222, + 0x000224, + 0x000226, + 0x000228, + 0x00022A, + 0x00022C, + 0x00022E, + 0x000230, + 0x000232, + 0x000241, + 0x000248, + 0x00024A, + 0x00024C, + 0x00024E, + 0x000370, + 0x000372, + 0x000376, + 0x00037F, + 0x000386, + 0x00038C, + 0x0003CF, + 0x0003D8, + 0x0003DA, + 0x0003DC, + 0x0003DE, + 0x0003E0, + 0x0003E2, + 0x0003E4, + 0x0003E6, + 0x0003E8, + 0x0003EA, + 0x0003EC, + 0x0003EE, + 0x0003F4, + 0x0003F7, + 0x000460, + 0x000462, + 0x000464, + 0x000466, + 0x000468, + 0x00046A, + 0x00046C, + 0x00046E, + 0x000470, + 0x000472, + 0x000474, + 0x000476, + 0x000478, + 0x00047A, + 0x00047C, + 0x00047E, + 0x000480, + 0x00048A, + 0x00048C, + 0x00048E, + 0x000490, + 0x000492, + 0x000494, + 0x000496, + 0x000498, + 0x00049A, + 0x00049C, + 0x00049E, + 0x0004A0, + 0x0004A2, + 0x0004A4, + 0x0004A6, + 0x0004A8, + 0x0004AA, + 0x0004AC, + 0x0004AE, + 0x0004B0, + 0x0004B2, + 0x0004B4, + 0x0004B6, + 0x0004B8, + 0x0004BA, + 0x0004BC, + 0x0004BE, + 0x0004C3, + 0x0004C5, + 0x0004C7, + 0x0004C9, + 0x0004CB, + 0x0004CD, + 0x0004D0, + 0x0004D2, + 0x0004D4, + 0x0004D6, + 0x0004D8, + 0x0004DA, + 0x0004DC, + 0x0004DE, + 0x0004E0, + 0x0004E2, + 0x0004E4, + 0x0004E6, + 0x0004E8, + 0x0004EA, + 0x0004EC, + 0x0004EE, + 0x0004F0, + 0x0004F2, + 0x0004F4, + 0x0004F6, + 0x0004F8, + 0x0004FA, + 0x0004FC, + 0x0004FE, + 0x000500, + 0x000502, + 0x000504, + 0x000506, + 0x000508, + 0x00050A, + 0x00050C, + 0x00050E, + 0x000510, + 0x000512, + 0x000514, + 0x000516, + 0x000518, + 0x00051A, + 0x00051C, + 0x00051E, + 0x000520, + 0x000522, + 0x000524, + 0x000526, + 0x000528, + 0x00052A, + 0x00052C, + 0x00052E, + 0x0010C7, + 0x0010CD, + 0x001E00, + 0x001E02, + 0x001E04, + 0x001E06, + 0x001E08, + 0x001E0A, + 0x001E0C, + 0x001E0E, + 0x001E10, + 0x001E12, + 0x001E14, + 0x001E16, + 0x001E18, + 0x001E1A, + 0x001E1C, + 0x001E1E, + 0x001E20, + 0x001E22, + 0x001E24, + 0x001E26, + 0x001E28, + 0x001E2A, + 0x001E2C, + 0x001E2E, + 0x001E30, + 0x001E32, + 0x001E34, + 0x001E36, + 0x001E38, + 0x001E3A, + 0x001E3C, + 0x001E3E, + 0x001E40, + 0x001E42, + 0x001E44, + 0x001E46, + 0x001E48, + 0x001E4A, + 0x001E4C, + 0x001E4E, + 0x001E50, + 0x001E52, + 0x001E54, + 0x001E56, + 0x001E58, + 0x001E5A, + 0x001E5C, + 0x001E5E, + 0x001E60, + 0x001E62, + 0x001E64, + 0x001E66, + 0x001E68, + 0x001E6A, + 0x001E6C, + 0x001E6E, + 0x001E70, + 0x001E72, + 0x001E74, + 0x001E76, + 0x001E78, + 0x001E7A, + 0x001E7C, + 0x001E7E, + 0x001E80, + 0x001E82, + 0x001E84, + 0x001E86, + 0x001E88, + 0x001E8A, + 0x001E8C, + 0x001E8E, + 0x001E90, + 0x001E92, + 0x001E94, + 0x001E9E, + 0x001EA0, + 0x001EA2, + 0x001EA4, + 0x001EA6, + 0x001EA8, + 0x001EAA, + 0x001EAC, + 0x001EAE, + 0x001EB0, + 0x001EB2, + 0x001EB4, + 0x001EB6, + 0x001EB8, + 0x001EBA, + 0x001EBC, + 0x001EBE, + 0x001EC0, + 0x001EC2, + 0x001EC4, + 0x001EC6, + 0x001EC8, + 0x001ECA, + 0x001ECC, + 0x001ECE, + 0x001ED0, + 0x001ED2, + 0x001ED4, + 0x001ED6, + 0x001ED8, + 0x001EDA, + 0x001EDC, + 0x001EDE, + 0x001EE0, + 0x001EE2, + 0x001EE4, + 0x001EE6, + 0x001EE8, + 0x001EEA, + 0x001EEC, + 0x001EEE, + 0x001EF0, + 0x001EF2, + 0x001EF4, + 0x001EF6, + 0x001EF8, + 0x001EFA, + 0x001EFC, + 0x001EFE, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001F5F, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x002145, + 0x002183, + 0x002C60, + 0x002C67, + 0x002C69, + 0x002C6B, + 0x002C72, + 0x002C75, + 0x002C82, + 0x002C84, + 0x002C86, + 0x002C88, + 0x002C8A, + 0x002C8C, + 0x002C8E, + 0x002C90, + 0x002C92, + 0x002C94, + 0x002C96, + 0x002C98, + 0x002C9A, + 0x002C9C, + 0x002C9E, + 0x002CA0, + 0x002CA2, + 0x002CA4, + 0x002CA6, + 0x002CA8, + 0x002CAA, + 0x002CAC, + 0x002CAE, + 0x002CB0, + 0x002CB2, + 0x002CB4, + 0x002CB6, + 0x002CB8, + 0x002CBA, + 0x002CBC, + 0x002CBE, + 0x002CC0, + 0x002CC2, + 0x002CC4, + 0x002CC6, + 0x002CC8, + 0x002CCA, + 0x002CCC, + 0x002CCE, + 0x002CD0, + 0x002CD2, + 0x002CD4, + 0x002CD6, + 0x002CD8, + 0x002CDA, + 0x002CDC, + 0x002CDE, + 0x002CE0, + 0x002CE2, + 0x002CEB, + 0x002CED, + 0x002CF2, + 0x00A640, + 0x00A642, + 0x00A644, + 0x00A646, + 0x00A648, + 0x00A64A, + 0x00A64C, + 0x00A64E, + 0x00A650, + 0x00A652, + 0x00A654, + 0x00A656, + 0x00A658, + 0x00A65A, + 0x00A65C, + 0x00A65E, + 0x00A660, + 0x00A662, + 0x00A664, + 0x00A666, + 0x00A668, + 0x00A66A, + 0x00A66C, + 0x00A680, + 0x00A682, + 0x00A684, + 0x00A686, + 0x00A688, + 0x00A68A, + 0x00A68C, + 0x00A68E, + 0x00A690, + 0x00A692, + 0x00A694, + 0x00A696, + 0x00A698, + 0x00A69A, + 0x00A722, + 0x00A724, + 0x00A726, + 0x00A728, + 0x00A72A, + 0x00A72C, + 0x00A72E, + 0x00A732, + 0x00A734, + 0x00A736, + 0x00A738, + 0x00A73A, + 0x00A73C, + 0x00A73E, + 0x00A740, + 0x00A742, + 0x00A744, + 0x00A746, + 0x00A748, + 0x00A74A, + 0x00A74C, + 0x00A74E, + 0x00A750, + 0x00A752, + 0x00A754, + 0x00A756, + 0x00A758, + 0x00A75A, + 0x00A75C, + 0x00A75E, + 0x00A760, + 0x00A762, + 0x00A764, + 0x00A766, + 0x00A768, + 0x00A76A, + 0x00A76C, + 0x00A76E, + 0x00A779, + 0x00A77B, + 0x00A780, + 0x00A782, + 0x00A784, + 0x00A786, + 0x00A78B, + 0x00A78D, + 0x00A790, + 0x00A792, + 0x00A796, + 0x00A798, + 0x00A79A, + 0x00A79C, + 0x00A79E, + 0x00A7A0, + 0x00A7A2, + 0x00A7A4, + 0x00A7A6, + 0x00A7A8, + 0x00A7B6, + 0x00A7B8, + 0x00A7BA, + 0x00A7BC, + 0x00A7BE, + 0x00A7C0, + 0x00A7C2, + 0x00A7C9, + 0x00A7D0, + 0x00A7D6, + 0x00A7D8, + 0x00A7F5, + 0x01D49C, + 0x01D4A2, + 0x01D546, + 0x01D7CA + ], + ranges: [ + [0x000041, 0x00005A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000DE], + [0x000178, 0x000179], + [0x000181, 0x000182], + [0x000186, 0x000187], + [0x000189, 0x00018B], + [0x00018E, 0x000191], + [0x000193, 0x000194], + [0x000196, 0x000198], + [0x00019C, 0x00019D], + [0x00019F, 0x0001A0], + [0x0001A6, 0x0001A7], + [0x0001AE, 0x0001AF], + [0x0001B1, 0x0001B3], + [0x0001B7, 0x0001B8], + [0x0001F6, 0x0001F8], + [0x00023A, 0x00023B], + [0x00023D, 0x00023E], + [0x000243, 0x000246], + [0x000388, 0x00038A], + [0x00038E, 0x00038F], + [0x000391, 0x0003A1], + [0x0003A3, 0x0003AB], + [0x0003D2, 0x0003D4], + [0x0003F9, 0x0003FA], + [0x0003FD, 0x00042F], + [0x0004C0, 0x0004C1], + [0x000531, 0x000556], + [0x0010A0, 0x0010C5], + [0x0013A0, 0x0013F5], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001F08, 0x001F0F], + [0x001F18, 0x001F1D], + [0x001F28, 0x001F2F], + [0x001F38, 0x001F3F], + [0x001F48, 0x001F4D], + [0x001F68, 0x001F6F], + [0x001FB8, 0x001FBB], + [0x001FC8, 0x001FCB], + [0x001FD8, 0x001FDB], + [0x001FE8, 0x001FEC], + [0x001FF8, 0x001FFB], + [0x00210B, 0x00210D], + [0x002110, 0x002112], + [0x002119, 0x00211D], + [0x00212A, 0x00212D], + [0x002130, 0x002133], + [0x00213E, 0x00213F], + [0x002C00, 0x002C2F], + [0x002C62, 0x002C64], + [0x002C6D, 0x002C70], + [0x002C7E, 0x002C80], + [0x00A77D, 0x00A77E], + [0x00A7AA, 0x00A7AE], + [0x00A7B0, 0x00A7B4], + [0x00A7C4, 0x00A7C7], + [0x00FF21, 0x00FF3A], + [0x010400, 0x010427], + [0x0104B0, 0x0104D3], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010C80, 0x010CB2], + [0x0118A0, 0x0118BF], + [0x016E40, 0x016E5F], + [0x01D400, 0x01D419], + [0x01D434, 0x01D44D], + [0x01D468, 0x01D481], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B5], + [0x01D4D0, 0x01D4E9], + [0x01D504, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D538, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D56C, 0x01D585], + [0x01D5A0, 0x01D5B9], + [0x01D5D4, 0x01D5ED], + [0x01D608, 0x01D621], + [0x01D63C, 0x01D655], + [0x01D670, 0x01D689], + [0x01D6A8, 0x01D6C0], + [0x01D6E2, 0x01D6FA], + [0x01D71C, 0x01D734], + [0x01D756, 0x01D76E], + [0x01D790, 0x01D7A8], + [0x01E900, 0x01E921] + ] +}); +testPropertyEscapes( + /^\p{General_Category=Uppercase_Letter}+$/u, + matchSymbols, + "\\p{General_Category=Uppercase_Letter}" +); +testPropertyEscapes( + /^\p{General_Category=Lu}+$/u, + matchSymbols, + "\\p{General_Category=Lu}" +); +testPropertyEscapes( + /^\p{gc=Uppercase_Letter}+$/u, + matchSymbols, + "\\p{gc=Uppercase_Letter}" +); +testPropertyEscapes( + /^\p{gc=Lu}+$/u, + matchSymbols, + "\\p{gc=Lu}" +); +testPropertyEscapes( + /^\p{Uppercase_Letter}+$/u, + matchSymbols, + "\\p{Uppercase_Letter}" +); +testPropertyEscapes( + /^\p{Lu}+$/u, + matchSymbols, + "\\p{Lu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x000101, + 0x000103, + 0x000105, + 0x000107, + 0x000109, + 0x00010B, + 0x00010D, + 0x00010F, + 0x000111, + 0x000113, + 0x000115, + 0x000117, + 0x000119, + 0x00011B, + 0x00011D, + 0x00011F, + 0x000121, + 0x000123, + 0x000125, + 0x000127, + 0x000129, + 0x00012B, + 0x00012D, + 0x00012F, + 0x000131, + 0x000133, + 0x000135, + 0x00013A, + 0x00013C, + 0x00013E, + 0x000140, + 0x000142, + 0x000144, + 0x000146, + 0x00014B, + 0x00014D, + 0x00014F, + 0x000151, + 0x000153, + 0x000155, + 0x000157, + 0x000159, + 0x00015B, + 0x00015D, + 0x00015F, + 0x000161, + 0x000163, + 0x000165, + 0x000167, + 0x000169, + 0x00016B, + 0x00016D, + 0x00016F, + 0x000171, + 0x000173, + 0x000175, + 0x000177, + 0x00017A, + 0x00017C, + 0x000183, + 0x000185, + 0x000188, + 0x000192, + 0x000195, + 0x00019E, + 0x0001A1, + 0x0001A3, + 0x0001A5, + 0x0001A8, + 0x0001AD, + 0x0001B0, + 0x0001B4, + 0x0001B6, + 0x0001CE, + 0x0001D0, + 0x0001D2, + 0x0001D4, + 0x0001D6, + 0x0001D8, + 0x0001DA, + 0x0001DF, + 0x0001E1, + 0x0001E3, + 0x0001E5, + 0x0001E7, + 0x0001E9, + 0x0001EB, + 0x0001ED, + 0x0001F5, + 0x0001F9, + 0x0001FB, + 0x0001FD, + 0x0001FF, + 0x000201, + 0x000203, + 0x000205, + 0x000207, + 0x000209, + 0x00020B, + 0x00020D, + 0x00020F, + 0x000211, + 0x000213, + 0x000215, + 0x000217, + 0x000219, + 0x00021B, + 0x00021D, + 0x00021F, + 0x000221, + 0x000223, + 0x000225, + 0x000227, + 0x000229, + 0x00022B, + 0x00022D, + 0x00022F, + 0x000231, + 0x00023C, + 0x000242, + 0x000247, + 0x000249, + 0x00024B, + 0x00024D, + 0x000371, + 0x000387, + 0x00038B, + 0x00038D, + 0x000390, + 0x0003A2, + 0x0003D9, + 0x0003DB, + 0x0003DD, + 0x0003DF, + 0x0003E1, + 0x0003E3, + 0x0003E5, + 0x0003E7, + 0x0003E9, + 0x0003EB, + 0x0003ED, + 0x0003F8, + 0x000461, + 0x000463, + 0x000465, + 0x000467, + 0x000469, + 0x00046B, + 0x00046D, + 0x00046F, + 0x000471, + 0x000473, + 0x000475, + 0x000477, + 0x000479, + 0x00047B, + 0x00047D, + 0x00047F, + 0x00048B, + 0x00048D, + 0x00048F, + 0x000491, + 0x000493, + 0x000495, + 0x000497, + 0x000499, + 0x00049B, + 0x00049D, + 0x00049F, + 0x0004A1, + 0x0004A3, + 0x0004A5, + 0x0004A7, + 0x0004A9, + 0x0004AB, + 0x0004AD, + 0x0004AF, + 0x0004B1, + 0x0004B3, + 0x0004B5, + 0x0004B7, + 0x0004B9, + 0x0004BB, + 0x0004BD, + 0x0004BF, + 0x0004C2, + 0x0004C4, + 0x0004C6, + 0x0004C8, + 0x0004CA, + 0x0004CC, + 0x0004D1, + 0x0004D3, + 0x0004D5, + 0x0004D7, + 0x0004D9, + 0x0004DB, + 0x0004DD, + 0x0004DF, + 0x0004E1, + 0x0004E3, + 0x0004E5, + 0x0004E7, + 0x0004E9, + 0x0004EB, + 0x0004ED, + 0x0004EF, + 0x0004F1, + 0x0004F3, + 0x0004F5, + 0x0004F7, + 0x0004F9, + 0x0004FB, + 0x0004FD, + 0x0004FF, + 0x000501, + 0x000503, + 0x000505, + 0x000507, + 0x000509, + 0x00050B, + 0x00050D, + 0x00050F, + 0x000511, + 0x000513, + 0x000515, + 0x000517, + 0x000519, + 0x00051B, + 0x00051D, + 0x00051F, + 0x000521, + 0x000523, + 0x000525, + 0x000527, + 0x000529, + 0x00052B, + 0x00052D, + 0x0010C6, + 0x001E01, + 0x001E03, + 0x001E05, + 0x001E07, + 0x001E09, + 0x001E0B, + 0x001E0D, + 0x001E0F, + 0x001E11, + 0x001E13, + 0x001E15, + 0x001E17, + 0x001E19, + 0x001E1B, + 0x001E1D, + 0x001E1F, + 0x001E21, + 0x001E23, + 0x001E25, + 0x001E27, + 0x001E29, + 0x001E2B, + 0x001E2D, + 0x001E2F, + 0x001E31, + 0x001E33, + 0x001E35, + 0x001E37, + 0x001E39, + 0x001E3B, + 0x001E3D, + 0x001E3F, + 0x001E41, + 0x001E43, + 0x001E45, + 0x001E47, + 0x001E49, + 0x001E4B, + 0x001E4D, + 0x001E4F, + 0x001E51, + 0x001E53, + 0x001E55, + 0x001E57, + 0x001E59, + 0x001E5B, + 0x001E5D, + 0x001E5F, + 0x001E61, + 0x001E63, + 0x001E65, + 0x001E67, + 0x001E69, + 0x001E6B, + 0x001E6D, + 0x001E6F, + 0x001E71, + 0x001E73, + 0x001E75, + 0x001E77, + 0x001E79, + 0x001E7B, + 0x001E7D, + 0x001E7F, + 0x001E81, + 0x001E83, + 0x001E85, + 0x001E87, + 0x001E89, + 0x001E8B, + 0x001E8D, + 0x001E8F, + 0x001E91, + 0x001E93, + 0x001E9F, + 0x001EA1, + 0x001EA3, + 0x001EA5, + 0x001EA7, + 0x001EA9, + 0x001EAB, + 0x001EAD, + 0x001EAF, + 0x001EB1, + 0x001EB3, + 0x001EB5, + 0x001EB7, + 0x001EB9, + 0x001EBB, + 0x001EBD, + 0x001EBF, + 0x001EC1, + 0x001EC3, + 0x001EC5, + 0x001EC7, + 0x001EC9, + 0x001ECB, + 0x001ECD, + 0x001ECF, + 0x001ED1, + 0x001ED3, + 0x001ED5, + 0x001ED7, + 0x001ED9, + 0x001EDB, + 0x001EDD, + 0x001EDF, + 0x001EE1, + 0x001EE3, + 0x001EE5, + 0x001EE7, + 0x001EE9, + 0x001EEB, + 0x001EED, + 0x001EEF, + 0x001EF1, + 0x001EF3, + 0x001EF5, + 0x001EF7, + 0x001EF9, + 0x001EFB, + 0x001EFD, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x002125, + 0x002127, + 0x002129, + 0x002C61, + 0x002C68, + 0x002C6A, + 0x002C6C, + 0x002C71, + 0x002C81, + 0x002C83, + 0x002C85, + 0x002C87, + 0x002C89, + 0x002C8B, + 0x002C8D, + 0x002C8F, + 0x002C91, + 0x002C93, + 0x002C95, + 0x002C97, + 0x002C99, + 0x002C9B, + 0x002C9D, + 0x002C9F, + 0x002CA1, + 0x002CA3, + 0x002CA5, + 0x002CA7, + 0x002CA9, + 0x002CAB, + 0x002CAD, + 0x002CAF, + 0x002CB1, + 0x002CB3, + 0x002CB5, + 0x002CB7, + 0x002CB9, + 0x002CBB, + 0x002CBD, + 0x002CBF, + 0x002CC1, + 0x002CC3, + 0x002CC5, + 0x002CC7, + 0x002CC9, + 0x002CCB, + 0x002CCD, + 0x002CCF, + 0x002CD1, + 0x002CD3, + 0x002CD5, + 0x002CD7, + 0x002CD9, + 0x002CDB, + 0x002CDD, + 0x002CDF, + 0x002CE1, + 0x002CEC, + 0x00A641, + 0x00A643, + 0x00A645, + 0x00A647, + 0x00A649, + 0x00A64B, + 0x00A64D, + 0x00A64F, + 0x00A651, + 0x00A653, + 0x00A655, + 0x00A657, + 0x00A659, + 0x00A65B, + 0x00A65D, + 0x00A65F, + 0x00A661, + 0x00A663, + 0x00A665, + 0x00A667, + 0x00A669, + 0x00A66B, + 0x00A681, + 0x00A683, + 0x00A685, + 0x00A687, + 0x00A689, + 0x00A68B, + 0x00A68D, + 0x00A68F, + 0x00A691, + 0x00A693, + 0x00A695, + 0x00A697, + 0x00A699, + 0x00A723, + 0x00A725, + 0x00A727, + 0x00A729, + 0x00A72B, + 0x00A72D, + 0x00A733, + 0x00A735, + 0x00A737, + 0x00A739, + 0x00A73B, + 0x00A73D, + 0x00A73F, + 0x00A741, + 0x00A743, + 0x00A745, + 0x00A747, + 0x00A749, + 0x00A74B, + 0x00A74D, + 0x00A74F, + 0x00A751, + 0x00A753, + 0x00A755, + 0x00A757, + 0x00A759, + 0x00A75B, + 0x00A75D, + 0x00A75F, + 0x00A761, + 0x00A763, + 0x00A765, + 0x00A767, + 0x00A769, + 0x00A76B, + 0x00A76D, + 0x00A77A, + 0x00A77C, + 0x00A77F, + 0x00A781, + 0x00A783, + 0x00A785, + 0x00A78C, + 0x00A791, + 0x00A797, + 0x00A799, + 0x00A79B, + 0x00A79D, + 0x00A79F, + 0x00A7A1, + 0x00A7A3, + 0x00A7A5, + 0x00A7A7, + 0x00A7A9, + 0x00A7AF, + 0x00A7B5, + 0x00A7B7, + 0x00A7B9, + 0x00A7BB, + 0x00A7BD, + 0x00A7BF, + 0x00A7C1, + 0x00A7C3, + 0x00A7C8, + 0x00A7D7, + 0x01057B, + 0x01058B, + 0x010593, + 0x01D49D, + 0x01D4AD, + 0x01D506, + 0x01D515, + 0x01D53A, + 0x01D53F, + 0x01D545 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x0000BF], + [0x0000DF, 0x0000FF], + [0x000137, 0x000138], + [0x000148, 0x000149], + [0x00017E, 0x000180], + [0x00018C, 0x00018D], + [0x000199, 0x00019B], + [0x0001AA, 0x0001AB], + [0x0001B9, 0x0001BB], + [0x0001BD, 0x0001C3], + [0x0001C5, 0x0001C6], + [0x0001C8, 0x0001C9], + [0x0001CB, 0x0001CC], + [0x0001DC, 0x0001DD], + [0x0001EF, 0x0001F0], + [0x0001F2, 0x0001F3], + [0x000233, 0x000239], + [0x00023F, 0x000240], + [0x00024F, 0x00036F], + [0x000373, 0x000375], + [0x000377, 0x00037E], + [0x000380, 0x000385], + [0x0003AC, 0x0003CE], + [0x0003D0, 0x0003D1], + [0x0003D5, 0x0003D7], + [0x0003EF, 0x0003F3], + [0x0003F5, 0x0003F6], + [0x0003FB, 0x0003FC], + [0x000430, 0x00045F], + [0x000481, 0x000489], + [0x0004CE, 0x0004CF], + [0x00052F, 0x000530], + [0x000557, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x00139F], + [0x0013F6, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001DFF], + [0x001E95, 0x001E9D], + [0x001EFF, 0x001F07], + [0x001F10, 0x001F17], + [0x001F1E, 0x001F27], + [0x001F30, 0x001F37], + [0x001F40, 0x001F47], + [0x001F4E, 0x001F58], + [0x001F60, 0x001F67], + [0x001F70, 0x001FB7], + [0x001FBC, 0x001FC7], + [0x001FCC, 0x001FD7], + [0x001FDC, 0x001FE7], + [0x001FED, 0x001FF7], + [0x001FFC, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x00210A], + [0x00210E, 0x00210F], + [0x002113, 0x002114], + [0x002116, 0x002118], + [0x00211E, 0x002123], + [0x00212E, 0x00212F], + [0x002134, 0x00213D], + [0x002140, 0x002144], + [0x002146, 0x002182], + [0x002184, 0x002BFF], + [0x002C30, 0x002C5F], + [0x002C65, 0x002C66], + [0x002C73, 0x002C74], + [0x002C76, 0x002C7D], + [0x002CE3, 0x002CEA], + [0x002CEE, 0x002CF1], + [0x002CF3, 0x00A63F], + [0x00A66D, 0x00A67F], + [0x00A69B, 0x00A721], + [0x00A72F, 0x00A731], + [0x00A76F, 0x00A778], + [0x00A787, 0x00A78A], + [0x00A78E, 0x00A78F], + [0x00A793, 0x00A795], + [0x00A7CA, 0x00A7CF], + [0x00A7D1, 0x00A7D5], + [0x00A7D9, 0x00A7F4], + [0x00A7F6, 0x00DBFF], + [0x00E000, 0x00FF20], + [0x00FF3B, 0x0103FF], + [0x010428, 0x0104AF], + [0x0104D4, 0x01056F], + [0x010596, 0x010C7F], + [0x010CB3, 0x01189F], + [0x0118C0, 0x016E3F], + [0x016E60, 0x01D3FF], + [0x01D41A, 0x01D433], + [0x01D44E, 0x01D467], + [0x01D482, 0x01D49B], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D4B6, 0x01D4CF], + [0x01D4EA, 0x01D503], + [0x01D50B, 0x01D50C], + [0x01D51D, 0x01D537], + [0x01D547, 0x01D549], + [0x01D551, 0x01D56B], + [0x01D586, 0x01D59F], + [0x01D5BA, 0x01D5D3], + [0x01D5EE, 0x01D607], + [0x01D622, 0x01D63B], + [0x01D656, 0x01D66F], + [0x01D68A, 0x01D6A7], + [0x01D6C1, 0x01D6E1], + [0x01D6FB, 0x01D71B], + [0x01D735, 0x01D755], + [0x01D76F, 0x01D78F], + [0x01D7A9, 0x01D7C9], + [0x01D7CB, 0x01E8FF], + [0x01E922, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{General_Category=Uppercase_Letter}+$/u, + nonMatchSymbols, + "\\P{General_Category=Uppercase_Letter}" +); +testPropertyEscapes( + /^\P{General_Category=Lu}+$/u, + nonMatchSymbols, + "\\P{General_Category=Lu}" +); +testPropertyEscapes( + /^\P{gc=Uppercase_Letter}+$/u, + nonMatchSymbols, + "\\P{gc=Uppercase_Letter}" +); +testPropertyEscapes( + /^\P{gc=Lu}+$/u, + nonMatchSymbols, + "\\P{gc=Lu}" +); +testPropertyEscapes( + /^\P{Uppercase_Letter}+$/u, + nonMatchSymbols, + "\\P{Uppercase_Letter}" +); +testPropertyEscapes( + /^\P{Lu}+$/u, + nonMatchSymbols, + "\\P{Lu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js new file mode 100644 index 0000000000..ff0cb8b09f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Grapheme_Base.js @@ -0,0 +1,1803 @@ +// Copyright 2022 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 for `Grapheme_Base` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00038C, + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x00061B, + 0x0006DE, + 0x0006E9, + 0x000710, + 0x0007B1, + 0x00081A, + 0x000824, + 0x000828, + 0x00085E, + 0x00093B, + 0x0009B2, + 0x0009BD, + 0x0009CE, + 0x000A03, + 0x000A5E, + 0x000A76, + 0x000A83, + 0x000AC9, + 0x000AD0, + 0x000AF9, + 0x000B3D, + 0x000B40, + 0x000B83, + 0x000B9C, + 0x000BBF, + 0x000BD0, + 0x000C3D, + 0x000C5D, + 0x000D3D, + 0x000DBD, + 0x000E84, + 0x000EA5, + 0x000EBD, + 0x000EC6, + 0x000F36, + 0x000F38, + 0x000F7F, + 0x000F85, + 0x001031, + 0x001038, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x001715, + 0x0017B6, + 0x0018AA, + 0x001940, + 0x001A57, + 0x001A61, + 0x001B3B, + 0x001BAA, + 0x001BE7, + 0x001BEE, + 0x001CD3, + 0x001CE1, + 0x001CFA, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x002D27, + 0x002D2D, + 0x00A673, + 0x00A7D3, + 0x00AA4D, + 0x00AAB1, + 0x00AAC0, + 0x00AAC2, + 0x00FB1D, + 0x00FB3E, + 0x00FDCF, + 0x0101A0, + 0x010808, + 0x01083C, + 0x01093F, + 0x010EAD, + 0x011000, + 0x011075, + 0x01112C, + 0x011235, + 0x011288, + 0x01133D, + 0x01133F, + 0x011350, + 0x011445, + 0x01145D, + 0x0114B9, + 0x0114BE, + 0x0114C1, + 0x0115BE, + 0x01163E, + 0x0116AC, + 0x0116B6, + 0x011726, + 0x011838, + 0x01183B, + 0x011909, + 0x01193D, + 0x011A00, + 0x011A50, + 0x011A97, + 0x011C3E, + 0x011CA9, + 0x011CB1, + 0x011CB4, + 0x011D46, + 0x011D96, + 0x011D98, + 0x011F41, + 0x011FB0, + 0x016AF5, + 0x01B132, + 0x01B155, + 0x01BC9C, + 0x01BC9F, + 0x01D166, + 0x01D245, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01E2FF, + 0x01E94B, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E, + 0x01F7F0 + ], + ranges: [ + [0x000020, 0x00007E], + [0x0000A0, 0x0000AC], + [0x0000AE, 0x0002FF], + [0x000370, 0x000377], + [0x00037A, 0x00037F], + [0x000384, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x000482], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000559, 0x00058A], + [0x00058D, 0x00058F], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F4], + [0x000606, 0x00060F], + [0x00061D, 0x00064A], + [0x000660, 0x00066F], + [0x000671, 0x0006D5], + [0x0006E5, 0x0006E6], + [0x0006EE, 0x00070D], + [0x000712, 0x00072F], + [0x00074D, 0x0007A5], + [0x0007C0, 0x0007EA], + [0x0007F4, 0x0007FA], + [0x0007FE, 0x000815], + [0x000830, 0x00083E], + [0x000840, 0x000858], + [0x000860, 0x00086A], + [0x000870, 0x00088E], + [0x0008A0, 0x0008C9], + [0x000903, 0x000939], + [0x00093D, 0x000940], + [0x000949, 0x00094C], + [0x00094E, 0x000950], + [0x000958, 0x000961], + [0x000964, 0x000980], + [0x000982, 0x000983], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009BF, 0x0009C0], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CC], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E1], + [0x0009E6, 0x0009FD], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A3E, 0x000A40], + [0x000A59, 0x000A5C], + [0x000A66, 0x000A6F], + [0x000A72, 0x000A74], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000ABD, 0x000AC0], + [0x000ACB, 0x000ACC], + [0x000AE0, 0x000AE1], + [0x000AE6, 0x000AF1], + [0x000B02, 0x000B03], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4C], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B61], + [0x000B66, 0x000B77], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000BC1, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCC], + [0x000BE6, 0x000BFA], + [0x000C01, 0x000C03], + [0x000C05, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C41, 0x000C44], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C61], + [0x000C66, 0x000C6F], + [0x000C77, 0x000C80], + [0x000C82, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CBD, 0x000CBE], + [0x000CC0, 0x000CC1], + [0x000CC3, 0x000CC4], + [0x000CC7, 0x000CC8], + [0x000CCA, 0x000CCB], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE1], + [0x000CE6, 0x000CEF], + [0x000CF1, 0x000CF3], + [0x000D02, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D3A], + [0x000D3F, 0x000D40], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4C], + [0x000D4E, 0x000D4F], + [0x000D54, 0x000D56], + [0x000D58, 0x000D61], + [0x000D66, 0x000D7F], + [0x000D82, 0x000D83], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000DD0, 0x000DD1], + [0x000DD8, 0x000DDE], + [0x000DE6, 0x000DEF], + [0x000DF2, 0x000DF4], + [0x000E01, 0x000E30], + [0x000E32, 0x000E33], + [0x000E3F, 0x000E46], + [0x000E4F, 0x000E5B], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EB0], + [0x000EB2, 0x000EB3], + [0x000EC0, 0x000EC4], + [0x000ED0, 0x000ED9], + [0x000EDC, 0x000EDF], + [0x000F00, 0x000F17], + [0x000F1A, 0x000F34], + [0x000F3A, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F88, 0x000F8C], + [0x000FBE, 0x000FC5], + [0x000FC7, 0x000FCC], + [0x000FCE, 0x000FDA], + [0x001000, 0x00102C], + [0x00103B, 0x00103C], + [0x00103F, 0x001057], + [0x00105A, 0x00105D], + [0x001061, 0x001070], + [0x001075, 0x001081], + [0x001083, 0x001084], + [0x001087, 0x00108C], + [0x00108E, 0x00109C], + [0x00109E, 0x0010C5], + [0x0010D0, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x001360, 0x00137C], + [0x001380, 0x001399], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001400, 0x00169C], + [0x0016A0, 0x0016F8], + [0x001700, 0x001711], + [0x00171F, 0x001731], + [0x001734, 0x001736], + [0x001740, 0x001751], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001780, 0x0017B3], + [0x0017BE, 0x0017C5], + [0x0017C7, 0x0017C8], + [0x0017D4, 0x0017DC], + [0x0017E0, 0x0017E9], + [0x0017F0, 0x0017F9], + [0x001800, 0x00180A], + [0x001810, 0x001819], + [0x001820, 0x001878], + [0x001880, 0x001884], + [0x001887, 0x0018A8], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001923, 0x001926], + [0x001929, 0x00192B], + [0x001930, 0x001931], + [0x001933, 0x001938], + [0x001944, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x0019D0, 0x0019DA], + [0x0019DE, 0x001A16], + [0x001A19, 0x001A1A], + [0x001A1E, 0x001A55], + [0x001A63, 0x001A64], + [0x001A6D, 0x001A72], + [0x001A80, 0x001A89], + [0x001A90, 0x001A99], + [0x001AA0, 0x001AAD], + [0x001B04, 0x001B33], + [0x001B3D, 0x001B41], + [0x001B43, 0x001B4C], + [0x001B50, 0x001B6A], + [0x001B74, 0x001B7E], + [0x001B82, 0x001BA1], + [0x001BA6, 0x001BA7], + [0x001BAE, 0x001BE5], + [0x001BEA, 0x001BEC], + [0x001BF2, 0x001BF3], + [0x001BFC, 0x001C2B], + [0x001C34, 0x001C35], + [0x001C3B, 0x001C49], + [0x001C4D, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CC7], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF7], + [0x001D00, 0x001DBF], + [0x001E00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FC4], + [0x001FC6, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FDD, 0x001FEF], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFE], + [0x002000, 0x00200A], + [0x002010, 0x002027], + [0x00202F, 0x00205F], + [0x002070, 0x002071], + [0x002074, 0x00208E], + [0x002090, 0x00209C], + [0x0020A0, 0x0020C0], + [0x002100, 0x00218B], + [0x002190, 0x002426], + [0x002440, 0x00244A], + [0x002460, 0x002B73], + [0x002B76, 0x002B95], + [0x002B97, 0x002CEE], + [0x002CF2, 0x002CF3], + [0x002CF9, 0x002D25], + [0x002D30, 0x002D67], + [0x002D6F, 0x002D70], + [0x002D80, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x002E00, 0x002E5D], + [0x002E80, 0x002E99], + [0x002E9B, 0x002EF3], + [0x002F00, 0x002FD5], + [0x002FF0, 0x002FFB], + [0x003000, 0x003029], + [0x003030, 0x00303F], + [0x003041, 0x003096], + [0x00309B, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x003190, 0x0031E3], + [0x0031F0, 0x00321E], + [0x003220, 0x00A48C], + [0x00A490, 0x00A4C6], + [0x00A4D0, 0x00A62B], + [0x00A640, 0x00A66E], + [0x00A67E, 0x00A69D], + [0x00A6A0, 0x00A6EF], + [0x00A6F2, 0x00A6F7], + [0x00A700, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A801], + [0x00A803, 0x00A805], + [0x00A807, 0x00A80A], + [0x00A80C, 0x00A824], + [0x00A827, 0x00A82B], + [0x00A830, 0x00A839], + [0x00A840, 0x00A877], + [0x00A880, 0x00A8C3], + [0x00A8CE, 0x00A8D9], + [0x00A8F2, 0x00A8FE], + [0x00A900, 0x00A925], + [0x00A92E, 0x00A946], + [0x00A952, 0x00A953], + [0x00A95F, 0x00A97C], + [0x00A983, 0x00A9B2], + [0x00A9B4, 0x00A9B5], + [0x00A9BA, 0x00A9BB], + [0x00A9BE, 0x00A9CD], + [0x00A9CF, 0x00A9D9], + [0x00A9DE, 0x00A9E4], + [0x00A9E6, 0x00A9FE], + [0x00AA00, 0x00AA28], + [0x00AA2F, 0x00AA30], + [0x00AA33, 0x00AA34], + [0x00AA40, 0x00AA42], + [0x00AA44, 0x00AA4B], + [0x00AA50, 0x00AA59], + [0x00AA5C, 0x00AA7B], + [0x00AA7D, 0x00AAAF], + [0x00AAB5, 0x00AAB6], + [0x00AAB9, 0x00AABD], + [0x00AADB, 0x00AAEB], + [0x00AAEE, 0x00AAF5], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB6B], + [0x00AB70, 0x00ABE4], + [0x00ABE6, 0x00ABE7], + [0x00ABE9, 0x00ABEC], + [0x00ABF0, 0x00ABF9], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1F, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBC2], + [0x00FBD3, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDFF], + [0x00FE10, 0x00FE19], + [0x00FE30, 0x00FE52], + [0x00FE54, 0x00FE66], + [0x00FE68, 0x00FE6B], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x00FF01, 0x00FF9D], + [0x00FFA0, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x00FFE0, 0x00FFE6], + [0x00FFE8, 0x00FFEE], + [0x00FFFC, 0x00FFFD], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010100, 0x010102], + [0x010107, 0x010133], + [0x010137, 0x01018E], + [0x010190, 0x01019C], + [0x0101D0, 0x0101FC], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x0102E1, 0x0102FB], + [0x010300, 0x010323], + [0x01032D, 0x01034A], + [0x010350, 0x010375], + [0x010380, 0x01039D], + [0x01039F, 0x0103C3], + [0x0103C8, 0x0103D5], + [0x010400, 0x01049D], + [0x0104A0, 0x0104A9], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x01056F, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010857, 0x01089E], + [0x0108A7, 0x0108AF], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x0108FB, 0x01091B], + [0x01091F, 0x010939], + [0x010980, 0x0109B7], + [0x0109BC, 0x0109CF], + [0x0109D2, 0x010A00], + [0x010A10, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A40, 0x010A48], + [0x010A50, 0x010A58], + [0x010A60, 0x010A9F], + [0x010AC0, 0x010AE4], + [0x010AEB, 0x010AF6], + [0x010B00, 0x010B35], + [0x010B39, 0x010B55], + [0x010B58, 0x010B72], + [0x010B78, 0x010B91], + [0x010B99, 0x010B9C], + [0x010BA9, 0x010BAF], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010CFA, 0x010D23], + [0x010D30, 0x010D39], + [0x010E60, 0x010E7E], + [0x010E80, 0x010EA9], + [0x010EB0, 0x010EB1], + [0x010F00, 0x010F27], + [0x010F30, 0x010F45], + [0x010F51, 0x010F59], + [0x010F70, 0x010F81], + [0x010F86, 0x010F89], + [0x010FB0, 0x010FCB], + [0x010FE0, 0x010FF6], + [0x011002, 0x011037], + [0x011047, 0x01104D], + [0x011052, 0x01106F], + [0x011071, 0x011072], + [0x011082, 0x0110B2], + [0x0110B7, 0x0110B8], + [0x0110BB, 0x0110BC], + [0x0110BE, 0x0110C1], + [0x0110D0, 0x0110E8], + [0x0110F0, 0x0110F9], + [0x011103, 0x011126], + [0x011136, 0x011147], + [0x011150, 0x011172], + [0x011174, 0x011176], + [0x011182, 0x0111B5], + [0x0111BF, 0x0111C8], + [0x0111CD, 0x0111CE], + [0x0111D0, 0x0111DF], + [0x0111E1, 0x0111F4], + [0x011200, 0x011211], + [0x011213, 0x01122E], + [0x011232, 0x011233], + [0x011238, 0x01123D], + [0x01123F, 0x011240], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A9], + [0x0112B0, 0x0112DE], + [0x0112E0, 0x0112E2], + [0x0112F0, 0x0112F9], + [0x011302, 0x011303], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x011341, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x01135D, 0x011363], + [0x011400, 0x011437], + [0x011440, 0x011441], + [0x011447, 0x01145B], + [0x01145F, 0x011461], + [0x011480, 0x0114AF], + [0x0114B1, 0x0114B2], + [0x0114BB, 0x0114BC], + [0x0114C4, 0x0114C7], + [0x0114D0, 0x0114D9], + [0x011580, 0x0115AE], + [0x0115B0, 0x0115B1], + [0x0115B8, 0x0115BB], + [0x0115C1, 0x0115DB], + [0x011600, 0x011632], + [0x01163B, 0x01163C], + [0x011641, 0x011644], + [0x011650, 0x011659], + [0x011660, 0x01166C], + [0x011680, 0x0116AA], + [0x0116AE, 0x0116AF], + [0x0116B8, 0x0116B9], + [0x0116C0, 0x0116C9], + [0x011700, 0x01171A], + [0x011720, 0x011721], + [0x011730, 0x011746], + [0x011800, 0x01182E], + [0x0118A0, 0x0118F2], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x01192F], + [0x011931, 0x011935], + [0x011937, 0x011938], + [0x01193F, 0x011942], + [0x011944, 0x011946], + [0x011950, 0x011959], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D3], + [0x0119DC, 0x0119DF], + [0x0119E1, 0x0119E4], + [0x011A0B, 0x011A32], + [0x011A39, 0x011A3A], + [0x011A3F, 0x011A46], + [0x011A57, 0x011A58], + [0x011A5C, 0x011A89], + [0x011A9A, 0x011AA2], + [0x011AB0, 0x011AF8], + [0x011B00, 0x011B09], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C2F], + [0x011C40, 0x011C45], + [0x011C50, 0x011C6C], + [0x011C70, 0x011C8F], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D30], + [0x011D50, 0x011D59], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D8E], + [0x011D93, 0x011D94], + [0x011DA0, 0x011DA9], + [0x011EE0, 0x011EF2], + [0x011EF5, 0x011EF8], + [0x011F02, 0x011F10], + [0x011F12, 0x011F35], + [0x011F3E, 0x011F3F], + [0x011F43, 0x011F59], + [0x011FC0, 0x011FF1], + [0x011FFF, 0x012399], + [0x012400, 0x01246E], + [0x012470, 0x012474], + [0x012480, 0x012543], + [0x012F90, 0x012FF2], + [0x013000, 0x01342F], + [0x013441, 0x013446], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A60, 0x016A69], + [0x016A6E, 0x016ABE], + [0x016AC0, 0x016AC9], + [0x016AD0, 0x016AED], + [0x016B00, 0x016B2F], + [0x016B37, 0x016B45], + [0x016B50, 0x016B59], + [0x016B5B, 0x016B61], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E9A], + [0x016F00, 0x016F4A], + [0x016F50, 0x016F87], + [0x016F93, 0x016F9F], + [0x016FE0, 0x016FE3], + [0x016FF0, 0x016FF1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01CF50, 0x01CFC3], + [0x01D000, 0x01D0F5], + [0x01D100, 0x01D126], + [0x01D129, 0x01D164], + [0x01D16A, 0x01D16D], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D1EA], + [0x01D200, 0x01D241], + [0x01D2C0, 0x01D2D3], + [0x01D2E0, 0x01D2F3], + [0x01D300, 0x01D356], + [0x01D360, 0x01D378], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D7CB], + [0x01D7CE, 0x01D9FF], + [0x01DA37, 0x01DA3A], + [0x01DA6D, 0x01DA74], + [0x01DA76, 0x01DA83], + [0x01DA85, 0x01DA8B], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E137, 0x01E13D], + [0x01E140, 0x01E149], + [0x01E14E, 0x01E14F], + [0x01E290, 0x01E2AD], + [0x01E2C0, 0x01E2EB], + [0x01E2F0, 0x01E2F9], + [0x01E4D0, 0x01E4EB], + [0x01E4F0, 0x01E4F9], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E8C7, 0x01E8CF], + [0x01E900, 0x01E943], + [0x01E950, 0x01E959], + [0x01E95E, 0x01E95F], + [0x01EC71, 0x01ECB4], + [0x01ED01, 0x01ED3D], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01EEF0, 0x01EEF1], + [0x01F000, 0x01F02B], + [0x01F030, 0x01F093], + [0x01F0A0, 0x01F0AE], + [0x01F0B1, 0x01F0BF], + [0x01F0C1, 0x01F0CF], + [0x01F0D1, 0x01F0F5], + [0x01F100, 0x01F1AD], + [0x01F1E6, 0x01F202], + [0x01F210, 0x01F23B], + [0x01F240, 0x01F248], + [0x01F250, 0x01F251], + [0x01F260, 0x01F265], + [0x01F300, 0x01F6D7], + [0x01F6DC, 0x01F6EC], + [0x01F6F0, 0x01F6FC], + [0x01F700, 0x01F776], + [0x01F77B, 0x01F7D9], + [0x01F7E0, 0x01F7EB], + [0x01F800, 0x01F80B], + [0x01F810, 0x01F847], + [0x01F850, 0x01F859], + [0x01F860, 0x01F887], + [0x01F890, 0x01F8AD], + [0x01F8B0, 0x01F8B1], + [0x01F900, 0x01FA53], + [0x01FA60, 0x01FA6D], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8], + [0x01FB00, 0x01FB92], + [0x01FB94, 0x01FBCA], + [0x01FBF0, 0x01FBF9], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{Grapheme_Base}+$/u, + matchSymbols, + "\\p{Grapheme_Base}" +); +testPropertyEscapes( + /^\p{Gr_Base}+$/u, + matchSymbols, + "\\p{Gr_Base}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000AD, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x000530, + 0x0005BF, + 0x00061C, + 0x000670, + 0x000711, + 0x00083F, + 0x00085F, + 0x00093A, + 0x00093C, + 0x00094D, + 0x000981, + 0x000984, + 0x0009A9, + 0x0009B1, + 0x0009BE, + 0x0009CD, + 0x0009DE, + 0x000A04, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A5D, + 0x000A75, + 0x000A84, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000ACA, + 0x000B04, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000BC0, + 0x000BC9, + 0x000C04, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C81, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CBF, + 0x000CC2, + 0x000CC9, + 0x000CDF, + 0x000CF0, + 0x000D0D, + 0x000D11, + 0x000D3E, + 0x000D49, + 0x000D4D, + 0x000D57, + 0x000D84, + 0x000DB2, + 0x000DBC, + 0x000E31, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EB1, + 0x000EC5, + 0x000F35, + 0x000F37, + 0x000F39, + 0x000F48, + 0x000FC6, + 0x000FCD, + 0x001082, + 0x00108D, + 0x00109D, + 0x0010C6, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x00176D, + 0x0017C6, + 0x0018A9, + 0x001932, + 0x001A56, + 0x001A62, + 0x001B3C, + 0x001B42, + 0x001BE6, + 0x001BED, + 0x001CED, + 0x001CF4, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FC5, + 0x001FDC, + 0x001FF5, + 0x001FFF, + 0x00208F, + 0x002B96, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x002E9A, + 0x003040, + 0x003130, + 0x00318F, + 0x00321F, + 0x00A7D2, + 0x00A7D4, + 0x00A802, + 0x00A806, + 0x00A80B, + 0x00A8FF, + 0x00A9B3, + 0x00A9CE, + 0x00A9E5, + 0x00A9FF, + 0x00AA43, + 0x00AA4C, + 0x00AA7C, + 0x00AAB0, + 0x00AAC1, + 0x00AB27, + 0x00AB2F, + 0x00ABE5, + 0x00ABE8, + 0x00FB1E, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE53, + 0x00FE67, + 0x00FE75, + 0x00FFE7, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x01018F, + 0x01039E, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x010856, + 0x0108F3, + 0x010A14, + 0x010A18, + 0x010E7F, + 0x011001, + 0x011070, + 0x0110BD, + 0x011173, + 0x0111CF, + 0x0111E0, + 0x011212, + 0x011234, + 0x01123E, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x0112DF, + 0x011304, + 0x011329, + 0x011331, + 0x011334, + 0x01133E, + 0x011340, + 0x011446, + 0x01145C, + 0x01145E, + 0x0114B0, + 0x0114BA, + 0x0114BD, + 0x0115AF, + 0x01163D, + 0x0116AB, + 0x0116AD, + 0x0116B7, + 0x011914, + 0x011917, + 0x011930, + 0x011936, + 0x01193E, + 0x011943, + 0x0119E0, + 0x011C09, + 0x011C3F, + 0x011D07, + 0x011D0A, + 0x011D66, + 0x011D69, + 0x011D95, + 0x011D97, + 0x011F11, + 0x011F40, + 0x011F42, + 0x01246F, + 0x016A5F, + 0x016ABF, + 0x016B5A, + 0x016B62, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D165, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01DA75, + 0x01DA84, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA, + 0x01F0C0, + 0x01F0D0, + 0x01FABE, + 0x01FB93 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00001F], + [0x00007F, 0x00009F], + [0x000300, 0x00036F], + [0x000378, 0x000379], + [0x000380, 0x000383], + [0x000483, 0x000489], + [0x000557, 0x000558], + [0x00058B, 0x00058C], + [0x000590, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x0005C7, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F5, 0x000605], + [0x000610, 0x00061A], + [0x00064B, 0x00065F], + [0x0006D6, 0x0006DD], + [0x0006DF, 0x0006E4], + [0x0006E7, 0x0006E8], + [0x0006EA, 0x0006ED], + [0x00070E, 0x00070F], + [0x000730, 0x00074C], + [0x0007A6, 0x0007B0], + [0x0007B2, 0x0007BF], + [0x0007EB, 0x0007F3], + [0x0007FB, 0x0007FD], + [0x000816, 0x000819], + [0x00081B, 0x000823], + [0x000825, 0x000827], + [0x000829, 0x00082F], + [0x000859, 0x00085D], + [0x00086B, 0x00086F], + [0x00088F, 0x00089F], + [0x0008CA, 0x000902], + [0x000941, 0x000948], + [0x000951, 0x000957], + [0x000962, 0x000963], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BC], + [0x0009C1, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CF, 0x0009DB], + [0x0009E2, 0x0009E5], + [0x0009FE, 0x000A02], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A3D], + [0x000A41, 0x000A58], + [0x000A5F, 0x000A65], + [0x000A70, 0x000A71], + [0x000A77, 0x000A82], + [0x000ABA, 0x000ABC], + [0x000AC1, 0x000AC8], + [0x000ACD, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE2, 0x000AE5], + [0x000AF2, 0x000AF8], + [0x000AFA, 0x000B01], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3C], + [0x000B3E, 0x000B3F], + [0x000B41, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4D, 0x000B5B], + [0x000B62, 0x000B65], + [0x000B78, 0x000B82], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BBE], + [0x000BC3, 0x000BC5], + [0x000BCD, 0x000BCF], + [0x000BD1, 0x000BE5], + [0x000BFB, 0x000C00], + [0x000C3A, 0x000C3C], + [0x000C3E, 0x000C40], + [0x000C45, 0x000C57], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C62, 0x000C65], + [0x000C70, 0x000C76], + [0x000CBA, 0x000CBC], + [0x000CC5, 0x000CC6], + [0x000CCC, 0x000CDC], + [0x000CE2, 0x000CE5], + [0x000CF4, 0x000D01], + [0x000D3B, 0x000D3C], + [0x000D41, 0x000D45], + [0x000D50, 0x000D53], + [0x000D62, 0x000D65], + [0x000D80, 0x000D81], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000DCF], + [0x000DD2, 0x000DD7], + [0x000DDF, 0x000DE5], + [0x000DF0, 0x000DF1], + [0x000DF5, 0x000E00], + [0x000E34, 0x000E3E], + [0x000E47, 0x000E4E], + [0x000E5C, 0x000E80], + [0x000EB4, 0x000EBC], + [0x000EBE, 0x000EBF], + [0x000EC7, 0x000ECF], + [0x000EDA, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F18, 0x000F19], + [0x000F6D, 0x000F7E], + [0x000F80, 0x000F84], + [0x000F86, 0x000F87], + [0x000F8D, 0x000FBD], + [0x000FDB, 0x000FFF], + [0x00102D, 0x001030], + [0x001032, 0x001037], + [0x001039, 0x00103A], + [0x00103D, 0x00103E], + [0x001058, 0x001059], + [0x00105E, 0x001060], + [0x001071, 0x001074], + [0x001085, 0x001086], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00135F], + [0x00137D, 0x00137F], + [0x00139A, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x0013FF], + [0x00169D, 0x00169F], + [0x0016F9, 0x0016FF], + [0x001712, 0x001714], + [0x001716, 0x00171E], + [0x001732, 0x001733], + [0x001737, 0x00173F], + [0x001752, 0x00175F], + [0x001771, 0x00177F], + [0x0017B4, 0x0017B5], + [0x0017B7, 0x0017BD], + [0x0017C9, 0x0017D3], + [0x0017DD, 0x0017DF], + [0x0017EA, 0x0017EF], + [0x0017FA, 0x0017FF], + [0x00180B, 0x00180F], + [0x00181A, 0x00181F], + [0x001879, 0x00187F], + [0x001885, 0x001886], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00191F, 0x001922], + [0x001927, 0x001928], + [0x00192C, 0x00192F], + [0x001939, 0x00193F], + [0x001941, 0x001943], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019CF], + [0x0019DB, 0x0019DD], + [0x001A17, 0x001A18], + [0x001A1B, 0x001A1D], + [0x001A58, 0x001A60], + [0x001A65, 0x001A6C], + [0x001A73, 0x001A7F], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001A9F], + [0x001AAE, 0x001B03], + [0x001B34, 0x001B3A], + [0x001B4D, 0x001B4F], + [0x001B6B, 0x001B73], + [0x001B7F, 0x001B81], + [0x001BA2, 0x001BA5], + [0x001BA8, 0x001BA9], + [0x001BAB, 0x001BAD], + [0x001BE8, 0x001BE9], + [0x001BEF, 0x001BF1], + [0x001BF4, 0x001BFB], + [0x001C2C, 0x001C33], + [0x001C36, 0x001C3A], + [0x001C4A, 0x001C4C], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC8, 0x001CD2], + [0x001CD4, 0x001CE0], + [0x001CE2, 0x001CE8], + [0x001CF8, 0x001CF9], + [0x001CFB, 0x001CFF], + [0x001DC0, 0x001DFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FD4, 0x001FD5], + [0x001FF0, 0x001FF1], + [0x00200B, 0x00200F], + [0x002028, 0x00202E], + [0x002060, 0x00206F], + [0x002072, 0x002073], + [0x00209D, 0x00209F], + [0x0020C1, 0x0020FF], + [0x00218C, 0x00218F], + [0x002427, 0x00243F], + [0x00244B, 0x00245F], + [0x002B74, 0x002B75], + [0x002CEF, 0x002CF1], + [0x002CF4, 0x002CF8], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D71, 0x002D7F], + [0x002D97, 0x002D9F], + [0x002DDF, 0x002DFF], + [0x002E5E, 0x002E7F], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x002FEF], + [0x002FFC, 0x002FFF], + [0x00302A, 0x00302F], + [0x003097, 0x00309A], + [0x003100, 0x003104], + [0x0031E4, 0x0031EF], + [0x00A48D, 0x00A48F], + [0x00A4C7, 0x00A4CF], + [0x00A62C, 0x00A63F], + [0x00A66F, 0x00A672], + [0x00A674, 0x00A67D], + [0x00A69E, 0x00A69F], + [0x00A6F0, 0x00A6F1], + [0x00A6F8, 0x00A6FF], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A825, 0x00A826], + [0x00A82C, 0x00A82F], + [0x00A83A, 0x00A83F], + [0x00A878, 0x00A87F], + [0x00A8C4, 0x00A8CD], + [0x00A8DA, 0x00A8F1], + [0x00A926, 0x00A92D], + [0x00A947, 0x00A951], + [0x00A954, 0x00A95E], + [0x00A97D, 0x00A982], + [0x00A9B6, 0x00A9B9], + [0x00A9BC, 0x00A9BD], + [0x00A9DA, 0x00A9DD], + [0x00AA29, 0x00AA2E], + [0x00AA31, 0x00AA32], + [0x00AA35, 0x00AA3F], + [0x00AA4E, 0x00AA4F], + [0x00AA5A, 0x00AA5B], + [0x00AAB2, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABE, 0x00AABF], + [0x00AAC3, 0x00AADA], + [0x00AAEC, 0x00AAED], + [0x00AAF6, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6C, 0x00AB6F], + [0x00ABED, 0x00ABEF], + [0x00ABFA, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBC3, 0x00FBD2], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDCE], + [0x00FDD0, 0x00FDEF], + [0x00FE00, 0x00FE0F], + [0x00FE1A, 0x00FE2F], + [0x00FE6C, 0x00FE6F], + [0x00FEFD, 0x00FF00], + [0x00FF9E, 0x00FF9F], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFDF], + [0x00FFEF, 0x00FFFB], + [0x00FFFE, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x0100FF], + [0x010103, 0x010106], + [0x010134, 0x010136], + [0x01019D, 0x01019F], + [0x0101A1, 0x0101CF], + [0x0101FD, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102E0], + [0x0102FC, 0x0102FF], + [0x010324, 0x01032C], + [0x01034B, 0x01034F], + [0x010376, 0x01037F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x0103FF], + [0x01049E, 0x01049F], + [0x0104AA, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056E], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x01089F, 0x0108A6], + [0x0108B0, 0x0108DF], + [0x0108F6, 0x0108FA], + [0x01091C, 0x01091E], + [0x01093A, 0x01093E], + [0x010940, 0x01097F], + [0x0109B8, 0x0109BB], + [0x0109D0, 0x0109D1], + [0x010A01, 0x010A0F], + [0x010A36, 0x010A3F], + [0x010A49, 0x010A4F], + [0x010A59, 0x010A5F], + [0x010AA0, 0x010ABF], + [0x010AE5, 0x010AEA], + [0x010AF7, 0x010AFF], + [0x010B36, 0x010B38], + [0x010B56, 0x010B57], + [0x010B73, 0x010B77], + [0x010B92, 0x010B98], + [0x010B9D, 0x010BA8], + [0x010BB0, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CF9], + [0x010D24, 0x010D2F], + [0x010D3A, 0x010E5F], + [0x010EAA, 0x010EAC], + [0x010EAE, 0x010EAF], + [0x010EB2, 0x010EFF], + [0x010F28, 0x010F2F], + [0x010F46, 0x010F50], + [0x010F5A, 0x010F6F], + [0x010F82, 0x010F85], + [0x010F8A, 0x010FAF], + [0x010FCC, 0x010FDF], + [0x010FF7, 0x010FFF], + [0x011038, 0x011046], + [0x01104E, 0x011051], + [0x011073, 0x011074], + [0x011076, 0x011081], + [0x0110B3, 0x0110B6], + [0x0110B9, 0x0110BA], + [0x0110C2, 0x0110CF], + [0x0110E9, 0x0110EF], + [0x0110FA, 0x011102], + [0x011127, 0x01112B], + [0x01112D, 0x011135], + [0x011148, 0x01114F], + [0x011177, 0x011181], + [0x0111B6, 0x0111BE], + [0x0111C9, 0x0111CC], + [0x0111F5, 0x0111FF], + [0x01122F, 0x011231], + [0x011236, 0x011237], + [0x011241, 0x01127F], + [0x0112AA, 0x0112AF], + [0x0112E3, 0x0112EF], + [0x0112FA, 0x011301], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x01133A, 0x01133C], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x01134F], + [0x011351, 0x01135C], + [0x011364, 0x0113FF], + [0x011438, 0x01143F], + [0x011442, 0x011444], + [0x011462, 0x01147F], + [0x0114B3, 0x0114B8], + [0x0114BF, 0x0114C0], + [0x0114C2, 0x0114C3], + [0x0114C8, 0x0114CF], + [0x0114DA, 0x01157F], + [0x0115B2, 0x0115B7], + [0x0115BC, 0x0115BD], + [0x0115BF, 0x0115C0], + [0x0115DC, 0x0115FF], + [0x011633, 0x01163A], + [0x01163F, 0x011640], + [0x011645, 0x01164F], + [0x01165A, 0x01165F], + [0x01166D, 0x01167F], + [0x0116B0, 0x0116B5], + [0x0116BA, 0x0116BF], + [0x0116CA, 0x0116FF], + [0x01171B, 0x01171F], + [0x011722, 0x011725], + [0x011727, 0x01172F], + [0x011747, 0x0117FF], + [0x01182F, 0x011837], + [0x011839, 0x01183A], + [0x01183C, 0x01189F], + [0x0118F3, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011939, 0x01193C], + [0x011947, 0x01194F], + [0x01195A, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D4, 0x0119DB], + [0x0119E5, 0x0119FF], + [0x011A01, 0x011A0A], + [0x011A33, 0x011A38], + [0x011A3B, 0x011A3E], + [0x011A47, 0x011A4F], + [0x011A51, 0x011A56], + [0x011A59, 0x011A5B], + [0x011A8A, 0x011A96], + [0x011A98, 0x011A99], + [0x011AA3, 0x011AAF], + [0x011AF9, 0x011AFF], + [0x011B0A, 0x011BFF], + [0x011C30, 0x011C3D], + [0x011C46, 0x011C4F], + [0x011C6D, 0x011C6F], + [0x011C90, 0x011CA8], + [0x011CAA, 0x011CB0], + [0x011CB2, 0x011CB3], + [0x011CB5, 0x011CFF], + [0x011D31, 0x011D45], + [0x011D47, 0x011D4F], + [0x011D5A, 0x011D5F], + [0x011D8F, 0x011D92], + [0x011D99, 0x011D9F], + [0x011DAA, 0x011EDF], + [0x011EF3, 0x011EF4], + [0x011EF9, 0x011F01], + [0x011F36, 0x011F3D], + [0x011F5A, 0x011FAF], + [0x011FB1, 0x011FBF], + [0x011FF2, 0x011FFE], + [0x01239A, 0x0123FF], + [0x012475, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF3, 0x012FFF], + [0x013430, 0x013440], + [0x013447, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A6A, 0x016A6D], + [0x016ACA, 0x016ACF], + [0x016AEE, 0x016AF4], + [0x016AF6, 0x016AFF], + [0x016B30, 0x016B36], + [0x016B46, 0x016B4F], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E9B, 0x016EFF], + [0x016F4B, 0x016F4F], + [0x016F88, 0x016F92], + [0x016FA0, 0x016FDF], + [0x016FE4, 0x016FEF], + [0x016FF2, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01BC9B], + [0x01BC9D, 0x01BC9E], + [0x01BCA0, 0x01CF4F], + [0x01CFC4, 0x01CFFF], + [0x01D0F6, 0x01D0FF], + [0x01D127, 0x01D128], + [0x01D167, 0x01D169], + [0x01D16E, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D1EB, 0x01D1FF], + [0x01D242, 0x01D244], + [0x01D246, 0x01D2BF], + [0x01D2D4, 0x01D2DF], + [0x01D2F4, 0x01D2FF], + [0x01D357, 0x01D35F], + [0x01D379, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01DA00, 0x01DA36], + [0x01DA3B, 0x01DA6C], + [0x01DA8C, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01E02F], + [0x01E06E, 0x01E0FF], + [0x01E12D, 0x01E136], + [0x01E13E, 0x01E13F], + [0x01E14A, 0x01E14D], + [0x01E150, 0x01E28F], + [0x01E2AE, 0x01E2BF], + [0x01E2EC, 0x01E2EF], + [0x01E2FA, 0x01E2FE], + [0x01E300, 0x01E4CF], + [0x01E4EC, 0x01E4EF], + [0x01E4FA, 0x01E7DF], + [0x01E8C5, 0x01E8C6], + [0x01E8D0, 0x01E8FF], + [0x01E944, 0x01E94A], + [0x01E94C, 0x01E94F], + [0x01E95A, 0x01E95D], + [0x01E960, 0x01EC70], + [0x01ECB5, 0x01ED00], + [0x01ED3E, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01EEEF], + [0x01EEF2, 0x01EFFF], + [0x01F02C, 0x01F02F], + [0x01F094, 0x01F09F], + [0x01F0AF, 0x01F0B0], + [0x01F0F6, 0x01F0FF], + [0x01F1AE, 0x01F1E5], + [0x01F203, 0x01F20F], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F24F], + [0x01F252, 0x01F25F], + [0x01F266, 0x01F2FF], + [0x01F6D8, 0x01F6DB], + [0x01F6ED, 0x01F6EF], + [0x01F6FD, 0x01F6FF], + [0x01F777, 0x01F77A], + [0x01F7DA, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F7FF], + [0x01F80C, 0x01F80F], + [0x01F848, 0x01F84F], + [0x01F85A, 0x01F85F], + [0x01F888, 0x01F88F], + [0x01F8AE, 0x01F8AF], + [0x01F8B2, 0x01F8FF], + [0x01FA54, 0x01FA5F], + [0x01FA6E, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x01FAFF], + [0x01FBCB, 0x01FBEF], + [0x01FBFA, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Grapheme_Base}+$/u, + nonMatchSymbols, + "\\P{Grapheme_Base}" +); +testPropertyEscapes( + /^\P{Gr_Base}+$/u, + nonMatchSymbols, + "\\P{Gr_Base}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js new file mode 100644 index 0000000000..c4b5f40366 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Grapheme_Extend.js @@ -0,0 +1,779 @@ +// Copyright 2022 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 for `Grapheme_Extend` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0005BF, + 0x0005C7, + 0x000670, + 0x000711, + 0x0007FD, + 0x00093A, + 0x00093C, + 0x00094D, + 0x000981, + 0x0009BC, + 0x0009BE, + 0x0009CD, + 0x0009D7, + 0x0009FE, + 0x000A3C, + 0x000A51, + 0x000A75, + 0x000ABC, + 0x000ACD, + 0x000B01, + 0x000B3C, + 0x000B4D, + 0x000B82, + 0x000BBE, + 0x000BC0, + 0x000BCD, + 0x000BD7, + 0x000C00, + 0x000C04, + 0x000C3C, + 0x000C81, + 0x000CBC, + 0x000CBF, + 0x000CC2, + 0x000CC6, + 0x000D3E, + 0x000D4D, + 0x000D57, + 0x000D81, + 0x000DCA, + 0x000DCF, + 0x000DD6, + 0x000DDF, + 0x000E31, + 0x000EB1, + 0x000F35, + 0x000F37, + 0x000F39, + 0x000FC6, + 0x001082, + 0x00108D, + 0x00109D, + 0x0017C6, + 0x0017DD, + 0x00180F, + 0x0018A9, + 0x001932, + 0x001A1B, + 0x001A56, + 0x001A60, + 0x001A62, + 0x001A7F, + 0x001B3C, + 0x001B42, + 0x001BE6, + 0x001BED, + 0x001CED, + 0x001CF4, + 0x00200C, + 0x002D7F, + 0x00A802, + 0x00A806, + 0x00A80B, + 0x00A82C, + 0x00A8FF, + 0x00A9B3, + 0x00A9E5, + 0x00AA43, + 0x00AA4C, + 0x00AA7C, + 0x00AAB0, + 0x00AAC1, + 0x00AAF6, + 0x00ABE5, + 0x00ABE8, + 0x00ABED, + 0x00FB1E, + 0x0101FD, + 0x0102E0, + 0x010A3F, + 0x011001, + 0x011070, + 0x0110C2, + 0x011173, + 0x0111CF, + 0x011234, + 0x01123E, + 0x011241, + 0x0112DF, + 0x01133E, + 0x011340, + 0x011357, + 0x011446, + 0x01145E, + 0x0114B0, + 0x0114BA, + 0x0114BD, + 0x0115AF, + 0x01163D, + 0x0116AB, + 0x0116AD, + 0x0116B7, + 0x011930, + 0x01193E, + 0x011943, + 0x0119E0, + 0x011A47, + 0x011C3F, + 0x011D3A, + 0x011D47, + 0x011D95, + 0x011D97, + 0x011F40, + 0x011F42, + 0x013440, + 0x016F4F, + 0x016FE4, + 0x01D165, + 0x01DA75, + 0x01DA84, + 0x01E08F, + 0x01E2AE + ], + ranges: [ + [0x000300, 0x00036F], + [0x000483, 0x000489], + [0x000591, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x000610, 0x00061A], + [0x00064B, 0x00065F], + [0x0006D6, 0x0006DC], + [0x0006DF, 0x0006E4], + [0x0006E7, 0x0006E8], + [0x0006EA, 0x0006ED], + [0x000730, 0x00074A], + [0x0007A6, 0x0007B0], + [0x0007EB, 0x0007F3], + [0x000816, 0x000819], + [0x00081B, 0x000823], + [0x000825, 0x000827], + [0x000829, 0x00082D], + [0x000859, 0x00085B], + [0x000898, 0x00089F], + [0x0008CA, 0x0008E1], + [0x0008E3, 0x000902], + [0x000941, 0x000948], + [0x000951, 0x000957], + [0x000962, 0x000963], + [0x0009C1, 0x0009C4], + [0x0009E2, 0x0009E3], + [0x000A01, 0x000A02], + [0x000A41, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A70, 0x000A71], + [0x000A81, 0x000A82], + [0x000AC1, 0x000AC5], + [0x000AC7, 0x000AC8], + [0x000AE2, 0x000AE3], + [0x000AFA, 0x000AFF], + [0x000B3E, 0x000B3F], + [0x000B41, 0x000B44], + [0x000B55, 0x000B57], + [0x000B62, 0x000B63], + [0x000C3E, 0x000C40], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C62, 0x000C63], + [0x000CCC, 0x000CCD], + [0x000CD5, 0x000CD6], + [0x000CE2, 0x000CE3], + [0x000D00, 0x000D01], + [0x000D3B, 0x000D3C], + [0x000D41, 0x000D44], + [0x000D62, 0x000D63], + [0x000DD2, 0x000DD4], + [0x000E34, 0x000E3A], + [0x000E47, 0x000E4E], + [0x000EB4, 0x000EBC], + [0x000EC8, 0x000ECE], + [0x000F18, 0x000F19], + [0x000F71, 0x000F7E], + [0x000F80, 0x000F84], + [0x000F86, 0x000F87], + [0x000F8D, 0x000F97], + [0x000F99, 0x000FBC], + [0x00102D, 0x001030], + [0x001032, 0x001037], + [0x001039, 0x00103A], + [0x00103D, 0x00103E], + [0x001058, 0x001059], + [0x00105E, 0x001060], + [0x001071, 0x001074], + [0x001085, 0x001086], + [0x00135D, 0x00135F], + [0x001712, 0x001714], + [0x001732, 0x001733], + [0x001752, 0x001753], + [0x001772, 0x001773], + [0x0017B4, 0x0017B5], + [0x0017B7, 0x0017BD], + [0x0017C9, 0x0017D3], + [0x00180B, 0x00180D], + [0x001885, 0x001886], + [0x001920, 0x001922], + [0x001927, 0x001928], + [0x001939, 0x00193B], + [0x001A17, 0x001A18], + [0x001A58, 0x001A5E], + [0x001A65, 0x001A6C], + [0x001A73, 0x001A7C], + [0x001AB0, 0x001ACE], + [0x001B00, 0x001B03], + [0x001B34, 0x001B3A], + [0x001B6B, 0x001B73], + [0x001B80, 0x001B81], + [0x001BA2, 0x001BA5], + [0x001BA8, 0x001BA9], + [0x001BAB, 0x001BAD], + [0x001BE8, 0x001BE9], + [0x001BEF, 0x001BF1], + [0x001C2C, 0x001C33], + [0x001C36, 0x001C37], + [0x001CD0, 0x001CD2], + [0x001CD4, 0x001CE0], + [0x001CE2, 0x001CE8], + [0x001CF8, 0x001CF9], + [0x001DC0, 0x001DFF], + [0x0020D0, 0x0020F0], + [0x002CEF, 0x002CF1], + [0x002DE0, 0x002DFF], + [0x00302A, 0x00302F], + [0x003099, 0x00309A], + [0x00A66F, 0x00A672], + [0x00A674, 0x00A67D], + [0x00A69E, 0x00A69F], + [0x00A6F0, 0x00A6F1], + [0x00A825, 0x00A826], + [0x00A8C4, 0x00A8C5], + [0x00A8E0, 0x00A8F1], + [0x00A926, 0x00A92D], + [0x00A947, 0x00A951], + [0x00A980, 0x00A982], + [0x00A9B6, 0x00A9B9], + [0x00A9BC, 0x00A9BD], + [0x00AA29, 0x00AA2E], + [0x00AA31, 0x00AA32], + [0x00AA35, 0x00AA36], + [0x00AAB2, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABE, 0x00AABF], + [0x00AAEC, 0x00AAED], + [0x00FE00, 0x00FE0F], + [0x00FE20, 0x00FE2F], + [0x00FF9E, 0x00FF9F], + [0x010376, 0x01037A], + [0x010A01, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A0F], + [0x010A38, 0x010A3A], + [0x010AE5, 0x010AE6], + [0x010D24, 0x010D27], + [0x010EAB, 0x010EAC], + [0x010EFD, 0x010EFF], + [0x010F46, 0x010F50], + [0x010F82, 0x010F85], + [0x011038, 0x011046], + [0x011073, 0x011074], + [0x01107F, 0x011081], + [0x0110B3, 0x0110B6], + [0x0110B9, 0x0110BA], + [0x011100, 0x011102], + [0x011127, 0x01112B], + [0x01112D, 0x011134], + [0x011180, 0x011181], + [0x0111B6, 0x0111BE], + [0x0111C9, 0x0111CC], + [0x01122F, 0x011231], + [0x011236, 0x011237], + [0x0112E3, 0x0112EA], + [0x011300, 0x011301], + [0x01133B, 0x01133C], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011438, 0x01143F], + [0x011442, 0x011444], + [0x0114B3, 0x0114B8], + [0x0114BF, 0x0114C0], + [0x0114C2, 0x0114C3], + [0x0115B2, 0x0115B5], + [0x0115BC, 0x0115BD], + [0x0115BF, 0x0115C0], + [0x0115DC, 0x0115DD], + [0x011633, 0x01163A], + [0x01163F, 0x011640], + [0x0116B0, 0x0116B5], + [0x01171D, 0x01171F], + [0x011722, 0x011725], + [0x011727, 0x01172B], + [0x01182F, 0x011837], + [0x011839, 0x01183A], + [0x01193B, 0x01193C], + [0x0119D4, 0x0119D7], + [0x0119DA, 0x0119DB], + [0x011A01, 0x011A0A], + [0x011A33, 0x011A38], + [0x011A3B, 0x011A3E], + [0x011A51, 0x011A56], + [0x011A59, 0x011A5B], + [0x011A8A, 0x011A96], + [0x011A98, 0x011A99], + [0x011C30, 0x011C36], + [0x011C38, 0x011C3D], + [0x011C92, 0x011CA7], + [0x011CAA, 0x011CB0], + [0x011CB2, 0x011CB3], + [0x011CB5, 0x011CB6], + [0x011D31, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D45], + [0x011D90, 0x011D91], + [0x011EF3, 0x011EF4], + [0x011F00, 0x011F01], + [0x011F36, 0x011F3A], + [0x013447, 0x013455], + [0x016AF0, 0x016AF4], + [0x016B30, 0x016B36], + [0x016F8F, 0x016F92], + [0x01BC9D, 0x01BC9E], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01D167, 0x01D169], + [0x01D16E, 0x01D172], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D242, 0x01D244], + [0x01DA00, 0x01DA36], + [0x01DA3B, 0x01DA6C], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E130, 0x01E136], + [0x01E2EC, 0x01E2EF], + [0x01E4EC, 0x01E4EF], + [0x01E8D0, 0x01E8D6], + [0x01E944, 0x01E94A], + [0x0E0020, 0x0E007F], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\p{Grapheme_Extend}+$/u, + matchSymbols, + "\\p{Grapheme_Extend}" +); +testPropertyEscapes( + /^\p{Gr_Ext}+$/u, + matchSymbols, + "\\p{Gr_Ext}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x0006E9, + 0x00081A, + 0x000824, + 0x000828, + 0x0008E2, + 0x00093B, + 0x0009BD, + 0x000AC6, + 0x000B00, + 0x000B3D, + 0x000B40, + 0x000BBF, + 0x000C3D, + 0x000C49, + 0x000D3D, + 0x000DD5, + 0x000F36, + 0x000F38, + 0x000F7F, + 0x000F85, + 0x000F98, + 0x001031, + 0x001038, + 0x0017B6, + 0x00180E, + 0x001A57, + 0x001A5F, + 0x001A61, + 0x001B3B, + 0x001BAA, + 0x001BE7, + 0x001BEE, + 0x001CD3, + 0x001CE1, + 0x00A673, + 0x00AAB1, + 0x00AAC0, + 0x010A04, + 0x01112C, + 0x011235, + 0x01133D, + 0x01133F, + 0x011445, + 0x0114B9, + 0x0114BE, + 0x0114C1, + 0x0115BE, + 0x01163E, + 0x0116AC, + 0x0116B6, + 0x011726, + 0x011838, + 0x01193D, + 0x011A97, + 0x011C37, + 0x011C3E, + 0x011CB1, + 0x011CB4, + 0x011D3B, + 0x011D3E, + 0x011D46, + 0x011D96, + 0x011F41, + 0x01D166, + 0x01DAA0, + 0x01E007, + 0x01E022, + 0x01E025 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0002FF], + [0x000370, 0x000482], + [0x00048A, 0x000590], + [0x0005C8, 0x00060F], + [0x00061B, 0x00064A], + [0x000660, 0x00066F], + [0x000671, 0x0006D5], + [0x0006DD, 0x0006DE], + [0x0006E5, 0x0006E6], + [0x0006EE, 0x000710], + [0x000712, 0x00072F], + [0x00074B, 0x0007A5], + [0x0007B1, 0x0007EA], + [0x0007F4, 0x0007FC], + [0x0007FE, 0x000815], + [0x00082E, 0x000858], + [0x00085C, 0x000897], + [0x0008A0, 0x0008C9], + [0x000903, 0x000939], + [0x00093D, 0x000940], + [0x000949, 0x00094C], + [0x00094E, 0x000950], + [0x000958, 0x000961], + [0x000964, 0x000980], + [0x000982, 0x0009BB], + [0x0009BF, 0x0009C0], + [0x0009C5, 0x0009CC], + [0x0009CE, 0x0009D6], + [0x0009D8, 0x0009E1], + [0x0009E4, 0x0009FD], + [0x0009FF, 0x000A00], + [0x000A03, 0x000A3B], + [0x000A3D, 0x000A40], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A6F], + [0x000A72, 0x000A74], + [0x000A76, 0x000A80], + [0x000A83, 0x000ABB], + [0x000ABD, 0x000AC0], + [0x000AC9, 0x000ACC], + [0x000ACE, 0x000AE1], + [0x000AE4, 0x000AF9], + [0x000B02, 0x000B3B], + [0x000B45, 0x000B4C], + [0x000B4E, 0x000B54], + [0x000B58, 0x000B61], + [0x000B64, 0x000B81], + [0x000B83, 0x000BBD], + [0x000BC1, 0x000BCC], + [0x000BCE, 0x000BD6], + [0x000BD8, 0x000BFF], + [0x000C01, 0x000C03], + [0x000C05, 0x000C3B], + [0x000C41, 0x000C45], + [0x000C4E, 0x000C54], + [0x000C57, 0x000C61], + [0x000C64, 0x000C80], + [0x000C82, 0x000CBB], + [0x000CBD, 0x000CBE], + [0x000CC0, 0x000CC1], + [0x000CC3, 0x000CC5], + [0x000CC7, 0x000CCB], + [0x000CCE, 0x000CD4], + [0x000CD7, 0x000CE1], + [0x000CE4, 0x000CFF], + [0x000D02, 0x000D3A], + [0x000D3F, 0x000D40], + [0x000D45, 0x000D4C], + [0x000D4E, 0x000D56], + [0x000D58, 0x000D61], + [0x000D64, 0x000D80], + [0x000D82, 0x000DC9], + [0x000DCB, 0x000DCE], + [0x000DD0, 0x000DD1], + [0x000DD7, 0x000DDE], + [0x000DE0, 0x000E30], + [0x000E32, 0x000E33], + [0x000E3B, 0x000E46], + [0x000E4F, 0x000EB0], + [0x000EB2, 0x000EB3], + [0x000EBD, 0x000EC7], + [0x000ECF, 0x000F17], + [0x000F1A, 0x000F34], + [0x000F3A, 0x000F70], + [0x000F88, 0x000F8C], + [0x000FBD, 0x000FC5], + [0x000FC7, 0x00102C], + [0x00103B, 0x00103C], + [0x00103F, 0x001057], + [0x00105A, 0x00105D], + [0x001061, 0x001070], + [0x001075, 0x001081], + [0x001083, 0x001084], + [0x001087, 0x00108C], + [0x00108E, 0x00109C], + [0x00109E, 0x00135C], + [0x001360, 0x001711], + [0x001715, 0x001731], + [0x001734, 0x001751], + [0x001754, 0x001771], + [0x001774, 0x0017B3], + [0x0017BE, 0x0017C5], + [0x0017C7, 0x0017C8], + [0x0017D4, 0x0017DC], + [0x0017DE, 0x00180A], + [0x001810, 0x001884], + [0x001887, 0x0018A8], + [0x0018AA, 0x00191F], + [0x001923, 0x001926], + [0x001929, 0x001931], + [0x001933, 0x001938], + [0x00193C, 0x001A16], + [0x001A19, 0x001A1A], + [0x001A1C, 0x001A55], + [0x001A63, 0x001A64], + [0x001A6D, 0x001A72], + [0x001A7D, 0x001A7E], + [0x001A80, 0x001AAF], + [0x001ACF, 0x001AFF], + [0x001B04, 0x001B33], + [0x001B3D, 0x001B41], + [0x001B43, 0x001B6A], + [0x001B74, 0x001B7F], + [0x001B82, 0x001BA1], + [0x001BA6, 0x001BA7], + [0x001BAE, 0x001BE5], + [0x001BEA, 0x001BEC], + [0x001BF2, 0x001C2B], + [0x001C34, 0x001C35], + [0x001C38, 0x001CCF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF7], + [0x001CFA, 0x001DBF], + [0x001E00, 0x00200B], + [0x00200D, 0x0020CF], + [0x0020F1, 0x002CEE], + [0x002CF2, 0x002D7E], + [0x002D80, 0x002DDF], + [0x002E00, 0x003029], + [0x003030, 0x003098], + [0x00309B, 0x00A66E], + [0x00A67E, 0x00A69D], + [0x00A6A0, 0x00A6EF], + [0x00A6F2, 0x00A801], + [0x00A803, 0x00A805], + [0x00A807, 0x00A80A], + [0x00A80C, 0x00A824], + [0x00A827, 0x00A82B], + [0x00A82D, 0x00A8C3], + [0x00A8C6, 0x00A8DF], + [0x00A8F2, 0x00A8FE], + [0x00A900, 0x00A925], + [0x00A92E, 0x00A946], + [0x00A952, 0x00A97F], + [0x00A983, 0x00A9B2], + [0x00A9B4, 0x00A9B5], + [0x00A9BA, 0x00A9BB], + [0x00A9BE, 0x00A9E4], + [0x00A9E6, 0x00AA28], + [0x00AA2F, 0x00AA30], + [0x00AA33, 0x00AA34], + [0x00AA37, 0x00AA42], + [0x00AA44, 0x00AA4B], + [0x00AA4D, 0x00AA7B], + [0x00AA7D, 0x00AAAF], + [0x00AAB5, 0x00AAB6], + [0x00AAB9, 0x00AABD], + [0x00AAC2, 0x00AAEB], + [0x00AAEE, 0x00AAF5], + [0x00AAF7, 0x00ABE4], + [0x00ABE6, 0x00ABE7], + [0x00ABE9, 0x00ABEC], + [0x00ABEE, 0x00DBFF], + [0x00E000, 0x00FB1D], + [0x00FB1F, 0x00FDFF], + [0x00FE10, 0x00FE1F], + [0x00FE30, 0x00FF9D], + [0x00FFA0, 0x0101FC], + [0x0101FE, 0x0102DF], + [0x0102E1, 0x010375], + [0x01037B, 0x010A00], + [0x010A07, 0x010A0B], + [0x010A10, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A40, 0x010AE4], + [0x010AE7, 0x010D23], + [0x010D28, 0x010EAA], + [0x010EAD, 0x010EFC], + [0x010F00, 0x010F45], + [0x010F51, 0x010F81], + [0x010F86, 0x011000], + [0x011002, 0x011037], + [0x011047, 0x01106F], + [0x011071, 0x011072], + [0x011075, 0x01107E], + [0x011082, 0x0110B2], + [0x0110B7, 0x0110B8], + [0x0110BB, 0x0110C1], + [0x0110C3, 0x0110FF], + [0x011103, 0x011126], + [0x011135, 0x011172], + [0x011174, 0x01117F], + [0x011182, 0x0111B5], + [0x0111BF, 0x0111C8], + [0x0111CD, 0x0111CE], + [0x0111D0, 0x01122E], + [0x011232, 0x011233], + [0x011238, 0x01123D], + [0x01123F, 0x011240], + [0x011242, 0x0112DE], + [0x0112E0, 0x0112E2], + [0x0112EB, 0x0112FF], + [0x011302, 0x01133A], + [0x011341, 0x011356], + [0x011358, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x011437], + [0x011440, 0x011441], + [0x011447, 0x01145D], + [0x01145F, 0x0114AF], + [0x0114B1, 0x0114B2], + [0x0114BB, 0x0114BC], + [0x0114C4, 0x0115AE], + [0x0115B0, 0x0115B1], + [0x0115B6, 0x0115BB], + [0x0115C1, 0x0115DB], + [0x0115DE, 0x011632], + [0x01163B, 0x01163C], + [0x011641, 0x0116AA], + [0x0116AE, 0x0116AF], + [0x0116B8, 0x01171C], + [0x011720, 0x011721], + [0x01172C, 0x01182E], + [0x01183B, 0x01192F], + [0x011931, 0x01193A], + [0x01193F, 0x011942], + [0x011944, 0x0119D3], + [0x0119D8, 0x0119D9], + [0x0119DC, 0x0119DF], + [0x0119E1, 0x011A00], + [0x011A0B, 0x011A32], + [0x011A39, 0x011A3A], + [0x011A3F, 0x011A46], + [0x011A48, 0x011A50], + [0x011A57, 0x011A58], + [0x011A5C, 0x011A89], + [0x011A9A, 0x011C2F], + [0x011C40, 0x011C91], + [0x011CA8, 0x011CA9], + [0x011CB7, 0x011D30], + [0x011D37, 0x011D39], + [0x011D48, 0x011D8F], + [0x011D92, 0x011D94], + [0x011D98, 0x011EF2], + [0x011EF5, 0x011EFF], + [0x011F02, 0x011F35], + [0x011F3B, 0x011F3F], + [0x011F43, 0x01343F], + [0x013441, 0x013446], + [0x013456, 0x016AEF], + [0x016AF5, 0x016B2F], + [0x016B37, 0x016F4E], + [0x016F50, 0x016F8E], + [0x016F93, 0x016FE3], + [0x016FE5, 0x01BC9C], + [0x01BC9F, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01D164], + [0x01D16A, 0x01D16D], + [0x01D173, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D241], + [0x01D245, 0x01D9FF], + [0x01DA37, 0x01DA3A], + [0x01DA6D, 0x01DA74], + [0x01DA76, 0x01DA83], + [0x01DA85, 0x01DA9A], + [0x01DAB0, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E08E], + [0x01E090, 0x01E12F], + [0x01E137, 0x01E2AD], + [0x01E2AF, 0x01E2EB], + [0x01E2F0, 0x01E4EB], + [0x01E4F0, 0x01E8CF], + [0x01E8D7, 0x01E943], + [0x01E94B, 0x0E001F], + [0x0E0080, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Grapheme_Extend}+$/u, + nonMatchSymbols, + "\\P{Grapheme_Extend}" +); +testPropertyEscapes( + /^\P{Gr_Ext}+$/u, + nonMatchSymbols, + "\\P{Gr_Ext}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Hex_Digit.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Hex_Digit.js new file mode 100644 index 0000000000..0417e6d795 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Hex_Digit.js @@ -0,0 +1,63 @@ +// Copyright 2022 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 for `Hex_Digit` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000030, 0x000039], + [0x000041, 0x000046], + [0x000061, 0x000066], + [0x00FF10, 0x00FF19], + [0x00FF21, 0x00FF26], + [0x00FF41, 0x00FF46] + ] +}); +testPropertyEscapes( + /^\p{Hex_Digit}+$/u, + matchSymbols, + "\\p{Hex_Digit}" +); +testPropertyEscapes( + /^\p{Hex}+$/u, + matchSymbols, + "\\p{Hex}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x000040], + [0x000047, 0x000060], + [0x000067, 0x00DBFF], + [0x00E000, 0x00FF0F], + [0x00FF1A, 0x00FF20], + [0x00FF27, 0x00FF40], + [0x00FF47, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Hex_Digit}+$/u, + nonMatchSymbols, + "\\P{Hex_Digit}" +); +testPropertyEscapes( + /^\P{Hex}+$/u, + nonMatchSymbols, + "\\P{Hex}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js new file mode 100644 index 0000000000..6b173470be --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/IDS_Binary_Operator.js @@ -0,0 +1,55 @@ +// Copyright 2022 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 for `IDS_Binary_Operator` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x002FF0, 0x002FF1], + [0x002FF4, 0x002FFB] + ] +}); +testPropertyEscapes( + /^\p{IDS_Binary_Operator}+$/u, + matchSymbols, + "\\p{IDS_Binary_Operator}" +); +testPropertyEscapes( + /^\p{IDSB}+$/u, + matchSymbols, + "\\p{IDSB}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002FEF], + [0x002FF2, 0x002FF3], + [0x002FFC, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{IDS_Binary_Operator}+$/u, + nonMatchSymbols, + "\\P{IDS_Binary_Operator}" +); +testPropertyEscapes( + /^\P{IDSB}+$/u, + nonMatchSymbols, + "\\P{IDSB}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js new file mode 100644 index 0000000000..73375f1185 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/IDS_Trinary_Operator.js @@ -0,0 +1,53 @@ +// Copyright 2022 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 for `IDS_Trinary_Operator` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x002FF2, 0x002FF3] + ] +}); +testPropertyEscapes( + /^\p{IDS_Trinary_Operator}+$/u, + matchSymbols, + "\\p{IDS_Trinary_Operator}" +); +testPropertyEscapes( + /^\p{IDST}+$/u, + matchSymbols, + "\\p{IDST}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002FF1], + [0x002FF4, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{IDS_Trinary_Operator}+$/u, + nonMatchSymbols, + "\\P{IDS_Trinary_Operator}" +); +testPropertyEscapes( + /^\P{IDST}+$/u, + nonMatchSymbols, + "\\P{IDST}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ID_Continue.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ID_Continue.js new file mode 100644 index 0000000000..23e3fba081 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ID_Continue.js @@ -0,0 +1,1589 @@ +// Copyright 2022 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 for `ID_Continue` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00005F, + 0x0000AA, + 0x0000B5, + 0x0000B7, + 0x0000BA, + 0x0002EC, + 0x0002EE, + 0x00037F, + 0x00038C, + 0x000559, + 0x0005BF, + 0x0005C7, + 0x0006FF, + 0x0007FA, + 0x0007FD, + 0x0009B2, + 0x0009D7, + 0x0009FC, + 0x0009FE, + 0x000A3C, + 0x000A51, + 0x000A5E, + 0x000AD0, + 0x000B71, + 0x000B9C, + 0x000BD0, + 0x000BD7, + 0x000C5D, + 0x000DBD, + 0x000DCA, + 0x000DD6, + 0x000E84, + 0x000EA5, + 0x000EC6, + 0x000F00, + 0x000F35, + 0x000F37, + 0x000F39, + 0x000FC6, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x0017D7, + 0x001AA7, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001FBE, + 0x002054, + 0x002071, + 0x00207F, + 0x0020E1, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x00214E, + 0x002D27, + 0x002D2D, + 0x002D6F, + 0x00A7D3, + 0x00A82C, + 0x00A8FB, + 0x00FB3E, + 0x00FF3F, + 0x0101FD, + 0x0102E0, + 0x010808, + 0x01083C, + 0x010A3F, + 0x010F27, + 0x0110C2, + 0x011176, + 0x0111DC, + 0x011288, + 0x011350, + 0x011357, + 0x0114C7, + 0x011644, + 0x011909, + 0x011A47, + 0x011A9D, + 0x011D3A, + 0x011FB0, + 0x01B132, + 0x01B155, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01DA75, + 0x01DA84, + 0x01E08F, + 0x01E14E, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x000030, 0x000039], + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002C1], + [0x0002C6, 0x0002D1], + [0x0002E0, 0x0002E4], + [0x000300, 0x000374], + [0x000376, 0x000377], + [0x00037A, 0x00037D], + [0x000386, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003F5], + [0x0003F7, 0x000481], + [0x000483, 0x000487], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000560, 0x000588], + [0x000591, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F2], + [0x000610, 0x00061A], + [0x000620, 0x000669], + [0x00066E, 0x0006D3], + [0x0006D5, 0x0006DC], + [0x0006DF, 0x0006E8], + [0x0006EA, 0x0006FC], + [0x000710, 0x00074A], + [0x00074D, 0x0007B1], + [0x0007C0, 0x0007F5], + [0x000800, 0x00082D], + [0x000840, 0x00085B], + [0x000860, 0x00086A], + [0x000870, 0x000887], + [0x000889, 0x00088E], + [0x000898, 0x0008E1], + [0x0008E3, 0x000963], + [0x000966, 0x00096F], + [0x000971, 0x000983], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009BC, 0x0009C4], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CE], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E3], + [0x0009E6, 0x0009F1], + [0x000A01, 0x000A03], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A3E, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A59, 0x000A5C], + [0x000A66, 0x000A75], + [0x000A81, 0x000A83], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000ABC, 0x000AC5], + [0x000AC7, 0x000AC9], + [0x000ACB, 0x000ACD], + [0x000AE0, 0x000AE3], + [0x000AE6, 0x000AEF], + [0x000AF9, 0x000AFF], + [0x000B01, 0x000B03], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B3C, 0x000B44], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4D], + [0x000B55, 0x000B57], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B63], + [0x000B66, 0x000B6F], + [0x000B82, 0x000B83], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000BBE, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCD], + [0x000BE6, 0x000BEF], + [0x000C00, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C3C, 0x000C44], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C63], + [0x000C66, 0x000C6F], + [0x000C80, 0x000C83], + [0x000C85, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CBC, 0x000CC4], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCD], + [0x000CD5, 0x000CD6], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE3], + [0x000CE6, 0x000CEF], + [0x000CF1, 0x000CF3], + [0x000D00, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D44], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4E], + [0x000D54, 0x000D57], + [0x000D5F, 0x000D63], + [0x000D66, 0x000D6F], + [0x000D7A, 0x000D7F], + [0x000D81, 0x000D83], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000DCF, 0x000DD4], + [0x000DD8, 0x000DDF], + [0x000DE6, 0x000DEF], + [0x000DF2, 0x000DF3], + [0x000E01, 0x000E3A], + [0x000E40, 0x000E4E], + [0x000E50, 0x000E59], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EBD], + [0x000EC0, 0x000EC4], + [0x000EC8, 0x000ECE], + [0x000ED0, 0x000ED9], + [0x000EDC, 0x000EDF], + [0x000F18, 0x000F19], + [0x000F20, 0x000F29], + [0x000F3E, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F71, 0x000F84], + [0x000F86, 0x000F97], + [0x000F99, 0x000FBC], + [0x001000, 0x001049], + [0x001050, 0x00109D], + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FC, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x00135D, 0x00135F], + [0x001369, 0x001371], + [0x001380, 0x00138F], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001401, 0x00166C], + [0x00166F, 0x00167F], + [0x001681, 0x00169A], + [0x0016A0, 0x0016EA], + [0x0016EE, 0x0016F8], + [0x001700, 0x001715], + [0x00171F, 0x001734], + [0x001740, 0x001753], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001772, 0x001773], + [0x001780, 0x0017D3], + [0x0017DC, 0x0017DD], + [0x0017E0, 0x0017E9], + [0x00180B, 0x00180D], + [0x00180F, 0x001819], + [0x001820, 0x001878], + [0x001880, 0x0018AA], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001920, 0x00192B], + [0x001930, 0x00193B], + [0x001946, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x0019D0, 0x0019DA], + [0x001A00, 0x001A1B], + [0x001A20, 0x001A5E], + [0x001A60, 0x001A7C], + [0x001A7F, 0x001A89], + [0x001A90, 0x001A99], + [0x001AB0, 0x001ABD], + [0x001ABF, 0x001ACE], + [0x001B00, 0x001B4C], + [0x001B50, 0x001B59], + [0x001B6B, 0x001B73], + [0x001B80, 0x001BF3], + [0x001C00, 0x001C37], + [0x001C40, 0x001C49], + [0x001C4D, 0x001C7D], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001CD0, 0x001CD2], + [0x001CD4, 0x001CFA], + [0x001D00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FCC], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FE0, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFC], + [0x00203F, 0x002040], + [0x002090, 0x00209C], + [0x0020D0, 0x0020DC], + [0x0020E5, 0x0020F0], + [0x00210A, 0x002113], + [0x002118, 0x00211D], + [0x00212A, 0x002139], + [0x00213C, 0x00213F], + [0x002145, 0x002149], + [0x002160, 0x002188], + [0x002C00, 0x002CE4], + [0x002CEB, 0x002CF3], + [0x002D00, 0x002D25], + [0x002D30, 0x002D67], + [0x002D7F, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x002DE0, 0x002DFF], + [0x003005, 0x003007], + [0x003021, 0x00302F], + [0x003031, 0x003035], + [0x003038, 0x00303C], + [0x003041, 0x003096], + [0x003099, 0x00309F], + [0x0030A1, 0x0030FA], + [0x0030FC, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x0031A0, 0x0031BF], + [0x0031F0, 0x0031FF], + [0x003400, 0x004DBF], + [0x004E00, 0x00A48C], + [0x00A4D0, 0x00A4FD], + [0x00A500, 0x00A60C], + [0x00A610, 0x00A62B], + [0x00A640, 0x00A66F], + [0x00A674, 0x00A67D], + [0x00A67F, 0x00A6F1], + [0x00A717, 0x00A71F], + [0x00A722, 0x00A788], + [0x00A78B, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A827], + [0x00A840, 0x00A873], + [0x00A880, 0x00A8C5], + [0x00A8D0, 0x00A8D9], + [0x00A8E0, 0x00A8F7], + [0x00A8FD, 0x00A92D], + [0x00A930, 0x00A953], + [0x00A960, 0x00A97C], + [0x00A980, 0x00A9C0], + [0x00A9CF, 0x00A9D9], + [0x00A9E0, 0x00A9FE], + [0x00AA00, 0x00AA36], + [0x00AA40, 0x00AA4D], + [0x00AA50, 0x00AA59], + [0x00AA60, 0x00AA76], + [0x00AA7A, 0x00AAC2], + [0x00AADB, 0x00AADD], + [0x00AAE0, 0x00AAEF], + [0x00AAF2, 0x00AAF6], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB70, 0x00ABEA], + [0x00ABEC, 0x00ABED], + [0x00ABF0, 0x00ABF9], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1D, 0x00FB28], + [0x00FB2A, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBB1], + [0x00FBD3, 0x00FD3D], + [0x00FD50, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDFB], + [0x00FE00, 0x00FE0F], + [0x00FE20, 0x00FE2F], + [0x00FE33, 0x00FE34], + [0x00FE4D, 0x00FE4F], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x00FF10, 0x00FF19], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x00FF66, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010140, 0x010174], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x010300, 0x01031F], + [0x01032D, 0x01034A], + [0x010350, 0x01037A], + [0x010380, 0x01039D], + [0x0103A0, 0x0103C3], + [0x0103C8, 0x0103CF], + [0x0103D1, 0x0103D5], + [0x010400, 0x01049D], + [0x0104A0, 0x0104A9], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010860, 0x010876], + [0x010880, 0x01089E], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x010900, 0x010915], + [0x010920, 0x010939], + [0x010980, 0x0109B7], + [0x0109BE, 0x0109BF], + [0x010A00, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A38, 0x010A3A], + [0x010A60, 0x010A7C], + [0x010A80, 0x010A9C], + [0x010AC0, 0x010AC7], + [0x010AC9, 0x010AE6], + [0x010B00, 0x010B35], + [0x010B40, 0x010B55], + [0x010B60, 0x010B72], + [0x010B80, 0x010B91], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010D00, 0x010D27], + [0x010D30, 0x010D39], + [0x010E80, 0x010EA9], + [0x010EAB, 0x010EAC], + [0x010EB0, 0x010EB1], + [0x010EFD, 0x010F1C], + [0x010F30, 0x010F50], + [0x010F70, 0x010F85], + [0x010FB0, 0x010FC4], + [0x010FE0, 0x010FF6], + [0x011000, 0x011046], + [0x011066, 0x011075], + [0x01107F, 0x0110BA], + [0x0110D0, 0x0110E8], + [0x0110F0, 0x0110F9], + [0x011100, 0x011134], + [0x011136, 0x01113F], + [0x011144, 0x011147], + [0x011150, 0x011173], + [0x011180, 0x0111C4], + [0x0111C9, 0x0111CC], + [0x0111CE, 0x0111DA], + [0x011200, 0x011211], + [0x011213, 0x011237], + [0x01123E, 0x011241], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A8], + [0x0112B0, 0x0112EA], + [0x0112F0, 0x0112F9], + [0x011300, 0x011303], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01133B, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x01135D, 0x011363], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011400, 0x01144A], + [0x011450, 0x011459], + [0x01145E, 0x011461], + [0x011480, 0x0114C5], + [0x0114D0, 0x0114D9], + [0x011580, 0x0115B5], + [0x0115B8, 0x0115C0], + [0x0115D8, 0x0115DD], + [0x011600, 0x011640], + [0x011650, 0x011659], + [0x011680, 0x0116B8], + [0x0116C0, 0x0116C9], + [0x011700, 0x01171A], + [0x01171D, 0x01172B], + [0x011730, 0x011739], + [0x011740, 0x011746], + [0x011800, 0x01183A], + [0x0118A0, 0x0118E9], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x011935], + [0x011937, 0x011938], + [0x01193B, 0x011943], + [0x011950, 0x011959], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D7], + [0x0119DA, 0x0119E1], + [0x0119E3, 0x0119E4], + [0x011A00, 0x011A3E], + [0x011A50, 0x011A99], + [0x011AB0, 0x011AF8], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C36], + [0x011C38, 0x011C40], + [0x011C50, 0x011C59], + [0x011C72, 0x011C8F], + [0x011C92, 0x011CA7], + [0x011CA9, 0x011CB6], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D47], + [0x011D50, 0x011D59], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D8E], + [0x011D90, 0x011D91], + [0x011D93, 0x011D98], + [0x011DA0, 0x011DA9], + [0x011EE0, 0x011EF6], + [0x011F00, 0x011F10], + [0x011F12, 0x011F3A], + [0x011F3E, 0x011F42], + [0x011F50, 0x011F59], + [0x012000, 0x012399], + [0x012400, 0x01246E], + [0x012480, 0x012543], + [0x012F90, 0x012FF0], + [0x013000, 0x01342F], + [0x013440, 0x013455], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A60, 0x016A69], + [0x016A70, 0x016ABE], + [0x016AC0, 0x016AC9], + [0x016AD0, 0x016AED], + [0x016AF0, 0x016AF4], + [0x016B00, 0x016B36], + [0x016B40, 0x016B43], + [0x016B50, 0x016B59], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E7F], + [0x016F00, 0x016F4A], + [0x016F4F, 0x016F87], + [0x016F8F, 0x016F9F], + [0x016FE0, 0x016FE1], + [0x016FE3, 0x016FE4], + [0x016FF0, 0x016FF1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01BC9D, 0x01BC9E], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01D165, 0x01D169], + [0x01D16D, 0x01D172], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D242, 0x01D244], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7CB], + [0x01D7CE, 0x01D7FF], + [0x01DA00, 0x01DA36], + [0x01DA3B, 0x01DA6C], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E130, 0x01E13D], + [0x01E140, 0x01E149], + [0x01E290, 0x01E2AE], + [0x01E2C0, 0x01E2F9], + [0x01E4D0, 0x01E4F9], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E8D0, 0x01E8D6], + [0x01E900, 0x01E94B], + [0x01E950, 0x01E959], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01FBF0, 0x01FBF9], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\p{ID_Continue}+$/u, + matchSymbols, + "\\p{ID_Continue}" +); +testPropertyEscapes( + /^\p{IDC}+$/u, + matchSymbols, + "\\p{IDC}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000060, + 0x0000B6, + 0x0000D7, + 0x0000F7, + 0x0002ED, + 0x000375, + 0x00037E, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x0003F6, + 0x000482, + 0x000530, + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x0006D4, + 0x0006E9, + 0x000888, + 0x0008E2, + 0x000970, + 0x000984, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x0009FD, + 0x000A04, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A3D, + 0x000A5D, + 0x000A84, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000AC6, + 0x000ACA, + 0x000B00, + 0x000B04, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B70, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000BC9, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C45, + 0x000C49, + 0x000C57, + 0x000C84, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CC5, + 0x000CC9, + 0x000CDF, + 0x000CF0, + 0x000D0D, + 0x000D11, + 0x000D45, + 0x000D49, + 0x000D80, + 0x000D84, + 0x000DB2, + 0x000DBC, + 0x000DD5, + 0x000DD7, + 0x000E4F, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EC5, + 0x000EC7, + 0x000ECF, + 0x000F36, + 0x000F38, + 0x000F48, + 0x000F85, + 0x000F98, + 0x0010C6, + 0x0010FB, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x001680, + 0x00176D, + 0x001771, + 0x00180E, + 0x00191F, + 0x001A5F, + 0x001ABE, + 0x001CD3, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x002DDF, + 0x003030, + 0x0030A0, + 0x0030FB, + 0x003130, + 0x00A67E, + 0x00A7D2, + 0x00A7D4, + 0x00A8FC, + 0x00A9FF, + 0x00AB27, + 0x00AB2F, + 0x00AB5B, + 0x00ABEB, + 0x00FB29, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE75, + 0x00FF40, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x0103D0, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x0108F3, + 0x010A04, + 0x010A14, + 0x010A18, + 0x010AC8, + 0x010EAA, + 0x011135, + 0x0111CD, + 0x0111DB, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011304, + 0x011329, + 0x011331, + 0x011334, + 0x01133A, + 0x0114C6, + 0x011914, + 0x011917, + 0x011936, + 0x0119E2, + 0x011C09, + 0x011C37, + 0x011CA8, + 0x011D07, + 0x011D0A, + 0x011D3B, + 0x011D3E, + 0x011D66, + 0x011D69, + 0x011D8F, + 0x011D92, + 0x011F11, + 0x016A5F, + 0x016ABF, + 0x016FE2, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3, + 0x01DAA0, + 0x01E007, + 0x01E022, + 0x01E025, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x000040], + [0x00005B, 0x00005E], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B4], + [0x0000B8, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002C2, 0x0002C5], + [0x0002D2, 0x0002DF], + [0x0002E5, 0x0002EB], + [0x0002EF, 0x0002FF], + [0x000378, 0x000379], + [0x000380, 0x000385], + [0x000488, 0x000489], + [0x000557, 0x000558], + [0x00055A, 0x00055F], + [0x000589, 0x000590], + [0x0005C8, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F3, 0x00060F], + [0x00061B, 0x00061F], + [0x00066A, 0x00066D], + [0x0006DD, 0x0006DE], + [0x0006FD, 0x0006FE], + [0x000700, 0x00070F], + [0x00074B, 0x00074C], + [0x0007B2, 0x0007BF], + [0x0007F6, 0x0007F9], + [0x0007FB, 0x0007FC], + [0x0007FE, 0x0007FF], + [0x00082E, 0x00083F], + [0x00085C, 0x00085F], + [0x00086B, 0x00086F], + [0x00088F, 0x000897], + [0x000964, 0x000965], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BB], + [0x0009C5, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CF, 0x0009D6], + [0x0009D8, 0x0009DB], + [0x0009E4, 0x0009E5], + [0x0009F2, 0x0009FB], + [0x0009FF, 0x000A00], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A3B], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A58], + [0x000A5F, 0x000A65], + [0x000A76, 0x000A80], + [0x000ABA, 0x000ABB], + [0x000ACE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE4, 0x000AE5], + [0x000AF0, 0x000AF8], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3B], + [0x000B45, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4E, 0x000B54], + [0x000B58, 0x000B5B], + [0x000B64, 0x000B65], + [0x000B72, 0x000B81], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCE, 0x000BCF], + [0x000BD1, 0x000BD6], + [0x000BD8, 0x000BE5], + [0x000BF0, 0x000BFF], + [0x000C3A, 0x000C3B], + [0x000C4E, 0x000C54], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C64, 0x000C65], + [0x000C70, 0x000C7F], + [0x000CBA, 0x000CBB], + [0x000CCE, 0x000CD4], + [0x000CD7, 0x000CDC], + [0x000CE4, 0x000CE5], + [0x000CF4, 0x000CFF], + [0x000D4F, 0x000D53], + [0x000D58, 0x000D5E], + [0x000D64, 0x000D65], + [0x000D70, 0x000D79], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000DC9], + [0x000DCB, 0x000DCE], + [0x000DE0, 0x000DE5], + [0x000DF0, 0x000DF1], + [0x000DF4, 0x000E00], + [0x000E3B, 0x000E3F], + [0x000E5A, 0x000E80], + [0x000EBE, 0x000EBF], + [0x000EDA, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F01, 0x000F17], + [0x000F1A, 0x000F1F], + [0x000F2A, 0x000F34], + [0x000F3A, 0x000F3D], + [0x000F6D, 0x000F70], + [0x000FBD, 0x000FC5], + [0x000FC7, 0x000FFF], + [0x00104A, 0x00104F], + [0x00109E, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00135C], + [0x001360, 0x001368], + [0x001372, 0x00137F], + [0x001390, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x001400], + [0x00166D, 0x00166E], + [0x00169B, 0x00169F], + [0x0016EB, 0x0016ED], + [0x0016F9, 0x0016FF], + [0x001716, 0x00171E], + [0x001735, 0x00173F], + [0x001754, 0x00175F], + [0x001774, 0x00177F], + [0x0017D4, 0x0017D6], + [0x0017D8, 0x0017DB], + [0x0017DE, 0x0017DF], + [0x0017EA, 0x00180A], + [0x00181A, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00192C, 0x00192F], + [0x00193C, 0x001945], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019CF], + [0x0019DB, 0x0019FF], + [0x001A1C, 0x001A1F], + [0x001A7D, 0x001A7E], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001AA6], + [0x001AA8, 0x001AAF], + [0x001ACF, 0x001AFF], + [0x001B4D, 0x001B4F], + [0x001B5A, 0x001B6A], + [0x001B74, 0x001B7F], + [0x001BF4, 0x001BFF], + [0x001C38, 0x001C3F], + [0x001C4A, 0x001C4C], + [0x001C7E, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001CCF], + [0x001CFB, 0x001CFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FDC, 0x001FDF], + [0x001FED, 0x001FF1], + [0x001FFD, 0x00203E], + [0x002041, 0x002053], + [0x002055, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x0020CF], + [0x0020DD, 0x0020E0], + [0x0020E2, 0x0020E4], + [0x0020F1, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002117], + [0x00211E, 0x002123], + [0x00213A, 0x00213B], + [0x002140, 0x002144], + [0x00214A, 0x00214D], + [0x00214F, 0x00215F], + [0x002189, 0x002BFF], + [0x002CE5, 0x002CEA], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D70, 0x002D7E], + [0x002D97, 0x002D9F], + [0x002E00, 0x003004], + [0x003008, 0x003020], + [0x003036, 0x003037], + [0x00303D, 0x003040], + [0x003097, 0x003098], + [0x003100, 0x003104], + [0x00318F, 0x00319F], + [0x0031C0, 0x0031EF], + [0x003200, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A48D, 0x00A4CF], + [0x00A4FE, 0x00A4FF], + [0x00A60D, 0x00A60F], + [0x00A62C, 0x00A63F], + [0x00A670, 0x00A673], + [0x00A6F2, 0x00A716], + [0x00A720, 0x00A721], + [0x00A789, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A828, 0x00A82B], + [0x00A82D, 0x00A83F], + [0x00A874, 0x00A87F], + [0x00A8C6, 0x00A8CF], + [0x00A8DA, 0x00A8DF], + [0x00A8F8, 0x00A8FA], + [0x00A92E, 0x00A92F], + [0x00A954, 0x00A95F], + [0x00A97D, 0x00A97F], + [0x00A9C1, 0x00A9CE], + [0x00A9DA, 0x00A9DF], + [0x00AA37, 0x00AA3F], + [0x00AA4E, 0x00AA4F], + [0x00AA5A, 0x00AA5F], + [0x00AA77, 0x00AA79], + [0x00AAC3, 0x00AADA], + [0x00AADE, 0x00AADF], + [0x00AAF0, 0x00AAF1], + [0x00AAF7, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6A, 0x00AB6F], + [0x00ABEE, 0x00ABEF], + [0x00ABFA, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBB2, 0x00FBD2], + [0x00FD3E, 0x00FD4F], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDEF], + [0x00FDFC, 0x00FDFF], + [0x00FE10, 0x00FE1F], + [0x00FE30, 0x00FE32], + [0x00FE35, 0x00FE4C], + [0x00FE50, 0x00FE6F], + [0x00FEFD, 0x00FF0F], + [0x00FF1A, 0x00FF20], + [0x00FF3B, 0x00FF3E], + [0x00FF5B, 0x00FF65], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x01013F], + [0x010175, 0x0101FC], + [0x0101FE, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102DF], + [0x0102E1, 0x0102FF], + [0x010320, 0x01032C], + [0x01034B, 0x01034F], + [0x01037B, 0x01037F], + [0x01039E, 0x01039F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x0103FF], + [0x01049E, 0x01049F], + [0x0104AA, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056F], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x010856, 0x01085F], + [0x010877, 0x01087F], + [0x01089F, 0x0108DF], + [0x0108F6, 0x0108FF], + [0x010916, 0x01091F], + [0x01093A, 0x01097F], + [0x0109B8, 0x0109BD], + [0x0109C0, 0x0109FF], + [0x010A07, 0x010A0B], + [0x010A36, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A40, 0x010A5F], + [0x010A7D, 0x010A7F], + [0x010A9D, 0x010ABF], + [0x010AE7, 0x010AFF], + [0x010B36, 0x010B3F], + [0x010B56, 0x010B5F], + [0x010B73, 0x010B7F], + [0x010B92, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CFF], + [0x010D28, 0x010D2F], + [0x010D3A, 0x010E7F], + [0x010EAD, 0x010EAF], + [0x010EB2, 0x010EFC], + [0x010F1D, 0x010F26], + [0x010F28, 0x010F2F], + [0x010F51, 0x010F6F], + [0x010F86, 0x010FAF], + [0x010FC5, 0x010FDF], + [0x010FF7, 0x010FFF], + [0x011047, 0x011065], + [0x011076, 0x01107E], + [0x0110BB, 0x0110C1], + [0x0110C3, 0x0110CF], + [0x0110E9, 0x0110EF], + [0x0110FA, 0x0110FF], + [0x011140, 0x011143], + [0x011148, 0x01114F], + [0x011174, 0x011175], + [0x011177, 0x01117F], + [0x0111C5, 0x0111C8], + [0x0111DD, 0x0111FF], + [0x011238, 0x01123D], + [0x011242, 0x01127F], + [0x0112A9, 0x0112AF], + [0x0112EB, 0x0112EF], + [0x0112FA, 0x0112FF], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x01134F], + [0x011351, 0x011356], + [0x011358, 0x01135C], + [0x011364, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x0113FF], + [0x01144B, 0x01144F], + [0x01145A, 0x01145D], + [0x011462, 0x01147F], + [0x0114C8, 0x0114CF], + [0x0114DA, 0x01157F], + [0x0115B6, 0x0115B7], + [0x0115C1, 0x0115D7], + [0x0115DE, 0x0115FF], + [0x011641, 0x011643], + [0x011645, 0x01164F], + [0x01165A, 0x01167F], + [0x0116B9, 0x0116BF], + [0x0116CA, 0x0116FF], + [0x01171B, 0x01171C], + [0x01172C, 0x01172F], + [0x01173A, 0x01173F], + [0x011747, 0x0117FF], + [0x01183B, 0x01189F], + [0x0118EA, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011939, 0x01193A], + [0x011944, 0x01194F], + [0x01195A, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D8, 0x0119D9], + [0x0119E5, 0x0119FF], + [0x011A3F, 0x011A46], + [0x011A48, 0x011A4F], + [0x011A9A, 0x011A9C], + [0x011A9E, 0x011AAF], + [0x011AF9, 0x011BFF], + [0x011C41, 0x011C4F], + [0x011C5A, 0x011C71], + [0x011C90, 0x011C91], + [0x011CB7, 0x011CFF], + [0x011D37, 0x011D39], + [0x011D48, 0x011D4F], + [0x011D5A, 0x011D5F], + [0x011D99, 0x011D9F], + [0x011DAA, 0x011EDF], + [0x011EF7, 0x011EFF], + [0x011F3B, 0x011F3D], + [0x011F43, 0x011F4F], + [0x011F5A, 0x011FAF], + [0x011FB1, 0x011FFF], + [0x01239A, 0x0123FF], + [0x01246F, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF1, 0x012FFF], + [0x013430, 0x01343F], + [0x013456, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A6A, 0x016A6F], + [0x016ACA, 0x016ACF], + [0x016AEE, 0x016AEF], + [0x016AF5, 0x016AFF], + [0x016B37, 0x016B3F], + [0x016B44, 0x016B4F], + [0x016B5A, 0x016B62], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E80, 0x016EFF], + [0x016F4B, 0x016F4E], + [0x016F88, 0x016F8E], + [0x016FA0, 0x016FDF], + [0x016FE5, 0x016FEF], + [0x016FF2, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01BC9C], + [0x01BC9F, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01D164], + [0x01D16A, 0x01D16C], + [0x01D173, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D241], + [0x01D245, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01D800, 0x01D9FF], + [0x01DA37, 0x01DA3A], + [0x01DA6D, 0x01DA74], + [0x01DA76, 0x01DA83], + [0x01DA85, 0x01DA9A], + [0x01DAB0, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E02F], + [0x01E06E, 0x01E08E], + [0x01E090, 0x01E0FF], + [0x01E12D, 0x01E12F], + [0x01E13E, 0x01E13F], + [0x01E14A, 0x01E14D], + [0x01E14F, 0x01E28F], + [0x01E2AF, 0x01E2BF], + [0x01E2FA, 0x01E4CF], + [0x01E4FA, 0x01E7DF], + [0x01E8C5, 0x01E8CF], + [0x01E8D7, 0x01E8FF], + [0x01E94C, 0x01E94F], + [0x01E95A, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01FBEF], + [0x01FBFA, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{ID_Continue}+$/u, + nonMatchSymbols, + "\\P{ID_Continue}" +); +testPropertyEscapes( + /^\P{IDC}+$/u, + nonMatchSymbols, + "\\P{IDC}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ID_Start.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ID_Start.js new file mode 100644 index 0000000000..d503a35848 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/ID_Start.js @@ -0,0 +1,1371 @@ +// Copyright 2022 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 for `ID_Start` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000B5, + 0x0000BA, + 0x0002EC, + 0x0002EE, + 0x00037F, + 0x000386, + 0x00038C, + 0x000559, + 0x0006D5, + 0x0006FF, + 0x000710, + 0x0007B1, + 0x0007FA, + 0x00081A, + 0x000824, + 0x000828, + 0x00093D, + 0x000950, + 0x0009B2, + 0x0009BD, + 0x0009CE, + 0x0009FC, + 0x000A5E, + 0x000ABD, + 0x000AD0, + 0x000AF9, + 0x000B3D, + 0x000B71, + 0x000B83, + 0x000B9C, + 0x000BD0, + 0x000C3D, + 0x000C5D, + 0x000C80, + 0x000CBD, + 0x000D3D, + 0x000D4E, + 0x000DBD, + 0x000E84, + 0x000EA5, + 0x000EBD, + 0x000EC6, + 0x000F00, + 0x00103F, + 0x001061, + 0x00108E, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x0017D7, + 0x0017DC, + 0x0018AA, + 0x001AA7, + 0x001CFA, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001FBE, + 0x002071, + 0x00207F, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x00214E, + 0x002D27, + 0x002D2D, + 0x002D6F, + 0x00A7D3, + 0x00A8FB, + 0x00A9CF, + 0x00AA7A, + 0x00AAB1, + 0x00AAC0, + 0x00AAC2, + 0x00FB1D, + 0x00FB3E, + 0x010808, + 0x01083C, + 0x010A00, + 0x010F27, + 0x011075, + 0x011144, + 0x011147, + 0x011176, + 0x0111DA, + 0x0111DC, + 0x011288, + 0x01133D, + 0x011350, + 0x0114C7, + 0x011644, + 0x0116B8, + 0x011909, + 0x01193F, + 0x011941, + 0x0119E1, + 0x0119E3, + 0x011A00, + 0x011A3A, + 0x011A50, + 0x011A9D, + 0x011C40, + 0x011D46, + 0x011D98, + 0x011F02, + 0x011FB0, + 0x016F50, + 0x016FE3, + 0x01B132, + 0x01B155, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01E14E, + 0x01E94B, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002C1], + [0x0002C6, 0x0002D1], + [0x0002E0, 0x0002E4], + [0x000370, 0x000374], + [0x000376, 0x000377], + [0x00037A, 0x00037D], + [0x000388, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003F5], + [0x0003F7, 0x000481], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000560, 0x000588], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F2], + [0x000620, 0x00064A], + [0x00066E, 0x00066F], + [0x000671, 0x0006D3], + [0x0006E5, 0x0006E6], + [0x0006EE, 0x0006EF], + [0x0006FA, 0x0006FC], + [0x000712, 0x00072F], + [0x00074D, 0x0007A5], + [0x0007CA, 0x0007EA], + [0x0007F4, 0x0007F5], + [0x000800, 0x000815], + [0x000840, 0x000858], + [0x000860, 0x00086A], + [0x000870, 0x000887], + [0x000889, 0x00088E], + [0x0008A0, 0x0008C9], + [0x000904, 0x000939], + [0x000958, 0x000961], + [0x000971, 0x000980], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E1], + [0x0009F0, 0x0009F1], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A59, 0x000A5C], + [0x000A72, 0x000A74], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000AE0, 0x000AE1], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B61], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000C05, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C61], + [0x000C85, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE1], + [0x000CF1, 0x000CF2], + [0x000D04, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D3A], + [0x000D54, 0x000D56], + [0x000D5F, 0x000D61], + [0x000D7A, 0x000D7F], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000E01, 0x000E30], + [0x000E32, 0x000E33], + [0x000E40, 0x000E46], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EB0], + [0x000EB2, 0x000EB3], + [0x000EC0, 0x000EC4], + [0x000EDC, 0x000EDF], + [0x000F40, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F88, 0x000F8C], + [0x001000, 0x00102A], + [0x001050, 0x001055], + [0x00105A, 0x00105D], + [0x001065, 0x001066], + [0x00106E, 0x001070], + [0x001075, 0x001081], + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FC, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x001380, 0x00138F], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001401, 0x00166C], + [0x00166F, 0x00167F], + [0x001681, 0x00169A], + [0x0016A0, 0x0016EA], + [0x0016EE, 0x0016F8], + [0x001700, 0x001711], + [0x00171F, 0x001731], + [0x001740, 0x001751], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001780, 0x0017B3], + [0x001820, 0x001878], + [0x001880, 0x0018A8], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001950, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x001A00, 0x001A16], + [0x001A20, 0x001A54], + [0x001B05, 0x001B33], + [0x001B45, 0x001B4C], + [0x001B83, 0x001BA0], + [0x001BAE, 0x001BAF], + [0x001BBA, 0x001BE5], + [0x001C00, 0x001C23], + [0x001C4D, 0x001C4F], + [0x001C5A, 0x001C7D], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF6], + [0x001D00, 0x001DBF], + [0x001E00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FCC], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FE0, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFC], + [0x002090, 0x00209C], + [0x00210A, 0x002113], + [0x002118, 0x00211D], + [0x00212A, 0x002139], + [0x00213C, 0x00213F], + [0x002145, 0x002149], + [0x002160, 0x002188], + [0x002C00, 0x002CE4], + [0x002CEB, 0x002CEE], + [0x002CF2, 0x002CF3], + [0x002D00, 0x002D25], + [0x002D30, 0x002D67], + [0x002D80, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x003005, 0x003007], + [0x003021, 0x003029], + [0x003031, 0x003035], + [0x003038, 0x00303C], + [0x003041, 0x003096], + [0x00309B, 0x00309F], + [0x0030A1, 0x0030FA], + [0x0030FC, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x0031A0, 0x0031BF], + [0x0031F0, 0x0031FF], + [0x003400, 0x004DBF], + [0x004E00, 0x00A48C], + [0x00A4D0, 0x00A4FD], + [0x00A500, 0x00A60C], + [0x00A610, 0x00A61F], + [0x00A62A, 0x00A62B], + [0x00A640, 0x00A66E], + [0x00A67F, 0x00A69D], + [0x00A6A0, 0x00A6EF], + [0x00A717, 0x00A71F], + [0x00A722, 0x00A788], + [0x00A78B, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A801], + [0x00A803, 0x00A805], + [0x00A807, 0x00A80A], + [0x00A80C, 0x00A822], + [0x00A840, 0x00A873], + [0x00A882, 0x00A8B3], + [0x00A8F2, 0x00A8F7], + [0x00A8FD, 0x00A8FE], + [0x00A90A, 0x00A925], + [0x00A930, 0x00A946], + [0x00A960, 0x00A97C], + [0x00A984, 0x00A9B2], + [0x00A9E0, 0x00A9E4], + [0x00A9E6, 0x00A9EF], + [0x00A9FA, 0x00A9FE], + [0x00AA00, 0x00AA28], + [0x00AA40, 0x00AA42], + [0x00AA44, 0x00AA4B], + [0x00AA60, 0x00AA76], + [0x00AA7E, 0x00AAAF], + [0x00AAB5, 0x00AAB6], + [0x00AAB9, 0x00AABD], + [0x00AADB, 0x00AADD], + [0x00AAE0, 0x00AAEA], + [0x00AAF2, 0x00AAF4], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB70, 0x00ABE2], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1F, 0x00FB28], + [0x00FB2A, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBB1], + [0x00FBD3, 0x00FD3D], + [0x00FD50, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDFB], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x00FF66, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010140, 0x010174], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x010300, 0x01031F], + [0x01032D, 0x01034A], + [0x010350, 0x010375], + [0x010380, 0x01039D], + [0x0103A0, 0x0103C3], + [0x0103C8, 0x0103CF], + [0x0103D1, 0x0103D5], + [0x010400, 0x01049D], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010860, 0x010876], + [0x010880, 0x01089E], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x010900, 0x010915], + [0x010920, 0x010939], + [0x010980, 0x0109B7], + [0x0109BE, 0x0109BF], + [0x010A10, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A60, 0x010A7C], + [0x010A80, 0x010A9C], + [0x010AC0, 0x010AC7], + [0x010AC9, 0x010AE4], + [0x010B00, 0x010B35], + [0x010B40, 0x010B55], + [0x010B60, 0x010B72], + [0x010B80, 0x010B91], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010D00, 0x010D23], + [0x010E80, 0x010EA9], + [0x010EB0, 0x010EB1], + [0x010F00, 0x010F1C], + [0x010F30, 0x010F45], + [0x010F70, 0x010F81], + [0x010FB0, 0x010FC4], + [0x010FE0, 0x010FF6], + [0x011003, 0x011037], + [0x011071, 0x011072], + [0x011083, 0x0110AF], + [0x0110D0, 0x0110E8], + [0x011103, 0x011126], + [0x011150, 0x011172], + [0x011183, 0x0111B2], + [0x0111C1, 0x0111C4], + [0x011200, 0x011211], + [0x011213, 0x01122B], + [0x01123F, 0x011240], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A8], + [0x0112B0, 0x0112DE], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01135D, 0x011361], + [0x011400, 0x011434], + [0x011447, 0x01144A], + [0x01145F, 0x011461], + [0x011480, 0x0114AF], + [0x0114C4, 0x0114C5], + [0x011580, 0x0115AE], + [0x0115D8, 0x0115DB], + [0x011600, 0x01162F], + [0x011680, 0x0116AA], + [0x011700, 0x01171A], + [0x011740, 0x011746], + [0x011800, 0x01182B], + [0x0118A0, 0x0118DF], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x01192F], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D0], + [0x011A0B, 0x011A32], + [0x011A5C, 0x011A89], + [0x011AB0, 0x011AF8], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C2E], + [0x011C72, 0x011C8F], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D30], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D89], + [0x011EE0, 0x011EF2], + [0x011F04, 0x011F10], + [0x011F12, 0x011F33], + [0x012000, 0x012399], + [0x012400, 0x01246E], + [0x012480, 0x012543], + [0x012F90, 0x012FF0], + [0x013000, 0x01342F], + [0x013441, 0x013446], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A70, 0x016ABE], + [0x016AD0, 0x016AED], + [0x016B00, 0x016B2F], + [0x016B40, 0x016B43], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E7F], + [0x016F00, 0x016F4A], + [0x016F93, 0x016F9F], + [0x016FE0, 0x016FE1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7CB], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E137, 0x01E13D], + [0x01E290, 0x01E2AD], + [0x01E2C0, 0x01E2EB], + [0x01E4D0, 0x01E4EB], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E900, 0x01E943], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{ID_Start}+$/u, + matchSymbols, + "\\p{ID_Start}" +); +testPropertyEscapes( + /^\p{IDS}+$/u, + matchSymbols, + "\\p{IDS}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x0002ED, + 0x000375, + 0x00037E, + 0x000387, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x0003F6, + 0x000530, + 0x000670, + 0x0006D4, + 0x000711, + 0x000888, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A5D, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CDF, + 0x000D0D, + 0x000D11, + 0x000DB2, + 0x000DBC, + 0x000E31, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EB1, + 0x000EC5, + 0x000F48, + 0x0010C6, + 0x0010FB, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x001680, + 0x00176D, + 0x0018A9, + 0x001CED, + 0x001CF4, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x0030A0, + 0x0030FB, + 0x003130, + 0x00A7D2, + 0x00A7D4, + 0x00A802, + 0x00A806, + 0x00A80B, + 0x00A8FC, + 0x00A9E5, + 0x00A9FF, + 0x00AA43, + 0x00AAB0, + 0x00AAC1, + 0x00AB27, + 0x00AB2F, + 0x00AB5B, + 0x00FB1E, + 0x00FB29, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE75, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x0103D0, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x0108F3, + 0x010A14, + 0x010A18, + 0x010AC8, + 0x0111DB, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011329, + 0x011331, + 0x011334, + 0x0114C6, + 0x011914, + 0x011917, + 0x011940, + 0x0119E2, + 0x011C09, + 0x011D07, + 0x011D0A, + 0x011D66, + 0x011D69, + 0x011F03, + 0x011F11, + 0x016FE2, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B4], + [0x0000B6, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002C2, 0x0002C5], + [0x0002D2, 0x0002DF], + [0x0002E5, 0x0002EB], + [0x0002EF, 0x00036F], + [0x000378, 0x000379], + [0x000380, 0x000385], + [0x000482, 0x000489], + [0x000557, 0x000558], + [0x00055A, 0x00055F], + [0x000589, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F3, 0x00061F], + [0x00064B, 0x00066D], + [0x0006D6, 0x0006E4], + [0x0006E7, 0x0006ED], + [0x0006F0, 0x0006F9], + [0x0006FD, 0x0006FE], + [0x000700, 0x00070F], + [0x000730, 0x00074C], + [0x0007A6, 0x0007B0], + [0x0007B2, 0x0007C9], + [0x0007EB, 0x0007F3], + [0x0007F6, 0x0007F9], + [0x0007FB, 0x0007FF], + [0x000816, 0x000819], + [0x00081B, 0x000823], + [0x000825, 0x000827], + [0x000829, 0x00083F], + [0x000859, 0x00085F], + [0x00086B, 0x00086F], + [0x00088F, 0x00089F], + [0x0008CA, 0x000903], + [0x00093A, 0x00093C], + [0x00093E, 0x00094F], + [0x000951, 0x000957], + [0x000962, 0x000970], + [0x000981, 0x000984], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BC], + [0x0009BE, 0x0009CD], + [0x0009CF, 0x0009DB], + [0x0009E2, 0x0009EF], + [0x0009F2, 0x0009FB], + [0x0009FD, 0x000A04], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A58], + [0x000A5F, 0x000A71], + [0x000A75, 0x000A84], + [0x000ABA, 0x000ABC], + [0x000ABE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE2, 0x000AF8], + [0x000AFA, 0x000B04], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3C], + [0x000B3E, 0x000B5B], + [0x000B62, 0x000B70], + [0x000B72, 0x000B82], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BCF], + [0x000BD1, 0x000C04], + [0x000C3A, 0x000C3C], + [0x000C3E, 0x000C57], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C62, 0x000C7F], + [0x000C81, 0x000C84], + [0x000CBA, 0x000CBC], + [0x000CBE, 0x000CDC], + [0x000CE2, 0x000CF0], + [0x000CF3, 0x000D03], + [0x000D3B, 0x000D3C], + [0x000D3E, 0x000D4D], + [0x000D4F, 0x000D53], + [0x000D57, 0x000D5E], + [0x000D62, 0x000D79], + [0x000D80, 0x000D84], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000E00], + [0x000E34, 0x000E3F], + [0x000E47, 0x000E80], + [0x000EB4, 0x000EBC], + [0x000EBE, 0x000EBF], + [0x000EC7, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F01, 0x000F3F], + [0x000F6D, 0x000F87], + [0x000F8D, 0x000FFF], + [0x00102B, 0x00103E], + [0x001040, 0x00104F], + [0x001056, 0x001059], + [0x00105E, 0x001060], + [0x001062, 0x001064], + [0x001067, 0x00106D], + [0x001071, 0x001074], + [0x001082, 0x00108D], + [0x00108F, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00137F], + [0x001390, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x001400], + [0x00166D, 0x00166E], + [0x00169B, 0x00169F], + [0x0016EB, 0x0016ED], + [0x0016F9, 0x0016FF], + [0x001712, 0x00171E], + [0x001732, 0x00173F], + [0x001752, 0x00175F], + [0x001771, 0x00177F], + [0x0017B4, 0x0017D6], + [0x0017D8, 0x0017DB], + [0x0017DD, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00191F, 0x00194F], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019FF], + [0x001A17, 0x001A1F], + [0x001A55, 0x001AA6], + [0x001AA8, 0x001B04], + [0x001B34, 0x001B44], + [0x001B4D, 0x001B82], + [0x001BA1, 0x001BAD], + [0x001BB0, 0x001BB9], + [0x001BE6, 0x001BFF], + [0x001C24, 0x001C4C], + [0x001C50, 0x001C59], + [0x001C7E, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001CE8], + [0x001CF7, 0x001CF9], + [0x001CFB, 0x001CFF], + [0x001DC0, 0x001DFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FDC, 0x001FDF], + [0x001FED, 0x001FF1], + [0x001FFD, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002117], + [0x00211E, 0x002123], + [0x00213A, 0x00213B], + [0x002140, 0x002144], + [0x00214A, 0x00214D], + [0x00214F, 0x00215F], + [0x002189, 0x002BFF], + [0x002CE5, 0x002CEA], + [0x002CEF, 0x002CF1], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D70, 0x002D7F], + [0x002D97, 0x002D9F], + [0x002DDF, 0x003004], + [0x003008, 0x003020], + [0x00302A, 0x003030], + [0x003036, 0x003037], + [0x00303D, 0x003040], + [0x003097, 0x00309A], + [0x003100, 0x003104], + [0x00318F, 0x00319F], + [0x0031C0, 0x0031EF], + [0x003200, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A48D, 0x00A4CF], + [0x00A4FE, 0x00A4FF], + [0x00A60D, 0x00A60F], + [0x00A620, 0x00A629], + [0x00A62C, 0x00A63F], + [0x00A66F, 0x00A67E], + [0x00A69E, 0x00A69F], + [0x00A6F0, 0x00A716], + [0x00A720, 0x00A721], + [0x00A789, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A823, 0x00A83F], + [0x00A874, 0x00A881], + [0x00A8B4, 0x00A8F1], + [0x00A8F8, 0x00A8FA], + [0x00A8FF, 0x00A909], + [0x00A926, 0x00A92F], + [0x00A947, 0x00A95F], + [0x00A97D, 0x00A983], + [0x00A9B3, 0x00A9CE], + [0x00A9D0, 0x00A9DF], + [0x00A9F0, 0x00A9F9], + [0x00AA29, 0x00AA3F], + [0x00AA4C, 0x00AA5F], + [0x00AA77, 0x00AA79], + [0x00AA7B, 0x00AA7D], + [0x00AAB2, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABE, 0x00AABF], + [0x00AAC3, 0x00AADA], + [0x00AADE, 0x00AADF], + [0x00AAEB, 0x00AAF1], + [0x00AAF5, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6A, 0x00AB6F], + [0x00ABE3, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBB2, 0x00FBD2], + [0x00FD3E, 0x00FD4F], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDEF], + [0x00FDFC, 0x00FE6F], + [0x00FEFD, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x00FF65], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x01013F], + [0x010175, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102FF], + [0x010320, 0x01032C], + [0x01034B, 0x01034F], + [0x010376, 0x01037F], + [0x01039E, 0x01039F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x0103FF], + [0x01049E, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056F], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x010856, 0x01085F], + [0x010877, 0x01087F], + [0x01089F, 0x0108DF], + [0x0108F6, 0x0108FF], + [0x010916, 0x01091F], + [0x01093A, 0x01097F], + [0x0109B8, 0x0109BD], + [0x0109C0, 0x0109FF], + [0x010A01, 0x010A0F], + [0x010A36, 0x010A5F], + [0x010A7D, 0x010A7F], + [0x010A9D, 0x010ABF], + [0x010AE5, 0x010AFF], + [0x010B36, 0x010B3F], + [0x010B56, 0x010B5F], + [0x010B73, 0x010B7F], + [0x010B92, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CFF], + [0x010D24, 0x010E7F], + [0x010EAA, 0x010EAF], + [0x010EB2, 0x010EFF], + [0x010F1D, 0x010F26], + [0x010F28, 0x010F2F], + [0x010F46, 0x010F6F], + [0x010F82, 0x010FAF], + [0x010FC5, 0x010FDF], + [0x010FF7, 0x011002], + [0x011038, 0x011070], + [0x011073, 0x011074], + [0x011076, 0x011082], + [0x0110B0, 0x0110CF], + [0x0110E9, 0x011102], + [0x011127, 0x011143], + [0x011145, 0x011146], + [0x011148, 0x01114F], + [0x011173, 0x011175], + [0x011177, 0x011182], + [0x0111B3, 0x0111C0], + [0x0111C5, 0x0111D9], + [0x0111DD, 0x0111FF], + [0x01122C, 0x01123E], + [0x011241, 0x01127F], + [0x0112A9, 0x0112AF], + [0x0112DF, 0x011304], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x01133A, 0x01133C], + [0x01133E, 0x01134F], + [0x011351, 0x01135C], + [0x011362, 0x0113FF], + [0x011435, 0x011446], + [0x01144B, 0x01145E], + [0x011462, 0x01147F], + [0x0114B0, 0x0114C3], + [0x0114C8, 0x01157F], + [0x0115AF, 0x0115D7], + [0x0115DC, 0x0115FF], + [0x011630, 0x011643], + [0x011645, 0x01167F], + [0x0116AB, 0x0116B7], + [0x0116B9, 0x0116FF], + [0x01171B, 0x01173F], + [0x011747, 0x0117FF], + [0x01182C, 0x01189F], + [0x0118E0, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011930, 0x01193E], + [0x011942, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D1, 0x0119E0], + [0x0119E4, 0x0119FF], + [0x011A01, 0x011A0A], + [0x011A33, 0x011A39], + [0x011A3B, 0x011A4F], + [0x011A51, 0x011A5B], + [0x011A8A, 0x011A9C], + [0x011A9E, 0x011AAF], + [0x011AF9, 0x011BFF], + [0x011C2F, 0x011C3F], + [0x011C41, 0x011C71], + [0x011C90, 0x011CFF], + [0x011D31, 0x011D45], + [0x011D47, 0x011D5F], + [0x011D8A, 0x011D97], + [0x011D99, 0x011EDF], + [0x011EF3, 0x011F01], + [0x011F34, 0x011FAF], + [0x011FB1, 0x011FFF], + [0x01239A, 0x0123FF], + [0x01246F, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF1, 0x012FFF], + [0x013430, 0x013440], + [0x013447, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A5F, 0x016A6F], + [0x016ABF, 0x016ACF], + [0x016AEE, 0x016AFF], + [0x016B30, 0x016B3F], + [0x016B44, 0x016B62], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E80, 0x016EFF], + [0x016F4B, 0x016F4F], + [0x016F51, 0x016F92], + [0x016FA0, 0x016FDF], + [0x016FE4, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01E02F], + [0x01E06E, 0x01E0FF], + [0x01E12D, 0x01E136], + [0x01E13E, 0x01E14D], + [0x01E14F, 0x01E28F], + [0x01E2AE, 0x01E2BF], + [0x01E2EC, 0x01E4CF], + [0x01E4EC, 0x01E7DF], + [0x01E8C5, 0x01E8FF], + [0x01E944, 0x01E94A], + [0x01E94C, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{ID_Start}+$/u, + nonMatchSymbols, + "\\P{ID_Start}" +); +testPropertyEscapes( + /^\P{IDS}+$/u, + nonMatchSymbols, + "\\P{IDS}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Ideographic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Ideographic.js new file mode 100644 index 0000000000..6a10f8acfe --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Ideographic.js @@ -0,0 +1,92 @@ +// Copyright 2022 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 for `Ideographic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x016FE4 + ], + ranges: [ + [0x003006, 0x003007], + [0x003021, 0x003029], + [0x003038, 0x00303A], + [0x003400, 0x004DBF], + [0x004E00, 0x009FFF], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01B170, 0x01B2FB], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{Ideographic}+$/u, + matchSymbols, + "\\p{Ideographic}" +); +testPropertyEscapes( + /^\p{Ideo}+$/u, + matchSymbols, + "\\p{Ideo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x003005], + [0x003008, 0x003020], + [0x00302A, 0x003037], + [0x00303B, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A000, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x016FE3], + [0x016FE5, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01B16F], + [0x01B2FC, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Ideographic}+$/u, + nonMatchSymbols, + "\\P{Ideographic}" +); +testPropertyEscapes( + /^\P{Ideo}+$/u, + nonMatchSymbols, + "\\P{Ideo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Join_Control.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Join_Control.js new file mode 100644 index 0000000000..4d0dffd4f3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Join_Control.js @@ -0,0 +1,53 @@ +// Copyright 2022 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 for `Join_Control` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00200C, 0x00200D] + ] +}); +testPropertyEscapes( + /^\p{Join_Control}+$/u, + matchSymbols, + "\\p{Join_Control}" +); +testPropertyEscapes( + /^\p{Join_C}+$/u, + matchSymbols, + "\\p{Join_C}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00200B], + [0x00200E, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Join_Control}+$/u, + nonMatchSymbols, + "\\P{Join_Control}" +); +testPropertyEscapes( + /^\P{Join_C}+$/u, + nonMatchSymbols, + "\\P{Join_C}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js new file mode 100644 index 0000000000..8704592db3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Logical_Order_Exception.js @@ -0,0 +1,67 @@ +// Copyright 2022 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 for `Logical_Order_Exception` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0019BA, + 0x00AAB9 + ], + ranges: [ + [0x000E40, 0x000E44], + [0x000EC0, 0x000EC4], + [0x0019B5, 0x0019B7], + [0x00AAB5, 0x00AAB6], + [0x00AABB, 0x00AABC] + ] +}); +testPropertyEscapes( + /^\p{Logical_Order_Exception}+$/u, + matchSymbols, + "\\p{Logical_Order_Exception}" +); +testPropertyEscapes( + /^\p{LOE}+$/u, + matchSymbols, + "\\p{LOE}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00AABA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000E3F], + [0x000E45, 0x000EBF], + [0x000EC5, 0x0019B4], + [0x0019B8, 0x0019B9], + [0x0019BB, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABD, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Logical_Order_Exception}+$/u, + nonMatchSymbols, + "\\P{Logical_Order_Exception}" +); +testPropertyEscapes( + /^\P{LOE}+$/u, + nonMatchSymbols, + "\\P{LOE}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Lowercase.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Lowercase.js new file mode 100644 index 0000000000..d88d1a2a64 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Lowercase.js @@ -0,0 +1,1395 @@ +// Copyright 2022 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 for `Lowercase` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000B5, + 0x0000BA, + 0x000101, + 0x000103, + 0x000105, + 0x000107, + 0x000109, + 0x00010B, + 0x00010D, + 0x00010F, + 0x000111, + 0x000113, + 0x000115, + 0x000117, + 0x000119, + 0x00011B, + 0x00011D, + 0x00011F, + 0x000121, + 0x000123, + 0x000125, + 0x000127, + 0x000129, + 0x00012B, + 0x00012D, + 0x00012F, + 0x000131, + 0x000133, + 0x000135, + 0x00013A, + 0x00013C, + 0x00013E, + 0x000140, + 0x000142, + 0x000144, + 0x000146, + 0x00014B, + 0x00014D, + 0x00014F, + 0x000151, + 0x000153, + 0x000155, + 0x000157, + 0x000159, + 0x00015B, + 0x00015D, + 0x00015F, + 0x000161, + 0x000163, + 0x000165, + 0x000167, + 0x000169, + 0x00016B, + 0x00016D, + 0x00016F, + 0x000171, + 0x000173, + 0x000175, + 0x000177, + 0x00017A, + 0x00017C, + 0x000183, + 0x000185, + 0x000188, + 0x000192, + 0x000195, + 0x00019E, + 0x0001A1, + 0x0001A3, + 0x0001A5, + 0x0001A8, + 0x0001AD, + 0x0001B0, + 0x0001B4, + 0x0001B6, + 0x0001C6, + 0x0001C9, + 0x0001CC, + 0x0001CE, + 0x0001D0, + 0x0001D2, + 0x0001D4, + 0x0001D6, + 0x0001D8, + 0x0001DA, + 0x0001DF, + 0x0001E1, + 0x0001E3, + 0x0001E5, + 0x0001E7, + 0x0001E9, + 0x0001EB, + 0x0001ED, + 0x0001F3, + 0x0001F5, + 0x0001F9, + 0x0001FB, + 0x0001FD, + 0x0001FF, + 0x000201, + 0x000203, + 0x000205, + 0x000207, + 0x000209, + 0x00020B, + 0x00020D, + 0x00020F, + 0x000211, + 0x000213, + 0x000215, + 0x000217, + 0x000219, + 0x00021B, + 0x00021D, + 0x00021F, + 0x000221, + 0x000223, + 0x000225, + 0x000227, + 0x000229, + 0x00022B, + 0x00022D, + 0x00022F, + 0x000231, + 0x00023C, + 0x000242, + 0x000247, + 0x000249, + 0x00024B, + 0x00024D, + 0x000345, + 0x000371, + 0x000373, + 0x000377, + 0x000390, + 0x0003D9, + 0x0003DB, + 0x0003DD, + 0x0003DF, + 0x0003E1, + 0x0003E3, + 0x0003E5, + 0x0003E7, + 0x0003E9, + 0x0003EB, + 0x0003ED, + 0x0003F5, + 0x0003F8, + 0x000461, + 0x000463, + 0x000465, + 0x000467, + 0x000469, + 0x00046B, + 0x00046D, + 0x00046F, + 0x000471, + 0x000473, + 0x000475, + 0x000477, + 0x000479, + 0x00047B, + 0x00047D, + 0x00047F, + 0x000481, + 0x00048B, + 0x00048D, + 0x00048F, + 0x000491, + 0x000493, + 0x000495, + 0x000497, + 0x000499, + 0x00049B, + 0x00049D, + 0x00049F, + 0x0004A1, + 0x0004A3, + 0x0004A5, + 0x0004A7, + 0x0004A9, + 0x0004AB, + 0x0004AD, + 0x0004AF, + 0x0004B1, + 0x0004B3, + 0x0004B5, + 0x0004B7, + 0x0004B9, + 0x0004BB, + 0x0004BD, + 0x0004BF, + 0x0004C2, + 0x0004C4, + 0x0004C6, + 0x0004C8, + 0x0004CA, + 0x0004CC, + 0x0004D1, + 0x0004D3, + 0x0004D5, + 0x0004D7, + 0x0004D9, + 0x0004DB, + 0x0004DD, + 0x0004DF, + 0x0004E1, + 0x0004E3, + 0x0004E5, + 0x0004E7, + 0x0004E9, + 0x0004EB, + 0x0004ED, + 0x0004EF, + 0x0004F1, + 0x0004F3, + 0x0004F5, + 0x0004F7, + 0x0004F9, + 0x0004FB, + 0x0004FD, + 0x0004FF, + 0x000501, + 0x000503, + 0x000505, + 0x000507, + 0x000509, + 0x00050B, + 0x00050D, + 0x00050F, + 0x000511, + 0x000513, + 0x000515, + 0x000517, + 0x000519, + 0x00051B, + 0x00051D, + 0x00051F, + 0x000521, + 0x000523, + 0x000525, + 0x000527, + 0x000529, + 0x00052B, + 0x00052D, + 0x00052F, + 0x001E01, + 0x001E03, + 0x001E05, + 0x001E07, + 0x001E09, + 0x001E0B, + 0x001E0D, + 0x001E0F, + 0x001E11, + 0x001E13, + 0x001E15, + 0x001E17, + 0x001E19, + 0x001E1B, + 0x001E1D, + 0x001E1F, + 0x001E21, + 0x001E23, + 0x001E25, + 0x001E27, + 0x001E29, + 0x001E2B, + 0x001E2D, + 0x001E2F, + 0x001E31, + 0x001E33, + 0x001E35, + 0x001E37, + 0x001E39, + 0x001E3B, + 0x001E3D, + 0x001E3F, + 0x001E41, + 0x001E43, + 0x001E45, + 0x001E47, + 0x001E49, + 0x001E4B, + 0x001E4D, + 0x001E4F, + 0x001E51, + 0x001E53, + 0x001E55, + 0x001E57, + 0x001E59, + 0x001E5B, + 0x001E5D, + 0x001E5F, + 0x001E61, + 0x001E63, + 0x001E65, + 0x001E67, + 0x001E69, + 0x001E6B, + 0x001E6D, + 0x001E6F, + 0x001E71, + 0x001E73, + 0x001E75, + 0x001E77, + 0x001E79, + 0x001E7B, + 0x001E7D, + 0x001E7F, + 0x001E81, + 0x001E83, + 0x001E85, + 0x001E87, + 0x001E89, + 0x001E8B, + 0x001E8D, + 0x001E8F, + 0x001E91, + 0x001E93, + 0x001E9F, + 0x001EA1, + 0x001EA3, + 0x001EA5, + 0x001EA7, + 0x001EA9, + 0x001EAB, + 0x001EAD, + 0x001EAF, + 0x001EB1, + 0x001EB3, + 0x001EB5, + 0x001EB7, + 0x001EB9, + 0x001EBB, + 0x001EBD, + 0x001EBF, + 0x001EC1, + 0x001EC3, + 0x001EC5, + 0x001EC7, + 0x001EC9, + 0x001ECB, + 0x001ECD, + 0x001ECF, + 0x001ED1, + 0x001ED3, + 0x001ED5, + 0x001ED7, + 0x001ED9, + 0x001EDB, + 0x001EDD, + 0x001EDF, + 0x001EE1, + 0x001EE3, + 0x001EE5, + 0x001EE7, + 0x001EE9, + 0x001EEB, + 0x001EED, + 0x001EEF, + 0x001EF1, + 0x001EF3, + 0x001EF5, + 0x001EF7, + 0x001EF9, + 0x001EFB, + 0x001EFD, + 0x001FBE, + 0x002071, + 0x00207F, + 0x00210A, + 0x002113, + 0x00212F, + 0x002134, + 0x002139, + 0x00214E, + 0x002184, + 0x002C61, + 0x002C68, + 0x002C6A, + 0x002C6C, + 0x002C71, + 0x002C81, + 0x002C83, + 0x002C85, + 0x002C87, + 0x002C89, + 0x002C8B, + 0x002C8D, + 0x002C8F, + 0x002C91, + 0x002C93, + 0x002C95, + 0x002C97, + 0x002C99, + 0x002C9B, + 0x002C9D, + 0x002C9F, + 0x002CA1, + 0x002CA3, + 0x002CA5, + 0x002CA7, + 0x002CA9, + 0x002CAB, + 0x002CAD, + 0x002CAF, + 0x002CB1, + 0x002CB3, + 0x002CB5, + 0x002CB7, + 0x002CB9, + 0x002CBB, + 0x002CBD, + 0x002CBF, + 0x002CC1, + 0x002CC3, + 0x002CC5, + 0x002CC7, + 0x002CC9, + 0x002CCB, + 0x002CCD, + 0x002CCF, + 0x002CD1, + 0x002CD3, + 0x002CD5, + 0x002CD7, + 0x002CD9, + 0x002CDB, + 0x002CDD, + 0x002CDF, + 0x002CE1, + 0x002CEC, + 0x002CEE, + 0x002CF3, + 0x002D27, + 0x002D2D, + 0x00A641, + 0x00A643, + 0x00A645, + 0x00A647, + 0x00A649, + 0x00A64B, + 0x00A64D, + 0x00A64F, + 0x00A651, + 0x00A653, + 0x00A655, + 0x00A657, + 0x00A659, + 0x00A65B, + 0x00A65D, + 0x00A65F, + 0x00A661, + 0x00A663, + 0x00A665, + 0x00A667, + 0x00A669, + 0x00A66B, + 0x00A66D, + 0x00A681, + 0x00A683, + 0x00A685, + 0x00A687, + 0x00A689, + 0x00A68B, + 0x00A68D, + 0x00A68F, + 0x00A691, + 0x00A693, + 0x00A695, + 0x00A697, + 0x00A699, + 0x00A723, + 0x00A725, + 0x00A727, + 0x00A729, + 0x00A72B, + 0x00A72D, + 0x00A733, + 0x00A735, + 0x00A737, + 0x00A739, + 0x00A73B, + 0x00A73D, + 0x00A73F, + 0x00A741, + 0x00A743, + 0x00A745, + 0x00A747, + 0x00A749, + 0x00A74B, + 0x00A74D, + 0x00A74F, + 0x00A751, + 0x00A753, + 0x00A755, + 0x00A757, + 0x00A759, + 0x00A75B, + 0x00A75D, + 0x00A75F, + 0x00A761, + 0x00A763, + 0x00A765, + 0x00A767, + 0x00A769, + 0x00A76B, + 0x00A76D, + 0x00A77A, + 0x00A77C, + 0x00A77F, + 0x00A781, + 0x00A783, + 0x00A785, + 0x00A787, + 0x00A78C, + 0x00A78E, + 0x00A791, + 0x00A797, + 0x00A799, + 0x00A79B, + 0x00A79D, + 0x00A79F, + 0x00A7A1, + 0x00A7A3, + 0x00A7A5, + 0x00A7A7, + 0x00A7A9, + 0x00A7AF, + 0x00A7B5, + 0x00A7B7, + 0x00A7B9, + 0x00A7BB, + 0x00A7BD, + 0x00A7BF, + 0x00A7C1, + 0x00A7C3, + 0x00A7C8, + 0x00A7CA, + 0x00A7D1, + 0x00A7D3, + 0x00A7D5, + 0x00A7D7, + 0x00A7D9, + 0x00A7F6, + 0x010780, + 0x01D4BB, + 0x01D7CB + ], + ranges: [ + [0x000061, 0x00007A], + [0x0000DF, 0x0000F6], + [0x0000F8, 0x0000FF], + [0x000137, 0x000138], + [0x000148, 0x000149], + [0x00017E, 0x000180], + [0x00018C, 0x00018D], + [0x000199, 0x00019B], + [0x0001AA, 0x0001AB], + [0x0001B9, 0x0001BA], + [0x0001BD, 0x0001BF], + [0x0001DC, 0x0001DD], + [0x0001EF, 0x0001F0], + [0x000233, 0x000239], + [0x00023F, 0x000240], + [0x00024F, 0x000293], + [0x000295, 0x0002B8], + [0x0002C0, 0x0002C1], + [0x0002E0, 0x0002E4], + [0x00037A, 0x00037D], + [0x0003AC, 0x0003CE], + [0x0003D0, 0x0003D1], + [0x0003D5, 0x0003D7], + [0x0003EF, 0x0003F3], + [0x0003FB, 0x0003FC], + [0x000430, 0x00045F], + [0x0004CE, 0x0004CF], + [0x000560, 0x000588], + [0x0010D0, 0x0010FA], + [0x0010FC, 0x0010FF], + [0x0013F8, 0x0013FD], + [0x001C80, 0x001C88], + [0x001D00, 0x001DBF], + [0x001E95, 0x001E9D], + [0x001EFF, 0x001F07], + [0x001F10, 0x001F15], + [0x001F20, 0x001F27], + [0x001F30, 0x001F37], + [0x001F40, 0x001F45], + [0x001F50, 0x001F57], + [0x001F60, 0x001F67], + [0x001F70, 0x001F7D], + [0x001F80, 0x001F87], + [0x001F90, 0x001F97], + [0x001FA0, 0x001FA7], + [0x001FB0, 0x001FB4], + [0x001FB6, 0x001FB7], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FC7], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FD7], + [0x001FE0, 0x001FE7], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FF7], + [0x002090, 0x00209C], + [0x00210E, 0x00210F], + [0x00213C, 0x00213D], + [0x002146, 0x002149], + [0x002170, 0x00217F], + [0x0024D0, 0x0024E9], + [0x002C30, 0x002C5F], + [0x002C65, 0x002C66], + [0x002C73, 0x002C74], + [0x002C76, 0x002C7D], + [0x002CE3, 0x002CE4], + [0x002D00, 0x002D25], + [0x00A69B, 0x00A69D], + [0x00A72F, 0x00A731], + [0x00A76F, 0x00A778], + [0x00A793, 0x00A795], + [0x00A7F2, 0x00A7F4], + [0x00A7F8, 0x00A7FA], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB70, 0x00ABBF], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FF41, 0x00FF5A], + [0x010428, 0x01044F], + [0x0104D8, 0x0104FB], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010783, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010CC0, 0x010CF2], + [0x0118C0, 0x0118DF], + [0x016E60, 0x016E7F], + [0x01D41A, 0x01D433], + [0x01D44E, 0x01D454], + [0x01D456, 0x01D467], + [0x01D482, 0x01D49B], + [0x01D4B6, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D4CF], + [0x01D4EA, 0x01D503], + [0x01D51E, 0x01D537], + [0x01D552, 0x01D56B], + [0x01D586, 0x01D59F], + [0x01D5BA, 0x01D5D3], + [0x01D5EE, 0x01D607], + [0x01D622, 0x01D63B], + [0x01D656, 0x01D66F], + [0x01D68A, 0x01D6A5], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6E1], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D71B], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D755], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D78F], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7C9], + [0x01DF00, 0x01DF09], + [0x01DF0B, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E030, 0x01E06D], + [0x01E922, 0x01E943] + ] +}); +testPropertyEscapes( + /^\p{Lowercase}+$/u, + matchSymbols, + "\\p{Lowercase}" +); +testPropertyEscapes( + /^\p{Lower}+$/u, + matchSymbols, + "\\p{Lower}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000F7, + 0x000100, + 0x000102, + 0x000104, + 0x000106, + 0x000108, + 0x00010A, + 0x00010C, + 0x00010E, + 0x000110, + 0x000112, + 0x000114, + 0x000116, + 0x000118, + 0x00011A, + 0x00011C, + 0x00011E, + 0x000120, + 0x000122, + 0x000124, + 0x000126, + 0x000128, + 0x00012A, + 0x00012C, + 0x00012E, + 0x000130, + 0x000132, + 0x000134, + 0x000136, + 0x000139, + 0x00013B, + 0x00013D, + 0x00013F, + 0x000141, + 0x000143, + 0x000145, + 0x000147, + 0x00014A, + 0x00014C, + 0x00014E, + 0x000150, + 0x000152, + 0x000154, + 0x000156, + 0x000158, + 0x00015A, + 0x00015C, + 0x00015E, + 0x000160, + 0x000162, + 0x000164, + 0x000166, + 0x000168, + 0x00016A, + 0x00016C, + 0x00016E, + 0x000170, + 0x000172, + 0x000174, + 0x000176, + 0x00017B, + 0x00017D, + 0x000184, + 0x0001A2, + 0x0001A4, + 0x0001A9, + 0x0001AC, + 0x0001B5, + 0x0001CD, + 0x0001CF, + 0x0001D1, + 0x0001D3, + 0x0001D5, + 0x0001D7, + 0x0001D9, + 0x0001DB, + 0x0001DE, + 0x0001E0, + 0x0001E2, + 0x0001E4, + 0x0001E6, + 0x0001E8, + 0x0001EA, + 0x0001EC, + 0x0001EE, + 0x0001F4, + 0x0001FA, + 0x0001FC, + 0x0001FE, + 0x000200, + 0x000202, + 0x000204, + 0x000206, + 0x000208, + 0x00020A, + 0x00020C, + 0x00020E, + 0x000210, + 0x000212, + 0x000214, + 0x000216, + 0x000218, + 0x00021A, + 0x00021C, + 0x00021E, + 0x000220, + 0x000222, + 0x000224, + 0x000226, + 0x000228, + 0x00022A, + 0x00022C, + 0x00022E, + 0x000230, + 0x000232, + 0x000241, + 0x000248, + 0x00024A, + 0x00024C, + 0x00024E, + 0x000294, + 0x000372, + 0x0003CF, + 0x0003D8, + 0x0003DA, + 0x0003DC, + 0x0003DE, + 0x0003E0, + 0x0003E2, + 0x0003E4, + 0x0003E6, + 0x0003E8, + 0x0003EA, + 0x0003EC, + 0x0003EE, + 0x0003F4, + 0x000460, + 0x000462, + 0x000464, + 0x000466, + 0x000468, + 0x00046A, + 0x00046C, + 0x00046E, + 0x000470, + 0x000472, + 0x000474, + 0x000476, + 0x000478, + 0x00047A, + 0x00047C, + 0x00047E, + 0x000480, + 0x00048C, + 0x00048E, + 0x000490, + 0x000492, + 0x000494, + 0x000496, + 0x000498, + 0x00049A, + 0x00049C, + 0x00049E, + 0x0004A0, + 0x0004A2, + 0x0004A4, + 0x0004A6, + 0x0004A8, + 0x0004AA, + 0x0004AC, + 0x0004AE, + 0x0004B0, + 0x0004B2, + 0x0004B4, + 0x0004B6, + 0x0004B8, + 0x0004BA, + 0x0004BC, + 0x0004BE, + 0x0004C3, + 0x0004C5, + 0x0004C7, + 0x0004C9, + 0x0004CB, + 0x0004CD, + 0x0004D0, + 0x0004D2, + 0x0004D4, + 0x0004D6, + 0x0004D8, + 0x0004DA, + 0x0004DC, + 0x0004DE, + 0x0004E0, + 0x0004E2, + 0x0004E4, + 0x0004E6, + 0x0004E8, + 0x0004EA, + 0x0004EC, + 0x0004EE, + 0x0004F0, + 0x0004F2, + 0x0004F4, + 0x0004F6, + 0x0004F8, + 0x0004FA, + 0x0004FC, + 0x0004FE, + 0x000500, + 0x000502, + 0x000504, + 0x000506, + 0x000508, + 0x00050A, + 0x00050C, + 0x00050E, + 0x000510, + 0x000512, + 0x000514, + 0x000516, + 0x000518, + 0x00051A, + 0x00051C, + 0x00051E, + 0x000520, + 0x000522, + 0x000524, + 0x000526, + 0x000528, + 0x00052A, + 0x00052C, + 0x00052E, + 0x0010FB, + 0x001E02, + 0x001E04, + 0x001E06, + 0x001E08, + 0x001E0A, + 0x001E0C, + 0x001E0E, + 0x001E10, + 0x001E12, + 0x001E14, + 0x001E16, + 0x001E18, + 0x001E1A, + 0x001E1C, + 0x001E1E, + 0x001E20, + 0x001E22, + 0x001E24, + 0x001E26, + 0x001E28, + 0x001E2A, + 0x001E2C, + 0x001E2E, + 0x001E30, + 0x001E32, + 0x001E34, + 0x001E36, + 0x001E38, + 0x001E3A, + 0x001E3C, + 0x001E3E, + 0x001E40, + 0x001E42, + 0x001E44, + 0x001E46, + 0x001E48, + 0x001E4A, + 0x001E4C, + 0x001E4E, + 0x001E50, + 0x001E52, + 0x001E54, + 0x001E56, + 0x001E58, + 0x001E5A, + 0x001E5C, + 0x001E5E, + 0x001E60, + 0x001E62, + 0x001E64, + 0x001E66, + 0x001E68, + 0x001E6A, + 0x001E6C, + 0x001E6E, + 0x001E70, + 0x001E72, + 0x001E74, + 0x001E76, + 0x001E78, + 0x001E7A, + 0x001E7C, + 0x001E7E, + 0x001E80, + 0x001E82, + 0x001E84, + 0x001E86, + 0x001E88, + 0x001E8A, + 0x001E8C, + 0x001E8E, + 0x001E90, + 0x001E92, + 0x001E94, + 0x001E9E, + 0x001EA0, + 0x001EA2, + 0x001EA4, + 0x001EA6, + 0x001EA8, + 0x001EAA, + 0x001EAC, + 0x001EAE, + 0x001EB0, + 0x001EB2, + 0x001EB4, + 0x001EB6, + 0x001EB8, + 0x001EBA, + 0x001EBC, + 0x001EBE, + 0x001EC0, + 0x001EC2, + 0x001EC4, + 0x001EC6, + 0x001EC8, + 0x001ECA, + 0x001ECC, + 0x001ECE, + 0x001ED0, + 0x001ED2, + 0x001ED4, + 0x001ED6, + 0x001ED8, + 0x001EDA, + 0x001EDC, + 0x001EDE, + 0x001EE0, + 0x001EE2, + 0x001EE4, + 0x001EE6, + 0x001EE8, + 0x001EEA, + 0x001EEC, + 0x001EEE, + 0x001EF0, + 0x001EF2, + 0x001EF4, + 0x001EF6, + 0x001EF8, + 0x001EFA, + 0x001EFC, + 0x001EFE, + 0x001FB5, + 0x001FC5, + 0x001FF5, + 0x002C60, + 0x002C67, + 0x002C69, + 0x002C6B, + 0x002C72, + 0x002C75, + 0x002C82, + 0x002C84, + 0x002C86, + 0x002C88, + 0x002C8A, + 0x002C8C, + 0x002C8E, + 0x002C90, + 0x002C92, + 0x002C94, + 0x002C96, + 0x002C98, + 0x002C9A, + 0x002C9C, + 0x002C9E, + 0x002CA0, + 0x002CA2, + 0x002CA4, + 0x002CA6, + 0x002CA8, + 0x002CAA, + 0x002CAC, + 0x002CAE, + 0x002CB0, + 0x002CB2, + 0x002CB4, + 0x002CB6, + 0x002CB8, + 0x002CBA, + 0x002CBC, + 0x002CBE, + 0x002CC0, + 0x002CC2, + 0x002CC4, + 0x002CC6, + 0x002CC8, + 0x002CCA, + 0x002CCC, + 0x002CCE, + 0x002CD0, + 0x002CD2, + 0x002CD4, + 0x002CD6, + 0x002CD8, + 0x002CDA, + 0x002CDC, + 0x002CDE, + 0x002CE0, + 0x002CE2, + 0x002CED, + 0x002D26, + 0x00A642, + 0x00A644, + 0x00A646, + 0x00A648, + 0x00A64A, + 0x00A64C, + 0x00A64E, + 0x00A650, + 0x00A652, + 0x00A654, + 0x00A656, + 0x00A658, + 0x00A65A, + 0x00A65C, + 0x00A65E, + 0x00A660, + 0x00A662, + 0x00A664, + 0x00A666, + 0x00A668, + 0x00A66A, + 0x00A66C, + 0x00A682, + 0x00A684, + 0x00A686, + 0x00A688, + 0x00A68A, + 0x00A68C, + 0x00A68E, + 0x00A690, + 0x00A692, + 0x00A694, + 0x00A696, + 0x00A698, + 0x00A69A, + 0x00A724, + 0x00A726, + 0x00A728, + 0x00A72A, + 0x00A72C, + 0x00A72E, + 0x00A732, + 0x00A734, + 0x00A736, + 0x00A738, + 0x00A73A, + 0x00A73C, + 0x00A73E, + 0x00A740, + 0x00A742, + 0x00A744, + 0x00A746, + 0x00A748, + 0x00A74A, + 0x00A74C, + 0x00A74E, + 0x00A750, + 0x00A752, + 0x00A754, + 0x00A756, + 0x00A758, + 0x00A75A, + 0x00A75C, + 0x00A75E, + 0x00A760, + 0x00A762, + 0x00A764, + 0x00A766, + 0x00A768, + 0x00A76A, + 0x00A76C, + 0x00A76E, + 0x00A779, + 0x00A77B, + 0x00A780, + 0x00A782, + 0x00A784, + 0x00A786, + 0x00A78D, + 0x00A792, + 0x00A796, + 0x00A798, + 0x00A79A, + 0x00A79C, + 0x00A79E, + 0x00A7A0, + 0x00A7A2, + 0x00A7A4, + 0x00A7A6, + 0x00A7A8, + 0x00A7B6, + 0x00A7B8, + 0x00A7BA, + 0x00A7BC, + 0x00A7BE, + 0x00A7C0, + 0x00A7C2, + 0x00A7C9, + 0x00A7D2, + 0x00A7D4, + 0x00A7D6, + 0x00A7D8, + 0x00A7F5, + 0x00A7F7, + 0x00AB5B, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x01D455, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D6DB, + 0x01D715, + 0x01D74F, + 0x01D789, + 0x01D7C3, + 0x01D7CA, + 0x01DF0A + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B4], + [0x0000B6, 0x0000B9], + [0x0000BB, 0x0000DE], + [0x000178, 0x000179], + [0x000181, 0x000182], + [0x000186, 0x000187], + [0x000189, 0x00018B], + [0x00018E, 0x000191], + [0x000193, 0x000194], + [0x000196, 0x000198], + [0x00019C, 0x00019D], + [0x00019F, 0x0001A0], + [0x0001A6, 0x0001A7], + [0x0001AE, 0x0001AF], + [0x0001B1, 0x0001B3], + [0x0001B7, 0x0001B8], + [0x0001BB, 0x0001BC], + [0x0001C0, 0x0001C5], + [0x0001C7, 0x0001C8], + [0x0001CA, 0x0001CB], + [0x0001F1, 0x0001F2], + [0x0001F6, 0x0001F8], + [0x00023A, 0x00023B], + [0x00023D, 0x00023E], + [0x000243, 0x000246], + [0x0002B9, 0x0002BF], + [0x0002C2, 0x0002DF], + [0x0002E5, 0x000344], + [0x000346, 0x000370], + [0x000374, 0x000376], + [0x000378, 0x000379], + [0x00037E, 0x00038F], + [0x000391, 0x0003AB], + [0x0003D2, 0x0003D4], + [0x0003F6, 0x0003F7], + [0x0003F9, 0x0003FA], + [0x0003FD, 0x00042F], + [0x000482, 0x00048A], + [0x0004C0, 0x0004C1], + [0x000530, 0x00055F], + [0x000589, 0x0010CF], + [0x001100, 0x0013F7], + [0x0013FE, 0x001C7F], + [0x001C89, 0x001CFF], + [0x001DC0, 0x001E00], + [0x001F08, 0x001F0F], + [0x001F16, 0x001F1F], + [0x001F28, 0x001F2F], + [0x001F38, 0x001F3F], + [0x001F46, 0x001F4F], + [0x001F58, 0x001F5F], + [0x001F68, 0x001F6F], + [0x001F7E, 0x001F7F], + [0x001F88, 0x001F8F], + [0x001F98, 0x001F9F], + [0x001FA8, 0x001FAF], + [0x001FB8, 0x001FBD], + [0x001FBF, 0x001FC1], + [0x001FC8, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FD8, 0x001FDF], + [0x001FE8, 0x001FF1], + [0x001FF8, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x002109], + [0x00210B, 0x00210D], + [0x002110, 0x002112], + [0x002114, 0x00212E], + [0x002130, 0x002133], + [0x002135, 0x002138], + [0x00213A, 0x00213B], + [0x00213E, 0x002145], + [0x00214A, 0x00214D], + [0x00214F, 0x00216F], + [0x002180, 0x002183], + [0x002185, 0x0024CF], + [0x0024EA, 0x002C2F], + [0x002C62, 0x002C64], + [0x002C6D, 0x002C70], + [0x002C7E, 0x002C80], + [0x002CE5, 0x002CEB], + [0x002CEF, 0x002CF2], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x00A640], + [0x00A66E, 0x00A680], + [0x00A69E, 0x00A722], + [0x00A77D, 0x00A77E], + [0x00A788, 0x00A78B], + [0x00A78F, 0x00A790], + [0x00A7AA, 0x00A7AE], + [0x00A7B0, 0x00A7B4], + [0x00A7C4, 0x00A7C7], + [0x00A7CB, 0x00A7D0], + [0x00A7DA, 0x00A7F1], + [0x00A7FB, 0x00AB2F], + [0x00AB6A, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FF40], + [0x00FF5B, 0x010427], + [0x010450, 0x0104D7], + [0x0104FC, 0x010596], + [0x0105BD, 0x01077F], + [0x010781, 0x010782], + [0x0107BB, 0x010CBF], + [0x010CF3, 0x0118BF], + [0x0118E0, 0x016E5F], + [0x016E80, 0x01D419], + [0x01D434, 0x01D44D], + [0x01D468, 0x01D481], + [0x01D49C, 0x01D4B5], + [0x01D4D0, 0x01D4E9], + [0x01D504, 0x01D51D], + [0x01D538, 0x01D551], + [0x01D56C, 0x01D585], + [0x01D5A0, 0x01D5B9], + [0x01D5D4, 0x01D5ED], + [0x01D608, 0x01D621], + [0x01D63C, 0x01D655], + [0x01D670, 0x01D689], + [0x01D6A6, 0x01D6C1], + [0x01D6E2, 0x01D6FB], + [0x01D71C, 0x01D735], + [0x01D756, 0x01D76F], + [0x01D790, 0x01D7A9], + [0x01D7CC, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01E02F], + [0x01E06E, 0x01E921], + [0x01E944, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Lowercase}+$/u, + nonMatchSymbols, + "\\P{Lowercase}" +); +testPropertyEscapes( + /^\P{Lower}+$/u, + nonMatchSymbols, + "\\P{Lower}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Math.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Math.js new file mode 100644 index 0000000000..a18b4d06dd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Math.js @@ -0,0 +1,319 @@ +// Copyright 2022 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 for `Math` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00002B, + 0x00005E, + 0x00007C, + 0x00007E, + 0x0000AC, + 0x0000B1, + 0x0000D7, + 0x0000F7, + 0x0003D5, + 0x002016, + 0x002040, + 0x002044, + 0x002052, + 0x0020E1, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x00214B, + 0x0021DD, + 0x00237C, + 0x0023B7, + 0x0023D0, + 0x0025E2, + 0x0025E4, + 0x002640, + 0x002642, + 0x00FB29, + 0x00FE68, + 0x00FF0B, + 0x00FF3C, + 0x00FF3E, + 0x00FF5C, + 0x00FF5E, + 0x00FFE2, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x00003C, 0x00003E], + [0x0003D0, 0x0003D2], + [0x0003F0, 0x0003F1], + [0x0003F4, 0x0003F6], + [0x000606, 0x000608], + [0x002032, 0x002034], + [0x002061, 0x002064], + [0x00207A, 0x00207E], + [0x00208A, 0x00208E], + [0x0020D0, 0x0020DC], + [0x0020E5, 0x0020E6], + [0x0020EB, 0x0020EF], + [0x00210A, 0x002113], + [0x002118, 0x00211D], + [0x002128, 0x002129], + [0x00212C, 0x00212D], + [0x00212F, 0x002131], + [0x002133, 0x002138], + [0x00213C, 0x002149], + [0x002190, 0x0021A7], + [0x0021A9, 0x0021AE], + [0x0021B0, 0x0021B1], + [0x0021B6, 0x0021B7], + [0x0021BC, 0x0021DB], + [0x0021E4, 0x0021E5], + [0x0021F4, 0x0022FF], + [0x002308, 0x00230B], + [0x002320, 0x002321], + [0x00239B, 0x0023B5], + [0x0023DC, 0x0023E2], + [0x0025A0, 0x0025A1], + [0x0025AE, 0x0025B7], + [0x0025BC, 0x0025C1], + [0x0025C6, 0x0025C7], + [0x0025CA, 0x0025CB], + [0x0025CF, 0x0025D3], + [0x0025E7, 0x0025EC], + [0x0025F8, 0x0025FF], + [0x002605, 0x002606], + [0x002660, 0x002663], + [0x00266D, 0x00266F], + [0x0027C0, 0x0027FF], + [0x002900, 0x002AFF], + [0x002B30, 0x002B44], + [0x002B47, 0x002B4C], + [0x00FE61, 0x00FE66], + [0x00FF1C, 0x00FF1E], + [0x00FFE9, 0x00FFEC], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D7CB], + [0x01D7CE, 0x01D7FF], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01EEF0, 0x01EEF1] + ] +}); +testPropertyEscapes( + /^\p{Math}+$/u, + matchSymbols, + "\\p{Math}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00007D, + 0x002114, + 0x00212E, + 0x002132, + 0x00214A, + 0x0021A8, + 0x0021AF, + 0x0021DC, + 0x0023B6, + 0x0025E3, + 0x002641, + 0x00FE67, + 0x00FF3D, + 0x00FF5D, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002A], + [0x00002C, 0x00003B], + [0x00003F, 0x00005D], + [0x00005F, 0x00007B], + [0x00007F, 0x0000AB], + [0x0000AD, 0x0000B0], + [0x0000B2, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0003CF], + [0x0003D3, 0x0003D4], + [0x0003D6, 0x0003EF], + [0x0003F2, 0x0003F3], + [0x0003F7, 0x000605], + [0x000609, 0x002015], + [0x002017, 0x002031], + [0x002035, 0x00203F], + [0x002041, 0x002043], + [0x002045, 0x002051], + [0x002053, 0x002060], + [0x002065, 0x002079], + [0x00207F, 0x002089], + [0x00208F, 0x0020CF], + [0x0020DD, 0x0020E0], + [0x0020E2, 0x0020E4], + [0x0020E7, 0x0020EA], + [0x0020F0, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002117], + [0x00211E, 0x002123], + [0x002125, 0x002127], + [0x00212A, 0x00212B], + [0x002139, 0x00213B], + [0x00214C, 0x00218F], + [0x0021B2, 0x0021B5], + [0x0021B8, 0x0021BB], + [0x0021DE, 0x0021E3], + [0x0021E6, 0x0021F3], + [0x002300, 0x002307], + [0x00230C, 0x00231F], + [0x002322, 0x00237B], + [0x00237D, 0x00239A], + [0x0023B8, 0x0023CF], + [0x0023D1, 0x0023DB], + [0x0023E3, 0x00259F], + [0x0025A2, 0x0025AD], + [0x0025B8, 0x0025BB], + [0x0025C2, 0x0025C5], + [0x0025C8, 0x0025C9], + [0x0025CC, 0x0025CE], + [0x0025D4, 0x0025E1], + [0x0025E5, 0x0025E6], + [0x0025ED, 0x0025F7], + [0x002600, 0x002604], + [0x002607, 0x00263F], + [0x002643, 0x00265F], + [0x002664, 0x00266C], + [0x002670, 0x0027BF], + [0x002800, 0x0028FF], + [0x002B00, 0x002B2F], + [0x002B45, 0x002B46], + [0x002B4D, 0x00DBFF], + [0x00E000, 0x00FB28], + [0x00FB2A, 0x00FE60], + [0x00FE69, 0x00FF0A], + [0x00FF0C, 0x00FF1B], + [0x00FF1F, 0x00FF3B], + [0x00FF3F, 0x00FF5B], + [0x00FF5F, 0x00FFE1], + [0x00FFE3, 0x00FFE8], + [0x00FFED, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01D800, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01EEEF], + [0x01EEF2, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Math}+$/u, + nonMatchSymbols, + "\\P{Math}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js new file mode 100644 index 0000000000..ccab9ec2b4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Noncharacter_Code_Point.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Noncharacter_Code_Point` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00FDD0, 0x00FDEF], + [0x00FFFE, 0x00FFFF], + [0x01FFFE, 0x01FFFF], + [0x02FFFE, 0x02FFFF], + [0x03FFFE, 0x03FFFF], + [0x04FFFE, 0x04FFFF], + [0x05FFFE, 0x05FFFF], + [0x06FFFE, 0x06FFFF], + [0x07FFFE, 0x07FFFF], + [0x08FFFE, 0x08FFFF], + [0x09FFFE, 0x09FFFF], + [0x0AFFFE, 0x0AFFFF], + [0x0BFFFE, 0x0BFFFF], + [0x0CFFFE, 0x0CFFFF], + [0x0DFFFE, 0x0DFFFF], + [0x0EFFFE, 0x0EFFFF], + [0x0FFFFE, 0x0FFFFF], + [0x10FFFE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\p{Noncharacter_Code_Point}+$/u, + matchSymbols, + "\\p{Noncharacter_Code_Point}" +); +testPropertyEscapes( + /^\p{NChar}+$/u, + matchSymbols, + "\\p{NChar}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x00FDCF], + [0x00FDF0, 0x00FFFD], + [0x010000, 0x01FFFD], + [0x020000, 0x02FFFD], + [0x030000, 0x03FFFD], + [0x040000, 0x04FFFD], + [0x050000, 0x05FFFD], + [0x060000, 0x06FFFD], + [0x070000, 0x07FFFD], + [0x080000, 0x08FFFD], + [0x090000, 0x09FFFD], + [0x0A0000, 0x0AFFFD], + [0x0B0000, 0x0BFFFD], + [0x0C0000, 0x0CFFFD], + [0x0D0000, 0x0DFFFD], + [0x0E0000, 0x0EFFFD], + [0x0F0000, 0x0FFFFD], + [0x100000, 0x10FFFD] + ] +}); +testPropertyEscapes( + /^\P{Noncharacter_Code_Point}+$/u, + nonMatchSymbols, + "\\P{Noncharacter_Code_Point}" +); +testPropertyEscapes( + /^\P{NChar}+$/u, + nonMatchSymbols, + "\\P{NChar}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js new file mode 100644 index 0000000000..6fd908921a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Pattern_Syntax.js @@ -0,0 +1,109 @@ +// Copyright 2022 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 for `Pattern_Syntax` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000060, + 0x0000A9, + 0x0000AE, + 0x0000B6, + 0x0000BB, + 0x0000BF, + 0x0000D7, + 0x0000F7, + 0x003030 + ], + ranges: [ + [0x000021, 0x00002F], + [0x00003A, 0x000040], + [0x00005B, 0x00005E], + [0x00007B, 0x00007E], + [0x0000A1, 0x0000A7], + [0x0000AB, 0x0000AC], + [0x0000B0, 0x0000B1], + [0x002010, 0x002027], + [0x002030, 0x00203E], + [0x002041, 0x002053], + [0x002055, 0x00205E], + [0x002190, 0x00245F], + [0x002500, 0x002775], + [0x002794, 0x002BFF], + [0x002E00, 0x002E7F], + [0x003001, 0x003003], + [0x003008, 0x003020], + [0x00FD3E, 0x00FD3F], + [0x00FE45, 0x00FE46] + ] +}); +testPropertyEscapes( + /^\p{Pattern_Syntax}+$/u, + matchSymbols, + "\\p{Pattern_Syntax}" +); +testPropertyEscapes( + /^\p{Pat_Syn}+$/u, + matchSymbols, + "\\p{Pat_Syn}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00005F, + 0x0000A8, + 0x0000AA, + 0x0000AD, + 0x0000AF, + 0x002054 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000020], + [0x000030, 0x000039], + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x00007F, 0x0000A0], + [0x0000B2, 0x0000B5], + [0x0000B7, 0x0000BA], + [0x0000BC, 0x0000BE], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x00200F], + [0x002028, 0x00202F], + [0x00203F, 0x002040], + [0x00205F, 0x00218F], + [0x002460, 0x0024FF], + [0x002776, 0x002793], + [0x002C00, 0x002DFF], + [0x002E80, 0x003000], + [0x003004, 0x003007], + [0x003021, 0x00302F], + [0x003031, 0x00DBFF], + [0x00E000, 0x00FD3D], + [0x00FD40, 0x00FE44], + [0x00FE47, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Pattern_Syntax}+$/u, + nonMatchSymbols, + "\\P{Pattern_Syntax}" +); +testPropertyEscapes( + /^\P{Pat_Syn}+$/u, + nonMatchSymbols, + "\\P{Pat_Syn}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js new file mode 100644 index 0000000000..7bbf688b1e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Pattern_White_Space.js @@ -0,0 +1,62 @@ +// Copyright 2022 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 for `Pattern_White_Space` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000020, + 0x000085 + ], + ranges: [ + [0x000009, 0x00000D], + [0x00200E, 0x00200F], + [0x002028, 0x002029] + ] +}); +testPropertyEscapes( + /^\p{Pattern_White_Space}+$/u, + matchSymbols, + "\\p{Pattern_White_Space}" +); +testPropertyEscapes( + /^\p{Pat_WS}+$/u, + matchSymbols, + "\\p{Pat_WS}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000008], + [0x00000E, 0x00001F], + [0x000021, 0x000084], + [0x000086, 0x00200D], + [0x002010, 0x002027], + [0x00202A, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Pattern_White_Space}+$/u, + nonMatchSymbols, + "\\P{Pattern_White_Space}" +); +testPropertyEscapes( + /^\P{Pat_WS}+$/u, + nonMatchSymbols, + "\\P{Pat_WS}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js new file mode 100644 index 0000000000..bf9e0c957e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Quotation_Mark.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Quotation_Mark` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000022, + 0x000027, + 0x0000AB, + 0x0000BB, + 0x002E42, + 0x00FF02, + 0x00FF07 + ], + ranges: [ + [0x002018, 0x00201F], + [0x002039, 0x00203A], + [0x00300C, 0x00300F], + [0x00301D, 0x00301F], + [0x00FE41, 0x00FE44], + [0x00FF62, 0x00FF63] + ] +}); +testPropertyEscapes( + /^\p{Quotation_Mark}+$/u, + matchSymbols, + "\\p{Quotation_Mark}" +); +testPropertyEscapes( + /^\p{QMark}+$/u, + matchSymbols, + "\\p{QMark}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000021], + [0x000023, 0x000026], + [0x000028, 0x0000AA], + [0x0000AC, 0x0000BA], + [0x0000BC, 0x002017], + [0x002020, 0x002038], + [0x00203B, 0x002E41], + [0x002E43, 0x00300B], + [0x003010, 0x00301C], + [0x003020, 0x00DBFF], + [0x00E000, 0x00FE40], + [0x00FE45, 0x00FF01], + [0x00FF03, 0x00FF06], + [0x00FF08, 0x00FF61], + [0x00FF64, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Quotation_Mark}+$/u, + nonMatchSymbols, + "\\P{Quotation_Mark}" +); +testPropertyEscapes( + /^\P{QMark}+$/u, + nonMatchSymbols, + "\\P{QMark}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Radical.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Radical.js new file mode 100644 index 0000000000..62ca4c5fbc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Radical.js @@ -0,0 +1,48 @@ +// Copyright 2022 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 for `Radical` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x002E80, 0x002E99], + [0x002E9B, 0x002EF3], + [0x002F00, 0x002FD5] + ] +}); +testPropertyEscapes( + /^\p{Radical}+$/u, + matchSymbols, + "\\p{Radical}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x002E9A + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002E7F], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Radical}+$/u, + nonMatchSymbols, + "\\P{Radical}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js new file mode 100644 index 0000000000..6b9c0de042 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Regional_Indicator.js @@ -0,0 +1,53 @@ +// Copyright 2022 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 for `Regional_Indicator` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01F1E6, 0x01F1FF] + ] +}); +testPropertyEscapes( + /^\p{Regional_Indicator}+$/u, + matchSymbols, + "\\p{Regional_Indicator}" +); +testPropertyEscapes( + /^\p{RI}+$/u, + matchSymbols, + "\\p{RI}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01F1E5], + [0x01F200, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Regional_Indicator}+$/u, + nonMatchSymbols, + "\\P{Regional_Indicator}" +); +testPropertyEscapes( + /^\P{RI}+$/u, + nonMatchSymbols, + "\\P{RI}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js new file mode 100644 index 0000000000..a5dc5c9a61 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Adlam.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Adlam` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01E900, 0x01E94B], + [0x01E950, 0x01E959], + [0x01E95E, 0x01E95F] + ] +}); +testPropertyEscapes( + /^\p{Script=Adlam}+$/u, + matchSymbols, + "\\p{Script=Adlam}" +); +testPropertyEscapes( + /^\p{Script=Adlm}+$/u, + matchSymbols, + "\\p{Script=Adlm}" +); +testPropertyEscapes( + /^\p{sc=Adlam}+$/u, + matchSymbols, + "\\p{sc=Adlam}" +); +testPropertyEscapes( + /^\p{sc=Adlm}+$/u, + matchSymbols, + "\\p{sc=Adlm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E8FF], + [0x01E94C, 0x01E94F], + [0x01E95A, 0x01E95D], + [0x01E960, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Adlam}+$/u, + nonMatchSymbols, + "\\P{Script=Adlam}" +); +testPropertyEscapes( + /^\P{Script=Adlm}+$/u, + nonMatchSymbols, + "\\P{Script=Adlm}" +); +testPropertyEscapes( + /^\P{sc=Adlam}+$/u, + nonMatchSymbols, + "\\P{sc=Adlam}" +); +testPropertyEscapes( + /^\P{sc=Adlm}+$/u, + nonMatchSymbols, + "\\P{sc=Adlm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js new file mode 100644 index 0000000000..6e7ca9ff4b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ahom.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Ahom` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011700, 0x01171A], + [0x01171D, 0x01172B], + [0x011730, 0x011746] + ] +}); +testPropertyEscapes( + /^\p{Script=Ahom}+$/u, + matchSymbols, + "\\p{Script=Ahom}" +); +testPropertyEscapes( + /^\p{Script=Ahom}+$/u, + matchSymbols, + "\\p{Script=Ahom}" +); +testPropertyEscapes( + /^\p{sc=Ahom}+$/u, + matchSymbols, + "\\p{sc=Ahom}" +); +testPropertyEscapes( + /^\p{sc=Ahom}+$/u, + matchSymbols, + "\\p{sc=Ahom}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0116FF], + [0x01171B, 0x01171C], + [0x01172C, 0x01172F], + [0x011747, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Ahom}+$/u, + nonMatchSymbols, + "\\P{Script=Ahom}" +); +testPropertyEscapes( + /^\P{Script=Ahom}+$/u, + nonMatchSymbols, + "\\P{Script=Ahom}" +); +testPropertyEscapes( + /^\P{sc=Ahom}+$/u, + nonMatchSymbols, + "\\P{sc=Ahom}" +); +testPropertyEscapes( + /^\P{sc=Ahom}+$/u, + nonMatchSymbols, + "\\P{sc=Ahom}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js new file mode 100644 index 0000000000..65ed44e3ea --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Anatolian_Hieroglyphs.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Anatolian_Hieroglyphs` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x014400, 0x014646] + ] +}); +testPropertyEscapes( + /^\p{Script=Anatolian_Hieroglyphs}+$/u, + matchSymbols, + "\\p{Script=Anatolian_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{Script=Hluw}+$/u, + matchSymbols, + "\\p{Script=Hluw}" +); +testPropertyEscapes( + /^\p{sc=Anatolian_Hieroglyphs}+$/u, + matchSymbols, + "\\p{sc=Anatolian_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{sc=Hluw}+$/u, + matchSymbols, + "\\p{sc=Hluw}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0143FF], + [0x014647, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Anatolian_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{Script=Anatolian_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{Script=Hluw}+$/u, + nonMatchSymbols, + "\\P{Script=Hluw}" +); +testPropertyEscapes( + /^\P{sc=Anatolian_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{sc=Anatolian_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{sc=Hluw}+$/u, + nonMatchSymbols, + "\\P{sc=Hluw}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js new file mode 100644 index 0000000000..1596f0933a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Arabic.js @@ -0,0 +1,189 @@ +// Copyright 2022 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 for `Script=Arabic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00FDCF, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x000600, 0x000604], + [0x000606, 0x00060B], + [0x00060D, 0x00061A], + [0x00061C, 0x00061E], + [0x000620, 0x00063F], + [0x000641, 0x00064A], + [0x000656, 0x00066F], + [0x000671, 0x0006DC], + [0x0006DE, 0x0006FF], + [0x000750, 0x00077F], + [0x000870, 0x00088E], + [0x000890, 0x000891], + [0x000898, 0x0008E1], + [0x0008E3, 0x0008FF], + [0x00FB50, 0x00FBC2], + [0x00FBD3, 0x00FD3D], + [0x00FD40, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDFF], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x010E60, 0x010E7E], + [0x010EFD, 0x010EFF], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01EEF0, 0x01EEF1] + ] +}); +testPropertyEscapes( + /^\p{Script=Arabic}+$/u, + matchSymbols, + "\\p{Script=Arabic}" +); +testPropertyEscapes( + /^\p{Script=Arab}+$/u, + matchSymbols, + "\\p{Script=Arab}" +); +testPropertyEscapes( + /^\p{sc=Arabic}+$/u, + matchSymbols, + "\\p{sc=Arabic}" +); +testPropertyEscapes( + /^\p{sc=Arab}+$/u, + matchSymbols, + "\\p{sc=Arab}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000605, + 0x00060C, + 0x00061B, + 0x00061F, + 0x000640, + 0x000670, + 0x0006DD, + 0x00088F, + 0x0008E2, + 0x00FE75, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0005FF], + [0x00064B, 0x000655], + [0x000700, 0x00074F], + [0x000780, 0x00086F], + [0x000892, 0x000897], + [0x000900, 0x00DBFF], + [0x00E000, 0x00FB4F], + [0x00FBC3, 0x00FBD2], + [0x00FD3E, 0x00FD3F], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDCE], + [0x00FDD0, 0x00FDEF], + [0x00FE00, 0x00FE6F], + [0x00FEFD, 0x010E5F], + [0x010E7F, 0x010EFC], + [0x010F00, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01EEEF], + [0x01EEF2, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Arabic}+$/u, + nonMatchSymbols, + "\\P{Script=Arabic}" +); +testPropertyEscapes( + /^\P{Script=Arab}+$/u, + nonMatchSymbols, + "\\P{Script=Arab}" +); +testPropertyEscapes( + /^\P{sc=Arabic}+$/u, + nonMatchSymbols, + "\\P{sc=Arabic}" +); +testPropertyEscapes( + /^\P{sc=Arab}+$/u, + nonMatchSymbols, + "\\P{sc=Arab}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js new file mode 100644 index 0000000000..a900fbc828 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Armenian.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script=Armenian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000531, 0x000556], + [0x000559, 0x00058A], + [0x00058D, 0x00058F], + [0x00FB13, 0x00FB17] + ] +}); +testPropertyEscapes( + /^\p{Script=Armenian}+$/u, + matchSymbols, + "\\p{Script=Armenian}" +); +testPropertyEscapes( + /^\p{Script=Armn}+$/u, + matchSymbols, + "\\p{Script=Armn}" +); +testPropertyEscapes( + /^\p{sc=Armenian}+$/u, + matchSymbols, + "\\p{sc=Armenian}" +); +testPropertyEscapes( + /^\p{sc=Armn}+$/u, + matchSymbols, + "\\p{sc=Armn}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000530], + [0x000557, 0x000558], + [0x00058B, 0x00058C], + [0x000590, 0x00DBFF], + [0x00E000, 0x00FB12], + [0x00FB18, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Armenian}+$/u, + nonMatchSymbols, + "\\P{Script=Armenian}" +); +testPropertyEscapes( + /^\P{Script=Armn}+$/u, + nonMatchSymbols, + "\\P{Script=Armn}" +); +testPropertyEscapes( + /^\P{sc=Armenian}+$/u, + nonMatchSymbols, + "\\P{sc=Armenian}" +); +testPropertyEscapes( + /^\P{sc=Armn}+$/u, + nonMatchSymbols, + "\\P{sc=Armn}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js new file mode 100644 index 0000000000..0498938a87 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Avestan.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Avestan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010B00, 0x010B35], + [0x010B39, 0x010B3F] + ] +}); +testPropertyEscapes( + /^\p{Script=Avestan}+$/u, + matchSymbols, + "\\p{Script=Avestan}" +); +testPropertyEscapes( + /^\p{Script=Avst}+$/u, + matchSymbols, + "\\p{Script=Avst}" +); +testPropertyEscapes( + /^\p{sc=Avestan}+$/u, + matchSymbols, + "\\p{sc=Avestan}" +); +testPropertyEscapes( + /^\p{sc=Avst}+$/u, + matchSymbols, + "\\p{sc=Avst}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010AFF], + [0x010B36, 0x010B38], + [0x010B40, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Avestan}+$/u, + nonMatchSymbols, + "\\P{Script=Avestan}" +); +testPropertyEscapes( + /^\P{Script=Avst}+$/u, + nonMatchSymbols, + "\\P{Script=Avst}" +); +testPropertyEscapes( + /^\P{sc=Avestan}+$/u, + nonMatchSymbols, + "\\P{sc=Avestan}" +); +testPropertyEscapes( + /^\P{sc=Avst}+$/u, + nonMatchSymbols, + "\\P{sc=Avst}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js new file mode 100644 index 0000000000..7262a48c09 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Balinese.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Balinese` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001B00, 0x001B4C], + [0x001B50, 0x001B7E] + ] +}); +testPropertyEscapes( + /^\p{Script=Balinese}+$/u, + matchSymbols, + "\\p{Script=Balinese}" +); +testPropertyEscapes( + /^\p{Script=Bali}+$/u, + matchSymbols, + "\\p{Script=Bali}" +); +testPropertyEscapes( + /^\p{sc=Balinese}+$/u, + matchSymbols, + "\\p{sc=Balinese}" +); +testPropertyEscapes( + /^\p{sc=Bali}+$/u, + matchSymbols, + "\\p{sc=Bali}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001AFF], + [0x001B4D, 0x001B4F], + [0x001B7F, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Balinese}+$/u, + nonMatchSymbols, + "\\P{Script=Balinese}" +); +testPropertyEscapes( + /^\P{Script=Bali}+$/u, + nonMatchSymbols, + "\\P{Script=Bali}" +); +testPropertyEscapes( + /^\P{sc=Balinese}+$/u, + nonMatchSymbols, + "\\P{sc=Balinese}" +); +testPropertyEscapes( + /^\P{sc=Bali}+$/u, + nonMatchSymbols, + "\\P{sc=Bali}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js new file mode 100644 index 0000000000..0f1140a727 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bamum.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Bamum` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A6A0, 0x00A6F7], + [0x016800, 0x016A38] + ] +}); +testPropertyEscapes( + /^\p{Script=Bamum}+$/u, + matchSymbols, + "\\p{Script=Bamum}" +); +testPropertyEscapes( + /^\p{Script=Bamu}+$/u, + matchSymbols, + "\\p{Script=Bamu}" +); +testPropertyEscapes( + /^\p{sc=Bamum}+$/u, + matchSymbols, + "\\p{sc=Bamum}" +); +testPropertyEscapes( + /^\p{sc=Bamu}+$/u, + matchSymbols, + "\\p{sc=Bamu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A69F], + [0x00A6F8, 0x00DBFF], + [0x00E000, 0x0167FF], + [0x016A39, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Bamum}+$/u, + nonMatchSymbols, + "\\P{Script=Bamum}" +); +testPropertyEscapes( + /^\P{Script=Bamu}+$/u, + nonMatchSymbols, + "\\P{Script=Bamu}" +); +testPropertyEscapes( + /^\P{sc=Bamum}+$/u, + nonMatchSymbols, + "\\P{sc=Bamum}" +); +testPropertyEscapes( + /^\P{sc=Bamu}+$/u, + nonMatchSymbols, + "\\P{sc=Bamu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js new file mode 100644 index 0000000000..e82715a77d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bassa_Vah.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Bassa_Vah` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016AD0, 0x016AED], + [0x016AF0, 0x016AF5] + ] +}); +testPropertyEscapes( + /^\p{Script=Bassa_Vah}+$/u, + matchSymbols, + "\\p{Script=Bassa_Vah}" +); +testPropertyEscapes( + /^\p{Script=Bass}+$/u, + matchSymbols, + "\\p{Script=Bass}" +); +testPropertyEscapes( + /^\p{sc=Bassa_Vah}+$/u, + matchSymbols, + "\\p{sc=Bassa_Vah}" +); +testPropertyEscapes( + /^\p{sc=Bass}+$/u, + matchSymbols, + "\\p{sc=Bass}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016ACF], + [0x016AEE, 0x016AEF], + [0x016AF6, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Bassa_Vah}+$/u, + nonMatchSymbols, + "\\P{Script=Bassa_Vah}" +); +testPropertyEscapes( + /^\P{Script=Bass}+$/u, + nonMatchSymbols, + "\\P{Script=Bass}" +); +testPropertyEscapes( + /^\P{sc=Bassa_Vah}+$/u, + nonMatchSymbols, + "\\P{sc=Bassa_Vah}" +); +testPropertyEscapes( + /^\P{sc=Bass}+$/u, + nonMatchSymbols, + "\\P{sc=Bass}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js new file mode 100644 index 0000000000..923df55ef1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Batak.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Batak` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001BC0, 0x001BF3], + [0x001BFC, 0x001BFF] + ] +}); +testPropertyEscapes( + /^\p{Script=Batak}+$/u, + matchSymbols, + "\\p{Script=Batak}" +); +testPropertyEscapes( + /^\p{Script=Batk}+$/u, + matchSymbols, + "\\p{Script=Batk}" +); +testPropertyEscapes( + /^\p{sc=Batak}+$/u, + matchSymbols, + "\\p{sc=Batak}" +); +testPropertyEscapes( + /^\p{sc=Batk}+$/u, + matchSymbols, + "\\p{sc=Batk}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001BBF], + [0x001BF4, 0x001BFB], + [0x001C00, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Batak}+$/u, + nonMatchSymbols, + "\\P{Script=Batak}" +); +testPropertyEscapes( + /^\P{Script=Batk}+$/u, + nonMatchSymbols, + "\\P{Script=Batk}" +); +testPropertyEscapes( + /^\P{sc=Batak}+$/u, + nonMatchSymbols, + "\\P{sc=Batak}" +); +testPropertyEscapes( + /^\P{sc=Batk}+$/u, + nonMatchSymbols, + "\\P{sc=Batk}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js new file mode 100644 index 0000000000..5317969eeb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bengali.js @@ -0,0 +1,101 @@ +// Copyright 2022 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 for `Script=Bengali` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0009B2, + 0x0009D7 + ], + ranges: [ + [0x000980, 0x000983], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009BC, 0x0009C4], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CE], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E3], + [0x0009E6, 0x0009FE] + ] +}); +testPropertyEscapes( + /^\p{Script=Bengali}+$/u, + matchSymbols, + "\\p{Script=Bengali}" +); +testPropertyEscapes( + /^\p{Script=Beng}+$/u, + matchSymbols, + "\\p{Script=Beng}" +); +testPropertyEscapes( + /^\p{sc=Bengali}+$/u, + matchSymbols, + "\\p{sc=Bengali}" +); +testPropertyEscapes( + /^\p{sc=Beng}+$/u, + matchSymbols, + "\\p{sc=Beng}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000984, + 0x0009A9, + 0x0009B1, + 0x0009DE + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00097F], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BB], + [0x0009C5, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CF, 0x0009D6], + [0x0009D8, 0x0009DB], + [0x0009E4, 0x0009E5], + [0x0009FF, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Bengali}+$/u, + nonMatchSymbols, + "\\P{Script=Bengali}" +); +testPropertyEscapes( + /^\P{Script=Beng}+$/u, + nonMatchSymbols, + "\\P{Script=Beng}" +); +testPropertyEscapes( + /^\P{sc=Bengali}+$/u, + nonMatchSymbols, + "\\P{sc=Bengali}" +); +testPropertyEscapes( + /^\P{sc=Beng}+$/u, + nonMatchSymbols, + "\\P{sc=Beng}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js new file mode 100644 index 0000000000..ee2d09ecf8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bhaiksuki.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script=Bhaiksuki` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011C00, 0x011C08], + [0x011C0A, 0x011C36], + [0x011C38, 0x011C45], + [0x011C50, 0x011C6C] + ] +}); +testPropertyEscapes( + /^\p{Script=Bhaiksuki}+$/u, + matchSymbols, + "\\p{Script=Bhaiksuki}" +); +testPropertyEscapes( + /^\p{Script=Bhks}+$/u, + matchSymbols, + "\\p{Script=Bhks}" +); +testPropertyEscapes( + /^\p{sc=Bhaiksuki}+$/u, + matchSymbols, + "\\p{sc=Bhaiksuki}" +); +testPropertyEscapes( + /^\p{sc=Bhks}+$/u, + matchSymbols, + "\\p{sc=Bhks}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011C09, + 0x011C37 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011BFF], + [0x011C46, 0x011C4F], + [0x011C6D, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Bhaiksuki}+$/u, + nonMatchSymbols, + "\\P{Script=Bhaiksuki}" +); +testPropertyEscapes( + /^\P{Script=Bhks}+$/u, + nonMatchSymbols, + "\\P{Script=Bhks}" +); +testPropertyEscapes( + /^\P{sc=Bhaiksuki}+$/u, + nonMatchSymbols, + "\\P{sc=Bhaiksuki}" +); +testPropertyEscapes( + /^\P{sc=Bhks}+$/u, + nonMatchSymbols, + "\\P{sc=Bhks}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js new file mode 100644 index 0000000000..420a80c75c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Bopomofo.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Bopomofo` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0002EA, 0x0002EB], + [0x003105, 0x00312F], + [0x0031A0, 0x0031BF] + ] +}); +testPropertyEscapes( + /^\p{Script=Bopomofo}+$/u, + matchSymbols, + "\\p{Script=Bopomofo}" +); +testPropertyEscapes( + /^\p{Script=Bopo}+$/u, + matchSymbols, + "\\p{Script=Bopo}" +); +testPropertyEscapes( + /^\p{sc=Bopomofo}+$/u, + matchSymbols, + "\\p{sc=Bopomofo}" +); +testPropertyEscapes( + /^\p{sc=Bopo}+$/u, + matchSymbols, + "\\p{sc=Bopo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0002E9], + [0x0002EC, 0x003104], + [0x003130, 0x00319F], + [0x0031C0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Bopomofo}+$/u, + nonMatchSymbols, + "\\P{Script=Bopomofo}" +); +testPropertyEscapes( + /^\P{Script=Bopo}+$/u, + nonMatchSymbols, + "\\P{Script=Bopo}" +); +testPropertyEscapes( + /^\P{sc=Bopomofo}+$/u, + nonMatchSymbols, + "\\P{sc=Bopomofo}" +); +testPropertyEscapes( + /^\P{sc=Bopo}+$/u, + nonMatchSymbols, + "\\P{sc=Bopo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js new file mode 100644 index 0000000000..2eaa5dd301 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Brahmi.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script=Brahmi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01107F + ], + ranges: [ + [0x011000, 0x01104D], + [0x011052, 0x011075] + ] +}); +testPropertyEscapes( + /^\p{Script=Brahmi}+$/u, + matchSymbols, + "\\p{Script=Brahmi}" +); +testPropertyEscapes( + /^\p{Script=Brah}+$/u, + matchSymbols, + "\\p{Script=Brah}" +); +testPropertyEscapes( + /^\p{sc=Brahmi}+$/u, + matchSymbols, + "\\p{sc=Brahmi}" +); +testPropertyEscapes( + /^\p{sc=Brah}+$/u, + matchSymbols, + "\\p{sc=Brah}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010FFF], + [0x01104E, 0x011051], + [0x011076, 0x01107E], + [0x011080, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Brahmi}+$/u, + nonMatchSymbols, + "\\P{Script=Brahmi}" +); +testPropertyEscapes( + /^\P{Script=Brah}+$/u, + nonMatchSymbols, + "\\P{Script=Brah}" +); +testPropertyEscapes( + /^\P{sc=Brahmi}+$/u, + nonMatchSymbols, + "\\P{sc=Brahmi}" +); +testPropertyEscapes( + /^\P{sc=Brah}+$/u, + nonMatchSymbols, + "\\P{sc=Brah}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js new file mode 100644 index 0000000000..de6d47fec9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Braille.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Braille` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x002800, 0x0028FF] + ] +}); +testPropertyEscapes( + /^\p{Script=Braille}+$/u, + matchSymbols, + "\\p{Script=Braille}" +); +testPropertyEscapes( + /^\p{Script=Brai}+$/u, + matchSymbols, + "\\p{Script=Brai}" +); +testPropertyEscapes( + /^\p{sc=Braille}+$/u, + matchSymbols, + "\\p{sc=Braille}" +); +testPropertyEscapes( + /^\p{sc=Brai}+$/u, + matchSymbols, + "\\p{sc=Brai}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0027FF], + [0x002900, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Braille}+$/u, + nonMatchSymbols, + "\\P{Script=Braille}" +); +testPropertyEscapes( + /^\P{Script=Brai}+$/u, + nonMatchSymbols, + "\\P{Script=Brai}" +); +testPropertyEscapes( + /^\P{sc=Braille}+$/u, + nonMatchSymbols, + "\\P{sc=Braille}" +); +testPropertyEscapes( + /^\P{sc=Brai}+$/u, + nonMatchSymbols, + "\\P{sc=Brai}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js new file mode 100644 index 0000000000..98b8611db9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Buginese.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Buginese` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001A00, 0x001A1B], + [0x001A1E, 0x001A1F] + ] +}); +testPropertyEscapes( + /^\p{Script=Buginese}+$/u, + matchSymbols, + "\\p{Script=Buginese}" +); +testPropertyEscapes( + /^\p{Script=Bugi}+$/u, + matchSymbols, + "\\p{Script=Bugi}" +); +testPropertyEscapes( + /^\p{sc=Buginese}+$/u, + matchSymbols, + "\\p{sc=Buginese}" +); +testPropertyEscapes( + /^\p{sc=Bugi}+$/u, + matchSymbols, + "\\p{sc=Bugi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0019FF], + [0x001A1C, 0x001A1D], + [0x001A20, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Buginese}+$/u, + nonMatchSymbols, + "\\P{Script=Buginese}" +); +testPropertyEscapes( + /^\P{Script=Bugi}+$/u, + nonMatchSymbols, + "\\P{Script=Bugi}" +); +testPropertyEscapes( + /^\P{sc=Buginese}+$/u, + nonMatchSymbols, + "\\P{sc=Buginese}" +); +testPropertyEscapes( + /^\P{sc=Bugi}+$/u, + nonMatchSymbols, + "\\P{sc=Bugi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js new file mode 100644 index 0000000000..5a566140b0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Buhid.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Buhid` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001740, 0x001753] + ] +}); +testPropertyEscapes( + /^\p{Script=Buhid}+$/u, + matchSymbols, + "\\p{Script=Buhid}" +); +testPropertyEscapes( + /^\p{Script=Buhd}+$/u, + matchSymbols, + "\\p{Script=Buhd}" +); +testPropertyEscapes( + /^\p{sc=Buhid}+$/u, + matchSymbols, + "\\p{sc=Buhid}" +); +testPropertyEscapes( + /^\p{sc=Buhd}+$/u, + matchSymbols, + "\\p{sc=Buhd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00173F], + [0x001754, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Buhid}+$/u, + nonMatchSymbols, + "\\P{Script=Buhid}" +); +testPropertyEscapes( + /^\P{Script=Buhd}+$/u, + nonMatchSymbols, + "\\P{Script=Buhd}" +); +testPropertyEscapes( + /^\P{sc=Buhid}+$/u, + nonMatchSymbols, + "\\P{sc=Buhid}" +); +testPropertyEscapes( + /^\P{sc=Buhd}+$/u, + nonMatchSymbols, + "\\P{sc=Buhd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js new file mode 100644 index 0000000000..79a000f85b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Canadian_Aboriginal.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Canadian_Aboriginal` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001400, 0x00167F], + [0x0018B0, 0x0018F5], + [0x011AB0, 0x011ABF] + ] +}); +testPropertyEscapes( + /^\p{Script=Canadian_Aboriginal}+$/u, + matchSymbols, + "\\p{Script=Canadian_Aboriginal}" +); +testPropertyEscapes( + /^\p{Script=Cans}+$/u, + matchSymbols, + "\\p{Script=Cans}" +); +testPropertyEscapes( + /^\p{sc=Canadian_Aboriginal}+$/u, + matchSymbols, + "\\p{sc=Canadian_Aboriginal}" +); +testPropertyEscapes( + /^\p{sc=Cans}+$/u, + matchSymbols, + "\\p{sc=Cans}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0013FF], + [0x001680, 0x0018AF], + [0x0018F6, 0x00DBFF], + [0x00E000, 0x011AAF], + [0x011AC0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Canadian_Aboriginal}+$/u, + nonMatchSymbols, + "\\P{Script=Canadian_Aboriginal}" +); +testPropertyEscapes( + /^\P{Script=Cans}+$/u, + nonMatchSymbols, + "\\P{Script=Cans}" +); +testPropertyEscapes( + /^\P{sc=Canadian_Aboriginal}+$/u, + nonMatchSymbols, + "\\P{sc=Canadian_Aboriginal}" +); +testPropertyEscapes( + /^\P{sc=Cans}+$/u, + nonMatchSymbols, + "\\P{sc=Cans}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js new file mode 100644 index 0000000000..2e9500c55d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Carian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Carian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0102A0, 0x0102D0] + ] +}); +testPropertyEscapes( + /^\p{Script=Carian}+$/u, + matchSymbols, + "\\p{Script=Carian}" +); +testPropertyEscapes( + /^\p{Script=Cari}+$/u, + matchSymbols, + "\\p{Script=Cari}" +); +testPropertyEscapes( + /^\p{sc=Carian}+$/u, + matchSymbols, + "\\p{sc=Carian}" +); +testPropertyEscapes( + /^\p{sc=Cari}+$/u, + matchSymbols, + "\\p{sc=Cari}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01029F], + [0x0102D1, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Carian}+$/u, + nonMatchSymbols, + "\\P{Script=Carian}" +); +testPropertyEscapes( + /^\P{Script=Cari}+$/u, + nonMatchSymbols, + "\\P{Script=Cari}" +); +testPropertyEscapes( + /^\P{sc=Carian}+$/u, + nonMatchSymbols, + "\\P{sc=Carian}" +); +testPropertyEscapes( + /^\P{sc=Cari}+$/u, + nonMatchSymbols, + "\\P{sc=Cari}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js new file mode 100644 index 0000000000..eab4b264f9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Caucasian_Albanian.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Caucasian_Albanian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01056F + ], + ranges: [ + [0x010530, 0x010563] + ] +}); +testPropertyEscapes( + /^\p{Script=Caucasian_Albanian}+$/u, + matchSymbols, + "\\p{Script=Caucasian_Albanian}" +); +testPropertyEscapes( + /^\p{Script=Aghb}+$/u, + matchSymbols, + "\\p{Script=Aghb}" +); +testPropertyEscapes( + /^\p{sc=Caucasian_Albanian}+$/u, + matchSymbols, + "\\p{sc=Caucasian_Albanian}" +); +testPropertyEscapes( + /^\p{sc=Aghb}+$/u, + matchSymbols, + "\\p{sc=Aghb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01052F], + [0x010564, 0x01056E], + [0x010570, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Caucasian_Albanian}+$/u, + nonMatchSymbols, + "\\P{Script=Caucasian_Albanian}" +); +testPropertyEscapes( + /^\P{Script=Aghb}+$/u, + nonMatchSymbols, + "\\P{Script=Aghb}" +); +testPropertyEscapes( + /^\P{sc=Caucasian_Albanian}+$/u, + nonMatchSymbols, + "\\P{sc=Caucasian_Albanian}" +); +testPropertyEscapes( + /^\P{sc=Aghb}+$/u, + nonMatchSymbols, + "\\P{sc=Aghb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js new file mode 100644 index 0000000000..373f225531 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Chakma.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Chakma` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011100, 0x011134], + [0x011136, 0x011147] + ] +}); +testPropertyEscapes( + /^\p{Script=Chakma}+$/u, + matchSymbols, + "\\p{Script=Chakma}" +); +testPropertyEscapes( + /^\p{Script=Cakm}+$/u, + matchSymbols, + "\\p{Script=Cakm}" +); +testPropertyEscapes( + /^\p{sc=Chakma}+$/u, + matchSymbols, + "\\p{sc=Chakma}" +); +testPropertyEscapes( + /^\p{sc=Cakm}+$/u, + matchSymbols, + "\\p{sc=Cakm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011135 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0110FF], + [0x011148, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Chakma}+$/u, + nonMatchSymbols, + "\\P{Script=Chakma}" +); +testPropertyEscapes( + /^\P{Script=Cakm}+$/u, + nonMatchSymbols, + "\\P{Script=Cakm}" +); +testPropertyEscapes( + /^\P{sc=Chakma}+$/u, + nonMatchSymbols, + "\\P{sc=Chakma}" +); +testPropertyEscapes( + /^\P{sc=Cakm}+$/u, + nonMatchSymbols, + "\\P{sc=Cakm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js new file mode 100644 index 0000000000..50cd26e777 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cham.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script=Cham` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00AA00, 0x00AA36], + [0x00AA40, 0x00AA4D], + [0x00AA50, 0x00AA59], + [0x00AA5C, 0x00AA5F] + ] +}); +testPropertyEscapes( + /^\p{Script=Cham}+$/u, + matchSymbols, + "\\p{Script=Cham}" +); +testPropertyEscapes( + /^\p{Script=Cham}+$/u, + matchSymbols, + "\\p{Script=Cham}" +); +testPropertyEscapes( + /^\p{sc=Cham}+$/u, + matchSymbols, + "\\p{sc=Cham}" +); +testPropertyEscapes( + /^\p{sc=Cham}+$/u, + matchSymbols, + "\\p{sc=Cham}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A9FF], + [0x00AA37, 0x00AA3F], + [0x00AA4E, 0x00AA4F], + [0x00AA5A, 0x00AA5B], + [0x00AA60, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Cham}+$/u, + nonMatchSymbols, + "\\P{Script=Cham}" +); +testPropertyEscapes( + /^\P{Script=Cham}+$/u, + nonMatchSymbols, + "\\P{Script=Cham}" +); +testPropertyEscapes( + /^\P{sc=Cham}+$/u, + nonMatchSymbols, + "\\P{sc=Cham}" +); +testPropertyEscapes( + /^\P{sc=Cham}+$/u, + nonMatchSymbols, + "\\P{sc=Cham}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js new file mode 100644 index 0000000000..ced62328be --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cherokee.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Cherokee` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x00AB70, 0x00ABBF] + ] +}); +testPropertyEscapes( + /^\p{Script=Cherokee}+$/u, + matchSymbols, + "\\p{Script=Cherokee}" +); +testPropertyEscapes( + /^\p{Script=Cher}+$/u, + matchSymbols, + "\\p{Script=Cher}" +); +testPropertyEscapes( + /^\p{sc=Cherokee}+$/u, + matchSymbols, + "\\p{sc=Cherokee}" +); +testPropertyEscapes( + /^\p{sc=Cher}+$/u, + matchSymbols, + "\\p{sc=Cher}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Cherokee}+$/u, + nonMatchSymbols, + "\\P{Script=Cherokee}" +); +testPropertyEscapes( + /^\P{Script=Cher}+$/u, + nonMatchSymbols, + "\\P{Script=Cher}" +); +testPropertyEscapes( + /^\P{sc=Cherokee}+$/u, + nonMatchSymbols, + "\\P{sc=Cherokee}" +); +testPropertyEscapes( + /^\P{sc=Cher}+$/u, + nonMatchSymbols, + "\\P{sc=Cher}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js new file mode 100644 index 0000000000..50b78d15f0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Chorasmian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Chorasmian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010FB0, 0x010FCB] + ] +}); +testPropertyEscapes( + /^\p{Script=Chorasmian}+$/u, + matchSymbols, + "\\p{Script=Chorasmian}" +); +testPropertyEscapes( + /^\p{Script=Chrs}+$/u, + matchSymbols, + "\\p{Script=Chrs}" +); +testPropertyEscapes( + /^\p{sc=Chorasmian}+$/u, + matchSymbols, + "\\p{sc=Chorasmian}" +); +testPropertyEscapes( + /^\p{sc=Chrs}+$/u, + matchSymbols, + "\\p{sc=Chrs}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010FAF], + [0x010FCC, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Chorasmian}+$/u, + nonMatchSymbols, + "\\P{Script=Chorasmian}" +); +testPropertyEscapes( + /^\P{Script=Chrs}+$/u, + nonMatchSymbols, + "\\P{Script=Chrs}" +); +testPropertyEscapes( + /^\P{sc=Chorasmian}+$/u, + nonMatchSymbols, + "\\P{sc=Chorasmian}" +); +testPropertyEscapes( + /^\P{sc=Chrs}+$/u, + nonMatchSymbols, + "\\P{sc=Chrs}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Common.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Common.js new file mode 100644 index 0000000000..de47aa2374 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Common.js @@ -0,0 +1,418 @@ +// Copyright 2022 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 for `Script=Common` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x000374, + 0x00037E, + 0x000385, + 0x000387, + 0x000605, + 0x00060C, + 0x00061B, + 0x00061F, + 0x000640, + 0x0006DD, + 0x0008E2, + 0x000E3F, + 0x0010FB, + 0x001805, + 0x001CD3, + 0x001CE1, + 0x001CFA, + 0x003006, + 0x0030A0, + 0x0032FF, + 0x00A92E, + 0x00A9CF, + 0x00AB5B, + 0x00FEFF, + 0x00FF70, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01F7F0, + 0x0E0001 + ], + ranges: [ + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002B9, 0x0002DF], + [0x0002E5, 0x0002E9], + [0x0002EC, 0x0002FF], + [0x000964, 0x000965], + [0x000FD5, 0x000FD8], + [0x0016EB, 0x0016ED], + [0x001735, 0x001736], + [0x001802, 0x001803], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF7], + [0x002000, 0x00200B], + [0x00200E, 0x002064], + [0x002066, 0x002070], + [0x002074, 0x00207E], + [0x002080, 0x00208E], + [0x0020A0, 0x0020C0], + [0x002100, 0x002125], + [0x002127, 0x002129], + [0x00212C, 0x002131], + [0x002133, 0x00214D], + [0x00214F, 0x00215F], + [0x002189, 0x00218B], + [0x002190, 0x002426], + [0x002440, 0x00244A], + [0x002460, 0x0027FF], + [0x002900, 0x002B73], + [0x002B76, 0x002B95], + [0x002B97, 0x002BFF], + [0x002E00, 0x002E5D], + [0x002FF0, 0x002FFB], + [0x003000, 0x003004], + [0x003008, 0x003020], + [0x003030, 0x003037], + [0x00303C, 0x00303F], + [0x00309B, 0x00309C], + [0x0030FB, 0x0030FC], + [0x003190, 0x00319F], + [0x0031C0, 0x0031E3], + [0x003220, 0x00325F], + [0x00327F, 0x0032CF], + [0x003358, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A700, 0x00A721], + [0x00A788, 0x00A78A], + [0x00A830, 0x00A839], + [0x00AB6A, 0x00AB6B], + [0x00FD3E, 0x00FD3F], + [0x00FE10, 0x00FE19], + [0x00FE30, 0x00FE52], + [0x00FE54, 0x00FE66], + [0x00FE68, 0x00FE6B], + [0x00FF01, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x00FF65], + [0x00FF9E, 0x00FF9F], + [0x00FFE0, 0x00FFE6], + [0x00FFE8, 0x00FFEE], + [0x00FFF9, 0x00FFFD], + [0x010100, 0x010102], + [0x010107, 0x010133], + [0x010137, 0x01013F], + [0x010190, 0x01019C], + [0x0101D0, 0x0101FC], + [0x0102E1, 0x0102FB], + [0x01BCA0, 0x01BCA3], + [0x01CF50, 0x01CFC3], + [0x01D000, 0x01D0F5], + [0x01D100, 0x01D126], + [0x01D129, 0x01D166], + [0x01D16A, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D1EA], + [0x01D2C0, 0x01D2D3], + [0x01D2E0, 0x01D2F3], + [0x01D300, 0x01D356], + [0x01D360, 0x01D378], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D7CB], + [0x01D7CE, 0x01D7FF], + [0x01EC71, 0x01ECB4], + [0x01ED01, 0x01ED3D], + [0x01F000, 0x01F02B], + [0x01F030, 0x01F093], + [0x01F0A0, 0x01F0AE], + [0x01F0B1, 0x01F0BF], + [0x01F0C1, 0x01F0CF], + [0x01F0D1, 0x01F0F5], + [0x01F100, 0x01F1AD], + [0x01F1E6, 0x01F1FF], + [0x01F201, 0x01F202], + [0x01F210, 0x01F23B], + [0x01F240, 0x01F248], + [0x01F250, 0x01F251], + [0x01F260, 0x01F265], + [0x01F300, 0x01F6D7], + [0x01F6DC, 0x01F6EC], + [0x01F6F0, 0x01F6FC], + [0x01F700, 0x01F776], + [0x01F77B, 0x01F7D9], + [0x01F7E0, 0x01F7EB], + [0x01F800, 0x01F80B], + [0x01F810, 0x01F847], + [0x01F850, 0x01F859], + [0x01F860, 0x01F887], + [0x01F890, 0x01F8AD], + [0x01F8B0, 0x01F8B1], + [0x01F900, 0x01FA53], + [0x01FA60, 0x01FA6D], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8], + [0x01FB00, 0x01FB92], + [0x01FB94, 0x01FBCA], + [0x01FBF0, 0x01FBF9], + [0x0E0020, 0x0E007F] + ] +}); +testPropertyEscapes( + /^\p{Script=Common}+$/u, + matchSymbols, + "\\p{Script=Common}" +); +testPropertyEscapes( + /^\p{Script=Zyyy}+$/u, + matchSymbols, + "\\p{Script=Zyyy}" +); +testPropertyEscapes( + /^\p{sc=Common}+$/u, + matchSymbols, + "\\p{sc=Common}" +); +testPropertyEscapes( + /^\p{sc=Zyyy}+$/u, + matchSymbols, + "\\p{sc=Zyyy}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000BA, + 0x000386, + 0x001804, + 0x001CED, + 0x001CF4, + 0x002065, + 0x00207F, + 0x002126, + 0x002132, + 0x00214E, + 0x002B96, + 0x003005, + 0x003007, + 0x00FE53, + 0x00FE67, + 0x00FF00, + 0x00FFE7, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01F0C0, + 0x01F0D0, + 0x01F200, + 0x01FABE, + 0x01FB93 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002B8], + [0x0002E0, 0x0002E4], + [0x0002EA, 0x0002EB], + [0x000300, 0x000373], + [0x000375, 0x00037D], + [0x00037F, 0x000384], + [0x000388, 0x000604], + [0x000606, 0x00060B], + [0x00060D, 0x00061A], + [0x00061C, 0x00061E], + [0x000620, 0x00063F], + [0x000641, 0x0006DC], + [0x0006DE, 0x0008E1], + [0x0008E3, 0x000963], + [0x000966, 0x000E3E], + [0x000E40, 0x000FD4], + [0x000FD9, 0x0010FA], + [0x0010FC, 0x0016EA], + [0x0016EE, 0x001734], + [0x001737, 0x001801], + [0x001806, 0x001CD2], + [0x001CD4, 0x001CE0], + [0x001CE2, 0x001CE8], + [0x001CF8, 0x001CF9], + [0x001CFB, 0x001FFF], + [0x00200C, 0x00200D], + [0x002071, 0x002073], + [0x00208F, 0x00209F], + [0x0020C1, 0x0020FF], + [0x00212A, 0x00212B], + [0x002160, 0x002188], + [0x00218C, 0x00218F], + [0x002427, 0x00243F], + [0x00244B, 0x00245F], + [0x002800, 0x0028FF], + [0x002B74, 0x002B75], + [0x002C00, 0x002DFF], + [0x002E5E, 0x002FEF], + [0x002FFC, 0x002FFF], + [0x003021, 0x00302F], + [0x003038, 0x00303B], + [0x003040, 0x00309A], + [0x00309D, 0x00309F], + [0x0030A1, 0x0030FA], + [0x0030FD, 0x00318F], + [0x0031A0, 0x0031BF], + [0x0031E4, 0x00321F], + [0x003260, 0x00327E], + [0x0032D0, 0x0032FE], + [0x003300, 0x003357], + [0x003400, 0x004DBF], + [0x004E00, 0x00A6FF], + [0x00A722, 0x00A787], + [0x00A78B, 0x00A82F], + [0x00A83A, 0x00A92D], + [0x00A92F, 0x00A9CE], + [0x00A9D0, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB6C, 0x00DBFF], + [0x00E000, 0x00FD3D], + [0x00FD40, 0x00FE0F], + [0x00FE1A, 0x00FE2F], + [0x00FE6C, 0x00FEFE], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x00FF66, 0x00FF6F], + [0x00FF71, 0x00FF9D], + [0x00FFA0, 0x00FFDF], + [0x00FFEF, 0x00FFF8], + [0x00FFFE, 0x0100FF], + [0x010103, 0x010106], + [0x010134, 0x010136], + [0x010140, 0x01018F], + [0x01019D, 0x0101CF], + [0x0101FD, 0x0102E0], + [0x0102FC, 0x01BC9F], + [0x01BCA4, 0x01CF4F], + [0x01CFC4, 0x01CFFF], + [0x01D0F6, 0x01D0FF], + [0x01D127, 0x01D128], + [0x01D167, 0x01D169], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D1EB, 0x01D2BF], + [0x01D2D4, 0x01D2DF], + [0x01D2F4, 0x01D2FF], + [0x01D357, 0x01D35F], + [0x01D379, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01D800, 0x01EC70], + [0x01ECB5, 0x01ED00], + [0x01ED3E, 0x01EFFF], + [0x01F02C, 0x01F02F], + [0x01F094, 0x01F09F], + [0x01F0AF, 0x01F0B0], + [0x01F0F6, 0x01F0FF], + [0x01F1AE, 0x01F1E5], + [0x01F203, 0x01F20F], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F24F], + [0x01F252, 0x01F25F], + [0x01F266, 0x01F2FF], + [0x01F6D8, 0x01F6DB], + [0x01F6ED, 0x01F6EF], + [0x01F6FD, 0x01F6FF], + [0x01F777, 0x01F77A], + [0x01F7DA, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F7FF], + [0x01F80C, 0x01F80F], + [0x01F848, 0x01F84F], + [0x01F85A, 0x01F85F], + [0x01F888, 0x01F88F], + [0x01F8AE, 0x01F8AF], + [0x01F8B2, 0x01F8FF], + [0x01FA54, 0x01FA5F], + [0x01FA6E, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x01FAFF], + [0x01FBCB, 0x01FBEF], + [0x01FBFA, 0x0E0000], + [0x0E0002, 0x0E001F], + [0x0E0080, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Common}+$/u, + nonMatchSymbols, + "\\P{Script=Common}" +); +testPropertyEscapes( + /^\P{Script=Zyyy}+$/u, + nonMatchSymbols, + "\\P{Script=Zyyy}" +); +testPropertyEscapes( + /^\P{sc=Common}+$/u, + nonMatchSymbols, + "\\P{sc=Common}" +); +testPropertyEscapes( + /^\P{sc=Zyyy}+$/u, + nonMatchSymbols, + "\\P{sc=Zyyy}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js new file mode 100644 index 0000000000..999cc08d2f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Coptic.js @@ -0,0 +1,97 @@ +// Copyright 2022 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 for `Script=Coptic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0003E2, 0x0003EF], + [0x002C80, 0x002CF3], + [0x002CF9, 0x002CFF] + ] +}); +testPropertyEscapes( + /^\p{Script=Coptic}+$/u, + matchSymbols, + "\\p{Script=Coptic}" +); +testPropertyEscapes( + /^\p{Script=Copt}+$/u, + matchSymbols, + "\\p{Script=Copt}" +); +testPropertyEscapes( + /^\p{Script=Qaac}+$/u, + matchSymbols, + "\\p{Script=Qaac}" +); +testPropertyEscapes( + /^\p{sc=Coptic}+$/u, + matchSymbols, + "\\p{sc=Coptic}" +); +testPropertyEscapes( + /^\p{sc=Copt}+$/u, + matchSymbols, + "\\p{sc=Copt}" +); +testPropertyEscapes( + /^\p{sc=Qaac}+$/u, + matchSymbols, + "\\p{sc=Qaac}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0003E1], + [0x0003F0, 0x002C7F], + [0x002CF4, 0x002CF8], + [0x002D00, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Coptic}+$/u, + nonMatchSymbols, + "\\P{Script=Coptic}" +); +testPropertyEscapes( + /^\P{Script=Copt}+$/u, + nonMatchSymbols, + "\\P{Script=Copt}" +); +testPropertyEscapes( + /^\P{Script=Qaac}+$/u, + nonMatchSymbols, + "\\P{Script=Qaac}" +); +testPropertyEscapes( + /^\P{sc=Coptic}+$/u, + nonMatchSymbols, + "\\P{sc=Coptic}" +); +testPropertyEscapes( + /^\P{sc=Copt}+$/u, + nonMatchSymbols, + "\\P{sc=Copt}" +); +testPropertyEscapes( + /^\P{sc=Qaac}+$/u, + nonMatchSymbols, + "\\P{sc=Qaac}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js new file mode 100644 index 0000000000..9d93e62965 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cuneiform.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script=Cuneiform` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x012000, 0x012399], + [0x012400, 0x01246E], + [0x012470, 0x012474], + [0x012480, 0x012543] + ] +}); +testPropertyEscapes( + /^\p{Script=Cuneiform}+$/u, + matchSymbols, + "\\p{Script=Cuneiform}" +); +testPropertyEscapes( + /^\p{Script=Xsux}+$/u, + matchSymbols, + "\\p{Script=Xsux}" +); +testPropertyEscapes( + /^\p{sc=Cuneiform}+$/u, + matchSymbols, + "\\p{sc=Cuneiform}" +); +testPropertyEscapes( + /^\p{sc=Xsux}+$/u, + matchSymbols, + "\\p{sc=Xsux}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01246F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011FFF], + [0x01239A, 0x0123FF], + [0x012475, 0x01247F], + [0x012544, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Cuneiform}+$/u, + nonMatchSymbols, + "\\P{Script=Cuneiform}" +); +testPropertyEscapes( + /^\P{Script=Xsux}+$/u, + nonMatchSymbols, + "\\P{Script=Xsux}" +); +testPropertyEscapes( + /^\P{sc=Cuneiform}+$/u, + nonMatchSymbols, + "\\P{sc=Cuneiform}" +); +testPropertyEscapes( + /^\P{sc=Xsux}+$/u, + nonMatchSymbols, + "\\P{sc=Xsux}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js new file mode 100644 index 0000000000..a5bcd6cba3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cypriot.js @@ -0,0 +1,85 @@ +// Copyright 2022 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 for `Script=Cypriot` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x010808, + 0x01083C, + 0x01083F + ], + ranges: [ + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838] + ] +}); +testPropertyEscapes( + /^\p{Script=Cypriot}+$/u, + matchSymbols, + "\\p{Script=Cypriot}" +); +testPropertyEscapes( + /^\p{Script=Cprt}+$/u, + matchSymbols, + "\\p{Script=Cprt}" +); +testPropertyEscapes( + /^\p{sc=Cypriot}+$/u, + matchSymbols, + "\\p{sc=Cypriot}" +); +testPropertyEscapes( + /^\p{sc=Cprt}+$/u, + matchSymbols, + "\\p{sc=Cprt}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x010809, + 0x010836 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x010840, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Cypriot}+$/u, + nonMatchSymbols, + "\\P{Script=Cypriot}" +); +testPropertyEscapes( + /^\P{Script=Cprt}+$/u, + nonMatchSymbols, + "\\P{Script=Cprt}" +); +testPropertyEscapes( + /^\P{sc=Cypriot}+$/u, + nonMatchSymbols, + "\\P{sc=Cypriot}" +); +testPropertyEscapes( + /^\P{sc=Cprt}+$/u, + nonMatchSymbols, + "\\P{sc=Cprt}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js new file mode 100644 index 0000000000..ad99828e8a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cypro_Minoan.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Cypro_Minoan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x012F90, 0x012FF2] + ] +}); +testPropertyEscapes( + /^\p{Script=Cypro_Minoan}+$/u, + matchSymbols, + "\\p{Script=Cypro_Minoan}" +); +testPropertyEscapes( + /^\p{Script=Cpmn}+$/u, + matchSymbols, + "\\p{Script=Cpmn}" +); +testPropertyEscapes( + /^\p{sc=Cypro_Minoan}+$/u, + matchSymbols, + "\\p{sc=Cypro_Minoan}" +); +testPropertyEscapes( + /^\p{sc=Cpmn}+$/u, + matchSymbols, + "\\p{sc=Cpmn}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x012F8F], + [0x012FF3, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Cypro_Minoan}+$/u, + nonMatchSymbols, + "\\P{Script=Cypro_Minoan}" +); +testPropertyEscapes( + /^\P{Script=Cpmn}+$/u, + nonMatchSymbols, + "\\P{Script=Cpmn}" +); +testPropertyEscapes( + /^\P{sc=Cypro_Minoan}+$/u, + nonMatchSymbols, + "\\P{sc=Cypro_Minoan}" +); +testPropertyEscapes( + /^\P{sc=Cpmn}+$/u, + nonMatchSymbols, + "\\P{sc=Cpmn}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js new file mode 100644 index 0000000000..34a7845c4d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Cyrillic.js @@ -0,0 +1,92 @@ +// Copyright 2022 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 for `Script=Cyrillic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001D2B, + 0x001D78, + 0x01E08F + ], + ranges: [ + [0x000400, 0x000484], + [0x000487, 0x00052F], + [0x001C80, 0x001C88], + [0x002DE0, 0x002DFF], + [0x00A640, 0x00A69F], + [0x00FE2E, 0x00FE2F], + [0x01E030, 0x01E06D] + ] +}); +testPropertyEscapes( + /^\p{Script=Cyrillic}+$/u, + matchSymbols, + "\\p{Script=Cyrillic}" +); +testPropertyEscapes( + /^\p{Script=Cyrl}+$/u, + matchSymbols, + "\\p{Script=Cyrl}" +); +testPropertyEscapes( + /^\p{sc=Cyrillic}+$/u, + matchSymbols, + "\\p{sc=Cyrillic}" +); +testPropertyEscapes( + /^\p{sc=Cyrl}+$/u, + matchSymbols, + "\\p{sc=Cyrl}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0003FF], + [0x000485, 0x000486], + [0x000530, 0x001C7F], + [0x001C89, 0x001D2A], + [0x001D2C, 0x001D77], + [0x001D79, 0x002DDF], + [0x002E00, 0x00A63F], + [0x00A6A0, 0x00DBFF], + [0x00E000, 0x00FE2D], + [0x00FE30, 0x01E02F], + [0x01E06E, 0x01E08E], + [0x01E090, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Cyrillic}+$/u, + nonMatchSymbols, + "\\P{Script=Cyrillic}" +); +testPropertyEscapes( + /^\P{Script=Cyrl}+$/u, + nonMatchSymbols, + "\\P{Script=Cyrl}" +); +testPropertyEscapes( + /^\P{sc=Cyrillic}+$/u, + nonMatchSymbols, + "\\P{sc=Cyrillic}" +); +testPropertyEscapes( + /^\P{sc=Cyrl}+$/u, + nonMatchSymbols, + "\\P{sc=Cyrl}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js new file mode 100644 index 0000000000..90f70df2bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Deseret.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Deseret` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010400, 0x01044F] + ] +}); +testPropertyEscapes( + /^\p{Script=Deseret}+$/u, + matchSymbols, + "\\p{Script=Deseret}" +); +testPropertyEscapes( + /^\p{Script=Dsrt}+$/u, + matchSymbols, + "\\p{Script=Dsrt}" +); +testPropertyEscapes( + /^\p{sc=Deseret}+$/u, + matchSymbols, + "\\p{sc=Deseret}" +); +testPropertyEscapes( + /^\p{sc=Dsrt}+$/u, + matchSymbols, + "\\p{sc=Dsrt}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0103FF], + [0x010450, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Deseret}+$/u, + nonMatchSymbols, + "\\P{Script=Deseret}" +); +testPropertyEscapes( + /^\P{Script=Dsrt}+$/u, + nonMatchSymbols, + "\\P{Script=Dsrt}" +); +testPropertyEscapes( + /^\P{sc=Deseret}+$/u, + nonMatchSymbols, + "\\P{sc=Deseret}" +); +testPropertyEscapes( + /^\P{sc=Dsrt}+$/u, + nonMatchSymbols, + "\\P{sc=Dsrt}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js new file mode 100644 index 0000000000..6dd892a5f7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Devanagari.js @@ -0,0 +1,81 @@ +// Copyright 2022 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 for `Script=Devanagari` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000900, 0x000950], + [0x000955, 0x000963], + [0x000966, 0x00097F], + [0x00A8E0, 0x00A8FF], + [0x011B00, 0x011B09] + ] +}); +testPropertyEscapes( + /^\p{Script=Devanagari}+$/u, + matchSymbols, + "\\p{Script=Devanagari}" +); +testPropertyEscapes( + /^\p{Script=Deva}+$/u, + matchSymbols, + "\\p{Script=Deva}" +); +testPropertyEscapes( + /^\p{sc=Devanagari}+$/u, + matchSymbols, + "\\p{sc=Devanagari}" +); +testPropertyEscapes( + /^\p{sc=Deva}+$/u, + matchSymbols, + "\\p{sc=Deva}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0008FF], + [0x000951, 0x000954], + [0x000964, 0x000965], + [0x000980, 0x00A8DF], + [0x00A900, 0x00DBFF], + [0x00E000, 0x011AFF], + [0x011B0A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Devanagari}+$/u, + nonMatchSymbols, + "\\P{Script=Devanagari}" +); +testPropertyEscapes( + /^\P{Script=Deva}+$/u, + nonMatchSymbols, + "\\P{Script=Deva}" +); +testPropertyEscapes( + /^\P{sc=Devanagari}+$/u, + nonMatchSymbols, + "\\P{sc=Devanagari}" +); +testPropertyEscapes( + /^\P{sc=Deva}+$/u, + nonMatchSymbols, + "\\P{sc=Deva}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js new file mode 100644 index 0000000000..f8d3c984f3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Dives_Akuru.js @@ -0,0 +1,89 @@ +// Copyright 2022 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 for `Script=Dives_Akuru` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x011909 + ], + ranges: [ + [0x011900, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x011935], + [0x011937, 0x011938], + [0x01193B, 0x011946], + [0x011950, 0x011959] + ] +}); +testPropertyEscapes( + /^\p{Script=Dives_Akuru}+$/u, + matchSymbols, + "\\p{Script=Dives_Akuru}" +); +testPropertyEscapes( + /^\p{Script=Diak}+$/u, + matchSymbols, + "\\p{Script=Diak}" +); +testPropertyEscapes( + /^\p{sc=Dives_Akuru}+$/u, + matchSymbols, + "\\p{sc=Dives_Akuru}" +); +testPropertyEscapes( + /^\p{sc=Diak}+$/u, + matchSymbols, + "\\p{sc=Diak}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011914, + 0x011917, + 0x011936 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0118FF], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011939, 0x01193A], + [0x011947, 0x01194F], + [0x01195A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Dives_Akuru}+$/u, + nonMatchSymbols, + "\\P{Script=Dives_Akuru}" +); +testPropertyEscapes( + /^\P{Script=Diak}+$/u, + nonMatchSymbols, + "\\P{Script=Diak}" +); +testPropertyEscapes( + /^\P{sc=Dives_Akuru}+$/u, + nonMatchSymbols, + "\\P{sc=Dives_Akuru}" +); +testPropertyEscapes( + /^\P{sc=Diak}+$/u, + nonMatchSymbols, + "\\P{sc=Diak}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js new file mode 100644 index 0000000000..1bff72a4d2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Dogra.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Dogra` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011800, 0x01183B] + ] +}); +testPropertyEscapes( + /^\p{Script=Dogra}+$/u, + matchSymbols, + "\\p{Script=Dogra}" +); +testPropertyEscapes( + /^\p{Script=Dogr}+$/u, + matchSymbols, + "\\p{Script=Dogr}" +); +testPropertyEscapes( + /^\p{sc=Dogra}+$/u, + matchSymbols, + "\\p{sc=Dogra}" +); +testPropertyEscapes( + /^\p{sc=Dogr}+$/u, + matchSymbols, + "\\p{sc=Dogr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0117FF], + [0x01183C, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Dogra}+$/u, + nonMatchSymbols, + "\\P{Script=Dogra}" +); +testPropertyEscapes( + /^\P{Script=Dogr}+$/u, + nonMatchSymbols, + "\\P{Script=Dogr}" +); +testPropertyEscapes( + /^\P{sc=Dogra}+$/u, + nonMatchSymbols, + "\\P{sc=Dogra}" +); +testPropertyEscapes( + /^\P{sc=Dogr}+$/u, + nonMatchSymbols, + "\\P{sc=Dogr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js new file mode 100644 index 0000000000..7e322e4a65 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Duployan.js @@ -0,0 +1,81 @@ +// Copyright 2022 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 for `Script=Duployan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01BC9C, 0x01BC9F] + ] +}); +testPropertyEscapes( + /^\p{Script=Duployan}+$/u, + matchSymbols, + "\\p{Script=Duployan}" +); +testPropertyEscapes( + /^\p{Script=Dupl}+$/u, + matchSymbols, + "\\p{Script=Dupl}" +); +testPropertyEscapes( + /^\p{sc=Duployan}+$/u, + matchSymbols, + "\\p{sc=Duployan}" +); +testPropertyEscapes( + /^\p{sc=Dupl}+$/u, + matchSymbols, + "\\p{sc=Dupl}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01BC9B], + [0x01BCA0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Duployan}+$/u, + nonMatchSymbols, + "\\P{Script=Duployan}" +); +testPropertyEscapes( + /^\P{Script=Dupl}+$/u, + nonMatchSymbols, + "\\P{Script=Dupl}" +); +testPropertyEscapes( + /^\P{sc=Duployan}+$/u, + nonMatchSymbols, + "\\P{sc=Duployan}" +); +testPropertyEscapes( + /^\P{sc=Dupl}+$/u, + nonMatchSymbols, + "\\P{sc=Dupl}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js new file mode 100644 index 0000000000..83e4e44878 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Egyptian_Hieroglyphs.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Egyptian_Hieroglyphs` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x013000, 0x013455] + ] +}); +testPropertyEscapes( + /^\p{Script=Egyptian_Hieroglyphs}+$/u, + matchSymbols, + "\\p{Script=Egyptian_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{Script=Egyp}+$/u, + matchSymbols, + "\\p{Script=Egyp}" +); +testPropertyEscapes( + /^\p{sc=Egyptian_Hieroglyphs}+$/u, + matchSymbols, + "\\p{sc=Egyptian_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{sc=Egyp}+$/u, + matchSymbols, + "\\p{sc=Egyp}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x012FFF], + [0x013456, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Egyptian_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{Script=Egyptian_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{Script=Egyp}+$/u, + nonMatchSymbols, + "\\P{Script=Egyp}" +); +testPropertyEscapes( + /^\P{sc=Egyptian_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{sc=Egyptian_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{sc=Egyp}+$/u, + nonMatchSymbols, + "\\P{sc=Egyp}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js new file mode 100644 index 0000000000..ad76e9d9ad --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Elbasan.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Elbasan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010500, 0x010527] + ] +}); +testPropertyEscapes( + /^\p{Script=Elbasan}+$/u, + matchSymbols, + "\\p{Script=Elbasan}" +); +testPropertyEscapes( + /^\p{Script=Elba}+$/u, + matchSymbols, + "\\p{Script=Elba}" +); +testPropertyEscapes( + /^\p{sc=Elbasan}+$/u, + matchSymbols, + "\\p{sc=Elbasan}" +); +testPropertyEscapes( + /^\p{sc=Elba}+$/u, + matchSymbols, + "\\p{sc=Elba}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0104FF], + [0x010528, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Elbasan}+$/u, + nonMatchSymbols, + "\\P{Script=Elbasan}" +); +testPropertyEscapes( + /^\P{Script=Elba}+$/u, + nonMatchSymbols, + "\\P{Script=Elba}" +); +testPropertyEscapes( + /^\P{sc=Elbasan}+$/u, + nonMatchSymbols, + "\\P{sc=Elbasan}" +); +testPropertyEscapes( + /^\P{sc=Elba}+$/u, + nonMatchSymbols, + "\\P{sc=Elba}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js new file mode 100644 index 0000000000..10db777992 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Elymaic.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Elymaic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010FE0, 0x010FF6] + ] +}); +testPropertyEscapes( + /^\p{Script=Elymaic}+$/u, + matchSymbols, + "\\p{Script=Elymaic}" +); +testPropertyEscapes( + /^\p{Script=Elym}+$/u, + matchSymbols, + "\\p{Script=Elym}" +); +testPropertyEscapes( + /^\p{sc=Elymaic}+$/u, + matchSymbols, + "\\p{sc=Elymaic}" +); +testPropertyEscapes( + /^\p{sc=Elym}+$/u, + matchSymbols, + "\\p{sc=Elym}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010FDF], + [0x010FF7, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Elymaic}+$/u, + nonMatchSymbols, + "\\P{Script=Elymaic}" +); +testPropertyEscapes( + /^\P{Script=Elym}+$/u, + nonMatchSymbols, + "\\P{Script=Elym}" +); +testPropertyEscapes( + /^\P{sc=Elymaic}+$/u, + nonMatchSymbols, + "\\P{sc=Elymaic}" +); +testPropertyEscapes( + /^\P{sc=Elym}+$/u, + nonMatchSymbols, + "\\P{sc=Elym}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js new file mode 100644 index 0000000000..874a880384 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ethiopic.js @@ -0,0 +1,145 @@ +// Copyright 2022 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 for `Script=Ethiopic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001258, + 0x0012C0 + ], + ranges: [ + [0x001200, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x00135D, 0x00137C], + [0x001380, 0x001399], + [0x002D80, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE] + ] +}); +testPropertyEscapes( + /^\p{Script=Ethiopic}+$/u, + matchSymbols, + "\\p{Script=Ethiopic}" +); +testPropertyEscapes( + /^\p{Script=Ethi}+$/u, + matchSymbols, + "\\p{Script=Ethi}" +); +testPropertyEscapes( + /^\p{sc=Ethiopic}+$/u, + matchSymbols, + "\\p{sc=Ethiopic}" +); +testPropertyEscapes( + /^\p{sc=Ethi}+$/u, + matchSymbols, + "\\p{sc=Ethi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x00AB27, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0011FF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00135C], + [0x00137D, 0x00137F], + [0x00139A, 0x002D7F], + [0x002D97, 0x002D9F], + [0x002DDF, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB2F, 0x00DBFF], + [0x00E000, 0x01E7DF], + [0x01E7FF, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Ethiopic}+$/u, + nonMatchSymbols, + "\\P{Script=Ethiopic}" +); +testPropertyEscapes( + /^\P{Script=Ethi}+$/u, + nonMatchSymbols, + "\\P{Script=Ethi}" +); +testPropertyEscapes( + /^\P{sc=Ethiopic}+$/u, + nonMatchSymbols, + "\\P{sc=Ethiopic}" +); +testPropertyEscapes( + /^\P{sc=Ethi}+$/u, + nonMatchSymbols, + "\\P{sc=Ethi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js new file mode 100644 index 0000000000..d7acea54af --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Georgian.js @@ -0,0 +1,93 @@ +// Copyright 2022 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 for `Script=Georgian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0010C7, + 0x0010CD, + 0x002D27, + 0x002D2D + ], + ranges: [ + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FC, 0x0010FF], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x002D00, 0x002D25] + ] +}); +testPropertyEscapes( + /^\p{Script=Georgian}+$/u, + matchSymbols, + "\\p{Script=Georgian}" +); +testPropertyEscapes( + /^\p{Script=Geor}+$/u, + matchSymbols, + "\\p{Script=Geor}" +); +testPropertyEscapes( + /^\p{sc=Georgian}+$/u, + matchSymbols, + "\\p{sc=Georgian}" +); +testPropertyEscapes( + /^\p{sc=Geor}+$/u, + matchSymbols, + "\\p{sc=Geor}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0010C6, + 0x0010FB, + 0x002D26 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x001100, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Georgian}+$/u, + nonMatchSymbols, + "\\P{Script=Georgian}" +); +testPropertyEscapes( + /^\P{Script=Geor}+$/u, + nonMatchSymbols, + "\\P{Script=Geor}" +); +testPropertyEscapes( + /^\P{sc=Georgian}+$/u, + nonMatchSymbols, + "\\P{sc=Georgian}" +); +testPropertyEscapes( + /^\P{sc=Geor}+$/u, + nonMatchSymbols, + "\\P{sc=Geor}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js new file mode 100644 index 0000000000..8c5eeff0d9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Glagolitic.js @@ -0,0 +1,84 @@ +// Copyright 2022 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 for `Script=Glagolitic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x002C00, 0x002C5F], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A] + ] +}); +testPropertyEscapes( + /^\p{Script=Glagolitic}+$/u, + matchSymbols, + "\\p{Script=Glagolitic}" +); +testPropertyEscapes( + /^\p{Script=Glag}+$/u, + matchSymbols, + "\\p{Script=Glag}" +); +testPropertyEscapes( + /^\p{sc=Glagolitic}+$/u, + matchSymbols, + "\\p{sc=Glagolitic}" +); +testPropertyEscapes( + /^\p{sc=Glag}+$/u, + matchSymbols, + "\\p{sc=Glag}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01E007, + 0x01E022, + 0x01E025 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002BFF], + [0x002C60, 0x00DBFF], + [0x00E000, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Glagolitic}+$/u, + nonMatchSymbols, + "\\P{Script=Glagolitic}" +); +testPropertyEscapes( + /^\P{Script=Glag}+$/u, + nonMatchSymbols, + "\\P{Script=Glag}" +); +testPropertyEscapes( + /^\P{sc=Glagolitic}+$/u, + nonMatchSymbols, + "\\P{sc=Glagolitic}" +); +testPropertyEscapes( + /^\P{sc=Glag}+$/u, + nonMatchSymbols, + "\\P{sc=Glag}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js new file mode 100644 index 0000000000..e46e494a8a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gothic.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Gothic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010330, 0x01034A] + ] +}); +testPropertyEscapes( + /^\p{Script=Gothic}+$/u, + matchSymbols, + "\\p{Script=Gothic}" +); +testPropertyEscapes( + /^\p{Script=Goth}+$/u, + matchSymbols, + "\\p{Script=Goth}" +); +testPropertyEscapes( + /^\p{sc=Gothic}+$/u, + matchSymbols, + "\\p{sc=Gothic}" +); +testPropertyEscapes( + /^\p{sc=Goth}+$/u, + matchSymbols, + "\\p{sc=Goth}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01032F], + [0x01034B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Gothic}+$/u, + nonMatchSymbols, + "\\P{Script=Gothic}" +); +testPropertyEscapes( + /^\P{Script=Goth}+$/u, + nonMatchSymbols, + "\\P{Script=Goth}" +); +testPropertyEscapes( + /^\P{sc=Gothic}+$/u, + nonMatchSymbols, + "\\P{sc=Gothic}" +); +testPropertyEscapes( + /^\P{sc=Goth}+$/u, + nonMatchSymbols, + "\\P{sc=Goth}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js new file mode 100644 index 0000000000..013457acd1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Grantha.js @@ -0,0 +1,103 @@ +// Copyright 2022 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 for `Script=Grantha` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x011350, + 0x011357 + ], + ranges: [ + [0x011300, 0x011303], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01133C, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x01135D, 0x011363], + [0x011366, 0x01136C], + [0x011370, 0x011374] + ] +}); +testPropertyEscapes( + /^\p{Script=Grantha}+$/u, + matchSymbols, + "\\p{Script=Grantha}" +); +testPropertyEscapes( + /^\p{Script=Gran}+$/u, + matchSymbols, + "\\p{Script=Gran}" +); +testPropertyEscapes( + /^\p{sc=Grantha}+$/u, + matchSymbols, + "\\p{sc=Grantha}" +); +testPropertyEscapes( + /^\p{sc=Gran}+$/u, + matchSymbols, + "\\p{sc=Gran}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011304, + 0x011329, + 0x011331, + 0x011334 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0112FF], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x01133A, 0x01133B], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x01134F], + [0x011351, 0x011356], + [0x011358, 0x01135C], + [0x011364, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Grantha}+$/u, + nonMatchSymbols, + "\\P{Script=Grantha}" +); +testPropertyEscapes( + /^\P{Script=Gran}+$/u, + nonMatchSymbols, + "\\P{Script=Gran}" +); +testPropertyEscapes( + /^\P{sc=Grantha}+$/u, + nonMatchSymbols, + "\\P{sc=Grantha}" +); +testPropertyEscapes( + /^\P{sc=Gran}+$/u, + nonMatchSymbols, + "\\P{sc=Gran}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js new file mode 100644 index 0000000000..d6c810a618 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Greek.js @@ -0,0 +1,145 @@ +// Copyright 2022 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 for `Script=Greek` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00037F, + 0x000384, + 0x000386, + 0x00038C, + 0x001DBF, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x002126, + 0x00AB65, + 0x0101A0 + ], + ranges: [ + [0x000370, 0x000373], + [0x000375, 0x000377], + [0x00037A, 0x00037D], + [0x000388, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003E1], + [0x0003F0, 0x0003FF], + [0x001D26, 0x001D2A], + [0x001D5D, 0x001D61], + [0x001D66, 0x001D6A], + [0x001F00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FC4], + [0x001FC6, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FDD, 0x001FEF], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFE], + [0x010140, 0x01018E], + [0x01D200, 0x01D245] + ] +}); +testPropertyEscapes( + /^\p{Script=Greek}+$/u, + matchSymbols, + "\\p{Script=Greek}" +); +testPropertyEscapes( + /^\p{Script=Grek}+$/u, + matchSymbols, + "\\p{Script=Grek}" +); +testPropertyEscapes( + /^\p{sc=Greek}+$/u, + matchSymbols, + "\\p{sc=Greek}" +); +testPropertyEscapes( + /^\p{sc=Grek}+$/u, + matchSymbols, + "\\p{sc=Grek}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000374, + 0x00037E, + 0x000385, + 0x000387, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FC5, + 0x001FDC, + 0x001FF5 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00036F], + [0x000378, 0x000379], + [0x000380, 0x000383], + [0x0003E2, 0x0003EF], + [0x000400, 0x001D25], + [0x001D2B, 0x001D5C], + [0x001D62, 0x001D65], + [0x001D6B, 0x001DBE], + [0x001DC0, 0x001EFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FD4, 0x001FD5], + [0x001FF0, 0x001FF1], + [0x001FFF, 0x002125], + [0x002127, 0x00AB64], + [0x00AB66, 0x00DBFF], + [0x00E000, 0x01013F], + [0x01018F, 0x01019F], + [0x0101A1, 0x01D1FF], + [0x01D246, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Greek}+$/u, + nonMatchSymbols, + "\\P{Script=Greek}" +); +testPropertyEscapes( + /^\P{Script=Grek}+$/u, + nonMatchSymbols, + "\\P{Script=Grek}" +); +testPropertyEscapes( + /^\P{sc=Greek}+$/u, + nonMatchSymbols, + "\\P{sc=Greek}" +); +testPropertyEscapes( + /^\P{sc=Grek}+$/u, + nonMatchSymbols, + "\\P{sc=Grek}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js new file mode 100644 index 0000000000..baf22e91e3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gujarati.js @@ -0,0 +1,101 @@ +// Copyright 2022 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 for `Script=Gujarati` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000AD0 + ], + ranges: [ + [0x000A81, 0x000A83], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000ABC, 0x000AC5], + [0x000AC7, 0x000AC9], + [0x000ACB, 0x000ACD], + [0x000AE0, 0x000AE3], + [0x000AE6, 0x000AF1], + [0x000AF9, 0x000AFF] + ] +}); +testPropertyEscapes( + /^\p{Script=Gujarati}+$/u, + matchSymbols, + "\\p{Script=Gujarati}" +); +testPropertyEscapes( + /^\p{Script=Gujr}+$/u, + matchSymbols, + "\\p{Script=Gujr}" +); +testPropertyEscapes( + /^\p{sc=Gujarati}+$/u, + matchSymbols, + "\\p{sc=Gujarati}" +); +testPropertyEscapes( + /^\p{sc=Gujr}+$/u, + matchSymbols, + "\\p{sc=Gujr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000A84, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000AC6, + 0x000ACA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000A80], + [0x000ABA, 0x000ABB], + [0x000ACE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE4, 0x000AE5], + [0x000AF2, 0x000AF8], + [0x000B00, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Gujarati}+$/u, + nonMatchSymbols, + "\\P{Script=Gujarati}" +); +testPropertyEscapes( + /^\P{Script=Gujr}+$/u, + nonMatchSymbols, + "\\P{Script=Gujr}" +); +testPropertyEscapes( + /^\P{sc=Gujarati}+$/u, + nonMatchSymbols, + "\\P{sc=Gujarati}" +); +testPropertyEscapes( + /^\P{sc=Gujr}+$/u, + nonMatchSymbols, + "\\P{sc=Gujr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js new file mode 100644 index 0000000000..e9c242d2cb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gunjala_Gondi.js @@ -0,0 +1,84 @@ +// Copyright 2022 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 for `Script=Gunjala_Gondi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D8E], + [0x011D90, 0x011D91], + [0x011D93, 0x011D98], + [0x011DA0, 0x011DA9] + ] +}); +testPropertyEscapes( + /^\p{Script=Gunjala_Gondi}+$/u, + matchSymbols, + "\\p{Script=Gunjala_Gondi}" +); +testPropertyEscapes( + /^\p{Script=Gong}+$/u, + matchSymbols, + "\\p{Script=Gong}" +); +testPropertyEscapes( + /^\p{sc=Gunjala_Gondi}+$/u, + matchSymbols, + "\\p{sc=Gunjala_Gondi}" +); +testPropertyEscapes( + /^\p{sc=Gong}+$/u, + matchSymbols, + "\\p{sc=Gong}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011D66, + 0x011D69, + 0x011D8F, + 0x011D92 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011D5F], + [0x011D99, 0x011D9F], + [0x011DAA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Gunjala_Gondi}+$/u, + nonMatchSymbols, + "\\P{Script=Gunjala_Gondi}" +); +testPropertyEscapes( + /^\P{Script=Gong}+$/u, + nonMatchSymbols, + "\\P{Script=Gong}" +); +testPropertyEscapes( + /^\P{sc=Gunjala_Gondi}+$/u, + nonMatchSymbols, + "\\P{sc=Gunjala_Gondi}" +); +testPropertyEscapes( + /^\P{sc=Gong}+$/u, + nonMatchSymbols, + "\\P{sc=Gong}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js new file mode 100644 index 0000000000..0b12236e66 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Gurmukhi.js @@ -0,0 +1,105 @@ +// Copyright 2022 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 for `Script=Gurmukhi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000A3C, + 0x000A51, + 0x000A5E + ], + ranges: [ + [0x000A01, 0x000A03], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A3E, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A59, 0x000A5C], + [0x000A66, 0x000A76] + ] +}); +testPropertyEscapes( + /^\p{Script=Gurmukhi}+$/u, + matchSymbols, + "\\p{Script=Gurmukhi}" +); +testPropertyEscapes( + /^\p{Script=Guru}+$/u, + matchSymbols, + "\\p{Script=Guru}" +); +testPropertyEscapes( + /^\p{sc=Gurmukhi}+$/u, + matchSymbols, + "\\p{sc=Gurmukhi}" +); +testPropertyEscapes( + /^\p{sc=Guru}+$/u, + matchSymbols, + "\\p{sc=Guru}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000A04, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A3D, + 0x000A5D + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000A00], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A3B], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A58], + [0x000A5F, 0x000A65], + [0x000A77, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Gurmukhi}+$/u, + nonMatchSymbols, + "\\P{Script=Gurmukhi}" +); +testPropertyEscapes( + /^\P{Script=Guru}+$/u, + nonMatchSymbols, + "\\P{Script=Guru}" +); +testPropertyEscapes( + /^\P{sc=Gurmukhi}+$/u, + nonMatchSymbols, + "\\P{sc=Gurmukhi}" +); +testPropertyEscapes( + /^\P{sc=Guru}+$/u, + nonMatchSymbols, + "\\P{sc=Guru}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Han.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Han.js new file mode 100644 index 0000000000..98dcdda8a9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Han.js @@ -0,0 +1,115 @@ +// Copyright 2022 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 for `Script=Han` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x003005, + 0x003007 + ], + ranges: [ + [0x002E80, 0x002E99], + [0x002E9B, 0x002EF3], + [0x002F00, 0x002FD5], + [0x003021, 0x003029], + [0x003038, 0x00303B], + [0x003400, 0x004DBF], + [0x004E00, 0x009FFF], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x016FE2, 0x016FE3], + [0x016FF0, 0x016FF1], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{Script=Han}+$/u, + matchSymbols, + "\\p{Script=Han}" +); +testPropertyEscapes( + /^\p{Script=Hani}+$/u, + matchSymbols, + "\\p{Script=Hani}" +); +testPropertyEscapes( + /^\p{sc=Han}+$/u, + matchSymbols, + "\\p{sc=Han}" +); +testPropertyEscapes( + /^\p{sc=Hani}+$/u, + matchSymbols, + "\\p{sc=Hani}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x002E9A, + 0x003006 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002E7F], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x003004], + [0x003008, 0x003020], + [0x00302A, 0x003037], + [0x00303C, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A000, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x016FE1], + [0x016FE4, 0x016FEF], + [0x016FF2, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Han}+$/u, + nonMatchSymbols, + "\\P{Script=Han}" +); +testPropertyEscapes( + /^\P{Script=Hani}+$/u, + nonMatchSymbols, + "\\P{Script=Hani}" +); +testPropertyEscapes( + /^\P{sc=Han}+$/u, + nonMatchSymbols, + "\\P{sc=Han}" +); +testPropertyEscapes( + /^\P{sc=Hani}+$/u, + nonMatchSymbols, + "\\P{sc=Hani}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js new file mode 100644 index 0000000000..0c31fa8816 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hangul.js @@ -0,0 +1,99 @@ +// Copyright 2022 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 for `Script=Hangul` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001100, 0x0011FF], + [0x00302E, 0x00302F], + [0x003131, 0x00318E], + [0x003200, 0x00321E], + [0x003260, 0x00327E], + [0x00A960, 0x00A97C], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00FFA0, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC] + ] +}); +testPropertyEscapes( + /^\p{Script=Hangul}+$/u, + matchSymbols, + "\\p{Script=Hangul}" +); +testPropertyEscapes( + /^\p{Script=Hang}+$/u, + matchSymbols, + "\\p{Script=Hang}" +); +testPropertyEscapes( + /^\p{sc=Hangul}+$/u, + matchSymbols, + "\\p{sc=Hangul}" +); +testPropertyEscapes( + /^\p{sc=Hang}+$/u, + matchSymbols, + "\\p{sc=Hang}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0010FF], + [0x001200, 0x00302D], + [0x003030, 0x003130], + [0x00318F, 0x0031FF], + [0x00321F, 0x00325F], + [0x00327F, 0x00A95F], + [0x00A97D, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00FF9F], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Hangul}+$/u, + nonMatchSymbols, + "\\P{Script=Hangul}" +); +testPropertyEscapes( + /^\P{Script=Hang}+$/u, + nonMatchSymbols, + "\\P{Script=Hang}" +); +testPropertyEscapes( + /^\P{sc=Hangul}+$/u, + nonMatchSymbols, + "\\P{sc=Hangul}" +); +testPropertyEscapes( + /^\P{sc=Hang}+$/u, + nonMatchSymbols, + "\\P{sc=Hang}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js new file mode 100644 index 0000000000..f22d8922c6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hanifi_Rohingya.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Hanifi_Rohingya` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010D00, 0x010D27], + [0x010D30, 0x010D39] + ] +}); +testPropertyEscapes( + /^\p{Script=Hanifi_Rohingya}+$/u, + matchSymbols, + "\\p{Script=Hanifi_Rohingya}" +); +testPropertyEscapes( + /^\p{Script=Rohg}+$/u, + matchSymbols, + "\\p{Script=Rohg}" +); +testPropertyEscapes( + /^\p{sc=Hanifi_Rohingya}+$/u, + matchSymbols, + "\\p{sc=Hanifi_Rohingya}" +); +testPropertyEscapes( + /^\p{sc=Rohg}+$/u, + matchSymbols, + "\\p{sc=Rohg}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010CFF], + [0x010D28, 0x010D2F], + [0x010D3A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Hanifi_Rohingya}+$/u, + nonMatchSymbols, + "\\P{Script=Hanifi_Rohingya}" +); +testPropertyEscapes( + /^\P{Script=Rohg}+$/u, + nonMatchSymbols, + "\\P{Script=Rohg}" +); +testPropertyEscapes( + /^\P{sc=Hanifi_Rohingya}+$/u, + nonMatchSymbols, + "\\P{sc=Hanifi_Rohingya}" +); +testPropertyEscapes( + /^\P{sc=Rohg}+$/u, + nonMatchSymbols, + "\\P{sc=Rohg}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js new file mode 100644 index 0000000000..b48a8da513 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hanunoo.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Hanunoo` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001720, 0x001734] + ] +}); +testPropertyEscapes( + /^\p{Script=Hanunoo}+$/u, + matchSymbols, + "\\p{Script=Hanunoo}" +); +testPropertyEscapes( + /^\p{Script=Hano}+$/u, + matchSymbols, + "\\p{Script=Hano}" +); +testPropertyEscapes( + /^\p{sc=Hanunoo}+$/u, + matchSymbols, + "\\p{sc=Hanunoo}" +); +testPropertyEscapes( + /^\p{sc=Hano}+$/u, + matchSymbols, + "\\p{sc=Hano}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00171F], + [0x001735, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Hanunoo}+$/u, + nonMatchSymbols, + "\\P{Script=Hanunoo}" +); +testPropertyEscapes( + /^\P{Script=Hano}+$/u, + nonMatchSymbols, + "\\P{Script=Hano}" +); +testPropertyEscapes( + /^\P{sc=Hanunoo}+$/u, + nonMatchSymbols, + "\\P{sc=Hanunoo}" +); +testPropertyEscapes( + /^\P{sc=Hano}+$/u, + nonMatchSymbols, + "\\P{sc=Hano}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js new file mode 100644 index 0000000000..d285e518ba --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hatran.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script=Hatran` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x0108FB, 0x0108FF] + ] +}); +testPropertyEscapes( + /^\p{Script=Hatran}+$/u, + matchSymbols, + "\\p{Script=Hatran}" +); +testPropertyEscapes( + /^\p{Script=Hatr}+$/u, + matchSymbols, + "\\p{Script=Hatr}" +); +testPropertyEscapes( + /^\p{sc=Hatran}+$/u, + matchSymbols, + "\\p{sc=Hatran}" +); +testPropertyEscapes( + /^\p{sc=Hatr}+$/u, + matchSymbols, + "\\p{sc=Hatr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0108F3 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0108DF], + [0x0108F6, 0x0108FA], + [0x010900, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Hatran}+$/u, + nonMatchSymbols, + "\\P{Script=Hatran}" +); +testPropertyEscapes( + /^\P{Script=Hatr}+$/u, + nonMatchSymbols, + "\\P{Script=Hatr}" +); +testPropertyEscapes( + /^\P{sc=Hatran}+$/u, + nonMatchSymbols, + "\\P{sc=Hatran}" +); +testPropertyEscapes( + /^\P{sc=Hatr}+$/u, + nonMatchSymbols, + "\\P{sc=Hatr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js new file mode 100644 index 0000000000..81ed90c824 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hebrew.js @@ -0,0 +1,91 @@ +// Copyright 2022 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 for `Script=Hebrew` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00FB3E + ], + ranges: [ + [0x000591, 0x0005C7], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F4], + [0x00FB1D, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FB4F] + ] +}); +testPropertyEscapes( + /^\p{Script=Hebrew}+$/u, + matchSymbols, + "\\p{Script=Hebrew}" +); +testPropertyEscapes( + /^\p{Script=Hebr}+$/u, + matchSymbols, + "\\p{Script=Hebr}" +); +testPropertyEscapes( + /^\p{sc=Hebrew}+$/u, + matchSymbols, + "\\p{sc=Hebrew}" +); +testPropertyEscapes( + /^\p{sc=Hebr}+$/u, + matchSymbols, + "\\p{sc=Hebr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000590], + [0x0005C8, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F5, 0x00DBFF], + [0x00E000, 0x00FB1C], + [0x00FB50, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Hebrew}+$/u, + nonMatchSymbols, + "\\P{Script=Hebrew}" +); +testPropertyEscapes( + /^\P{Script=Hebr}+$/u, + nonMatchSymbols, + "\\P{Script=Hebr}" +); +testPropertyEscapes( + /^\P{sc=Hebrew}+$/u, + nonMatchSymbols, + "\\P{sc=Hebrew}" +); +testPropertyEscapes( + /^\P{sc=Hebr}+$/u, + nonMatchSymbols, + "\\P{sc=Hebr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js new file mode 100644 index 0000000000..e881644395 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Hiragana.js @@ -0,0 +1,84 @@ +// Copyright 2022 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 for `Script=Hiragana` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01B132, + 0x01F200 + ], + ranges: [ + [0x003041, 0x003096], + [0x00309D, 0x00309F], + [0x01B001, 0x01B11F], + [0x01B150, 0x01B152] + ] +}); +testPropertyEscapes( + /^\p{Script=Hiragana}+$/u, + matchSymbols, + "\\p{Script=Hiragana}" +); +testPropertyEscapes( + /^\p{Script=Hira}+$/u, + matchSymbols, + "\\p{Script=Hira}" +); +testPropertyEscapes( + /^\p{sc=Hiragana}+$/u, + matchSymbols, + "\\p{sc=Hiragana}" +); +testPropertyEscapes( + /^\p{sc=Hira}+$/u, + matchSymbols, + "\\p{sc=Hira}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x003040], + [0x003097, 0x00309C], + [0x0030A0, 0x00DBFF], + [0x00E000, 0x01B000], + [0x01B120, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01F1FF], + [0x01F201, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Hiragana}+$/u, + nonMatchSymbols, + "\\P{Script=Hiragana}" +); +testPropertyEscapes( + /^\P{Script=Hira}+$/u, + nonMatchSymbols, + "\\P{Script=Hira}" +); +testPropertyEscapes( + /^\P{sc=Hiragana}+$/u, + nonMatchSymbols, + "\\P{sc=Hiragana}" +); +testPropertyEscapes( + /^\P{sc=Hira}+$/u, + nonMatchSymbols, + "\\P{sc=Hira}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js new file mode 100644 index 0000000000..e0219e6189 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Imperial_Aramaic.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Imperial_Aramaic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010840, 0x010855], + [0x010857, 0x01085F] + ] +}); +testPropertyEscapes( + /^\p{Script=Imperial_Aramaic}+$/u, + matchSymbols, + "\\p{Script=Imperial_Aramaic}" +); +testPropertyEscapes( + /^\p{Script=Armi}+$/u, + matchSymbols, + "\\p{Script=Armi}" +); +testPropertyEscapes( + /^\p{sc=Imperial_Aramaic}+$/u, + matchSymbols, + "\\p{sc=Imperial_Aramaic}" +); +testPropertyEscapes( + /^\p{sc=Armi}+$/u, + matchSymbols, + "\\p{sc=Armi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x010856 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01083F], + [0x010860, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Imperial_Aramaic}+$/u, + nonMatchSymbols, + "\\P{Script=Imperial_Aramaic}" +); +testPropertyEscapes( + /^\P{Script=Armi}+$/u, + nonMatchSymbols, + "\\P{Script=Armi}" +); +testPropertyEscapes( + /^\P{sc=Imperial_Aramaic}+$/u, + nonMatchSymbols, + "\\P{sc=Imperial_Aramaic}" +); +testPropertyEscapes( + /^\P{sc=Armi}+$/u, + nonMatchSymbols, + "\\P{sc=Armi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js new file mode 100644 index 0000000000..5ad174837a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inherited.js @@ -0,0 +1,151 @@ +// Copyright 2022 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 for `Script=Inherited` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000670, + 0x001CED, + 0x001CF4, + 0x0101FD, + 0x0102E0, + 0x01133B + ], + ranges: [ + [0x000300, 0x00036F], + [0x000485, 0x000486], + [0x00064B, 0x000655], + [0x000951, 0x000954], + [0x001AB0, 0x001ACE], + [0x001CD0, 0x001CD2], + [0x001CD4, 0x001CE0], + [0x001CE2, 0x001CE8], + [0x001CF8, 0x001CF9], + [0x001DC0, 0x001DFF], + [0x00200C, 0x00200D], + [0x0020D0, 0x0020F0], + [0x00302A, 0x00302D], + [0x003099, 0x00309A], + [0x00FE00, 0x00FE0F], + [0x00FE20, 0x00FE2D], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01D167, 0x01D169], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\p{Script=Inherited}+$/u, + matchSymbols, + "\\p{Script=Inherited}" +); +testPropertyEscapes( + /^\p{Script=Zinh}+$/u, + matchSymbols, + "\\p{Script=Zinh}" +); +testPropertyEscapes( + /^\p{Script=Qaai}+$/u, + matchSymbols, + "\\p{Script=Qaai}" +); +testPropertyEscapes( + /^\p{sc=Inherited}+$/u, + matchSymbols, + "\\p{sc=Inherited}" +); +testPropertyEscapes( + /^\p{sc=Zinh}+$/u, + matchSymbols, + "\\p{sc=Zinh}" +); +testPropertyEscapes( + /^\p{sc=Qaai}+$/u, + matchSymbols, + "\\p{sc=Qaai}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001CD3, + 0x001CE1 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0002FF], + [0x000370, 0x000484], + [0x000487, 0x00064A], + [0x000656, 0x00066F], + [0x000671, 0x000950], + [0x000955, 0x001AAF], + [0x001ACF, 0x001CCF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF7], + [0x001CFA, 0x001DBF], + [0x001E00, 0x00200B], + [0x00200E, 0x0020CF], + [0x0020F1, 0x003029], + [0x00302E, 0x003098], + [0x00309B, 0x00DBFF], + [0x00E000, 0x00FDFF], + [0x00FE10, 0x00FE1F], + [0x00FE2E, 0x0101FC], + [0x0101FE, 0x0102DF], + [0x0102E1, 0x01133A], + [0x01133C, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01D166], + [0x01D16A, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Inherited}+$/u, + nonMatchSymbols, + "\\P{Script=Inherited}" +); +testPropertyEscapes( + /^\P{Script=Zinh}+$/u, + nonMatchSymbols, + "\\P{Script=Zinh}" +); +testPropertyEscapes( + /^\P{Script=Qaai}+$/u, + nonMatchSymbols, + "\\P{Script=Qaai}" +); +testPropertyEscapes( + /^\P{sc=Inherited}+$/u, + nonMatchSymbols, + "\\P{sc=Inherited}" +); +testPropertyEscapes( + /^\P{sc=Zinh}+$/u, + nonMatchSymbols, + "\\P{sc=Zinh}" +); +testPropertyEscapes( + /^\P{sc=Qaai}+$/u, + nonMatchSymbols, + "\\P{sc=Qaai}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js new file mode 100644 index 0000000000..903a4c547b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Pahlavi.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Inscriptional_Pahlavi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010B60, 0x010B72], + [0x010B78, 0x010B7F] + ] +}); +testPropertyEscapes( + /^\p{Script=Inscriptional_Pahlavi}+$/u, + matchSymbols, + "\\p{Script=Inscriptional_Pahlavi}" +); +testPropertyEscapes( + /^\p{Script=Phli}+$/u, + matchSymbols, + "\\p{Script=Phli}" +); +testPropertyEscapes( + /^\p{sc=Inscriptional_Pahlavi}+$/u, + matchSymbols, + "\\p{sc=Inscriptional_Pahlavi}" +); +testPropertyEscapes( + /^\p{sc=Phli}+$/u, + matchSymbols, + "\\p{sc=Phli}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010B5F], + [0x010B73, 0x010B77], + [0x010B80, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Inscriptional_Pahlavi}+$/u, + nonMatchSymbols, + "\\P{Script=Inscriptional_Pahlavi}" +); +testPropertyEscapes( + /^\P{Script=Phli}+$/u, + nonMatchSymbols, + "\\P{Script=Phli}" +); +testPropertyEscapes( + /^\P{sc=Inscriptional_Pahlavi}+$/u, + nonMatchSymbols, + "\\P{sc=Inscriptional_Pahlavi}" +); +testPropertyEscapes( + /^\P{sc=Phli}+$/u, + nonMatchSymbols, + "\\P{sc=Phli}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js new file mode 100644 index 0000000000..d903d25163 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Inscriptional_Parthian.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Inscriptional_Parthian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010B40, 0x010B55], + [0x010B58, 0x010B5F] + ] +}); +testPropertyEscapes( + /^\p{Script=Inscriptional_Parthian}+$/u, + matchSymbols, + "\\p{Script=Inscriptional_Parthian}" +); +testPropertyEscapes( + /^\p{Script=Prti}+$/u, + matchSymbols, + "\\p{Script=Prti}" +); +testPropertyEscapes( + /^\p{sc=Inscriptional_Parthian}+$/u, + matchSymbols, + "\\p{sc=Inscriptional_Parthian}" +); +testPropertyEscapes( + /^\p{sc=Prti}+$/u, + matchSymbols, + "\\p{sc=Prti}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010B3F], + [0x010B56, 0x010B57], + [0x010B60, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Inscriptional_Parthian}+$/u, + nonMatchSymbols, + "\\P{Script=Inscriptional_Parthian}" +); +testPropertyEscapes( + /^\P{Script=Prti}+$/u, + nonMatchSymbols, + "\\P{Script=Prti}" +); +testPropertyEscapes( + /^\P{sc=Inscriptional_Parthian}+$/u, + nonMatchSymbols, + "\\P{sc=Inscriptional_Parthian}" +); +testPropertyEscapes( + /^\P{sc=Prti}+$/u, + nonMatchSymbols, + "\\P{sc=Prti}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js new file mode 100644 index 0000000000..9cba448606 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Javanese.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Javanese` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A980, 0x00A9CD], + [0x00A9D0, 0x00A9D9], + [0x00A9DE, 0x00A9DF] + ] +}); +testPropertyEscapes( + /^\p{Script=Javanese}+$/u, + matchSymbols, + "\\p{Script=Javanese}" +); +testPropertyEscapes( + /^\p{Script=Java}+$/u, + matchSymbols, + "\\p{Script=Java}" +); +testPropertyEscapes( + /^\p{sc=Javanese}+$/u, + matchSymbols, + "\\p{sc=Javanese}" +); +testPropertyEscapes( + /^\p{sc=Java}+$/u, + matchSymbols, + "\\p{sc=Java}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A97F], + [0x00A9CE, 0x00A9CF], + [0x00A9DA, 0x00A9DD], + [0x00A9E0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Javanese}+$/u, + nonMatchSymbols, + "\\P{Script=Javanese}" +); +testPropertyEscapes( + /^\P{Script=Java}+$/u, + nonMatchSymbols, + "\\P{Script=Java}" +); +testPropertyEscapes( + /^\P{sc=Javanese}+$/u, + nonMatchSymbols, + "\\P{sc=Javanese}" +); +testPropertyEscapes( + /^\P{sc=Java}+$/u, + nonMatchSymbols, + "\\P{sc=Java}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js new file mode 100644 index 0000000000..faf7a640f0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kaithi.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Kaithi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0110CD + ], + ranges: [ + [0x011080, 0x0110C2] + ] +}); +testPropertyEscapes( + /^\p{Script=Kaithi}+$/u, + matchSymbols, + "\\p{Script=Kaithi}" +); +testPropertyEscapes( + /^\p{Script=Kthi}+$/u, + matchSymbols, + "\\p{Script=Kthi}" +); +testPropertyEscapes( + /^\p{sc=Kaithi}+$/u, + matchSymbols, + "\\p{sc=Kaithi}" +); +testPropertyEscapes( + /^\p{sc=Kthi}+$/u, + matchSymbols, + "\\p{sc=Kthi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01107F], + [0x0110C3, 0x0110CC], + [0x0110CE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Kaithi}+$/u, + nonMatchSymbols, + "\\P{Script=Kaithi}" +); +testPropertyEscapes( + /^\P{Script=Kthi}+$/u, + nonMatchSymbols, + "\\P{Script=Kthi}" +); +testPropertyEscapes( + /^\P{sc=Kaithi}+$/u, + nonMatchSymbols, + "\\P{sc=Kaithi}" +); +testPropertyEscapes( + /^\P{sc=Kthi}+$/u, + nonMatchSymbols, + "\\P{sc=Kthi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js new file mode 100644 index 0000000000..b1d8b971d1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kannada.js @@ -0,0 +1,98 @@ +// Copyright 2022 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 for `Script=Kannada` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000C80, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CBC, 0x000CC4], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCD], + [0x000CD5, 0x000CD6], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE3], + [0x000CE6, 0x000CEF], + [0x000CF1, 0x000CF3] + ] +}); +testPropertyEscapes( + /^\p{Script=Kannada}+$/u, + matchSymbols, + "\\p{Script=Kannada}" +); +testPropertyEscapes( + /^\p{Script=Knda}+$/u, + matchSymbols, + "\\p{Script=Knda}" +); +testPropertyEscapes( + /^\p{sc=Kannada}+$/u, + matchSymbols, + "\\p{sc=Kannada}" +); +testPropertyEscapes( + /^\p{sc=Knda}+$/u, + matchSymbols, + "\\p{sc=Knda}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CC5, + 0x000CC9, + 0x000CDF, + 0x000CF0 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000C7F], + [0x000CBA, 0x000CBB], + [0x000CCE, 0x000CD4], + [0x000CD7, 0x000CDC], + [0x000CE4, 0x000CE5], + [0x000CF4, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Kannada}+$/u, + nonMatchSymbols, + "\\P{Script=Kannada}" +); +testPropertyEscapes( + /^\P{Script=Knda}+$/u, + nonMatchSymbols, + "\\P{Script=Knda}" +); +testPropertyEscapes( + /^\P{sc=Kannada}+$/u, + nonMatchSymbols, + "\\P{sc=Kannada}" +); +testPropertyEscapes( + /^\P{sc=Knda}+$/u, + nonMatchSymbols, + "\\P{sc=Knda}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js new file mode 100644 index 0000000000..2cd48323a6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Katakana.js @@ -0,0 +1,101 @@ +// Copyright 2022 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 for `Script=Katakana` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01B000, + 0x01B155 + ], + ranges: [ + [0x0030A1, 0x0030FA], + [0x0030FD, 0x0030FF], + [0x0031F0, 0x0031FF], + [0x0032D0, 0x0032FE], + [0x003300, 0x003357], + [0x00FF66, 0x00FF6F], + [0x00FF71, 0x00FF9D], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B120, 0x01B122], + [0x01B164, 0x01B167] + ] +}); +testPropertyEscapes( + /^\p{Script=Katakana}+$/u, + matchSymbols, + "\\p{Script=Katakana}" +); +testPropertyEscapes( + /^\p{Script=Kana}+$/u, + matchSymbols, + "\\p{Script=Kana}" +); +testPropertyEscapes( + /^\p{sc=Katakana}+$/u, + matchSymbols, + "\\p{sc=Katakana}" +); +testPropertyEscapes( + /^\p{sc=Kana}+$/u, + matchSymbols, + "\\p{sc=Kana}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0032FF, + 0x00FF70, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0030A0], + [0x0030FB, 0x0030FC], + [0x003100, 0x0031EF], + [0x003200, 0x0032CF], + [0x003358, 0x00DBFF], + [0x00E000, 0x00FF65], + [0x00FF9E, 0x01AFEF], + [0x01B001, 0x01B11F], + [0x01B123, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Katakana}+$/u, + nonMatchSymbols, + "\\P{Script=Katakana}" +); +testPropertyEscapes( + /^\P{Script=Kana}+$/u, + nonMatchSymbols, + "\\P{Script=Kana}" +); +testPropertyEscapes( + /^\P{sc=Katakana}+$/u, + nonMatchSymbols, + "\\P{sc=Katakana}" +); +testPropertyEscapes( + /^\P{sc=Kana}+$/u, + nonMatchSymbols, + "\\P{sc=Kana}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js new file mode 100644 index 0000000000..2beda7cd49 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kawi.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script=Kawi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011F00, 0x011F10], + [0x011F12, 0x011F3A], + [0x011F3E, 0x011F59] + ] +}); +testPropertyEscapes( + /^\p{Script=Kawi}+$/u, + matchSymbols, + "\\p{Script=Kawi}" +); +testPropertyEscapes( + /^\p{Script=Kawi}+$/u, + matchSymbols, + "\\p{Script=Kawi}" +); +testPropertyEscapes( + /^\p{sc=Kawi}+$/u, + matchSymbols, + "\\p{sc=Kawi}" +); +testPropertyEscapes( + /^\p{sc=Kawi}+$/u, + matchSymbols, + "\\p{sc=Kawi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011F11 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011EFF], + [0x011F3B, 0x011F3D], + [0x011F5A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Kawi}+$/u, + nonMatchSymbols, + "\\P{Script=Kawi}" +); +testPropertyEscapes( + /^\P{Script=Kawi}+$/u, + nonMatchSymbols, + "\\P{Script=Kawi}" +); +testPropertyEscapes( + /^\P{sc=Kawi}+$/u, + nonMatchSymbols, + "\\P{sc=Kawi}" +); +testPropertyEscapes( + /^\P{sc=Kawi}+$/u, + nonMatchSymbols, + "\\P{sc=Kawi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js new file mode 100644 index 0000000000..c04122326c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kayah_Li.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Kayah_Li` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00A92F + ], + ranges: [ + [0x00A900, 0x00A92D] + ] +}); +testPropertyEscapes( + /^\p{Script=Kayah_Li}+$/u, + matchSymbols, + "\\p{Script=Kayah_Li}" +); +testPropertyEscapes( + /^\p{Script=Kali}+$/u, + matchSymbols, + "\\p{Script=Kali}" +); +testPropertyEscapes( + /^\p{sc=Kayah_Li}+$/u, + matchSymbols, + "\\p{sc=Kayah_Li}" +); +testPropertyEscapes( + /^\p{sc=Kali}+$/u, + matchSymbols, + "\\p{sc=Kali}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00A92E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A8FF], + [0x00A930, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Kayah_Li}+$/u, + nonMatchSymbols, + "\\P{Script=Kayah_Li}" +); +testPropertyEscapes( + /^\P{Script=Kali}+$/u, + nonMatchSymbols, + "\\P{Script=Kali}" +); +testPropertyEscapes( + /^\P{sc=Kayah_Li}+$/u, + nonMatchSymbols, + "\\P{sc=Kayah_Li}" +); +testPropertyEscapes( + /^\P{sc=Kali}+$/u, + nonMatchSymbols, + "\\P{sc=Kali}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js new file mode 100644 index 0000000000..6a32e3dcd0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Kharoshthi.js @@ -0,0 +1,88 @@ +// Copyright 2022 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 for `Script=Kharoshthi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010A00, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A38, 0x010A3A], + [0x010A3F, 0x010A48], + [0x010A50, 0x010A58] + ] +}); +testPropertyEscapes( + /^\p{Script=Kharoshthi}+$/u, + matchSymbols, + "\\p{Script=Kharoshthi}" +); +testPropertyEscapes( + /^\p{Script=Khar}+$/u, + matchSymbols, + "\\p{Script=Khar}" +); +testPropertyEscapes( + /^\p{sc=Kharoshthi}+$/u, + matchSymbols, + "\\p{sc=Kharoshthi}" +); +testPropertyEscapes( + /^\p{sc=Khar}+$/u, + matchSymbols, + "\\p{sc=Khar}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x010A04, + 0x010A14, + 0x010A18 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0109FF], + [0x010A07, 0x010A0B], + [0x010A36, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A49, 0x010A4F], + [0x010A59, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Kharoshthi}+$/u, + nonMatchSymbols, + "\\P{Script=Kharoshthi}" +); +testPropertyEscapes( + /^\P{Script=Khar}+$/u, + nonMatchSymbols, + "\\P{Script=Khar}" +); +testPropertyEscapes( + /^\P{sc=Kharoshthi}+$/u, + nonMatchSymbols, + "\\P{sc=Kharoshthi}" +); +testPropertyEscapes( + /^\P{sc=Khar}+$/u, + nonMatchSymbols, + "\\P{sc=Khar}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js new file mode 100644 index 0000000000..887ba09cb6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khitan_Small_Script.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Khitan_Small_Script` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x016FE4 + ], + ranges: [ + [0x018B00, 0x018CD5] + ] +}); +testPropertyEscapes( + /^\p{Script=Khitan_Small_Script}+$/u, + matchSymbols, + "\\p{Script=Khitan_Small_Script}" +); +testPropertyEscapes( + /^\p{Script=Kits}+$/u, + matchSymbols, + "\\p{Script=Kits}" +); +testPropertyEscapes( + /^\p{sc=Khitan_Small_Script}+$/u, + matchSymbols, + "\\p{sc=Khitan_Small_Script}" +); +testPropertyEscapes( + /^\p{sc=Kits}+$/u, + matchSymbols, + "\\p{sc=Kits}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016FE3], + [0x016FE5, 0x018AFF], + [0x018CD6, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Khitan_Small_Script}+$/u, + nonMatchSymbols, + "\\P{Script=Khitan_Small_Script}" +); +testPropertyEscapes( + /^\P{Script=Kits}+$/u, + nonMatchSymbols, + "\\P{Script=Kits}" +); +testPropertyEscapes( + /^\P{sc=Khitan_Small_Script}+$/u, + nonMatchSymbols, + "\\P{sc=Khitan_Small_Script}" +); +testPropertyEscapes( + /^\P{sc=Kits}+$/u, + nonMatchSymbols, + "\\P{sc=Kits}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js new file mode 100644 index 0000000000..debaf4246c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khmer.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script=Khmer` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001780, 0x0017DD], + [0x0017E0, 0x0017E9], + [0x0017F0, 0x0017F9], + [0x0019E0, 0x0019FF] + ] +}); +testPropertyEscapes( + /^\p{Script=Khmer}+$/u, + matchSymbols, + "\\p{Script=Khmer}" +); +testPropertyEscapes( + /^\p{Script=Khmr}+$/u, + matchSymbols, + "\\p{Script=Khmr}" +); +testPropertyEscapes( + /^\p{sc=Khmer}+$/u, + matchSymbols, + "\\p{sc=Khmer}" +); +testPropertyEscapes( + /^\p{sc=Khmr}+$/u, + matchSymbols, + "\\p{sc=Khmr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00177F], + [0x0017DE, 0x0017DF], + [0x0017EA, 0x0017EF], + [0x0017FA, 0x0019DF], + [0x001A00, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Khmer}+$/u, + nonMatchSymbols, + "\\P{Script=Khmer}" +); +testPropertyEscapes( + /^\P{Script=Khmr}+$/u, + nonMatchSymbols, + "\\P{Script=Khmr}" +); +testPropertyEscapes( + /^\P{sc=Khmer}+$/u, + nonMatchSymbols, + "\\P{sc=Khmer}" +); +testPropertyEscapes( + /^\P{sc=Khmr}+$/u, + nonMatchSymbols, + "\\P{sc=Khmr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js new file mode 100644 index 0000000000..d6badf66b8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khojki.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Khojki` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011200, 0x011211], + [0x011213, 0x011241] + ] +}); +testPropertyEscapes( + /^\p{Script=Khojki}+$/u, + matchSymbols, + "\\p{Script=Khojki}" +); +testPropertyEscapes( + /^\p{Script=Khoj}+$/u, + matchSymbols, + "\\p{Script=Khoj}" +); +testPropertyEscapes( + /^\p{sc=Khojki}+$/u, + matchSymbols, + "\\p{sc=Khojki}" +); +testPropertyEscapes( + /^\p{sc=Khoj}+$/u, + matchSymbols, + "\\p{sc=Khoj}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011212 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0111FF], + [0x011242, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Khojki}+$/u, + nonMatchSymbols, + "\\P{Script=Khojki}" +); +testPropertyEscapes( + /^\P{Script=Khoj}+$/u, + nonMatchSymbols, + "\\P{Script=Khoj}" +); +testPropertyEscapes( + /^\P{sc=Khojki}+$/u, + nonMatchSymbols, + "\\P{sc=Khojki}" +); +testPropertyEscapes( + /^\P{sc=Khoj}+$/u, + nonMatchSymbols, + "\\P{sc=Khoj}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js new file mode 100644 index 0000000000..4292815a8e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Khudawadi.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Khudawadi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0112B0, 0x0112EA], + [0x0112F0, 0x0112F9] + ] +}); +testPropertyEscapes( + /^\p{Script=Khudawadi}+$/u, + matchSymbols, + "\\p{Script=Khudawadi}" +); +testPropertyEscapes( + /^\p{Script=Sind}+$/u, + matchSymbols, + "\\p{Script=Sind}" +); +testPropertyEscapes( + /^\p{sc=Khudawadi}+$/u, + matchSymbols, + "\\p{sc=Khudawadi}" +); +testPropertyEscapes( + /^\p{sc=Sind}+$/u, + matchSymbols, + "\\p{sc=Sind}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0112AF], + [0x0112EB, 0x0112EF], + [0x0112FA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Khudawadi}+$/u, + nonMatchSymbols, + "\\P{Script=Khudawadi}" +); +testPropertyEscapes( + /^\P{Script=Sind}+$/u, + nonMatchSymbols, + "\\P{Script=Sind}" +); +testPropertyEscapes( + /^\P{sc=Khudawadi}+$/u, + nonMatchSymbols, + "\\P{sc=Khudawadi}" +); +testPropertyEscapes( + /^\P{sc=Sind}+$/u, + nonMatchSymbols, + "\\P{sc=Sind}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js new file mode 100644 index 0000000000..a331481acc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lao.js @@ -0,0 +1,95 @@ +// Copyright 2022 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 for `Script=Lao` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000E84, + 0x000EA5, + 0x000EC6 + ], + ranges: [ + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EBD], + [0x000EC0, 0x000EC4], + [0x000EC8, 0x000ECE], + [0x000ED0, 0x000ED9], + [0x000EDC, 0x000EDF] + ] +}); +testPropertyEscapes( + /^\p{Script=Lao}+$/u, + matchSymbols, + "\\p{Script=Lao}" +); +testPropertyEscapes( + /^\p{Script=Laoo}+$/u, + matchSymbols, + "\\p{Script=Laoo}" +); +testPropertyEscapes( + /^\p{sc=Lao}+$/u, + matchSymbols, + "\\p{sc=Lao}" +); +testPropertyEscapes( + /^\p{sc=Laoo}+$/u, + matchSymbols, + "\\p{sc=Laoo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EC5, + 0x000EC7, + 0x000ECF + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000E80], + [0x000EBE, 0x000EBF], + [0x000EDA, 0x000EDB], + [0x000EE0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Lao}+$/u, + nonMatchSymbols, + "\\P{Script=Lao}" +); +testPropertyEscapes( + /^\P{Script=Laoo}+$/u, + nonMatchSymbols, + "\\P{Script=Laoo}" +); +testPropertyEscapes( + /^\P{sc=Lao}+$/u, + nonMatchSymbols, + "\\P{sc=Lao}" +); +testPropertyEscapes( + /^\P{sc=Laoo}+$/u, + nonMatchSymbols, + "\\P{sc=Laoo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js new file mode 100644 index 0000000000..2f111d0028 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Latin.js @@ -0,0 +1,151 @@ +// Copyright 2022 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 for `Script=Latin` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000BA, + 0x002071, + 0x00207F, + 0x002132, + 0x00214E, + 0x00A7D3 + ], + ranges: [ + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002B8], + [0x0002E0, 0x0002E4], + [0x001D00, 0x001D25], + [0x001D2C, 0x001D5C], + [0x001D62, 0x001D65], + [0x001D6B, 0x001D77], + [0x001D79, 0x001DBE], + [0x001E00, 0x001EFF], + [0x002090, 0x00209C], + [0x00212A, 0x00212B], + [0x002160, 0x002188], + [0x002C60, 0x002C7F], + [0x00A722, 0x00A787], + [0x00A78B, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A7FF], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB64], + [0x00AB66, 0x00AB69], + [0x00FB00, 0x00FB06], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A] + ] +}); +testPropertyEscapes( + /^\p{Script=Latin}+$/u, + matchSymbols, + "\\p{Script=Latin}" +); +testPropertyEscapes( + /^\p{Script=Latn}+$/u, + matchSymbols, + "\\p{Script=Latn}" +); +testPropertyEscapes( + /^\p{sc=Latin}+$/u, + matchSymbols, + "\\p{sc=Latin}" +); +testPropertyEscapes( + /^\p{sc=Latn}+$/u, + matchSymbols, + "\\p{sc=Latn}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x001D78, + 0x00A7D2, + 0x00A7D4, + 0x00AB5B, + 0x00AB65, + 0x010786, + 0x0107B1 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002B9, 0x0002DF], + [0x0002E5, 0x001CFF], + [0x001D26, 0x001D2B], + [0x001D5D, 0x001D61], + [0x001D66, 0x001D6A], + [0x001DBF, 0x001DFF], + [0x001F00, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x002129], + [0x00212C, 0x002131], + [0x002133, 0x00214D], + [0x00214F, 0x00215F], + [0x002189, 0x002C5F], + [0x002C80, 0x00A721], + [0x00A788, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A800, 0x00AB2F], + [0x00AB6A, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x01077F], + [0x0107BB, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Latin}+$/u, + nonMatchSymbols, + "\\P{Script=Latin}" +); +testPropertyEscapes( + /^\P{Script=Latn}+$/u, + nonMatchSymbols, + "\\P{Script=Latn}" +); +testPropertyEscapes( + /^\P{sc=Latin}+$/u, + nonMatchSymbols, + "\\P{sc=Latin}" +); +testPropertyEscapes( + /^\P{sc=Latn}+$/u, + nonMatchSymbols, + "\\P{sc=Latn}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js new file mode 100644 index 0000000000..e57c1d2389 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lepcha.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Lepcha` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001C00, 0x001C37], + [0x001C3B, 0x001C49], + [0x001C4D, 0x001C4F] + ] +}); +testPropertyEscapes( + /^\p{Script=Lepcha}+$/u, + matchSymbols, + "\\p{Script=Lepcha}" +); +testPropertyEscapes( + /^\p{Script=Lepc}+$/u, + matchSymbols, + "\\p{Script=Lepc}" +); +testPropertyEscapes( + /^\p{sc=Lepcha}+$/u, + matchSymbols, + "\\p{sc=Lepcha}" +); +testPropertyEscapes( + /^\p{sc=Lepc}+$/u, + matchSymbols, + "\\p{sc=Lepc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001BFF], + [0x001C38, 0x001C3A], + [0x001C4A, 0x001C4C], + [0x001C50, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Lepcha}+$/u, + nonMatchSymbols, + "\\P{Script=Lepcha}" +); +testPropertyEscapes( + /^\P{Script=Lepc}+$/u, + nonMatchSymbols, + "\\P{Script=Lepc}" +); +testPropertyEscapes( + /^\P{sc=Lepcha}+$/u, + nonMatchSymbols, + "\\P{sc=Lepcha}" +); +testPropertyEscapes( + /^\P{sc=Lepc}+$/u, + nonMatchSymbols, + "\\P{sc=Lepc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js new file mode 100644 index 0000000000..b17ad9a185 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Limbu.js @@ -0,0 +1,83 @@ +// Copyright 2022 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 for `Script=Limbu` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001940 + ], + ranges: [ + [0x001900, 0x00191E], + [0x001920, 0x00192B], + [0x001930, 0x00193B], + [0x001944, 0x00194F] + ] +}); +testPropertyEscapes( + /^\p{Script=Limbu}+$/u, + matchSymbols, + "\\p{Script=Limbu}" +); +testPropertyEscapes( + /^\p{Script=Limb}+$/u, + matchSymbols, + "\\p{Script=Limb}" +); +testPropertyEscapes( + /^\p{sc=Limbu}+$/u, + matchSymbols, + "\\p{sc=Limbu}" +); +testPropertyEscapes( + /^\p{sc=Limb}+$/u, + matchSymbols, + "\\p{sc=Limb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00191F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0018FF], + [0x00192C, 0x00192F], + [0x00193C, 0x00193F], + [0x001941, 0x001943], + [0x001950, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Limbu}+$/u, + nonMatchSymbols, + "\\P{Script=Limbu}" +); +testPropertyEscapes( + /^\P{Script=Limb}+$/u, + nonMatchSymbols, + "\\P{Script=Limb}" +); +testPropertyEscapes( + /^\P{sc=Limbu}+$/u, + nonMatchSymbols, + "\\P{sc=Limbu}" +); +testPropertyEscapes( + /^\P{sc=Limb}+$/u, + nonMatchSymbols, + "\\P{sc=Limb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js new file mode 100644 index 0000000000..2c8b2fe71b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Linear_A.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Linear_A` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767] + ] +}); +testPropertyEscapes( + /^\p{Script=Linear_A}+$/u, + matchSymbols, + "\\p{Script=Linear_A}" +); +testPropertyEscapes( + /^\p{Script=Lina}+$/u, + matchSymbols, + "\\p{Script=Lina}" +); +testPropertyEscapes( + /^\p{sc=Linear_A}+$/u, + matchSymbols, + "\\p{sc=Linear_A}" +); +testPropertyEscapes( + /^\p{sc=Lina}+$/u, + matchSymbols, + "\\p{sc=Lina}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Linear_A}+$/u, + nonMatchSymbols, + "\\P{Script=Linear_A}" +); +testPropertyEscapes( + /^\P{Script=Lina}+$/u, + nonMatchSymbols, + "\\P{Script=Lina}" +); +testPropertyEscapes( + /^\P{sc=Linear_A}+$/u, + nonMatchSymbols, + "\\P{sc=Linear_A}" +); +testPropertyEscapes( + /^\P{sc=Lina}+$/u, + nonMatchSymbols, + "\\P{sc=Lina}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js new file mode 100644 index 0000000000..1fc5856578 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Linear_B.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Script=Linear_B` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA] + ] +}); +testPropertyEscapes( + /^\p{Script=Linear_B}+$/u, + matchSymbols, + "\\p{Script=Linear_B}" +); +testPropertyEscapes( + /^\p{Script=Linb}+$/u, + matchSymbols, + "\\p{Script=Linb}" +); +testPropertyEscapes( + /^\p{sc=Linear_B}+$/u, + matchSymbols, + "\\p{sc=Linear_B}" +); +testPropertyEscapes( + /^\p{sc=Linb}+$/u, + matchSymbols, + "\\p{sc=Linb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Linear_B}+$/u, + nonMatchSymbols, + "\\P{Script=Linear_B}" +); +testPropertyEscapes( + /^\P{Script=Linb}+$/u, + nonMatchSymbols, + "\\P{Script=Linb}" +); +testPropertyEscapes( + /^\P{sc=Linear_B}+$/u, + nonMatchSymbols, + "\\P{sc=Linear_B}" +); +testPropertyEscapes( + /^\P{sc=Linb}+$/u, + nonMatchSymbols, + "\\P{sc=Linb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js new file mode 100644 index 0000000000..51f630238c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lisu.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Lisu` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x011FB0 + ], + ranges: [ + [0x00A4D0, 0x00A4FF] + ] +}); +testPropertyEscapes( + /^\p{Script=Lisu}+$/u, + matchSymbols, + "\\p{Script=Lisu}" +); +testPropertyEscapes( + /^\p{Script=Lisu}+$/u, + matchSymbols, + "\\p{Script=Lisu}" +); +testPropertyEscapes( + /^\p{sc=Lisu}+$/u, + matchSymbols, + "\\p{sc=Lisu}" +); +testPropertyEscapes( + /^\p{sc=Lisu}+$/u, + matchSymbols, + "\\p{sc=Lisu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A4CF], + [0x00A500, 0x00DBFF], + [0x00E000, 0x011FAF], + [0x011FB1, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Lisu}+$/u, + nonMatchSymbols, + "\\P{Script=Lisu}" +); +testPropertyEscapes( + /^\P{Script=Lisu}+$/u, + nonMatchSymbols, + "\\P{Script=Lisu}" +); +testPropertyEscapes( + /^\P{sc=Lisu}+$/u, + nonMatchSymbols, + "\\P{sc=Lisu}" +); +testPropertyEscapes( + /^\P{sc=Lisu}+$/u, + nonMatchSymbols, + "\\P{sc=Lisu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js new file mode 100644 index 0000000000..84cc3796fa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lycian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Lycian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010280, 0x01029C] + ] +}); +testPropertyEscapes( + /^\p{Script=Lycian}+$/u, + matchSymbols, + "\\p{Script=Lycian}" +); +testPropertyEscapes( + /^\p{Script=Lyci}+$/u, + matchSymbols, + "\\p{Script=Lyci}" +); +testPropertyEscapes( + /^\p{sc=Lycian}+$/u, + matchSymbols, + "\\p{sc=Lycian}" +); +testPropertyEscapes( + /^\p{sc=Lyci}+$/u, + matchSymbols, + "\\p{sc=Lyci}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01027F], + [0x01029D, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Lycian}+$/u, + nonMatchSymbols, + "\\P{Script=Lycian}" +); +testPropertyEscapes( + /^\P{Script=Lyci}+$/u, + nonMatchSymbols, + "\\P{Script=Lyci}" +); +testPropertyEscapes( + /^\P{sc=Lycian}+$/u, + nonMatchSymbols, + "\\P{sc=Lycian}" +); +testPropertyEscapes( + /^\P{sc=Lyci}+$/u, + nonMatchSymbols, + "\\P{sc=Lyci}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js new file mode 100644 index 0000000000..a41ac0d887 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Lydian.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Lydian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01093F + ], + ranges: [ + [0x010920, 0x010939] + ] +}); +testPropertyEscapes( + /^\p{Script=Lydian}+$/u, + matchSymbols, + "\\p{Script=Lydian}" +); +testPropertyEscapes( + /^\p{Script=Lydi}+$/u, + matchSymbols, + "\\p{Script=Lydi}" +); +testPropertyEscapes( + /^\p{sc=Lydian}+$/u, + matchSymbols, + "\\p{sc=Lydian}" +); +testPropertyEscapes( + /^\p{sc=Lydi}+$/u, + matchSymbols, + "\\p{sc=Lydi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01091F], + [0x01093A, 0x01093E], + [0x010940, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Lydian}+$/u, + nonMatchSymbols, + "\\P{Script=Lydian}" +); +testPropertyEscapes( + /^\P{Script=Lydi}+$/u, + nonMatchSymbols, + "\\P{Script=Lydi}" +); +testPropertyEscapes( + /^\P{sc=Lydian}+$/u, + nonMatchSymbols, + "\\P{sc=Lydian}" +); +testPropertyEscapes( + /^\P{sc=Lydi}+$/u, + nonMatchSymbols, + "\\P{sc=Lydi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js new file mode 100644 index 0000000000..f4d7911a80 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mahajani.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Mahajani` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011150, 0x011176] + ] +}); +testPropertyEscapes( + /^\p{Script=Mahajani}+$/u, + matchSymbols, + "\\p{Script=Mahajani}" +); +testPropertyEscapes( + /^\p{Script=Mahj}+$/u, + matchSymbols, + "\\p{Script=Mahj}" +); +testPropertyEscapes( + /^\p{sc=Mahajani}+$/u, + matchSymbols, + "\\p{sc=Mahajani}" +); +testPropertyEscapes( + /^\p{sc=Mahj}+$/u, + matchSymbols, + "\\p{sc=Mahj}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01114F], + [0x011177, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Mahajani}+$/u, + nonMatchSymbols, + "\\P{Script=Mahajani}" +); +testPropertyEscapes( + /^\P{Script=Mahj}+$/u, + nonMatchSymbols, + "\\P{Script=Mahj}" +); +testPropertyEscapes( + /^\P{sc=Mahajani}+$/u, + nonMatchSymbols, + "\\P{sc=Mahajani}" +); +testPropertyEscapes( + /^\P{sc=Mahj}+$/u, + nonMatchSymbols, + "\\P{sc=Mahj}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js new file mode 100644 index 0000000000..54f174239e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Makasar.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Makasar` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011EE0, 0x011EF8] + ] +}); +testPropertyEscapes( + /^\p{Script=Makasar}+$/u, + matchSymbols, + "\\p{Script=Makasar}" +); +testPropertyEscapes( + /^\p{Script=Maka}+$/u, + matchSymbols, + "\\p{Script=Maka}" +); +testPropertyEscapes( + /^\p{sc=Makasar}+$/u, + matchSymbols, + "\\p{sc=Makasar}" +); +testPropertyEscapes( + /^\p{sc=Maka}+$/u, + matchSymbols, + "\\p{sc=Maka}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011EDF], + [0x011EF9, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Makasar}+$/u, + nonMatchSymbols, + "\\P{Script=Makasar}" +); +testPropertyEscapes( + /^\P{Script=Maka}+$/u, + nonMatchSymbols, + "\\P{Script=Maka}" +); +testPropertyEscapes( + /^\P{sc=Makasar}+$/u, + nonMatchSymbols, + "\\P{sc=Makasar}" +); +testPropertyEscapes( + /^\P{sc=Maka}+$/u, + nonMatchSymbols, + "\\P{sc=Maka}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js new file mode 100644 index 0000000000..eb1171a75f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Malayalam.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Script=Malayalam` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000D00, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D44], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4F], + [0x000D54, 0x000D63], + [0x000D66, 0x000D7F] + ] +}); +testPropertyEscapes( + /^\p{Script=Malayalam}+$/u, + matchSymbols, + "\\p{Script=Malayalam}" +); +testPropertyEscapes( + /^\p{Script=Mlym}+$/u, + matchSymbols, + "\\p{Script=Mlym}" +); +testPropertyEscapes( + /^\p{sc=Malayalam}+$/u, + matchSymbols, + "\\p{sc=Malayalam}" +); +testPropertyEscapes( + /^\p{sc=Mlym}+$/u, + matchSymbols, + "\\p{sc=Mlym}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000D0D, + 0x000D11, + 0x000D45, + 0x000D49 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000CFF], + [0x000D50, 0x000D53], + [0x000D64, 0x000D65], + [0x000D80, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Malayalam}+$/u, + nonMatchSymbols, + "\\P{Script=Malayalam}" +); +testPropertyEscapes( + /^\P{Script=Mlym}+$/u, + nonMatchSymbols, + "\\P{Script=Mlym}" +); +testPropertyEscapes( + /^\P{sc=Malayalam}+$/u, + nonMatchSymbols, + "\\P{sc=Malayalam}" +); +testPropertyEscapes( + /^\P{sc=Mlym}+$/u, + nonMatchSymbols, + "\\P{sc=Mlym}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js new file mode 100644 index 0000000000..926c158f48 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mandaic.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Mandaic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00085E + ], + ranges: [ + [0x000840, 0x00085B] + ] +}); +testPropertyEscapes( + /^\p{Script=Mandaic}+$/u, + matchSymbols, + "\\p{Script=Mandaic}" +); +testPropertyEscapes( + /^\p{Script=Mand}+$/u, + matchSymbols, + "\\p{Script=Mand}" +); +testPropertyEscapes( + /^\p{sc=Mandaic}+$/u, + matchSymbols, + "\\p{sc=Mandaic}" +); +testPropertyEscapes( + /^\p{sc=Mand}+$/u, + matchSymbols, + "\\p{sc=Mand}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00083F], + [0x00085C, 0x00085D], + [0x00085F, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Mandaic}+$/u, + nonMatchSymbols, + "\\P{Script=Mandaic}" +); +testPropertyEscapes( + /^\P{Script=Mand}+$/u, + nonMatchSymbols, + "\\P{Script=Mand}" +); +testPropertyEscapes( + /^\P{sc=Mandaic}+$/u, + nonMatchSymbols, + "\\P{sc=Mandaic}" +); +testPropertyEscapes( + /^\P{sc=Mand}+$/u, + nonMatchSymbols, + "\\P{sc=Mand}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js new file mode 100644 index 0000000000..1961193439 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Manichaean.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Manichaean` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010AC0, 0x010AE6], + [0x010AEB, 0x010AF6] + ] +}); +testPropertyEscapes( + /^\p{Script=Manichaean}+$/u, + matchSymbols, + "\\p{Script=Manichaean}" +); +testPropertyEscapes( + /^\p{Script=Mani}+$/u, + matchSymbols, + "\\p{Script=Mani}" +); +testPropertyEscapes( + /^\p{sc=Manichaean}+$/u, + matchSymbols, + "\\p{sc=Manichaean}" +); +testPropertyEscapes( + /^\p{sc=Mani}+$/u, + matchSymbols, + "\\p{sc=Mani}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010ABF], + [0x010AE7, 0x010AEA], + [0x010AF7, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Manichaean}+$/u, + nonMatchSymbols, + "\\P{Script=Manichaean}" +); +testPropertyEscapes( + /^\P{Script=Mani}+$/u, + nonMatchSymbols, + "\\P{Script=Mani}" +); +testPropertyEscapes( + /^\P{sc=Manichaean}+$/u, + nonMatchSymbols, + "\\P{sc=Manichaean}" +); +testPropertyEscapes( + /^\P{sc=Mani}+$/u, + nonMatchSymbols, + "\\P{sc=Mani}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js new file mode 100644 index 0000000000..ed82ce4f40 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Marchen.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script=Marchen` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011C70, 0x011C8F], + [0x011C92, 0x011CA7], + [0x011CA9, 0x011CB6] + ] +}); +testPropertyEscapes( + /^\p{Script=Marchen}+$/u, + matchSymbols, + "\\p{Script=Marchen}" +); +testPropertyEscapes( + /^\p{Script=Marc}+$/u, + matchSymbols, + "\\p{Script=Marc}" +); +testPropertyEscapes( + /^\p{sc=Marchen}+$/u, + matchSymbols, + "\\p{sc=Marchen}" +); +testPropertyEscapes( + /^\p{sc=Marc}+$/u, + matchSymbols, + "\\p{sc=Marc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011CA8 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011C6F], + [0x011C90, 0x011C91], + [0x011CB7, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Marchen}+$/u, + nonMatchSymbols, + "\\P{Script=Marchen}" +); +testPropertyEscapes( + /^\P{Script=Marc}+$/u, + nonMatchSymbols, + "\\P{Script=Marc}" +); +testPropertyEscapes( + /^\P{sc=Marchen}+$/u, + nonMatchSymbols, + "\\P{sc=Marchen}" +); +testPropertyEscapes( + /^\P{sc=Marc}+$/u, + nonMatchSymbols, + "\\P{sc=Marc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js new file mode 100644 index 0000000000..d90ee4b729 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Masaram_Gondi.js @@ -0,0 +1,87 @@ +// Copyright 2022 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 for `Script=Masaram_Gondi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x011D3A + ], + ranges: [ + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D47], + [0x011D50, 0x011D59] + ] +}); +testPropertyEscapes( + /^\p{Script=Masaram_Gondi}+$/u, + matchSymbols, + "\\p{Script=Masaram_Gondi}" +); +testPropertyEscapes( + /^\p{Script=Gonm}+$/u, + matchSymbols, + "\\p{Script=Gonm}" +); +testPropertyEscapes( + /^\p{sc=Masaram_Gondi}+$/u, + matchSymbols, + "\\p{sc=Masaram_Gondi}" +); +testPropertyEscapes( + /^\p{sc=Gonm}+$/u, + matchSymbols, + "\\p{sc=Gonm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011D07, + 0x011D0A, + 0x011D3B, + 0x011D3E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011CFF], + [0x011D37, 0x011D39], + [0x011D48, 0x011D4F], + [0x011D5A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Masaram_Gondi}+$/u, + nonMatchSymbols, + "\\P{Script=Masaram_Gondi}" +); +testPropertyEscapes( + /^\P{Script=Gonm}+$/u, + nonMatchSymbols, + "\\P{Script=Gonm}" +); +testPropertyEscapes( + /^\P{sc=Masaram_Gondi}+$/u, + nonMatchSymbols, + "\\P{sc=Masaram_Gondi}" +); +testPropertyEscapes( + /^\P{sc=Gonm}+$/u, + nonMatchSymbols, + "\\P{sc=Gonm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js new file mode 100644 index 0000000000..4b9a156ac1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Medefaidrin.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Medefaidrin` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016E40, 0x016E9A] + ] +}); +testPropertyEscapes( + /^\p{Script=Medefaidrin}+$/u, + matchSymbols, + "\\p{Script=Medefaidrin}" +); +testPropertyEscapes( + /^\p{Script=Medf}+$/u, + matchSymbols, + "\\p{Script=Medf}" +); +testPropertyEscapes( + /^\p{sc=Medefaidrin}+$/u, + matchSymbols, + "\\p{sc=Medefaidrin}" +); +testPropertyEscapes( + /^\p{sc=Medf}+$/u, + matchSymbols, + "\\p{sc=Medf}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016E3F], + [0x016E9B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Medefaidrin}+$/u, + nonMatchSymbols, + "\\P{Script=Medefaidrin}" +); +testPropertyEscapes( + /^\P{Script=Medf}+$/u, + nonMatchSymbols, + "\\P{Script=Medf}" +); +testPropertyEscapes( + /^\P{sc=Medefaidrin}+$/u, + nonMatchSymbols, + "\\P{sc=Medefaidrin}" +); +testPropertyEscapes( + /^\P{sc=Medf}+$/u, + nonMatchSymbols, + "\\P{sc=Medf}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js new file mode 100644 index 0000000000..34991dadb0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meetei_Mayek.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Meetei_Mayek` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00AAE0, 0x00AAF6], + [0x00ABC0, 0x00ABED], + [0x00ABF0, 0x00ABF9] + ] +}); +testPropertyEscapes( + /^\p{Script=Meetei_Mayek}+$/u, + matchSymbols, + "\\p{Script=Meetei_Mayek}" +); +testPropertyEscapes( + /^\p{Script=Mtei}+$/u, + matchSymbols, + "\\p{Script=Mtei}" +); +testPropertyEscapes( + /^\p{sc=Meetei_Mayek}+$/u, + matchSymbols, + "\\p{sc=Meetei_Mayek}" +); +testPropertyEscapes( + /^\p{sc=Mtei}+$/u, + matchSymbols, + "\\p{sc=Mtei}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00AADF], + [0x00AAF7, 0x00ABBF], + [0x00ABEE, 0x00ABEF], + [0x00ABFA, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Meetei_Mayek}+$/u, + nonMatchSymbols, + "\\P{Script=Meetei_Mayek}" +); +testPropertyEscapes( + /^\P{Script=Mtei}+$/u, + nonMatchSymbols, + "\\P{Script=Mtei}" +); +testPropertyEscapes( + /^\P{sc=Meetei_Mayek}+$/u, + nonMatchSymbols, + "\\P{sc=Meetei_Mayek}" +); +testPropertyEscapes( + /^\P{sc=Mtei}+$/u, + nonMatchSymbols, + "\\P{sc=Mtei}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js new file mode 100644 index 0000000000..8bd2621d56 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mende_Kikakui.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Mende_Kikakui` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01E800, 0x01E8C4], + [0x01E8C7, 0x01E8D6] + ] +}); +testPropertyEscapes( + /^\p{Script=Mende_Kikakui}+$/u, + matchSymbols, + "\\p{Script=Mende_Kikakui}" +); +testPropertyEscapes( + /^\p{Script=Mend}+$/u, + matchSymbols, + "\\p{Script=Mend}" +); +testPropertyEscapes( + /^\p{sc=Mende_Kikakui}+$/u, + matchSymbols, + "\\p{sc=Mende_Kikakui}" +); +testPropertyEscapes( + /^\p{sc=Mend}+$/u, + matchSymbols, + "\\p{sc=Mend}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E7FF], + [0x01E8C5, 0x01E8C6], + [0x01E8D7, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Mende_Kikakui}+$/u, + nonMatchSymbols, + "\\P{Script=Mende_Kikakui}" +); +testPropertyEscapes( + /^\P{Script=Mend}+$/u, + nonMatchSymbols, + "\\P{Script=Mend}" +); +testPropertyEscapes( + /^\P{sc=Mende_Kikakui}+$/u, + nonMatchSymbols, + "\\P{sc=Mende_Kikakui}" +); +testPropertyEscapes( + /^\P{sc=Mend}+$/u, + nonMatchSymbols, + "\\P{sc=Mend}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js new file mode 100644 index 0000000000..6da03a2b0c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Cursive.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Meroitic_Cursive` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0109A0, 0x0109B7], + [0x0109BC, 0x0109CF], + [0x0109D2, 0x0109FF] + ] +}); +testPropertyEscapes( + /^\p{Script=Meroitic_Cursive}+$/u, + matchSymbols, + "\\p{Script=Meroitic_Cursive}" +); +testPropertyEscapes( + /^\p{Script=Merc}+$/u, + matchSymbols, + "\\p{Script=Merc}" +); +testPropertyEscapes( + /^\p{sc=Meroitic_Cursive}+$/u, + matchSymbols, + "\\p{sc=Meroitic_Cursive}" +); +testPropertyEscapes( + /^\p{sc=Merc}+$/u, + matchSymbols, + "\\p{sc=Merc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01099F], + [0x0109B8, 0x0109BB], + [0x0109D0, 0x0109D1], + [0x010A00, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Meroitic_Cursive}+$/u, + nonMatchSymbols, + "\\P{Script=Meroitic_Cursive}" +); +testPropertyEscapes( + /^\P{Script=Merc}+$/u, + nonMatchSymbols, + "\\P{Script=Merc}" +); +testPropertyEscapes( + /^\P{sc=Meroitic_Cursive}+$/u, + nonMatchSymbols, + "\\P{sc=Meroitic_Cursive}" +); +testPropertyEscapes( + /^\P{sc=Merc}+$/u, + nonMatchSymbols, + "\\P{sc=Merc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js new file mode 100644 index 0000000000..f97517114e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Meroitic_Hieroglyphs.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Meroitic_Hieroglyphs` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010980, 0x01099F] + ] +}); +testPropertyEscapes( + /^\p{Script=Meroitic_Hieroglyphs}+$/u, + matchSymbols, + "\\p{Script=Meroitic_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{Script=Mero}+$/u, + matchSymbols, + "\\p{Script=Mero}" +); +testPropertyEscapes( + /^\p{sc=Meroitic_Hieroglyphs}+$/u, + matchSymbols, + "\\p{sc=Meroitic_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{sc=Mero}+$/u, + matchSymbols, + "\\p{sc=Mero}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01097F], + [0x0109A0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Meroitic_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{Script=Meroitic_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{Script=Mero}+$/u, + nonMatchSymbols, + "\\P{Script=Mero}" +); +testPropertyEscapes( + /^\P{sc=Meroitic_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{sc=Meroitic_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{sc=Mero}+$/u, + nonMatchSymbols, + "\\P{sc=Mero}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js new file mode 100644 index 0000000000..4114be7472 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Miao.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Miao` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016F00, 0x016F4A], + [0x016F4F, 0x016F87], + [0x016F8F, 0x016F9F] + ] +}); +testPropertyEscapes( + /^\p{Script=Miao}+$/u, + matchSymbols, + "\\p{Script=Miao}" +); +testPropertyEscapes( + /^\p{Script=Plrd}+$/u, + matchSymbols, + "\\p{Script=Plrd}" +); +testPropertyEscapes( + /^\p{sc=Miao}+$/u, + matchSymbols, + "\\p{sc=Miao}" +); +testPropertyEscapes( + /^\p{sc=Plrd}+$/u, + matchSymbols, + "\\p{sc=Plrd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016EFF], + [0x016F4B, 0x016F4E], + [0x016F88, 0x016F8E], + [0x016FA0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Miao}+$/u, + nonMatchSymbols, + "\\P{Script=Miao}" +); +testPropertyEscapes( + /^\P{Script=Plrd}+$/u, + nonMatchSymbols, + "\\P{Script=Plrd}" +); +testPropertyEscapes( + /^\P{sc=Miao}+$/u, + nonMatchSymbols, + "\\P{sc=Miao}" +); +testPropertyEscapes( + /^\P{sc=Plrd}+$/u, + nonMatchSymbols, + "\\P{sc=Plrd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js new file mode 100644 index 0000000000..d8c8c30611 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Modi.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Modi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011600, 0x011644], + [0x011650, 0x011659] + ] +}); +testPropertyEscapes( + /^\p{Script=Modi}+$/u, + matchSymbols, + "\\p{Script=Modi}" +); +testPropertyEscapes( + /^\p{Script=Modi}+$/u, + matchSymbols, + "\\p{Script=Modi}" +); +testPropertyEscapes( + /^\p{sc=Modi}+$/u, + matchSymbols, + "\\p{sc=Modi}" +); +testPropertyEscapes( + /^\p{sc=Modi}+$/u, + matchSymbols, + "\\p{sc=Modi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0115FF], + [0x011645, 0x01164F], + [0x01165A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Modi}+$/u, + nonMatchSymbols, + "\\P{Script=Modi}" +); +testPropertyEscapes( + /^\P{Script=Modi}+$/u, + nonMatchSymbols, + "\\P{Script=Modi}" +); +testPropertyEscapes( + /^\P{sc=Modi}+$/u, + nonMatchSymbols, + "\\P{sc=Modi}" +); +testPropertyEscapes( + /^\P{sc=Modi}+$/u, + nonMatchSymbols, + "\\P{sc=Modi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js new file mode 100644 index 0000000000..8b31239384 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mongolian.js @@ -0,0 +1,85 @@ +// Copyright 2022 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 for `Script=Mongolian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001804 + ], + ranges: [ + [0x001800, 0x001801], + [0x001806, 0x001819], + [0x001820, 0x001878], + [0x001880, 0x0018AA], + [0x011660, 0x01166C] + ] +}); +testPropertyEscapes( + /^\p{Script=Mongolian}+$/u, + matchSymbols, + "\\p{Script=Mongolian}" +); +testPropertyEscapes( + /^\p{Script=Mong}+$/u, + matchSymbols, + "\\p{Script=Mong}" +); +testPropertyEscapes( + /^\p{sc=Mongolian}+$/u, + matchSymbols, + "\\p{sc=Mongolian}" +); +testPropertyEscapes( + /^\p{sc=Mong}+$/u, + matchSymbols, + "\\p{sc=Mong}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001805 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0017FF], + [0x001802, 0x001803], + [0x00181A, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x00DBFF], + [0x00E000, 0x01165F], + [0x01166D, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Mongolian}+$/u, + nonMatchSymbols, + "\\P{Script=Mongolian}" +); +testPropertyEscapes( + /^\P{Script=Mong}+$/u, + nonMatchSymbols, + "\\P{Script=Mong}" +); +testPropertyEscapes( + /^\P{sc=Mongolian}+$/u, + nonMatchSymbols, + "\\P{sc=Mongolian}" +); +testPropertyEscapes( + /^\P{sc=Mong}+$/u, + nonMatchSymbols, + "\\P{sc=Mong}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js new file mode 100644 index 0000000000..ff46f910cb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Mro.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script=Mro` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016A40, 0x016A5E], + [0x016A60, 0x016A69], + [0x016A6E, 0x016A6F] + ] +}); +testPropertyEscapes( + /^\p{Script=Mro}+$/u, + matchSymbols, + "\\p{Script=Mro}" +); +testPropertyEscapes( + /^\p{Script=Mroo}+$/u, + matchSymbols, + "\\p{Script=Mroo}" +); +testPropertyEscapes( + /^\p{sc=Mro}+$/u, + matchSymbols, + "\\p{sc=Mro}" +); +testPropertyEscapes( + /^\p{sc=Mroo}+$/u, + matchSymbols, + "\\p{sc=Mroo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x016A5F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016A3F], + [0x016A6A, 0x016A6D], + [0x016A70, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Mro}+$/u, + nonMatchSymbols, + "\\P{Script=Mro}" +); +testPropertyEscapes( + /^\P{Script=Mroo}+$/u, + nonMatchSymbols, + "\\P{Script=Mroo}" +); +testPropertyEscapes( + /^\P{sc=Mro}+$/u, + nonMatchSymbols, + "\\P{sc=Mro}" +); +testPropertyEscapes( + /^\P{sc=Mroo}+$/u, + nonMatchSymbols, + "\\P{sc=Mroo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js new file mode 100644 index 0000000000..509d5b32e6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Multani.js @@ -0,0 +1,83 @@ +// Copyright 2022 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 for `Script=Multani` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x011288 + ], + ranges: [ + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A9] + ] +}); +testPropertyEscapes( + /^\p{Script=Multani}+$/u, + matchSymbols, + "\\p{Script=Multani}" +); +testPropertyEscapes( + /^\p{Script=Mult}+$/u, + matchSymbols, + "\\p{Script=Mult}" +); +testPropertyEscapes( + /^\p{sc=Multani}+$/u, + matchSymbols, + "\\p{sc=Multani}" +); +testPropertyEscapes( + /^\p{sc=Mult}+$/u, + matchSymbols, + "\\p{sc=Mult}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011287, + 0x011289, + 0x01128E, + 0x01129E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01127F], + [0x0112AA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Multani}+$/u, + nonMatchSymbols, + "\\P{Script=Multani}" +); +testPropertyEscapes( + /^\P{Script=Mult}+$/u, + nonMatchSymbols, + "\\P{Script=Mult}" +); +testPropertyEscapes( + /^\P{sc=Multani}+$/u, + nonMatchSymbols, + "\\P{sc=Multani}" +); +testPropertyEscapes( + /^\P{sc=Mult}+$/u, + nonMatchSymbols, + "\\P{sc=Mult}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js new file mode 100644 index 0000000000..568bdc3b7e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Myanmar.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Myanmar` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001000, 0x00109F], + [0x00A9E0, 0x00A9FE], + [0x00AA60, 0x00AA7F] + ] +}); +testPropertyEscapes( + /^\p{Script=Myanmar}+$/u, + matchSymbols, + "\\p{Script=Myanmar}" +); +testPropertyEscapes( + /^\p{Script=Mymr}+$/u, + matchSymbols, + "\\p{Script=Mymr}" +); +testPropertyEscapes( + /^\p{sc=Myanmar}+$/u, + matchSymbols, + "\\p{sc=Myanmar}" +); +testPropertyEscapes( + /^\p{sc=Mymr}+$/u, + matchSymbols, + "\\p{sc=Mymr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000FFF], + [0x0010A0, 0x00A9DF], + [0x00A9FF, 0x00AA5F], + [0x00AA80, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Myanmar}+$/u, + nonMatchSymbols, + "\\P{Script=Myanmar}" +); +testPropertyEscapes( + /^\P{Script=Mymr}+$/u, + nonMatchSymbols, + "\\P{Script=Mymr}" +); +testPropertyEscapes( + /^\P{sc=Myanmar}+$/u, + nonMatchSymbols, + "\\P{sc=Myanmar}" +); +testPropertyEscapes( + /^\P{sc=Mymr}+$/u, + nonMatchSymbols, + "\\P{sc=Mymr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js new file mode 100644 index 0000000000..510c02f509 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nabataean.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Nabataean` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010880, 0x01089E], + [0x0108A7, 0x0108AF] + ] +}); +testPropertyEscapes( + /^\p{Script=Nabataean}+$/u, + matchSymbols, + "\\p{Script=Nabataean}" +); +testPropertyEscapes( + /^\p{Script=Nbat}+$/u, + matchSymbols, + "\\p{Script=Nbat}" +); +testPropertyEscapes( + /^\p{sc=Nabataean}+$/u, + matchSymbols, + "\\p{sc=Nabataean}" +); +testPropertyEscapes( + /^\p{sc=Nbat}+$/u, + matchSymbols, + "\\p{sc=Nbat}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01087F], + [0x01089F, 0x0108A6], + [0x0108B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Nabataean}+$/u, + nonMatchSymbols, + "\\P{Script=Nabataean}" +); +testPropertyEscapes( + /^\P{Script=Nbat}+$/u, + nonMatchSymbols, + "\\P{Script=Nbat}" +); +testPropertyEscapes( + /^\P{sc=Nabataean}+$/u, + nonMatchSymbols, + "\\P{sc=Nabataean}" +); +testPropertyEscapes( + /^\P{sc=Nbat}+$/u, + nonMatchSymbols, + "\\P{sc=Nbat}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js new file mode 100644 index 0000000000..2aa6b2c39c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nag_Mundari.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Nag_Mundari` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01E4D0, 0x01E4F9] + ] +}); +testPropertyEscapes( + /^\p{Script=Nag_Mundari}+$/u, + matchSymbols, + "\\p{Script=Nag_Mundari}" +); +testPropertyEscapes( + /^\p{Script=Nagm}+$/u, + matchSymbols, + "\\p{Script=Nagm}" +); +testPropertyEscapes( + /^\p{sc=Nag_Mundari}+$/u, + matchSymbols, + "\\p{sc=Nag_Mundari}" +); +testPropertyEscapes( + /^\p{sc=Nagm}+$/u, + matchSymbols, + "\\p{sc=Nagm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E4CF], + [0x01E4FA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Nag_Mundari}+$/u, + nonMatchSymbols, + "\\P{Script=Nag_Mundari}" +); +testPropertyEscapes( + /^\P{Script=Nagm}+$/u, + nonMatchSymbols, + "\\P{Script=Nagm}" +); +testPropertyEscapes( + /^\P{sc=Nag_Mundari}+$/u, + nonMatchSymbols, + "\\P{sc=Nag_Mundari}" +); +testPropertyEscapes( + /^\P{sc=Nagm}+$/u, + nonMatchSymbols, + "\\P{sc=Nagm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js new file mode 100644 index 0000000000..706925da11 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nandinagari.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Nandinagari` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D7], + [0x0119DA, 0x0119E4] + ] +}); +testPropertyEscapes( + /^\p{Script=Nandinagari}+$/u, + matchSymbols, + "\\p{Script=Nandinagari}" +); +testPropertyEscapes( + /^\p{Script=Nand}+$/u, + matchSymbols, + "\\p{Script=Nand}" +); +testPropertyEscapes( + /^\p{sc=Nandinagari}+$/u, + matchSymbols, + "\\p{sc=Nandinagari}" +); +testPropertyEscapes( + /^\p{sc=Nand}+$/u, + matchSymbols, + "\\p{sc=Nand}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D8, 0x0119D9], + [0x0119E5, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Nandinagari}+$/u, + nonMatchSymbols, + "\\P{Script=Nandinagari}" +); +testPropertyEscapes( + /^\P{Script=Nand}+$/u, + nonMatchSymbols, + "\\P{Script=Nand}" +); +testPropertyEscapes( + /^\P{sc=Nandinagari}+$/u, + nonMatchSymbols, + "\\P{sc=Nandinagari}" +); +testPropertyEscapes( + /^\P{sc=Nand}+$/u, + nonMatchSymbols, + "\\P{sc=Nand}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js new file mode 100644 index 0000000000..88ab8fc148 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_New_Tai_Lue.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script=New_Tai_Lue` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x0019D0, 0x0019DA], + [0x0019DE, 0x0019DF] + ] +}); +testPropertyEscapes( + /^\p{Script=New_Tai_Lue}+$/u, + matchSymbols, + "\\p{Script=New_Tai_Lue}" +); +testPropertyEscapes( + /^\p{Script=Talu}+$/u, + matchSymbols, + "\\p{Script=Talu}" +); +testPropertyEscapes( + /^\p{sc=New_Tai_Lue}+$/u, + matchSymbols, + "\\p{sc=New_Tai_Lue}" +); +testPropertyEscapes( + /^\p{sc=Talu}+$/u, + matchSymbols, + "\\p{sc=Talu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019CF], + [0x0019DB, 0x0019DD], + [0x0019E0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=New_Tai_Lue}+$/u, + nonMatchSymbols, + "\\P{Script=New_Tai_Lue}" +); +testPropertyEscapes( + /^\P{Script=Talu}+$/u, + nonMatchSymbols, + "\\P{Script=Talu}" +); +testPropertyEscapes( + /^\P{sc=New_Tai_Lue}+$/u, + nonMatchSymbols, + "\\P{sc=New_Tai_Lue}" +); +testPropertyEscapes( + /^\P{sc=Talu}+$/u, + nonMatchSymbols, + "\\P{sc=Talu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js new file mode 100644 index 0000000000..f1f6c0b914 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Newa.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Newa` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011400, 0x01145B], + [0x01145D, 0x011461] + ] +}); +testPropertyEscapes( + /^\p{Script=Newa}+$/u, + matchSymbols, + "\\p{Script=Newa}" +); +testPropertyEscapes( + /^\p{Script=Newa}+$/u, + matchSymbols, + "\\p{Script=Newa}" +); +testPropertyEscapes( + /^\p{sc=Newa}+$/u, + matchSymbols, + "\\p{sc=Newa}" +); +testPropertyEscapes( + /^\p{sc=Newa}+$/u, + matchSymbols, + "\\p{sc=Newa}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01145C + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0113FF], + [0x011462, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Newa}+$/u, + nonMatchSymbols, + "\\P{Script=Newa}" +); +testPropertyEscapes( + /^\P{Script=Newa}+$/u, + nonMatchSymbols, + "\\P{Script=Newa}" +); +testPropertyEscapes( + /^\P{sc=Newa}+$/u, + nonMatchSymbols, + "\\P{sc=Newa}" +); +testPropertyEscapes( + /^\P{sc=Newa}+$/u, + nonMatchSymbols, + "\\P{sc=Newa}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js new file mode 100644 index 0000000000..ba44a214a9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nko.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Nko` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0007C0, 0x0007FA], + [0x0007FD, 0x0007FF] + ] +}); +testPropertyEscapes( + /^\p{Script=Nko}+$/u, + matchSymbols, + "\\p{Script=Nko}" +); +testPropertyEscapes( + /^\p{Script=Nkoo}+$/u, + matchSymbols, + "\\p{Script=Nkoo}" +); +testPropertyEscapes( + /^\p{sc=Nko}+$/u, + matchSymbols, + "\\p{sc=Nko}" +); +testPropertyEscapes( + /^\p{sc=Nkoo}+$/u, + matchSymbols, + "\\p{sc=Nkoo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0007BF], + [0x0007FB, 0x0007FC], + [0x000800, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Nko}+$/u, + nonMatchSymbols, + "\\P{Script=Nko}" +); +testPropertyEscapes( + /^\P{Script=Nkoo}+$/u, + nonMatchSymbols, + "\\P{Script=Nkoo}" +); +testPropertyEscapes( + /^\P{sc=Nko}+$/u, + nonMatchSymbols, + "\\P{sc=Nko}" +); +testPropertyEscapes( + /^\P{sc=Nkoo}+$/u, + nonMatchSymbols, + "\\P{sc=Nkoo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js new file mode 100644 index 0000000000..56cf46a9bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nushu.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Nushu` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x016FE1 + ], + ranges: [ + [0x01B170, 0x01B2FB] + ] +}); +testPropertyEscapes( + /^\p{Script=Nushu}+$/u, + matchSymbols, + "\\p{Script=Nushu}" +); +testPropertyEscapes( + /^\p{Script=Nshu}+$/u, + matchSymbols, + "\\p{Script=Nshu}" +); +testPropertyEscapes( + /^\p{sc=Nushu}+$/u, + matchSymbols, + "\\p{sc=Nushu}" +); +testPropertyEscapes( + /^\p{sc=Nshu}+$/u, + matchSymbols, + "\\p{sc=Nshu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016FE0], + [0x016FE2, 0x01B16F], + [0x01B2FC, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Nushu}+$/u, + nonMatchSymbols, + "\\P{Script=Nushu}" +); +testPropertyEscapes( + /^\P{Script=Nshu}+$/u, + nonMatchSymbols, + "\\P{Script=Nshu}" +); +testPropertyEscapes( + /^\P{sc=Nushu}+$/u, + nonMatchSymbols, + "\\P{sc=Nushu}" +); +testPropertyEscapes( + /^\P{sc=Nshu}+$/u, + nonMatchSymbols, + "\\P{sc=Nshu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js new file mode 100644 index 0000000000..c5aa3357bd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Nyiakeng_Puachue_Hmong.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script=Nyiakeng_Puachue_Hmong` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01E100, 0x01E12C], + [0x01E130, 0x01E13D], + [0x01E140, 0x01E149], + [0x01E14E, 0x01E14F] + ] +}); +testPropertyEscapes( + /^\p{Script=Nyiakeng_Puachue_Hmong}+$/u, + matchSymbols, + "\\p{Script=Nyiakeng_Puachue_Hmong}" +); +testPropertyEscapes( + /^\p{Script=Hmnp}+$/u, + matchSymbols, + "\\p{Script=Hmnp}" +); +testPropertyEscapes( + /^\p{sc=Nyiakeng_Puachue_Hmong}+$/u, + matchSymbols, + "\\p{sc=Nyiakeng_Puachue_Hmong}" +); +testPropertyEscapes( + /^\p{sc=Hmnp}+$/u, + matchSymbols, + "\\p{sc=Hmnp}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E0FF], + [0x01E12D, 0x01E12F], + [0x01E13E, 0x01E13F], + [0x01E14A, 0x01E14D], + [0x01E150, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Nyiakeng_Puachue_Hmong}+$/u, + nonMatchSymbols, + "\\P{Script=Nyiakeng_Puachue_Hmong}" +); +testPropertyEscapes( + /^\P{Script=Hmnp}+$/u, + nonMatchSymbols, + "\\P{Script=Hmnp}" +); +testPropertyEscapes( + /^\P{sc=Nyiakeng_Puachue_Hmong}+$/u, + nonMatchSymbols, + "\\P{sc=Nyiakeng_Puachue_Hmong}" +); +testPropertyEscapes( + /^\P{sc=Hmnp}+$/u, + nonMatchSymbols, + "\\P{sc=Hmnp}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js new file mode 100644 index 0000000000..38530cc93b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ogham.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Ogham` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001680, 0x00169C] + ] +}); +testPropertyEscapes( + /^\p{Script=Ogham}+$/u, + matchSymbols, + "\\p{Script=Ogham}" +); +testPropertyEscapes( + /^\p{Script=Ogam}+$/u, + matchSymbols, + "\\p{Script=Ogam}" +); +testPropertyEscapes( + /^\p{sc=Ogham}+$/u, + matchSymbols, + "\\p{sc=Ogham}" +); +testPropertyEscapes( + /^\p{sc=Ogam}+$/u, + matchSymbols, + "\\p{sc=Ogam}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00167F], + [0x00169D, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Ogham}+$/u, + nonMatchSymbols, + "\\P{Script=Ogham}" +); +testPropertyEscapes( + /^\P{Script=Ogam}+$/u, + nonMatchSymbols, + "\\P{Script=Ogam}" +); +testPropertyEscapes( + /^\P{sc=Ogham}+$/u, + nonMatchSymbols, + "\\P{sc=Ogham}" +); +testPropertyEscapes( + /^\P{sc=Ogam}+$/u, + nonMatchSymbols, + "\\P{sc=Ogam}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js new file mode 100644 index 0000000000..848e127c35 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ol_Chiki.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Ol_Chiki` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001C50, 0x001C7F] + ] +}); +testPropertyEscapes( + /^\p{Script=Ol_Chiki}+$/u, + matchSymbols, + "\\p{Script=Ol_Chiki}" +); +testPropertyEscapes( + /^\p{Script=Olck}+$/u, + matchSymbols, + "\\p{Script=Olck}" +); +testPropertyEscapes( + /^\p{sc=Ol_Chiki}+$/u, + matchSymbols, + "\\p{sc=Ol_Chiki}" +); +testPropertyEscapes( + /^\p{sc=Olck}+$/u, + matchSymbols, + "\\p{sc=Olck}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001C4F], + [0x001C80, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Ol_Chiki}+$/u, + nonMatchSymbols, + "\\P{Script=Ol_Chiki}" +); +testPropertyEscapes( + /^\P{Script=Olck}+$/u, + nonMatchSymbols, + "\\P{Script=Olck}" +); +testPropertyEscapes( + /^\P{sc=Ol_Chiki}+$/u, + nonMatchSymbols, + "\\P{sc=Ol_Chiki}" +); +testPropertyEscapes( + /^\P{sc=Olck}+$/u, + nonMatchSymbols, + "\\P{sc=Olck}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js new file mode 100644 index 0000000000..8e568495a3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Hungarian.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Old_Hungarian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010CFA, 0x010CFF] + ] +}); +testPropertyEscapes( + /^\p{Script=Old_Hungarian}+$/u, + matchSymbols, + "\\p{Script=Old_Hungarian}" +); +testPropertyEscapes( + /^\p{Script=Hung}+$/u, + matchSymbols, + "\\p{Script=Hung}" +); +testPropertyEscapes( + /^\p{sc=Old_Hungarian}+$/u, + matchSymbols, + "\\p{sc=Old_Hungarian}" +); +testPropertyEscapes( + /^\p{sc=Hung}+$/u, + matchSymbols, + "\\p{sc=Hung}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CF9], + [0x010D00, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Old_Hungarian}+$/u, + nonMatchSymbols, + "\\P{Script=Old_Hungarian}" +); +testPropertyEscapes( + /^\P{Script=Hung}+$/u, + nonMatchSymbols, + "\\P{Script=Hung}" +); +testPropertyEscapes( + /^\P{sc=Old_Hungarian}+$/u, + nonMatchSymbols, + "\\P{sc=Old_Hungarian}" +); +testPropertyEscapes( + /^\P{sc=Hung}+$/u, + nonMatchSymbols, + "\\P{sc=Hung}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js new file mode 100644 index 0000000000..9271a56a65 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Italic.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Old_Italic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010300, 0x010323], + [0x01032D, 0x01032F] + ] +}); +testPropertyEscapes( + /^\p{Script=Old_Italic}+$/u, + matchSymbols, + "\\p{Script=Old_Italic}" +); +testPropertyEscapes( + /^\p{Script=Ital}+$/u, + matchSymbols, + "\\p{Script=Ital}" +); +testPropertyEscapes( + /^\p{sc=Old_Italic}+$/u, + matchSymbols, + "\\p{sc=Old_Italic}" +); +testPropertyEscapes( + /^\p{sc=Ital}+$/u, + matchSymbols, + "\\p{sc=Ital}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0102FF], + [0x010324, 0x01032C], + [0x010330, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Old_Italic}+$/u, + nonMatchSymbols, + "\\P{Script=Old_Italic}" +); +testPropertyEscapes( + /^\P{Script=Ital}+$/u, + nonMatchSymbols, + "\\P{Script=Ital}" +); +testPropertyEscapes( + /^\P{sc=Old_Italic}+$/u, + nonMatchSymbols, + "\\P{sc=Old_Italic}" +); +testPropertyEscapes( + /^\P{sc=Ital}+$/u, + nonMatchSymbols, + "\\P{sc=Ital}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js new file mode 100644 index 0000000000..c172d380e6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_North_Arabian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Old_North_Arabian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010A80, 0x010A9F] + ] +}); +testPropertyEscapes( + /^\p{Script=Old_North_Arabian}+$/u, + matchSymbols, + "\\p{Script=Old_North_Arabian}" +); +testPropertyEscapes( + /^\p{Script=Narb}+$/u, + matchSymbols, + "\\p{Script=Narb}" +); +testPropertyEscapes( + /^\p{sc=Old_North_Arabian}+$/u, + matchSymbols, + "\\p{sc=Old_North_Arabian}" +); +testPropertyEscapes( + /^\p{sc=Narb}+$/u, + matchSymbols, + "\\p{sc=Narb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010A7F], + [0x010AA0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Old_North_Arabian}+$/u, + nonMatchSymbols, + "\\P{Script=Old_North_Arabian}" +); +testPropertyEscapes( + /^\P{Script=Narb}+$/u, + nonMatchSymbols, + "\\P{Script=Narb}" +); +testPropertyEscapes( + /^\P{sc=Old_North_Arabian}+$/u, + nonMatchSymbols, + "\\P{sc=Old_North_Arabian}" +); +testPropertyEscapes( + /^\P{sc=Narb}+$/u, + nonMatchSymbols, + "\\P{sc=Narb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js new file mode 100644 index 0000000000..6d5b65f895 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Permic.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Old_Permic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010350, 0x01037A] + ] +}); +testPropertyEscapes( + /^\p{Script=Old_Permic}+$/u, + matchSymbols, + "\\p{Script=Old_Permic}" +); +testPropertyEscapes( + /^\p{Script=Perm}+$/u, + matchSymbols, + "\\p{Script=Perm}" +); +testPropertyEscapes( + /^\p{sc=Old_Permic}+$/u, + matchSymbols, + "\\p{sc=Old_Permic}" +); +testPropertyEscapes( + /^\p{sc=Perm}+$/u, + matchSymbols, + "\\p{sc=Perm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01034F], + [0x01037B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Old_Permic}+$/u, + nonMatchSymbols, + "\\P{Script=Old_Permic}" +); +testPropertyEscapes( + /^\P{Script=Perm}+$/u, + nonMatchSymbols, + "\\P{Script=Perm}" +); +testPropertyEscapes( + /^\P{sc=Old_Permic}+$/u, + nonMatchSymbols, + "\\P{sc=Old_Permic}" +); +testPropertyEscapes( + /^\P{sc=Perm}+$/u, + nonMatchSymbols, + "\\P{sc=Perm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js new file mode 100644 index 0000000000..e9e7f55907 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Persian.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Old_Persian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0103A0, 0x0103C3], + [0x0103C8, 0x0103D5] + ] +}); +testPropertyEscapes( + /^\p{Script=Old_Persian}+$/u, + matchSymbols, + "\\p{Script=Old_Persian}" +); +testPropertyEscapes( + /^\p{Script=Xpeo}+$/u, + matchSymbols, + "\\p{Script=Xpeo}" +); +testPropertyEscapes( + /^\p{sc=Old_Persian}+$/u, + matchSymbols, + "\\p{sc=Old_Persian}" +); +testPropertyEscapes( + /^\p{sc=Xpeo}+$/u, + matchSymbols, + "\\p{sc=Xpeo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01039F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Old_Persian}+$/u, + nonMatchSymbols, + "\\P{Script=Old_Persian}" +); +testPropertyEscapes( + /^\P{Script=Xpeo}+$/u, + nonMatchSymbols, + "\\P{Script=Xpeo}" +); +testPropertyEscapes( + /^\P{sc=Old_Persian}+$/u, + nonMatchSymbols, + "\\P{sc=Old_Persian}" +); +testPropertyEscapes( + /^\P{sc=Xpeo}+$/u, + nonMatchSymbols, + "\\P{sc=Xpeo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js new file mode 100644 index 0000000000..800c8d34e2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Sogdian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Old_Sogdian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010F00, 0x010F27] + ] +}); +testPropertyEscapes( + /^\p{Script=Old_Sogdian}+$/u, + matchSymbols, + "\\p{Script=Old_Sogdian}" +); +testPropertyEscapes( + /^\p{Script=Sogo}+$/u, + matchSymbols, + "\\p{Script=Sogo}" +); +testPropertyEscapes( + /^\p{sc=Old_Sogdian}+$/u, + matchSymbols, + "\\p{sc=Old_Sogdian}" +); +testPropertyEscapes( + /^\p{sc=Sogo}+$/u, + matchSymbols, + "\\p{sc=Sogo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010EFF], + [0x010F28, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Old_Sogdian}+$/u, + nonMatchSymbols, + "\\P{Script=Old_Sogdian}" +); +testPropertyEscapes( + /^\P{Script=Sogo}+$/u, + nonMatchSymbols, + "\\P{Script=Sogo}" +); +testPropertyEscapes( + /^\P{sc=Old_Sogdian}+$/u, + nonMatchSymbols, + "\\P{sc=Old_Sogdian}" +); +testPropertyEscapes( + /^\P{sc=Sogo}+$/u, + nonMatchSymbols, + "\\P{sc=Sogo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js new file mode 100644 index 0000000000..55f2b50922 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_South_Arabian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Old_South_Arabian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010A60, 0x010A7F] + ] +}); +testPropertyEscapes( + /^\p{Script=Old_South_Arabian}+$/u, + matchSymbols, + "\\p{Script=Old_South_Arabian}" +); +testPropertyEscapes( + /^\p{Script=Sarb}+$/u, + matchSymbols, + "\\p{Script=Sarb}" +); +testPropertyEscapes( + /^\p{sc=Old_South_Arabian}+$/u, + matchSymbols, + "\\p{sc=Old_South_Arabian}" +); +testPropertyEscapes( + /^\p{sc=Sarb}+$/u, + matchSymbols, + "\\p{sc=Sarb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010A5F], + [0x010A80, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Old_South_Arabian}+$/u, + nonMatchSymbols, + "\\P{Script=Old_South_Arabian}" +); +testPropertyEscapes( + /^\P{Script=Sarb}+$/u, + nonMatchSymbols, + "\\P{Script=Sarb}" +); +testPropertyEscapes( + /^\P{sc=Old_South_Arabian}+$/u, + nonMatchSymbols, + "\\P{sc=Old_South_Arabian}" +); +testPropertyEscapes( + /^\P{sc=Sarb}+$/u, + nonMatchSymbols, + "\\P{sc=Sarb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js new file mode 100644 index 0000000000..a52d57e5f7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Turkic.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Old_Turkic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010C00, 0x010C48] + ] +}); +testPropertyEscapes( + /^\p{Script=Old_Turkic}+$/u, + matchSymbols, + "\\p{Script=Old_Turkic}" +); +testPropertyEscapes( + /^\p{Script=Orkh}+$/u, + matchSymbols, + "\\p{Script=Orkh}" +); +testPropertyEscapes( + /^\p{sc=Old_Turkic}+$/u, + matchSymbols, + "\\p{sc=Old_Turkic}" +); +testPropertyEscapes( + /^\p{sc=Orkh}+$/u, + matchSymbols, + "\\p{sc=Orkh}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010BFF], + [0x010C49, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Old_Turkic}+$/u, + nonMatchSymbols, + "\\P{Script=Old_Turkic}" +); +testPropertyEscapes( + /^\P{Script=Orkh}+$/u, + nonMatchSymbols, + "\\P{Script=Orkh}" +); +testPropertyEscapes( + /^\P{sc=Old_Turkic}+$/u, + nonMatchSymbols, + "\\P{sc=Old_Turkic}" +); +testPropertyEscapes( + /^\P{sc=Orkh}+$/u, + nonMatchSymbols, + "\\P{sc=Orkh}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js new file mode 100644 index 0000000000..13069569f9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Old_Uyghur.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Old_Uyghur` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010F70, 0x010F89] + ] +}); +testPropertyEscapes( + /^\p{Script=Old_Uyghur}+$/u, + matchSymbols, + "\\p{Script=Old_Uyghur}" +); +testPropertyEscapes( + /^\p{Script=Ougr}+$/u, + matchSymbols, + "\\p{Script=Ougr}" +); +testPropertyEscapes( + /^\p{sc=Old_Uyghur}+$/u, + matchSymbols, + "\\p{sc=Old_Uyghur}" +); +testPropertyEscapes( + /^\p{sc=Ougr}+$/u, + matchSymbols, + "\\p{sc=Ougr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010F6F], + [0x010F8A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Old_Uyghur}+$/u, + nonMatchSymbols, + "\\P{Script=Old_Uyghur}" +); +testPropertyEscapes( + /^\P{Script=Ougr}+$/u, + nonMatchSymbols, + "\\P{Script=Ougr}" +); +testPropertyEscapes( + /^\P{sc=Old_Uyghur}+$/u, + nonMatchSymbols, + "\\P{sc=Old_Uyghur}" +); +testPropertyEscapes( + /^\P{sc=Ougr}+$/u, + nonMatchSymbols, + "\\P{sc=Ougr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js new file mode 100644 index 0000000000..d5c4861d0b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Oriya.js @@ -0,0 +1,100 @@ +// Copyright 2022 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 for `Script=Oriya` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000B01, 0x000B03], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B3C, 0x000B44], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4D], + [0x000B55, 0x000B57], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B63], + [0x000B66, 0x000B77] + ] +}); +testPropertyEscapes( + /^\p{Script=Oriya}+$/u, + matchSymbols, + "\\p{Script=Oriya}" +); +testPropertyEscapes( + /^\p{Script=Orya}+$/u, + matchSymbols, + "\\p{Script=Orya}" +); +testPropertyEscapes( + /^\p{sc=Oriya}+$/u, + matchSymbols, + "\\p{sc=Oriya}" +); +testPropertyEscapes( + /^\p{sc=Orya}+$/u, + matchSymbols, + "\\p{sc=Orya}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000B04, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000B00], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3B], + [0x000B45, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4E, 0x000B54], + [0x000B58, 0x000B5B], + [0x000B64, 0x000B65], + [0x000B78, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Oriya}+$/u, + nonMatchSymbols, + "\\P{Script=Oriya}" +); +testPropertyEscapes( + /^\P{Script=Orya}+$/u, + nonMatchSymbols, + "\\P{Script=Orya}" +); +testPropertyEscapes( + /^\P{sc=Oriya}+$/u, + nonMatchSymbols, + "\\P{sc=Oriya}" +); +testPropertyEscapes( + /^\P{sc=Orya}+$/u, + nonMatchSymbols, + "\\P{sc=Orya}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js new file mode 100644 index 0000000000..15d4ebb8e7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Osage.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Osage` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB] + ] +}); +testPropertyEscapes( + /^\p{Script=Osage}+$/u, + matchSymbols, + "\\p{Script=Osage}" +); +testPropertyEscapes( + /^\p{Script=Osge}+$/u, + matchSymbols, + "\\p{Script=Osge}" +); +testPropertyEscapes( + /^\p{sc=Osage}+$/u, + matchSymbols, + "\\p{sc=Osage}" +); +testPropertyEscapes( + /^\p{sc=Osge}+$/u, + matchSymbols, + "\\p{sc=Osge}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Osage}+$/u, + nonMatchSymbols, + "\\P{Script=Osage}" +); +testPropertyEscapes( + /^\P{Script=Osge}+$/u, + nonMatchSymbols, + "\\P{Script=Osge}" +); +testPropertyEscapes( + /^\P{sc=Osage}+$/u, + nonMatchSymbols, + "\\P{sc=Osage}" +); +testPropertyEscapes( + /^\P{sc=Osge}+$/u, + nonMatchSymbols, + "\\P{sc=Osge}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js new file mode 100644 index 0000000000..a25f0fc3da --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Osmanya.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Osmanya` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010480, 0x01049D], + [0x0104A0, 0x0104A9] + ] +}); +testPropertyEscapes( + /^\p{Script=Osmanya}+$/u, + matchSymbols, + "\\p{Script=Osmanya}" +); +testPropertyEscapes( + /^\p{Script=Osma}+$/u, + matchSymbols, + "\\p{Script=Osma}" +); +testPropertyEscapes( + /^\p{sc=Osmanya}+$/u, + matchSymbols, + "\\p{sc=Osmanya}" +); +testPropertyEscapes( + /^\p{sc=Osma}+$/u, + matchSymbols, + "\\p{sc=Osma}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01047F], + [0x01049E, 0x01049F], + [0x0104AA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Osmanya}+$/u, + nonMatchSymbols, + "\\P{Script=Osmanya}" +); +testPropertyEscapes( + /^\P{Script=Osma}+$/u, + nonMatchSymbols, + "\\P{Script=Osma}" +); +testPropertyEscapes( + /^\P{sc=Osmanya}+$/u, + nonMatchSymbols, + "\\P{sc=Osmanya}" +); +testPropertyEscapes( + /^\P{sc=Osma}+$/u, + nonMatchSymbols, + "\\P{sc=Osma}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js new file mode 100644 index 0000000000..defeb4f498 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Pahawh_Hmong.js @@ -0,0 +1,82 @@ +// Copyright 2022 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 for `Script=Pahawh_Hmong` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016B00, 0x016B45], + [0x016B50, 0x016B59], + [0x016B5B, 0x016B61], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F] + ] +}); +testPropertyEscapes( + /^\p{Script=Pahawh_Hmong}+$/u, + matchSymbols, + "\\p{Script=Pahawh_Hmong}" +); +testPropertyEscapes( + /^\p{Script=Hmng}+$/u, + matchSymbols, + "\\p{Script=Hmng}" +); +testPropertyEscapes( + /^\p{sc=Pahawh_Hmong}+$/u, + matchSymbols, + "\\p{sc=Pahawh_Hmong}" +); +testPropertyEscapes( + /^\p{sc=Hmng}+$/u, + matchSymbols, + "\\p{sc=Hmng}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x016B5A, + 0x016B62 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016AFF], + [0x016B46, 0x016B4F], + [0x016B78, 0x016B7C], + [0x016B90, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Pahawh_Hmong}+$/u, + nonMatchSymbols, + "\\P{Script=Pahawh_Hmong}" +); +testPropertyEscapes( + /^\P{Script=Hmng}+$/u, + nonMatchSymbols, + "\\P{Script=Hmng}" +); +testPropertyEscapes( + /^\P{sc=Pahawh_Hmong}+$/u, + nonMatchSymbols, + "\\P{sc=Pahawh_Hmong}" +); +testPropertyEscapes( + /^\P{sc=Hmng}+$/u, + nonMatchSymbols, + "\\P{sc=Hmng}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js new file mode 100644 index 0000000000..3545af7bb6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Palmyrene.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Palmyrene` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010860, 0x01087F] + ] +}); +testPropertyEscapes( + /^\p{Script=Palmyrene}+$/u, + matchSymbols, + "\\p{Script=Palmyrene}" +); +testPropertyEscapes( + /^\p{Script=Palm}+$/u, + matchSymbols, + "\\p{Script=Palm}" +); +testPropertyEscapes( + /^\p{sc=Palmyrene}+$/u, + matchSymbols, + "\\p{sc=Palmyrene}" +); +testPropertyEscapes( + /^\p{sc=Palm}+$/u, + matchSymbols, + "\\p{sc=Palm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01085F], + [0x010880, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Palmyrene}+$/u, + nonMatchSymbols, + "\\P{Script=Palmyrene}" +); +testPropertyEscapes( + /^\P{Script=Palm}+$/u, + nonMatchSymbols, + "\\P{Script=Palm}" +); +testPropertyEscapes( + /^\P{sc=Palmyrene}+$/u, + nonMatchSymbols, + "\\P{sc=Palmyrene}" +); +testPropertyEscapes( + /^\P{sc=Palm}+$/u, + nonMatchSymbols, + "\\P{sc=Palm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js new file mode 100644 index 0000000000..4a99c36f8b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Pau_Cin_Hau.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Pau_Cin_Hau` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011AC0, 0x011AF8] + ] +}); +testPropertyEscapes( + /^\p{Script=Pau_Cin_Hau}+$/u, + matchSymbols, + "\\p{Script=Pau_Cin_Hau}" +); +testPropertyEscapes( + /^\p{Script=Pauc}+$/u, + matchSymbols, + "\\p{Script=Pauc}" +); +testPropertyEscapes( + /^\p{sc=Pau_Cin_Hau}+$/u, + matchSymbols, + "\\p{sc=Pau_Cin_Hau}" +); +testPropertyEscapes( + /^\p{sc=Pauc}+$/u, + matchSymbols, + "\\p{sc=Pauc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011ABF], + [0x011AF9, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Pau_Cin_Hau}+$/u, + nonMatchSymbols, + "\\P{Script=Pau_Cin_Hau}" +); +testPropertyEscapes( + /^\P{Script=Pauc}+$/u, + nonMatchSymbols, + "\\P{Script=Pauc}" +); +testPropertyEscapes( + /^\P{sc=Pau_Cin_Hau}+$/u, + nonMatchSymbols, + "\\P{sc=Pau_Cin_Hau}" +); +testPropertyEscapes( + /^\P{sc=Pauc}+$/u, + nonMatchSymbols, + "\\P{sc=Pauc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js new file mode 100644 index 0000000000..13149b8857 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Phags_Pa.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Phags_Pa` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A840, 0x00A877] + ] +}); +testPropertyEscapes( + /^\p{Script=Phags_Pa}+$/u, + matchSymbols, + "\\p{Script=Phags_Pa}" +); +testPropertyEscapes( + /^\p{Script=Phag}+$/u, + matchSymbols, + "\\p{Script=Phag}" +); +testPropertyEscapes( + /^\p{sc=Phags_Pa}+$/u, + matchSymbols, + "\\p{sc=Phags_Pa}" +); +testPropertyEscapes( + /^\p{sc=Phag}+$/u, + matchSymbols, + "\\p{sc=Phag}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A83F], + [0x00A878, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Phags_Pa}+$/u, + nonMatchSymbols, + "\\P{Script=Phags_Pa}" +); +testPropertyEscapes( + /^\P{Script=Phag}+$/u, + nonMatchSymbols, + "\\P{Script=Phag}" +); +testPropertyEscapes( + /^\P{sc=Phags_Pa}+$/u, + nonMatchSymbols, + "\\P{sc=Phags_Pa}" +); +testPropertyEscapes( + /^\P{sc=Phag}+$/u, + nonMatchSymbols, + "\\P{sc=Phag}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js new file mode 100644 index 0000000000..0bfc6c197a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Phoenician.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Phoenician` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01091F + ], + ranges: [ + [0x010900, 0x01091B] + ] +}); +testPropertyEscapes( + /^\p{Script=Phoenician}+$/u, + matchSymbols, + "\\p{Script=Phoenician}" +); +testPropertyEscapes( + /^\p{Script=Phnx}+$/u, + matchSymbols, + "\\p{Script=Phnx}" +); +testPropertyEscapes( + /^\p{sc=Phoenician}+$/u, + matchSymbols, + "\\p{sc=Phoenician}" +); +testPropertyEscapes( + /^\p{sc=Phnx}+$/u, + matchSymbols, + "\\p{sc=Phnx}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0108FF], + [0x01091C, 0x01091E], + [0x010920, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Phoenician}+$/u, + nonMatchSymbols, + "\\P{Script=Phoenician}" +); +testPropertyEscapes( + /^\P{Script=Phnx}+$/u, + nonMatchSymbols, + "\\P{Script=Phnx}" +); +testPropertyEscapes( + /^\P{sc=Phoenician}+$/u, + nonMatchSymbols, + "\\P{sc=Phoenician}" +); +testPropertyEscapes( + /^\P{sc=Phnx}+$/u, + nonMatchSymbols, + "\\P{sc=Phnx}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js new file mode 100644 index 0000000000..d14c9bf64d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Psalter_Pahlavi.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Psalter_Pahlavi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010B80, 0x010B91], + [0x010B99, 0x010B9C], + [0x010BA9, 0x010BAF] + ] +}); +testPropertyEscapes( + /^\p{Script=Psalter_Pahlavi}+$/u, + matchSymbols, + "\\p{Script=Psalter_Pahlavi}" +); +testPropertyEscapes( + /^\p{Script=Phlp}+$/u, + matchSymbols, + "\\p{Script=Phlp}" +); +testPropertyEscapes( + /^\p{sc=Psalter_Pahlavi}+$/u, + matchSymbols, + "\\p{sc=Psalter_Pahlavi}" +); +testPropertyEscapes( + /^\p{sc=Phlp}+$/u, + matchSymbols, + "\\p{sc=Phlp}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010B7F], + [0x010B92, 0x010B98], + [0x010B9D, 0x010BA8], + [0x010BB0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Psalter_Pahlavi}+$/u, + nonMatchSymbols, + "\\P{Script=Psalter_Pahlavi}" +); +testPropertyEscapes( + /^\P{Script=Phlp}+$/u, + nonMatchSymbols, + "\\P{Script=Phlp}" +); +testPropertyEscapes( + /^\P{sc=Psalter_Pahlavi}+$/u, + nonMatchSymbols, + "\\P{sc=Psalter_Pahlavi}" +); +testPropertyEscapes( + /^\P{sc=Phlp}+$/u, + nonMatchSymbols, + "\\P{sc=Phlp}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js new file mode 100644 index 0000000000..a7f6e6979f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Rejang.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Rejang` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00A95F + ], + ranges: [ + [0x00A930, 0x00A953] + ] +}); +testPropertyEscapes( + /^\p{Script=Rejang}+$/u, + matchSymbols, + "\\p{Script=Rejang}" +); +testPropertyEscapes( + /^\p{Script=Rjng}+$/u, + matchSymbols, + "\\p{Script=Rjng}" +); +testPropertyEscapes( + /^\p{sc=Rejang}+$/u, + matchSymbols, + "\\p{sc=Rejang}" +); +testPropertyEscapes( + /^\p{sc=Rjng}+$/u, + matchSymbols, + "\\p{sc=Rjng}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A92F], + [0x00A954, 0x00A95E], + [0x00A960, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Rejang}+$/u, + nonMatchSymbols, + "\\P{Script=Rejang}" +); +testPropertyEscapes( + /^\P{Script=Rjng}+$/u, + nonMatchSymbols, + "\\P{Script=Rjng}" +); +testPropertyEscapes( + /^\P{sc=Rejang}+$/u, + nonMatchSymbols, + "\\P{sc=Rejang}" +); +testPropertyEscapes( + /^\P{sc=Rjng}+$/u, + nonMatchSymbols, + "\\P{sc=Rjng}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js new file mode 100644 index 0000000000..13e0accb4e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Runic.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Runic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0016A0, 0x0016EA], + [0x0016EE, 0x0016F8] + ] +}); +testPropertyEscapes( + /^\p{Script=Runic}+$/u, + matchSymbols, + "\\p{Script=Runic}" +); +testPropertyEscapes( + /^\p{Script=Runr}+$/u, + matchSymbols, + "\\p{Script=Runr}" +); +testPropertyEscapes( + /^\p{sc=Runic}+$/u, + matchSymbols, + "\\p{sc=Runic}" +); +testPropertyEscapes( + /^\p{sc=Runr}+$/u, + matchSymbols, + "\\p{sc=Runr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00169F], + [0x0016EB, 0x0016ED], + [0x0016F9, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Runic}+$/u, + nonMatchSymbols, + "\\P{Script=Runic}" +); +testPropertyEscapes( + /^\P{Script=Runr}+$/u, + nonMatchSymbols, + "\\P{Script=Runr}" +); +testPropertyEscapes( + /^\P{sc=Runic}+$/u, + nonMatchSymbols, + "\\P{sc=Runic}" +); +testPropertyEscapes( + /^\P{sc=Runr}+$/u, + nonMatchSymbols, + "\\P{sc=Runr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js new file mode 100644 index 0000000000..d73e62826f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Samaritan.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Samaritan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000800, 0x00082D], + [0x000830, 0x00083E] + ] +}); +testPropertyEscapes( + /^\p{Script=Samaritan}+$/u, + matchSymbols, + "\\p{Script=Samaritan}" +); +testPropertyEscapes( + /^\p{Script=Samr}+$/u, + matchSymbols, + "\\p{Script=Samr}" +); +testPropertyEscapes( + /^\p{sc=Samaritan}+$/u, + matchSymbols, + "\\p{sc=Samaritan}" +); +testPropertyEscapes( + /^\p{sc=Samr}+$/u, + matchSymbols, + "\\p{sc=Samr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0007FF], + [0x00082E, 0x00082F], + [0x00083F, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Samaritan}+$/u, + nonMatchSymbols, + "\\P{Script=Samaritan}" +); +testPropertyEscapes( + /^\P{Script=Samr}+$/u, + nonMatchSymbols, + "\\P{Script=Samr}" +); +testPropertyEscapes( + /^\P{sc=Samaritan}+$/u, + nonMatchSymbols, + "\\P{sc=Samaritan}" +); +testPropertyEscapes( + /^\P{sc=Samr}+$/u, + nonMatchSymbols, + "\\P{sc=Samr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js new file mode 100644 index 0000000000..8ad629754d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Saurashtra.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Saurashtra` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A880, 0x00A8C5], + [0x00A8CE, 0x00A8D9] + ] +}); +testPropertyEscapes( + /^\p{Script=Saurashtra}+$/u, + matchSymbols, + "\\p{Script=Saurashtra}" +); +testPropertyEscapes( + /^\p{Script=Saur}+$/u, + matchSymbols, + "\\p{Script=Saur}" +); +testPropertyEscapes( + /^\p{sc=Saurashtra}+$/u, + matchSymbols, + "\\p{sc=Saurashtra}" +); +testPropertyEscapes( + /^\p{sc=Saur}+$/u, + matchSymbols, + "\\p{sc=Saur}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A87F], + [0x00A8C6, 0x00A8CD], + [0x00A8DA, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Saurashtra}+$/u, + nonMatchSymbols, + "\\P{Script=Saurashtra}" +); +testPropertyEscapes( + /^\P{Script=Saur}+$/u, + nonMatchSymbols, + "\\P{Script=Saur}" +); +testPropertyEscapes( + /^\P{sc=Saurashtra}+$/u, + nonMatchSymbols, + "\\P{sc=Saurashtra}" +); +testPropertyEscapes( + /^\P{sc=Saur}+$/u, + nonMatchSymbols, + "\\P{sc=Saur}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js new file mode 100644 index 0000000000..f2f5d28b6f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sharada.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Sharada` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011180, 0x0111DF] + ] +}); +testPropertyEscapes( + /^\p{Script=Sharada}+$/u, + matchSymbols, + "\\p{Script=Sharada}" +); +testPropertyEscapes( + /^\p{Script=Shrd}+$/u, + matchSymbols, + "\\p{Script=Shrd}" +); +testPropertyEscapes( + /^\p{sc=Sharada}+$/u, + matchSymbols, + "\\p{sc=Sharada}" +); +testPropertyEscapes( + /^\p{sc=Shrd}+$/u, + matchSymbols, + "\\p{sc=Shrd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01117F], + [0x0111E0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Sharada}+$/u, + nonMatchSymbols, + "\\P{Script=Sharada}" +); +testPropertyEscapes( + /^\P{Script=Shrd}+$/u, + nonMatchSymbols, + "\\P{Script=Shrd}" +); +testPropertyEscapes( + /^\P{sc=Sharada}+$/u, + nonMatchSymbols, + "\\P{sc=Sharada}" +); +testPropertyEscapes( + /^\P{sc=Shrd}+$/u, + nonMatchSymbols, + "\\P{sc=Shrd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js new file mode 100644 index 0000000000..0c6dcaa9bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Shavian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Shavian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010450, 0x01047F] + ] +}); +testPropertyEscapes( + /^\p{Script=Shavian}+$/u, + matchSymbols, + "\\p{Script=Shavian}" +); +testPropertyEscapes( + /^\p{Script=Shaw}+$/u, + matchSymbols, + "\\p{Script=Shaw}" +); +testPropertyEscapes( + /^\p{sc=Shavian}+$/u, + matchSymbols, + "\\p{sc=Shavian}" +); +testPropertyEscapes( + /^\p{sc=Shaw}+$/u, + matchSymbols, + "\\p{sc=Shaw}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01044F], + [0x010480, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Shavian}+$/u, + nonMatchSymbols, + "\\P{Script=Shavian}" +); +testPropertyEscapes( + /^\P{Script=Shaw}+$/u, + nonMatchSymbols, + "\\P{Script=Shaw}" +); +testPropertyEscapes( + /^\P{sc=Shavian}+$/u, + nonMatchSymbols, + "\\P{sc=Shavian}" +); +testPropertyEscapes( + /^\P{sc=Shaw}+$/u, + nonMatchSymbols, + "\\P{sc=Shaw}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js new file mode 100644 index 0000000000..4a75fd510d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Siddham.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Siddham` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011580, 0x0115B5], + [0x0115B8, 0x0115DD] + ] +}); +testPropertyEscapes( + /^\p{Script=Siddham}+$/u, + matchSymbols, + "\\p{Script=Siddham}" +); +testPropertyEscapes( + /^\p{Script=Sidd}+$/u, + matchSymbols, + "\\p{Script=Sidd}" +); +testPropertyEscapes( + /^\p{sc=Siddham}+$/u, + matchSymbols, + "\\p{sc=Siddham}" +); +testPropertyEscapes( + /^\p{sc=Sidd}+$/u, + matchSymbols, + "\\p{sc=Sidd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01157F], + [0x0115B6, 0x0115B7], + [0x0115DE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Siddham}+$/u, + nonMatchSymbols, + "\\P{Script=Siddham}" +); +testPropertyEscapes( + /^\P{Script=Sidd}+$/u, + nonMatchSymbols, + "\\P{Script=Sidd}" +); +testPropertyEscapes( + /^\P{sc=Siddham}+$/u, + nonMatchSymbols, + "\\P{sc=Siddham}" +); +testPropertyEscapes( + /^\P{sc=Sidd}+$/u, + nonMatchSymbols, + "\\P{sc=Sidd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js new file mode 100644 index 0000000000..71864bf858 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_SignWriting.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script=SignWriting` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01D800, 0x01DA8B], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF] + ] +}); +testPropertyEscapes( + /^\p{Script=SignWriting}+$/u, + matchSymbols, + "\\p{Script=SignWriting}" +); +testPropertyEscapes( + /^\p{Script=Sgnw}+$/u, + matchSymbols, + "\\p{Script=Sgnw}" +); +testPropertyEscapes( + /^\p{sc=SignWriting}+$/u, + matchSymbols, + "\\p{sc=SignWriting}" +); +testPropertyEscapes( + /^\p{sc=Sgnw}+$/u, + matchSymbols, + "\\p{sc=Sgnw}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01DAA0 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01D7FF], + [0x01DA8C, 0x01DA9A], + [0x01DAB0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=SignWriting}+$/u, + nonMatchSymbols, + "\\P{Script=SignWriting}" +); +testPropertyEscapes( + /^\P{Script=Sgnw}+$/u, + nonMatchSymbols, + "\\P{Script=Sgnw}" +); +testPropertyEscapes( + /^\P{sc=SignWriting}+$/u, + nonMatchSymbols, + "\\P{sc=SignWriting}" +); +testPropertyEscapes( + /^\P{sc=Sgnw}+$/u, + nonMatchSymbols, + "\\P{sc=Sgnw}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js new file mode 100644 index 0000000000..fee9c8675e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sinhala.js @@ -0,0 +1,99 @@ +// Copyright 2022 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 for `Script=Sinhala` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000DBD, + 0x000DCA, + 0x000DD6 + ], + ranges: [ + [0x000D81, 0x000D83], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000DCF, 0x000DD4], + [0x000DD8, 0x000DDF], + [0x000DE6, 0x000DEF], + [0x000DF2, 0x000DF4], + [0x0111E1, 0x0111F4] + ] +}); +testPropertyEscapes( + /^\p{Script=Sinhala}+$/u, + matchSymbols, + "\\p{Script=Sinhala}" +); +testPropertyEscapes( + /^\p{Script=Sinh}+$/u, + matchSymbols, + "\\p{Script=Sinh}" +); +testPropertyEscapes( + /^\p{sc=Sinhala}+$/u, + matchSymbols, + "\\p{sc=Sinhala}" +); +testPropertyEscapes( + /^\p{sc=Sinh}+$/u, + matchSymbols, + "\\p{sc=Sinh}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000D84, + 0x000DB2, + 0x000DBC, + 0x000DD5, + 0x000DD7 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000D80], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000DC9], + [0x000DCB, 0x000DCE], + [0x000DE0, 0x000DE5], + [0x000DF0, 0x000DF1], + [0x000DF5, 0x00DBFF], + [0x00E000, 0x0111E0], + [0x0111F5, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Sinhala}+$/u, + nonMatchSymbols, + "\\P{Script=Sinhala}" +); +testPropertyEscapes( + /^\P{Script=Sinh}+$/u, + nonMatchSymbols, + "\\P{Script=Sinh}" +); +testPropertyEscapes( + /^\P{sc=Sinhala}+$/u, + nonMatchSymbols, + "\\P{sc=Sinhala}" +); +testPropertyEscapes( + /^\P{sc=Sinh}+$/u, + nonMatchSymbols, + "\\P{sc=Sinh}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js new file mode 100644 index 0000000000..3527c81310 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sogdian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Sogdian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010F30, 0x010F59] + ] +}); +testPropertyEscapes( + /^\p{Script=Sogdian}+$/u, + matchSymbols, + "\\p{Script=Sogdian}" +); +testPropertyEscapes( + /^\p{Script=Sogd}+$/u, + matchSymbols, + "\\p{Script=Sogd}" +); +testPropertyEscapes( + /^\p{sc=Sogdian}+$/u, + matchSymbols, + "\\p{sc=Sogdian}" +); +testPropertyEscapes( + /^\p{sc=Sogd}+$/u, + matchSymbols, + "\\p{sc=Sogd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010F2F], + [0x010F5A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Sogdian}+$/u, + nonMatchSymbols, + "\\P{Script=Sogdian}" +); +testPropertyEscapes( + /^\P{Script=Sogd}+$/u, + nonMatchSymbols, + "\\P{Script=Sogd}" +); +testPropertyEscapes( + /^\P{sc=Sogdian}+$/u, + nonMatchSymbols, + "\\P{sc=Sogdian}" +); +testPropertyEscapes( + /^\P{sc=Sogd}+$/u, + nonMatchSymbols, + "\\P{sc=Sogd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js new file mode 100644 index 0000000000..8a90eb3599 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sora_Sompeng.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Sora_Sompeng` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0110D0, 0x0110E8], + [0x0110F0, 0x0110F9] + ] +}); +testPropertyEscapes( + /^\p{Script=Sora_Sompeng}+$/u, + matchSymbols, + "\\p{Script=Sora_Sompeng}" +); +testPropertyEscapes( + /^\p{Script=Sora}+$/u, + matchSymbols, + "\\p{Script=Sora}" +); +testPropertyEscapes( + /^\p{sc=Sora_Sompeng}+$/u, + matchSymbols, + "\\p{sc=Sora_Sompeng}" +); +testPropertyEscapes( + /^\p{sc=Sora}+$/u, + matchSymbols, + "\\p{sc=Sora}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0110CF], + [0x0110E9, 0x0110EF], + [0x0110FA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Sora_Sompeng}+$/u, + nonMatchSymbols, + "\\P{Script=Sora_Sompeng}" +); +testPropertyEscapes( + /^\P{Script=Sora}+$/u, + nonMatchSymbols, + "\\P{Script=Sora}" +); +testPropertyEscapes( + /^\P{sc=Sora_Sompeng}+$/u, + nonMatchSymbols, + "\\P{sc=Sora_Sompeng}" +); +testPropertyEscapes( + /^\P{sc=Sora}+$/u, + nonMatchSymbols, + "\\P{sc=Sora}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js new file mode 100644 index 0000000000..84e902cfd4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Soyombo.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Soyombo` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011A50, 0x011AA2] + ] +}); +testPropertyEscapes( + /^\p{Script=Soyombo}+$/u, + matchSymbols, + "\\p{Script=Soyombo}" +); +testPropertyEscapes( + /^\p{Script=Soyo}+$/u, + matchSymbols, + "\\p{Script=Soyo}" +); +testPropertyEscapes( + /^\p{sc=Soyombo}+$/u, + matchSymbols, + "\\p{sc=Soyombo}" +); +testPropertyEscapes( + /^\p{sc=Soyo}+$/u, + matchSymbols, + "\\p{sc=Soyo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011A4F], + [0x011AA3, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Soyombo}+$/u, + nonMatchSymbols, + "\\P{Script=Soyombo}" +); +testPropertyEscapes( + /^\P{Script=Soyo}+$/u, + nonMatchSymbols, + "\\P{Script=Soyo}" +); +testPropertyEscapes( + /^\P{sc=Soyombo}+$/u, + nonMatchSymbols, + "\\P{sc=Soyombo}" +); +testPropertyEscapes( + /^\P{sc=Soyo}+$/u, + nonMatchSymbols, + "\\P{sc=Soyo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js new file mode 100644 index 0000000000..d894469bbd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Sundanese.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Sundanese` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001B80, 0x001BBF], + [0x001CC0, 0x001CC7] + ] +}); +testPropertyEscapes( + /^\p{Script=Sundanese}+$/u, + matchSymbols, + "\\p{Script=Sundanese}" +); +testPropertyEscapes( + /^\p{Script=Sund}+$/u, + matchSymbols, + "\\p{Script=Sund}" +); +testPropertyEscapes( + /^\p{sc=Sundanese}+$/u, + matchSymbols, + "\\p{sc=Sundanese}" +); +testPropertyEscapes( + /^\p{sc=Sund}+$/u, + matchSymbols, + "\\p{sc=Sund}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001B7F], + [0x001BC0, 0x001CBF], + [0x001CC8, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Sundanese}+$/u, + nonMatchSymbols, + "\\P{Script=Sundanese}" +); +testPropertyEscapes( + /^\P{Script=Sund}+$/u, + nonMatchSymbols, + "\\P{Script=Sund}" +); +testPropertyEscapes( + /^\P{sc=Sundanese}+$/u, + nonMatchSymbols, + "\\P{sc=Sundanese}" +); +testPropertyEscapes( + /^\P{sc=Sund}+$/u, + nonMatchSymbols, + "\\P{sc=Sund}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js new file mode 100644 index 0000000000..51e98797d3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Syloti_Nagri.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Syloti_Nagri` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A800, 0x00A82C] + ] +}); +testPropertyEscapes( + /^\p{Script=Syloti_Nagri}+$/u, + matchSymbols, + "\\p{Script=Syloti_Nagri}" +); +testPropertyEscapes( + /^\p{Script=Sylo}+$/u, + matchSymbols, + "\\p{Script=Sylo}" +); +testPropertyEscapes( + /^\p{sc=Syloti_Nagri}+$/u, + matchSymbols, + "\\p{sc=Syloti_Nagri}" +); +testPropertyEscapes( + /^\p{sc=Sylo}+$/u, + matchSymbols, + "\\p{sc=Sylo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A7FF], + [0x00A82D, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Syloti_Nagri}+$/u, + nonMatchSymbols, + "\\P{Script=Syloti_Nagri}" +); +testPropertyEscapes( + /^\P{Script=Sylo}+$/u, + nonMatchSymbols, + "\\P{Script=Sylo}" +); +testPropertyEscapes( + /^\P{sc=Syloti_Nagri}+$/u, + nonMatchSymbols, + "\\P{sc=Syloti_Nagri}" +); +testPropertyEscapes( + /^\P{sc=Sylo}+$/u, + nonMatchSymbols, + "\\P{sc=Sylo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js new file mode 100644 index 0000000000..efee6ddda6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Syriac.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script=Syriac` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000700, 0x00070D], + [0x00070F, 0x00074A], + [0x00074D, 0x00074F], + [0x000860, 0x00086A] + ] +}); +testPropertyEscapes( + /^\p{Script=Syriac}+$/u, + matchSymbols, + "\\p{Script=Syriac}" +); +testPropertyEscapes( + /^\p{Script=Syrc}+$/u, + matchSymbols, + "\\p{Script=Syrc}" +); +testPropertyEscapes( + /^\p{sc=Syriac}+$/u, + matchSymbols, + "\\p{sc=Syriac}" +); +testPropertyEscapes( + /^\p{sc=Syrc}+$/u, + matchSymbols, + "\\p{sc=Syrc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00070E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0006FF], + [0x00074B, 0x00074C], + [0x000750, 0x00085F], + [0x00086B, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Syriac}+$/u, + nonMatchSymbols, + "\\P{Script=Syriac}" +); +testPropertyEscapes( + /^\P{Script=Syrc}+$/u, + nonMatchSymbols, + "\\P{Script=Syrc}" +); +testPropertyEscapes( + /^\P{sc=Syriac}+$/u, + nonMatchSymbols, + "\\P{sc=Syriac}" +); +testPropertyEscapes( + /^\P{sc=Syrc}+$/u, + nonMatchSymbols, + "\\P{sc=Syrc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js new file mode 100644 index 0000000000..cd35e7bd07 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tagalog.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Tagalog` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00171F + ], + ranges: [ + [0x001700, 0x001715] + ] +}); +testPropertyEscapes( + /^\p{Script=Tagalog}+$/u, + matchSymbols, + "\\p{Script=Tagalog}" +); +testPropertyEscapes( + /^\p{Script=Tglg}+$/u, + matchSymbols, + "\\p{Script=Tglg}" +); +testPropertyEscapes( + /^\p{sc=Tagalog}+$/u, + matchSymbols, + "\\p{sc=Tagalog}" +); +testPropertyEscapes( + /^\p{sc=Tglg}+$/u, + matchSymbols, + "\\p{sc=Tglg}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0016FF], + [0x001716, 0x00171E], + [0x001720, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tagalog}+$/u, + nonMatchSymbols, + "\\P{Script=Tagalog}" +); +testPropertyEscapes( + /^\P{Script=Tglg}+$/u, + nonMatchSymbols, + "\\P{Script=Tglg}" +); +testPropertyEscapes( + /^\P{sc=Tagalog}+$/u, + nonMatchSymbols, + "\\P{sc=Tagalog}" +); +testPropertyEscapes( + /^\P{sc=Tglg}+$/u, + nonMatchSymbols, + "\\P{sc=Tglg}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js new file mode 100644 index 0000000000..5b77894a00 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tagbanwa.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script=Tagbanwa` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001772, 0x001773] + ] +}); +testPropertyEscapes( + /^\p{Script=Tagbanwa}+$/u, + matchSymbols, + "\\p{Script=Tagbanwa}" +); +testPropertyEscapes( + /^\p{Script=Tagb}+$/u, + matchSymbols, + "\\p{Script=Tagb}" +); +testPropertyEscapes( + /^\p{sc=Tagbanwa}+$/u, + matchSymbols, + "\\p{sc=Tagbanwa}" +); +testPropertyEscapes( + /^\p{sc=Tagb}+$/u, + matchSymbols, + "\\p{sc=Tagb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00176D, + 0x001771 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00175F], + [0x001774, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tagbanwa}+$/u, + nonMatchSymbols, + "\\P{Script=Tagbanwa}" +); +testPropertyEscapes( + /^\P{Script=Tagb}+$/u, + nonMatchSymbols, + "\\P{Script=Tagb}" +); +testPropertyEscapes( + /^\P{sc=Tagbanwa}+$/u, + nonMatchSymbols, + "\\P{sc=Tagbanwa}" +); +testPropertyEscapes( + /^\P{sc=Tagb}+$/u, + nonMatchSymbols, + "\\P{sc=Tagb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js new file mode 100644 index 0000000000..f5401bf993 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Le.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Tai_Le` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001950, 0x00196D], + [0x001970, 0x001974] + ] +}); +testPropertyEscapes( + /^\p{Script=Tai_Le}+$/u, + matchSymbols, + "\\p{Script=Tai_Le}" +); +testPropertyEscapes( + /^\p{Script=Tale}+$/u, + matchSymbols, + "\\p{Script=Tale}" +); +testPropertyEscapes( + /^\p{sc=Tai_Le}+$/u, + matchSymbols, + "\\p{sc=Tai_Le}" +); +testPropertyEscapes( + /^\p{sc=Tale}+$/u, + matchSymbols, + "\\p{sc=Tale}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00194F], + [0x00196E, 0x00196F], + [0x001975, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tai_Le}+$/u, + nonMatchSymbols, + "\\P{Script=Tai_Le}" +); +testPropertyEscapes( + /^\P{Script=Tale}+$/u, + nonMatchSymbols, + "\\P{Script=Tale}" +); +testPropertyEscapes( + /^\P{sc=Tai_Le}+$/u, + nonMatchSymbols, + "\\P{sc=Tai_Le}" +); +testPropertyEscapes( + /^\P{sc=Tale}+$/u, + nonMatchSymbols, + "\\P{sc=Tale}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js new file mode 100644 index 0000000000..8b44fbc4e4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Tham.js @@ -0,0 +1,82 @@ +// Copyright 2022 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 for `Script=Tai_Tham` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001A20, 0x001A5E], + [0x001A60, 0x001A7C], + [0x001A7F, 0x001A89], + [0x001A90, 0x001A99], + [0x001AA0, 0x001AAD] + ] +}); +testPropertyEscapes( + /^\p{Script=Tai_Tham}+$/u, + matchSymbols, + "\\p{Script=Tai_Tham}" +); +testPropertyEscapes( + /^\p{Script=Lana}+$/u, + matchSymbols, + "\\p{Script=Lana}" +); +testPropertyEscapes( + /^\p{sc=Tai_Tham}+$/u, + matchSymbols, + "\\p{sc=Tai_Tham}" +); +testPropertyEscapes( + /^\p{sc=Lana}+$/u, + matchSymbols, + "\\p{sc=Lana}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001A5F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001A1F], + [0x001A7D, 0x001A7E], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001A9F], + [0x001AAE, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tai_Tham}+$/u, + nonMatchSymbols, + "\\P{Script=Tai_Tham}" +); +testPropertyEscapes( + /^\P{Script=Lana}+$/u, + nonMatchSymbols, + "\\P{Script=Lana}" +); +testPropertyEscapes( + /^\P{sc=Tai_Tham}+$/u, + nonMatchSymbols, + "\\P{sc=Tai_Tham}" +); +testPropertyEscapes( + /^\P{sc=Lana}+$/u, + nonMatchSymbols, + "\\P{sc=Lana}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js new file mode 100644 index 0000000000..768708086e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tai_Viet.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Tai_Viet` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00AA80, 0x00AAC2], + [0x00AADB, 0x00AADF] + ] +}); +testPropertyEscapes( + /^\p{Script=Tai_Viet}+$/u, + matchSymbols, + "\\p{Script=Tai_Viet}" +); +testPropertyEscapes( + /^\p{Script=Tavt}+$/u, + matchSymbols, + "\\p{Script=Tavt}" +); +testPropertyEscapes( + /^\p{sc=Tai_Viet}+$/u, + matchSymbols, + "\\p{sc=Tai_Viet}" +); +testPropertyEscapes( + /^\p{sc=Tavt}+$/u, + matchSymbols, + "\\p{sc=Tavt}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00AA7F], + [0x00AAC3, 0x00AADA], + [0x00AAE0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tai_Viet}+$/u, + nonMatchSymbols, + "\\P{Script=Tai_Viet}" +); +testPropertyEscapes( + /^\P{Script=Tavt}+$/u, + nonMatchSymbols, + "\\P{Script=Tavt}" +); +testPropertyEscapes( + /^\P{sc=Tai_Viet}+$/u, + nonMatchSymbols, + "\\P{sc=Tai_Viet}" +); +testPropertyEscapes( + /^\P{sc=Tavt}+$/u, + nonMatchSymbols, + "\\P{sc=Tavt}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js new file mode 100644 index 0000000000..f200277ff8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Takri.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Takri` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011680, 0x0116B9], + [0x0116C0, 0x0116C9] + ] +}); +testPropertyEscapes( + /^\p{Script=Takri}+$/u, + matchSymbols, + "\\p{Script=Takri}" +); +testPropertyEscapes( + /^\p{Script=Takr}+$/u, + matchSymbols, + "\\p{Script=Takr}" +); +testPropertyEscapes( + /^\p{sc=Takri}+$/u, + matchSymbols, + "\\p{sc=Takri}" +); +testPropertyEscapes( + /^\p{sc=Takr}+$/u, + matchSymbols, + "\\p{sc=Takr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01167F], + [0x0116BA, 0x0116BF], + [0x0116CA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Takri}+$/u, + nonMatchSymbols, + "\\P{Script=Takri}" +); +testPropertyEscapes( + /^\P{Script=Takr}+$/u, + nonMatchSymbols, + "\\P{Script=Takr}" +); +testPropertyEscapes( + /^\P{sc=Takri}+$/u, + nonMatchSymbols, + "\\P{sc=Takri}" +); +testPropertyEscapes( + /^\P{sc=Takr}+$/u, + nonMatchSymbols, + "\\P{sc=Takr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js new file mode 100644 index 0000000000..9c874a21ed --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tamil.js @@ -0,0 +1,109 @@ +// Copyright 2022 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 for `Script=Tamil` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000B9C, + 0x000BD0, + 0x000BD7, + 0x011FFF + ], + ranges: [ + [0x000B82, 0x000B83], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000BBE, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCD], + [0x000BE6, 0x000BFA], + [0x011FC0, 0x011FF1] + ] +}); +testPropertyEscapes( + /^\p{Script=Tamil}+$/u, + matchSymbols, + "\\p{Script=Tamil}" +); +testPropertyEscapes( + /^\p{Script=Taml}+$/u, + matchSymbols, + "\\p{Script=Taml}" +); +testPropertyEscapes( + /^\p{sc=Tamil}+$/u, + matchSymbols, + "\\p{sc=Tamil}" +); +testPropertyEscapes( + /^\p{sc=Taml}+$/u, + matchSymbols, + "\\p{sc=Taml}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000BC9 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000B81], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCE, 0x000BCF], + [0x000BD1, 0x000BD6], + [0x000BD8, 0x000BE5], + [0x000BFB, 0x00DBFF], + [0x00E000, 0x011FBF], + [0x011FF2, 0x011FFE], + [0x012000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tamil}+$/u, + nonMatchSymbols, + "\\P{Script=Tamil}" +); +testPropertyEscapes( + /^\P{Script=Taml}+$/u, + nonMatchSymbols, + "\\P{Script=Taml}" +); +testPropertyEscapes( + /^\P{sc=Tamil}+$/u, + nonMatchSymbols, + "\\P{sc=Tamil}" +); +testPropertyEscapes( + /^\P{sc=Taml}+$/u, + nonMatchSymbols, + "\\P{sc=Taml}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js new file mode 100644 index 0000000000..9febb2d8a6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tangsa.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Tangsa` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016A70, 0x016ABE], + [0x016AC0, 0x016AC9] + ] +}); +testPropertyEscapes( + /^\p{Script=Tangsa}+$/u, + matchSymbols, + "\\p{Script=Tangsa}" +); +testPropertyEscapes( + /^\p{Script=Tnsa}+$/u, + matchSymbols, + "\\p{Script=Tnsa}" +); +testPropertyEscapes( + /^\p{sc=Tangsa}+$/u, + matchSymbols, + "\\p{sc=Tangsa}" +); +testPropertyEscapes( + /^\p{sc=Tnsa}+$/u, + matchSymbols, + "\\p{sc=Tnsa}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x016ABF + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016A6F], + [0x016ACA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tangsa}+$/u, + nonMatchSymbols, + "\\P{Script=Tangsa}" +); +testPropertyEscapes( + /^\P{Script=Tnsa}+$/u, + nonMatchSymbols, + "\\P{Script=Tnsa}" +); +testPropertyEscapes( + /^\P{sc=Tangsa}+$/u, + nonMatchSymbols, + "\\P{sc=Tangsa}" +); +testPropertyEscapes( + /^\P{sc=Tnsa}+$/u, + nonMatchSymbols, + "\\P{sc=Tnsa}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js new file mode 100644 index 0000000000..4f45e23385 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tangut.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script=Tangut` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x016FE0 + ], + ranges: [ + [0x017000, 0x0187F7], + [0x018800, 0x018AFF], + [0x018D00, 0x018D08] + ] +}); +testPropertyEscapes( + /^\p{Script=Tangut}+$/u, + matchSymbols, + "\\p{Script=Tangut}" +); +testPropertyEscapes( + /^\p{Script=Tang}+$/u, + matchSymbols, + "\\p{Script=Tang}" +); +testPropertyEscapes( + /^\p{sc=Tangut}+$/u, + matchSymbols, + "\\p{sc=Tangut}" +); +testPropertyEscapes( + /^\p{sc=Tang}+$/u, + matchSymbols, + "\\p{sc=Tang}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016FDF], + [0x016FE1, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018B00, 0x018CFF], + [0x018D09, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tangut}+$/u, + nonMatchSymbols, + "\\P{Script=Tangut}" +); +testPropertyEscapes( + /^\P{Script=Tang}+$/u, + nonMatchSymbols, + "\\P{Script=Tang}" +); +testPropertyEscapes( + /^\P{sc=Tangut}+$/u, + nonMatchSymbols, + "\\P{sc=Tangut}" +); +testPropertyEscapes( + /^\P{sc=Tang}+$/u, + nonMatchSymbols, + "\\P{sc=Tang}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js new file mode 100644 index 0000000000..56ed03c4fe --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Telugu.js @@ -0,0 +1,99 @@ +// Copyright 2022 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 for `Script=Telugu` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000C5D + ], + ranges: [ + [0x000C00, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C3C, 0x000C44], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C63], + [0x000C66, 0x000C6F], + [0x000C77, 0x000C7F] + ] +}); +testPropertyEscapes( + /^\p{Script=Telugu}+$/u, + matchSymbols, + "\\p{Script=Telugu}" +); +testPropertyEscapes( + /^\p{Script=Telu}+$/u, + matchSymbols, + "\\p{Script=Telu}" +); +testPropertyEscapes( + /^\p{sc=Telugu}+$/u, + matchSymbols, + "\\p{sc=Telugu}" +); +testPropertyEscapes( + /^\p{sc=Telu}+$/u, + matchSymbols, + "\\p{sc=Telu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C45, + 0x000C49, + 0x000C57 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000BFF], + [0x000C3A, 0x000C3B], + [0x000C4E, 0x000C54], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C64, 0x000C65], + [0x000C70, 0x000C76], + [0x000C80, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Telugu}+$/u, + nonMatchSymbols, + "\\P{Script=Telugu}" +); +testPropertyEscapes( + /^\P{Script=Telu}+$/u, + nonMatchSymbols, + "\\P{Script=Telu}" +); +testPropertyEscapes( + /^\P{sc=Telugu}+$/u, + nonMatchSymbols, + "\\P{sc=Telugu}" +); +testPropertyEscapes( + /^\P{sc=Telu}+$/u, + nonMatchSymbols, + "\\P{sc=Telu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js new file mode 100644 index 0000000000..8586e6dd09 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Thaana.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Thaana` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000780, 0x0007B1] + ] +}); +testPropertyEscapes( + /^\p{Script=Thaana}+$/u, + matchSymbols, + "\\p{Script=Thaana}" +); +testPropertyEscapes( + /^\p{Script=Thaa}+$/u, + matchSymbols, + "\\p{Script=Thaa}" +); +testPropertyEscapes( + /^\p{sc=Thaana}+$/u, + matchSymbols, + "\\p{sc=Thaana}" +); +testPropertyEscapes( + /^\p{sc=Thaa}+$/u, + matchSymbols, + "\\p{sc=Thaa}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00077F], + [0x0007B2, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Thaana}+$/u, + nonMatchSymbols, + "\\P{Script=Thaana}" +); +testPropertyEscapes( + /^\P{Script=Thaa}+$/u, + nonMatchSymbols, + "\\P{Script=Thaa}" +); +testPropertyEscapes( + /^\P{sc=Thaana}+$/u, + nonMatchSymbols, + "\\P{sc=Thaana}" +); +testPropertyEscapes( + /^\P{sc=Thaa}+$/u, + nonMatchSymbols, + "\\P{sc=Thaa}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js new file mode 100644 index 0000000000..cad12cc326 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Thai.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Thai` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000E01, 0x000E3A], + [0x000E40, 0x000E5B] + ] +}); +testPropertyEscapes( + /^\p{Script=Thai}+$/u, + matchSymbols, + "\\p{Script=Thai}" +); +testPropertyEscapes( + /^\p{Script=Thai}+$/u, + matchSymbols, + "\\p{Script=Thai}" +); +testPropertyEscapes( + /^\p{sc=Thai}+$/u, + matchSymbols, + "\\p{sc=Thai}" +); +testPropertyEscapes( + /^\p{sc=Thai}+$/u, + matchSymbols, + "\\p{sc=Thai}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000E00], + [0x000E3B, 0x000E3F], + [0x000E5C, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Thai}+$/u, + nonMatchSymbols, + "\\P{Script=Thai}" +); +testPropertyEscapes( + /^\P{Script=Thai}+$/u, + nonMatchSymbols, + "\\P{Script=Thai}" +); +testPropertyEscapes( + /^\P{sc=Thai}+$/u, + nonMatchSymbols, + "\\P{sc=Thai}" +); +testPropertyEscapes( + /^\P{sc=Thai}+$/u, + nonMatchSymbols, + "\\P{sc=Thai}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js new file mode 100644 index 0000000000..e32390ab8b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tibetan.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Script=Tibetan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000F00, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F71, 0x000F97], + [0x000F99, 0x000FBC], + [0x000FBE, 0x000FCC], + [0x000FCE, 0x000FD4], + [0x000FD9, 0x000FDA] + ] +}); +testPropertyEscapes( + /^\p{Script=Tibetan}+$/u, + matchSymbols, + "\\p{Script=Tibetan}" +); +testPropertyEscapes( + /^\p{Script=Tibt}+$/u, + matchSymbols, + "\\p{Script=Tibt}" +); +testPropertyEscapes( + /^\p{sc=Tibetan}+$/u, + matchSymbols, + "\\p{sc=Tibetan}" +); +testPropertyEscapes( + /^\p{sc=Tibt}+$/u, + matchSymbols, + "\\p{sc=Tibt}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000F48, + 0x000F98, + 0x000FBD, + 0x000FCD + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000EFF], + [0x000F6D, 0x000F70], + [0x000FD5, 0x000FD8], + [0x000FDB, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tibetan}+$/u, + nonMatchSymbols, + "\\P{Script=Tibetan}" +); +testPropertyEscapes( + /^\P{Script=Tibt}+$/u, + nonMatchSymbols, + "\\P{Script=Tibt}" +); +testPropertyEscapes( + /^\P{sc=Tibetan}+$/u, + nonMatchSymbols, + "\\P{sc=Tibetan}" +); +testPropertyEscapes( + /^\P{sc=Tibt}+$/u, + nonMatchSymbols, + "\\P{sc=Tibt}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js new file mode 100644 index 0000000000..ee0545667a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tifinagh.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script=Tifinagh` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x002D7F + ], + ranges: [ + [0x002D30, 0x002D67], + [0x002D6F, 0x002D70] + ] +}); +testPropertyEscapes( + /^\p{Script=Tifinagh}+$/u, + matchSymbols, + "\\p{Script=Tifinagh}" +); +testPropertyEscapes( + /^\p{Script=Tfng}+$/u, + matchSymbols, + "\\p{Script=Tfng}" +); +testPropertyEscapes( + /^\p{sc=Tifinagh}+$/u, + matchSymbols, + "\\p{sc=Tifinagh}" +); +testPropertyEscapes( + /^\p{sc=Tfng}+$/u, + matchSymbols, + "\\p{sc=Tfng}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D71, 0x002D7E], + [0x002D80, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tifinagh}+$/u, + nonMatchSymbols, + "\\P{Script=Tifinagh}" +); +testPropertyEscapes( + /^\P{Script=Tfng}+$/u, + nonMatchSymbols, + "\\P{Script=Tfng}" +); +testPropertyEscapes( + /^\P{sc=Tifinagh}+$/u, + nonMatchSymbols, + "\\P{sc=Tifinagh}" +); +testPropertyEscapes( + /^\P{sc=Tfng}+$/u, + nonMatchSymbols, + "\\P{sc=Tfng}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js new file mode 100644 index 0000000000..f500524553 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Tirhuta.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Tirhuta` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011480, 0x0114C7], + [0x0114D0, 0x0114D9] + ] +}); +testPropertyEscapes( + /^\p{Script=Tirhuta}+$/u, + matchSymbols, + "\\p{Script=Tirhuta}" +); +testPropertyEscapes( + /^\p{Script=Tirh}+$/u, + matchSymbols, + "\\p{Script=Tirh}" +); +testPropertyEscapes( + /^\p{sc=Tirhuta}+$/u, + matchSymbols, + "\\p{sc=Tirhuta}" +); +testPropertyEscapes( + /^\p{sc=Tirh}+$/u, + matchSymbols, + "\\p{sc=Tirh}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01147F], + [0x0114C8, 0x0114CF], + [0x0114DA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Tirhuta}+$/u, + nonMatchSymbols, + "\\P{Script=Tirhuta}" +); +testPropertyEscapes( + /^\P{Script=Tirh}+$/u, + nonMatchSymbols, + "\\P{Script=Tirh}" +); +testPropertyEscapes( + /^\P{sc=Tirhuta}+$/u, + nonMatchSymbols, + "\\P{sc=Tirhuta}" +); +testPropertyEscapes( + /^\P{sc=Tirh}+$/u, + nonMatchSymbols, + "\\P{sc=Tirh}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js new file mode 100644 index 0000000000..39d7560608 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Toto.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Toto` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01E290, 0x01E2AE] + ] +}); +testPropertyEscapes( + /^\p{Script=Toto}+$/u, + matchSymbols, + "\\p{Script=Toto}" +); +testPropertyEscapes( + /^\p{Script=Toto}+$/u, + matchSymbols, + "\\p{Script=Toto}" +); +testPropertyEscapes( + /^\p{sc=Toto}+$/u, + matchSymbols, + "\\p{sc=Toto}" +); +testPropertyEscapes( + /^\p{sc=Toto}+$/u, + matchSymbols, + "\\p{sc=Toto}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E28F], + [0x01E2AF, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Toto}+$/u, + nonMatchSymbols, + "\\P{Script=Toto}" +); +testPropertyEscapes( + /^\P{Script=Toto}+$/u, + nonMatchSymbols, + "\\P{Script=Toto}" +); +testPropertyEscapes( + /^\P{sc=Toto}+$/u, + nonMatchSymbols, + "\\P{sc=Toto}" +); +testPropertyEscapes( + /^\P{sc=Toto}+$/u, + nonMatchSymbols, + "\\P{sc=Toto}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js new file mode 100644 index 0000000000..5b22589700 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Ugaritic.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script=Ugaritic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01039F + ], + ranges: [ + [0x010380, 0x01039D] + ] +}); +testPropertyEscapes( + /^\p{Script=Ugaritic}+$/u, + matchSymbols, + "\\p{Script=Ugaritic}" +); +testPropertyEscapes( + /^\p{Script=Ugar}+$/u, + matchSymbols, + "\\p{Script=Ugar}" +); +testPropertyEscapes( + /^\p{sc=Ugaritic}+$/u, + matchSymbols, + "\\p{sc=Ugaritic}" +); +testPropertyEscapes( + /^\p{sc=Ugar}+$/u, + matchSymbols, + "\\p{sc=Ugar}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01039E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01037F], + [0x0103A0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Ugaritic}+$/u, + nonMatchSymbols, + "\\P{Script=Ugaritic}" +); +testPropertyEscapes( + /^\P{Script=Ugar}+$/u, + nonMatchSymbols, + "\\P{Script=Ugar}" +); +testPropertyEscapes( + /^\P{sc=Ugaritic}+$/u, + nonMatchSymbols, + "\\P{sc=Ugaritic}" +); +testPropertyEscapes( + /^\P{sc=Ugar}+$/u, + nonMatchSymbols, + "\\P{sc=Ugar}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js new file mode 100644 index 0000000000..a6e75de0b0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Vai.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Vai` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A500, 0x00A62B] + ] +}); +testPropertyEscapes( + /^\p{Script=Vai}+$/u, + matchSymbols, + "\\p{Script=Vai}" +); +testPropertyEscapes( + /^\p{Script=Vaii}+$/u, + matchSymbols, + "\\p{Script=Vaii}" +); +testPropertyEscapes( + /^\p{sc=Vai}+$/u, + matchSymbols, + "\\p{sc=Vai}" +); +testPropertyEscapes( + /^\p{sc=Vaii}+$/u, + matchSymbols, + "\\p{sc=Vaii}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A4FF], + [0x00A62C, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Vai}+$/u, + nonMatchSymbols, + "\\P{Script=Vai}" +); +testPropertyEscapes( + /^\P{Script=Vaii}+$/u, + nonMatchSymbols, + "\\P{Script=Vaii}" +); +testPropertyEscapes( + /^\P{sc=Vai}+$/u, + nonMatchSymbols, + "\\P{sc=Vai}" +); +testPropertyEscapes( + /^\P{sc=Vaii}+$/u, + nonMatchSymbols, + "\\P{sc=Vaii}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js new file mode 100644 index 0000000000..1a676466dd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Vithkuqi.js @@ -0,0 +1,88 @@ +// Copyright 2022 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 for `Script=Vithkuqi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC] + ] +}); +testPropertyEscapes( + /^\p{Script=Vithkuqi}+$/u, + matchSymbols, + "\\p{Script=Vithkuqi}" +); +testPropertyEscapes( + /^\p{Script=Vith}+$/u, + matchSymbols, + "\\p{Script=Vith}" +); +testPropertyEscapes( + /^\p{sc=Vithkuqi}+$/u, + matchSymbols, + "\\p{sc=Vithkuqi}" +); +testPropertyEscapes( + /^\p{sc=Vith}+$/u, + matchSymbols, + "\\p{sc=Vith}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01056F], + [0x0105BD, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Vithkuqi}+$/u, + nonMatchSymbols, + "\\P{Script=Vithkuqi}" +); +testPropertyEscapes( + /^\P{Script=Vith}+$/u, + nonMatchSymbols, + "\\P{Script=Vith}" +); +testPropertyEscapes( + /^\P{sc=Vithkuqi}+$/u, + nonMatchSymbols, + "\\P{sc=Vithkuqi}" +); +testPropertyEscapes( + /^\P{sc=Vith}+$/u, + nonMatchSymbols, + "\\P{sc=Vith}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js new file mode 100644 index 0000000000..70e6910fef --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Wancho.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Wancho` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01E2FF + ], + ranges: [ + [0x01E2C0, 0x01E2F9] + ] +}); +testPropertyEscapes( + /^\p{Script=Wancho}+$/u, + matchSymbols, + "\\p{Script=Wancho}" +); +testPropertyEscapes( + /^\p{Script=Wcho}+$/u, + matchSymbols, + "\\p{Script=Wcho}" +); +testPropertyEscapes( + /^\p{sc=Wancho}+$/u, + matchSymbols, + "\\p{sc=Wancho}" +); +testPropertyEscapes( + /^\p{sc=Wcho}+$/u, + matchSymbols, + "\\p{sc=Wcho}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E2BF], + [0x01E2FA, 0x01E2FE], + [0x01E300, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Wancho}+$/u, + nonMatchSymbols, + "\\P{Script=Wancho}" +); +testPropertyEscapes( + /^\P{Script=Wcho}+$/u, + nonMatchSymbols, + "\\P{Script=Wcho}" +); +testPropertyEscapes( + /^\P{sc=Wancho}+$/u, + nonMatchSymbols, + "\\P{sc=Wancho}" +); +testPropertyEscapes( + /^\P{sc=Wcho}+$/u, + nonMatchSymbols, + "\\P{sc=Wcho}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js new file mode 100644 index 0000000000..346c428391 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Warang_Citi.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script=Warang_Citi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0118FF + ], + ranges: [ + [0x0118A0, 0x0118F2] + ] +}); +testPropertyEscapes( + /^\p{Script=Warang_Citi}+$/u, + matchSymbols, + "\\p{Script=Warang_Citi}" +); +testPropertyEscapes( + /^\p{Script=Wara}+$/u, + matchSymbols, + "\\p{Script=Wara}" +); +testPropertyEscapes( + /^\p{sc=Warang_Citi}+$/u, + matchSymbols, + "\\p{sc=Warang_Citi}" +); +testPropertyEscapes( + /^\p{sc=Wara}+$/u, + matchSymbols, + "\\p{sc=Wara}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01189F], + [0x0118F3, 0x0118FE], + [0x011900, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Warang_Citi}+$/u, + nonMatchSymbols, + "\\P{Script=Warang_Citi}" +); +testPropertyEscapes( + /^\P{Script=Wara}+$/u, + nonMatchSymbols, + "\\P{Script=Wara}" +); +testPropertyEscapes( + /^\P{sc=Warang_Citi}+$/u, + nonMatchSymbols, + "\\P{sc=Warang_Citi}" +); +testPropertyEscapes( + /^\P{sc=Wara}+$/u, + nonMatchSymbols, + "\\P{sc=Wara}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js new file mode 100644 index 0000000000..7462f9fc92 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Yezidi.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script=Yezidi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010E80, 0x010EA9], + [0x010EAB, 0x010EAD], + [0x010EB0, 0x010EB1] + ] +}); +testPropertyEscapes( + /^\p{Script=Yezidi}+$/u, + matchSymbols, + "\\p{Script=Yezidi}" +); +testPropertyEscapes( + /^\p{Script=Yezi}+$/u, + matchSymbols, + "\\p{Script=Yezi}" +); +testPropertyEscapes( + /^\p{sc=Yezidi}+$/u, + matchSymbols, + "\\p{sc=Yezidi}" +); +testPropertyEscapes( + /^\p{sc=Yezi}+$/u, + matchSymbols, + "\\p{sc=Yezi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x010EAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010E7F], + [0x010EAE, 0x010EAF], + [0x010EB2, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Yezidi}+$/u, + nonMatchSymbols, + "\\P{Script=Yezidi}" +); +testPropertyEscapes( + /^\P{Script=Yezi}+$/u, + nonMatchSymbols, + "\\P{Script=Yezi}" +); +testPropertyEscapes( + /^\P{sc=Yezidi}+$/u, + nonMatchSymbols, + "\\P{sc=Yezidi}" +); +testPropertyEscapes( + /^\P{sc=Yezi}+$/u, + nonMatchSymbols, + "\\P{sc=Yezi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js new file mode 100644 index 0000000000..f1b2009bc0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Yi.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script=Yi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A000, 0x00A48C], + [0x00A490, 0x00A4C6] + ] +}); +testPropertyEscapes( + /^\p{Script=Yi}+$/u, + matchSymbols, + "\\p{Script=Yi}" +); +testPropertyEscapes( + /^\p{Script=Yiii}+$/u, + matchSymbols, + "\\p{Script=Yiii}" +); +testPropertyEscapes( + /^\p{sc=Yi}+$/u, + matchSymbols, + "\\p{sc=Yi}" +); +testPropertyEscapes( + /^\p{sc=Yiii}+$/u, + matchSymbols, + "\\p{sc=Yiii}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x009FFF], + [0x00A48D, 0x00A48F], + [0x00A4C7, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Yi}+$/u, + nonMatchSymbols, + "\\P{Script=Yi}" +); +testPropertyEscapes( + /^\P{Script=Yiii}+$/u, + nonMatchSymbols, + "\\P{Script=Yiii}" +); +testPropertyEscapes( + /^\P{sc=Yi}+$/u, + nonMatchSymbols, + "\\P{sc=Yi}" +); +testPropertyEscapes( + /^\P{sc=Yiii}+$/u, + nonMatchSymbols, + "\\P{sc=Yiii}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js new file mode 100644 index 0000000000..7d02f1415a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_-_Zanabazar_Square.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script=Zanabazar_Square` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011A00, 0x011A47] + ] +}); +testPropertyEscapes( + /^\p{Script=Zanabazar_Square}+$/u, + matchSymbols, + "\\p{Script=Zanabazar_Square}" +); +testPropertyEscapes( + /^\p{Script=Zanb}+$/u, + matchSymbols, + "\\p{Script=Zanb}" +); +testPropertyEscapes( + /^\p{sc=Zanabazar_Square}+$/u, + matchSymbols, + "\\p{sc=Zanabazar_Square}" +); +testPropertyEscapes( + /^\p{sc=Zanb}+$/u, + matchSymbols, + "\\p{sc=Zanb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0119FF], + [0x011A48, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script=Zanabazar_Square}+$/u, + nonMatchSymbols, + "\\P{Script=Zanabazar_Square}" +); +testPropertyEscapes( + /^\P{Script=Zanb}+$/u, + nonMatchSymbols, + "\\P{Script=Zanb}" +); +testPropertyEscapes( + /^\P{sc=Zanabazar_Square}+$/u, + nonMatchSymbols, + "\\P{sc=Zanabazar_Square}" +); +testPropertyEscapes( + /^\P{sc=Zanb}+$/u, + nonMatchSymbols, + "\\P{sc=Zanb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js new file mode 100644 index 0000000000..d5ee47f816 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Adlam.js @@ -0,0 +1,82 @@ +// Copyright 2022 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 for `Script_Extensions=Adlam` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00061F, + 0x000640 + ], + ranges: [ + [0x01E900, 0x01E94B], + [0x01E950, 0x01E959], + [0x01E95E, 0x01E95F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Adlam}+$/u, + matchSymbols, + "\\p{Script_Extensions=Adlam}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Adlm}+$/u, + matchSymbols, + "\\p{Script_Extensions=Adlm}" +); +testPropertyEscapes( + /^\p{scx=Adlam}+$/u, + matchSymbols, + "\\p{scx=Adlam}" +); +testPropertyEscapes( + /^\p{scx=Adlm}+$/u, + matchSymbols, + "\\p{scx=Adlm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00061E], + [0x000620, 0x00063F], + [0x000641, 0x00DBFF], + [0x00E000, 0x01E8FF], + [0x01E94C, 0x01E94F], + [0x01E95A, 0x01E95D], + [0x01E960, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Adlam}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Adlam}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Adlm}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Adlm}" +); +testPropertyEscapes( + /^\P{scx=Adlam}+$/u, + nonMatchSymbols, + "\\P{scx=Adlam}" +); +testPropertyEscapes( + /^\P{scx=Adlm}+$/u, + nonMatchSymbols, + "\\P{scx=Adlm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js new file mode 100644 index 0000000000..bffff29411 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ahom.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Ahom` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011700, 0x01171A], + [0x01171D, 0x01172B], + [0x011730, 0x011746] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Ahom}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ahom}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Ahom}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ahom}" +); +testPropertyEscapes( + /^\p{scx=Ahom}+$/u, + matchSymbols, + "\\p{scx=Ahom}" +); +testPropertyEscapes( + /^\p{scx=Ahom}+$/u, + matchSymbols, + "\\p{scx=Ahom}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0116FF], + [0x01171B, 0x01171C], + [0x01172C, 0x01172F], + [0x011747, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Ahom}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ahom}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Ahom}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ahom}" +); +testPropertyEscapes( + /^\P{scx=Ahom}+$/u, + nonMatchSymbols, + "\\P{scx=Ahom}" +); +testPropertyEscapes( + /^\P{scx=Ahom}+$/u, + nonMatchSymbols, + "\\P{scx=Ahom}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js new file mode 100644 index 0000000000..5c941fe3e6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Anatolian_Hieroglyphs.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Anatolian_Hieroglyphs` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x014400, 0x014646] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Anatolian_Hieroglyphs}+$/u, + matchSymbols, + "\\p{Script_Extensions=Anatolian_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hluw}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hluw}" +); +testPropertyEscapes( + /^\p{scx=Anatolian_Hieroglyphs}+$/u, + matchSymbols, + "\\p{scx=Anatolian_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{scx=Hluw}+$/u, + matchSymbols, + "\\p{scx=Hluw}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0143FF], + [0x014647, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Anatolian_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Anatolian_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hluw}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hluw}" +); +testPropertyEscapes( + /^\P{scx=Anatolian_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{scx=Anatolian_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{scx=Hluw}+$/u, + nonMatchSymbols, + "\\P{scx=Hluw}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js new file mode 100644 index 0000000000..bf3ac399a9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Arabic.js @@ -0,0 +1,177 @@ +// Copyright 2022 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 for `Script_Extensions=Arabic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00FDCF, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x000600, 0x000604], + [0x000606, 0x0006DC], + [0x0006DE, 0x0006FF], + [0x000750, 0x00077F], + [0x000870, 0x00088E], + [0x000890, 0x000891], + [0x000898, 0x0008E1], + [0x0008E3, 0x0008FF], + [0x00FB50, 0x00FBC2], + [0x00FBD3, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDFF], + [0x00FE70, 0x00FE74], + [0x00FE76, 0x00FEFC], + [0x0102E0, 0x0102FB], + [0x010E60, 0x010E7E], + [0x010EFD, 0x010EFF], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01EEF0, 0x01EEF1] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Arabic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Arabic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Arab}+$/u, + matchSymbols, + "\\p{Script_Extensions=Arab}" +); +testPropertyEscapes( + /^\p{scx=Arabic}+$/u, + matchSymbols, + "\\p{scx=Arabic}" +); +testPropertyEscapes( + /^\p{scx=Arab}+$/u, + matchSymbols, + "\\p{scx=Arab}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000605, + 0x0006DD, + 0x00088F, + 0x0008E2, + 0x00FE75, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0005FF], + [0x000700, 0x00074F], + [0x000780, 0x00086F], + [0x000892, 0x000897], + [0x000900, 0x00DBFF], + [0x00E000, 0x00FB4F], + [0x00FBC3, 0x00FBD2], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDCE], + [0x00FDD0, 0x00FDEF], + [0x00FE00, 0x00FE6F], + [0x00FEFD, 0x0102DF], + [0x0102FC, 0x010E5F], + [0x010E7F, 0x010EFC], + [0x010F00, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01EEEF], + [0x01EEF2, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Arabic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Arabic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Arab}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Arab}" +); +testPropertyEscapes( + /^\P{scx=Arabic}+$/u, + nonMatchSymbols, + "\\P{scx=Arabic}" +); +testPropertyEscapes( + /^\P{scx=Arab}+$/u, + nonMatchSymbols, + "\\P{scx=Arab}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js new file mode 100644 index 0000000000..fcc3f26198 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Armenian.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script_Extensions=Armenian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000531, 0x000556], + [0x000559, 0x00058A], + [0x00058D, 0x00058F], + [0x00FB13, 0x00FB17] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Armenian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Armenian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Armn}+$/u, + matchSymbols, + "\\p{Script_Extensions=Armn}" +); +testPropertyEscapes( + /^\p{scx=Armenian}+$/u, + matchSymbols, + "\\p{scx=Armenian}" +); +testPropertyEscapes( + /^\p{scx=Armn}+$/u, + matchSymbols, + "\\p{scx=Armn}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000530], + [0x000557, 0x000558], + [0x00058B, 0x00058C], + [0x000590, 0x00DBFF], + [0x00E000, 0x00FB12], + [0x00FB18, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Armenian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Armenian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Armn}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Armn}" +); +testPropertyEscapes( + /^\P{scx=Armenian}+$/u, + nonMatchSymbols, + "\\P{scx=Armenian}" +); +testPropertyEscapes( + /^\P{scx=Armn}+$/u, + nonMatchSymbols, + "\\P{scx=Armn}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js new file mode 100644 index 0000000000..65d9cc606e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Avestan.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Avestan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010B00, 0x010B35], + [0x010B39, 0x010B3F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Avestan}+$/u, + matchSymbols, + "\\p{Script_Extensions=Avestan}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Avst}+$/u, + matchSymbols, + "\\p{Script_Extensions=Avst}" +); +testPropertyEscapes( + /^\p{scx=Avestan}+$/u, + matchSymbols, + "\\p{scx=Avestan}" +); +testPropertyEscapes( + /^\p{scx=Avst}+$/u, + matchSymbols, + "\\p{scx=Avst}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010AFF], + [0x010B36, 0x010B38], + [0x010B40, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Avestan}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Avestan}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Avst}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Avst}" +); +testPropertyEscapes( + /^\P{scx=Avestan}+$/u, + nonMatchSymbols, + "\\P{scx=Avestan}" +); +testPropertyEscapes( + /^\P{scx=Avst}+$/u, + nonMatchSymbols, + "\\P{scx=Avst}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js new file mode 100644 index 0000000000..efdc3dbfe6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Balinese.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Balinese` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001B00, 0x001B4C], + [0x001B50, 0x001B7E] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Balinese}+$/u, + matchSymbols, + "\\p{Script_Extensions=Balinese}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Bali}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bali}" +); +testPropertyEscapes( + /^\p{scx=Balinese}+$/u, + matchSymbols, + "\\p{scx=Balinese}" +); +testPropertyEscapes( + /^\p{scx=Bali}+$/u, + matchSymbols, + "\\p{scx=Bali}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001AFF], + [0x001B4D, 0x001B4F], + [0x001B7F, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Balinese}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Balinese}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Bali}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bali}" +); +testPropertyEscapes( + /^\P{scx=Balinese}+$/u, + nonMatchSymbols, + "\\P{scx=Balinese}" +); +testPropertyEscapes( + /^\P{scx=Bali}+$/u, + nonMatchSymbols, + "\\P{scx=Bali}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js new file mode 100644 index 0000000000..1db5899874 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bamum.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Bamum` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A6A0, 0x00A6F7], + [0x016800, 0x016A38] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Bamum}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bamum}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Bamu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bamu}" +); +testPropertyEscapes( + /^\p{scx=Bamum}+$/u, + matchSymbols, + "\\p{scx=Bamum}" +); +testPropertyEscapes( + /^\p{scx=Bamu}+$/u, + matchSymbols, + "\\p{scx=Bamu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A69F], + [0x00A6F8, 0x00DBFF], + [0x00E000, 0x0167FF], + [0x016A39, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Bamum}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bamum}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Bamu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bamu}" +); +testPropertyEscapes( + /^\P{scx=Bamum}+$/u, + nonMatchSymbols, + "\\P{scx=Bamum}" +); +testPropertyEscapes( + /^\P{scx=Bamu}+$/u, + nonMatchSymbols, + "\\P{scx=Bamu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js new file mode 100644 index 0000000000..b24f7091a1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bassa_Vah.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Bassa_Vah` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016AD0, 0x016AED], + [0x016AF0, 0x016AF5] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Bassa_Vah}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bassa_Vah}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Bass}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bass}" +); +testPropertyEscapes( + /^\p{scx=Bassa_Vah}+$/u, + matchSymbols, + "\\p{scx=Bassa_Vah}" +); +testPropertyEscapes( + /^\p{scx=Bass}+$/u, + matchSymbols, + "\\p{scx=Bass}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016ACF], + [0x016AEE, 0x016AEF], + [0x016AF6, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Bassa_Vah}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bassa_Vah}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Bass}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bass}" +); +testPropertyEscapes( + /^\P{scx=Bassa_Vah}+$/u, + nonMatchSymbols, + "\\P{scx=Bassa_Vah}" +); +testPropertyEscapes( + /^\P{scx=Bass}+$/u, + nonMatchSymbols, + "\\P{scx=Bass}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js new file mode 100644 index 0000000000..10a8d4c3e9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Batak.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Batak` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001BC0, 0x001BF3], + [0x001BFC, 0x001BFF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Batak}+$/u, + matchSymbols, + "\\p{Script_Extensions=Batak}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Batk}+$/u, + matchSymbols, + "\\p{Script_Extensions=Batk}" +); +testPropertyEscapes( + /^\p{scx=Batak}+$/u, + matchSymbols, + "\\p{scx=Batak}" +); +testPropertyEscapes( + /^\p{scx=Batk}+$/u, + matchSymbols, + "\\p{scx=Batk}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001BBF], + [0x001BF4, 0x001BFB], + [0x001C00, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Batak}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Batak}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Batk}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Batk}" +); +testPropertyEscapes( + /^\P{scx=Batak}+$/u, + nonMatchSymbols, + "\\P{scx=Batak}" +); +testPropertyEscapes( + /^\P{scx=Batk}+$/u, + nonMatchSymbols, + "\\P{scx=Batk}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js new file mode 100644 index 0000000000..bec6fa9d8b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bengali.js @@ -0,0 +1,125 @@ +// Copyright 2022 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 for `Script_Extensions=Bengali` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0009B2, + 0x0009D7, + 0x001CD0, + 0x001CD2, + 0x001CD8, + 0x001CE1, + 0x001CEA, + 0x001CED, + 0x001CF2, + 0x00A8F1 + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x000980, 0x000983], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009BC, 0x0009C4], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CE], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E3], + [0x0009E6, 0x0009FE], + [0x001CD5, 0x001CD6], + [0x001CF5, 0x001CF7] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Bengali}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bengali}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Beng}+$/u, + matchSymbols, + "\\p{Script_Extensions=Beng}" +); +testPropertyEscapes( + /^\p{scx=Bengali}+$/u, + matchSymbols, + "\\p{scx=Bengali}" +); +testPropertyEscapes( + /^\p{scx=Beng}+$/u, + matchSymbols, + "\\p{scx=Beng}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000984, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x001CD1, + 0x001CD7 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x00097F], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BB], + [0x0009C5, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CF, 0x0009D6], + [0x0009D8, 0x0009DB], + [0x0009E4, 0x0009E5], + [0x0009FF, 0x001CCF], + [0x001CD3, 0x001CD4], + [0x001CD9, 0x001CE0], + [0x001CE2, 0x001CE9], + [0x001CEB, 0x001CEC], + [0x001CEE, 0x001CF1], + [0x001CF3, 0x001CF4], + [0x001CF8, 0x00A8F0], + [0x00A8F2, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Bengali}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bengali}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Beng}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Beng}" +); +testPropertyEscapes( + /^\P{scx=Bengali}+$/u, + nonMatchSymbols, + "\\P{scx=Bengali}" +); +testPropertyEscapes( + /^\P{scx=Beng}+$/u, + nonMatchSymbols, + "\\P{scx=Beng}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js new file mode 100644 index 0000000000..b5cf844615 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bhaiksuki.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script_Extensions=Bhaiksuki` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011C00, 0x011C08], + [0x011C0A, 0x011C36], + [0x011C38, 0x011C45], + [0x011C50, 0x011C6C] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Bhaiksuki}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bhaiksuki}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Bhks}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bhks}" +); +testPropertyEscapes( + /^\p{scx=Bhaiksuki}+$/u, + matchSymbols, + "\\p{scx=Bhaiksuki}" +); +testPropertyEscapes( + /^\p{scx=Bhks}+$/u, + matchSymbols, + "\\p{scx=Bhks}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011C09, + 0x011C37 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011BFF], + [0x011C46, 0x011C4F], + [0x011C6D, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Bhaiksuki}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bhaiksuki}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Bhks}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bhks}" +); +testPropertyEscapes( + /^\P{scx=Bhaiksuki}+$/u, + nonMatchSymbols, + "\\P{scx=Bhaiksuki}" +); +testPropertyEscapes( + /^\P{scx=Bhks}+$/u, + nonMatchSymbols, + "\\P{scx=Bhks}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js new file mode 100644 index 0000000000..9157a84b65 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Bopomofo.js @@ -0,0 +1,97 @@ +// Copyright 2022 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 for `Script_Extensions=Bopomofo` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x003030, + 0x003037, + 0x0030FB + ], + ranges: [ + [0x0002EA, 0x0002EB], + [0x003001, 0x003003], + [0x003008, 0x003011], + [0x003013, 0x00301F], + [0x00302A, 0x00302D], + [0x003105, 0x00312F], + [0x0031A0, 0x0031BF], + [0x00FE45, 0x00FE46], + [0x00FF61, 0x00FF65] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Bopomofo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bopomofo}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Bopo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bopo}" +); +testPropertyEscapes( + /^\p{scx=Bopomofo}+$/u, + matchSymbols, + "\\p{scx=Bopomofo}" +); +testPropertyEscapes( + /^\p{scx=Bopo}+$/u, + matchSymbols, + "\\p{scx=Bopo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x003012 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0002E9], + [0x0002EC, 0x003000], + [0x003004, 0x003007], + [0x003020, 0x003029], + [0x00302E, 0x00302F], + [0x003031, 0x003036], + [0x003038, 0x0030FA], + [0x0030FC, 0x003104], + [0x003130, 0x00319F], + [0x0031C0, 0x00DBFF], + [0x00E000, 0x00FE44], + [0x00FE47, 0x00FF60], + [0x00FF66, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Bopomofo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bopomofo}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Bopo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bopo}" +); +testPropertyEscapes( + /^\P{scx=Bopomofo}+$/u, + nonMatchSymbols, + "\\P{scx=Bopomofo}" +); +testPropertyEscapes( + /^\P{scx=Bopo}+$/u, + nonMatchSymbols, + "\\P{scx=Bopo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js new file mode 100644 index 0000000000..e0893552d9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Brahmi.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Brahmi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01107F + ], + ranges: [ + [0x011000, 0x01104D], + [0x011052, 0x011075] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Brahmi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Brahmi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Brah}+$/u, + matchSymbols, + "\\p{Script_Extensions=Brah}" +); +testPropertyEscapes( + /^\p{scx=Brahmi}+$/u, + matchSymbols, + "\\p{scx=Brahmi}" +); +testPropertyEscapes( + /^\p{scx=Brah}+$/u, + matchSymbols, + "\\p{scx=Brah}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010FFF], + [0x01104E, 0x011051], + [0x011076, 0x01107E], + [0x011080, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Brahmi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Brahmi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Brah}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Brah}" +); +testPropertyEscapes( + /^\P{scx=Brahmi}+$/u, + nonMatchSymbols, + "\\P{scx=Brahmi}" +); +testPropertyEscapes( + /^\P{scx=Brah}+$/u, + nonMatchSymbols, + "\\P{scx=Brah}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js new file mode 100644 index 0000000000..7a74206929 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Braille.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Braille` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x002800, 0x0028FF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Braille}+$/u, + matchSymbols, + "\\p{Script_Extensions=Braille}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Brai}+$/u, + matchSymbols, + "\\p{Script_Extensions=Brai}" +); +testPropertyEscapes( + /^\p{scx=Braille}+$/u, + matchSymbols, + "\\p{scx=Braille}" +); +testPropertyEscapes( + /^\p{scx=Brai}+$/u, + matchSymbols, + "\\p{scx=Brai}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0027FF], + [0x002900, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Braille}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Braille}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Brai}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Brai}" +); +testPropertyEscapes( + /^\P{scx=Braille}+$/u, + nonMatchSymbols, + "\\P{scx=Braille}" +); +testPropertyEscapes( + /^\P{scx=Brai}+$/u, + nonMatchSymbols, + "\\P{scx=Brai}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js new file mode 100644 index 0000000000..43b60a6373 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buginese.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Buginese` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00A9CF + ], + ranges: [ + [0x001A00, 0x001A1B], + [0x001A1E, 0x001A1F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Buginese}+$/u, + matchSymbols, + "\\p{Script_Extensions=Buginese}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Bugi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Bugi}" +); +testPropertyEscapes( + /^\p{scx=Buginese}+$/u, + matchSymbols, + "\\p{scx=Buginese}" +); +testPropertyEscapes( + /^\p{scx=Bugi}+$/u, + matchSymbols, + "\\p{scx=Bugi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0019FF], + [0x001A1C, 0x001A1D], + [0x001A20, 0x00A9CE], + [0x00A9D0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Buginese}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Buginese}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Bugi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Bugi}" +); +testPropertyEscapes( + /^\P{scx=Buginese}+$/u, + nonMatchSymbols, + "\\P{scx=Buginese}" +); +testPropertyEscapes( + /^\P{scx=Bugi}+$/u, + nonMatchSymbols, + "\\P{scx=Bugi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js new file mode 100644 index 0000000000..6d3323c6d2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Buhid.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Buhid` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001735, 0x001736], + [0x001740, 0x001753] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Buhid}+$/u, + matchSymbols, + "\\p{Script_Extensions=Buhid}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Buhd}+$/u, + matchSymbols, + "\\p{Script_Extensions=Buhd}" +); +testPropertyEscapes( + /^\p{scx=Buhid}+$/u, + matchSymbols, + "\\p{scx=Buhid}" +); +testPropertyEscapes( + /^\p{scx=Buhd}+$/u, + matchSymbols, + "\\p{scx=Buhd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001734], + [0x001737, 0x00173F], + [0x001754, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Buhid}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Buhid}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Buhd}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Buhd}" +); +testPropertyEscapes( + /^\P{scx=Buhid}+$/u, + nonMatchSymbols, + "\\P{scx=Buhid}" +); +testPropertyEscapes( + /^\P{scx=Buhd}+$/u, + nonMatchSymbols, + "\\P{scx=Buhd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js new file mode 100644 index 0000000000..3c8ebedf9e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Canadian_Aboriginal.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Canadian_Aboriginal` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001400, 0x00167F], + [0x0018B0, 0x0018F5], + [0x011AB0, 0x011ABF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Canadian_Aboriginal}+$/u, + matchSymbols, + "\\p{Script_Extensions=Canadian_Aboriginal}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Cans}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cans}" +); +testPropertyEscapes( + /^\p{scx=Canadian_Aboriginal}+$/u, + matchSymbols, + "\\p{scx=Canadian_Aboriginal}" +); +testPropertyEscapes( + /^\p{scx=Cans}+$/u, + matchSymbols, + "\\p{scx=Cans}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0013FF], + [0x001680, 0x0018AF], + [0x0018F6, 0x00DBFF], + [0x00E000, 0x011AAF], + [0x011AC0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Canadian_Aboriginal}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Canadian_Aboriginal}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Cans}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cans}" +); +testPropertyEscapes( + /^\P{scx=Canadian_Aboriginal}+$/u, + nonMatchSymbols, + "\\P{scx=Canadian_Aboriginal}" +); +testPropertyEscapes( + /^\P{scx=Cans}+$/u, + nonMatchSymbols, + "\\P{scx=Cans}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js new file mode 100644 index 0000000000..96b964b6ae --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Carian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Carian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0102A0, 0x0102D0] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Carian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Carian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Cari}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cari}" +); +testPropertyEscapes( + /^\p{scx=Carian}+$/u, + matchSymbols, + "\\p{scx=Carian}" +); +testPropertyEscapes( + /^\p{scx=Cari}+$/u, + matchSymbols, + "\\p{scx=Cari}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01029F], + [0x0102D1, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Carian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Carian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Cari}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cari}" +); +testPropertyEscapes( + /^\P{scx=Carian}+$/u, + nonMatchSymbols, + "\\P{scx=Carian}" +); +testPropertyEscapes( + /^\P{scx=Cari}+$/u, + nonMatchSymbols, + "\\P{scx=Cari}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js new file mode 100644 index 0000000000..f7aded1a75 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Caucasian_Albanian.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Caucasian_Albanian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01056F + ], + ranges: [ + [0x010530, 0x010563] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Caucasian_Albanian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Caucasian_Albanian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Aghb}+$/u, + matchSymbols, + "\\p{Script_Extensions=Aghb}" +); +testPropertyEscapes( + /^\p{scx=Caucasian_Albanian}+$/u, + matchSymbols, + "\\p{scx=Caucasian_Albanian}" +); +testPropertyEscapes( + /^\p{scx=Aghb}+$/u, + matchSymbols, + "\\p{scx=Aghb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01052F], + [0x010564, 0x01056E], + [0x010570, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Caucasian_Albanian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Caucasian_Albanian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Aghb}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Aghb}" +); +testPropertyEscapes( + /^\P{scx=Caucasian_Albanian}+$/u, + nonMatchSymbols, + "\\P{scx=Caucasian_Albanian}" +); +testPropertyEscapes( + /^\P{scx=Aghb}+$/u, + nonMatchSymbols, + "\\P{scx=Aghb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js new file mode 100644 index 0000000000..ccdabfe697 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chakma.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script_Extensions=Chakma` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0009E6, 0x0009EF], + [0x001040, 0x001049], + [0x011100, 0x011134], + [0x011136, 0x011147] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Chakma}+$/u, + matchSymbols, + "\\p{Script_Extensions=Chakma}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Cakm}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cakm}" +); +testPropertyEscapes( + /^\p{scx=Chakma}+$/u, + matchSymbols, + "\\p{scx=Chakma}" +); +testPropertyEscapes( + /^\p{scx=Cakm}+$/u, + matchSymbols, + "\\p{scx=Cakm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011135 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0009E5], + [0x0009F0, 0x00103F], + [0x00104A, 0x00DBFF], + [0x00E000, 0x0110FF], + [0x011148, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Chakma}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Chakma}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Cakm}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cakm}" +); +testPropertyEscapes( + /^\P{scx=Chakma}+$/u, + nonMatchSymbols, + "\\P{scx=Chakma}" +); +testPropertyEscapes( + /^\P{scx=Cakm}+$/u, + nonMatchSymbols, + "\\P{scx=Cakm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js new file mode 100644 index 0000000000..87a9dc62f5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cham.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script_Extensions=Cham` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00AA00, 0x00AA36], + [0x00AA40, 0x00AA4D], + [0x00AA50, 0x00AA59], + [0x00AA5C, 0x00AA5F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Cham}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cham}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Cham}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cham}" +); +testPropertyEscapes( + /^\p{scx=Cham}+$/u, + matchSymbols, + "\\p{scx=Cham}" +); +testPropertyEscapes( + /^\p{scx=Cham}+$/u, + matchSymbols, + "\\p{scx=Cham}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A9FF], + [0x00AA37, 0x00AA3F], + [0x00AA4E, 0x00AA4F], + [0x00AA5A, 0x00AA5B], + [0x00AA60, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Cham}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cham}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Cham}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cham}" +); +testPropertyEscapes( + /^\P{scx=Cham}+$/u, + nonMatchSymbols, + "\\P{scx=Cham}" +); +testPropertyEscapes( + /^\P{scx=Cham}+$/u, + nonMatchSymbols, + "\\P{scx=Cham}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js new file mode 100644 index 0000000000..e0408cb8cc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cherokee.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Cherokee` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x00AB70, 0x00ABBF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Cherokee}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cherokee}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Cher}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cher}" +); +testPropertyEscapes( + /^\p{scx=Cherokee}+$/u, + matchSymbols, + "\\p{scx=Cherokee}" +); +testPropertyEscapes( + /^\p{scx=Cher}+$/u, + matchSymbols, + "\\p{scx=Cher}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x00AB6F], + [0x00ABC0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Cherokee}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cherokee}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Cher}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cher}" +); +testPropertyEscapes( + /^\P{scx=Cherokee}+$/u, + nonMatchSymbols, + "\\P{scx=Cherokee}" +); +testPropertyEscapes( + /^\P{scx=Cher}+$/u, + nonMatchSymbols, + "\\P{scx=Cher}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js new file mode 100644 index 0000000000..88153aa735 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Chorasmian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Chorasmian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010FB0, 0x010FCB] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Chorasmian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Chorasmian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Chrs}+$/u, + matchSymbols, + "\\p{Script_Extensions=Chrs}" +); +testPropertyEscapes( + /^\p{scx=Chorasmian}+$/u, + matchSymbols, + "\\p{scx=Chorasmian}" +); +testPropertyEscapes( + /^\p{scx=Chrs}+$/u, + matchSymbols, + "\\p{scx=Chrs}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010FAF], + [0x010FCC, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Chorasmian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Chorasmian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Chrs}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Chrs}" +); +testPropertyEscapes( + /^\P{scx=Chorasmian}+$/u, + nonMatchSymbols, + "\\P{scx=Chorasmian}" +); +testPropertyEscapes( + /^\P{scx=Chrs}+$/u, + nonMatchSymbols, + "\\P{scx=Chrs}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js new file mode 100644 index 0000000000..a20832e2b8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Common.js @@ -0,0 +1,366 @@ +// Copyright 2022 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 for `Script_Extensions=Common` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x000374, + 0x00037E, + 0x000385, + 0x000387, + 0x000605, + 0x0006DD, + 0x0008E2, + 0x000E3F, + 0x003000, + 0x003004, + 0x003012, + 0x003020, + 0x003036, + 0x00327F, + 0x0033FF, + 0x00AB5B, + 0x00FEFF, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01F7F0, + 0x0E0001 + ], + ranges: [ + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002B9, 0x0002DF], + [0x0002E5, 0x0002E9], + [0x0002EC, 0x0002FF], + [0x000FD5, 0x000FD8], + [0x0016EB, 0x0016ED], + [0x002000, 0x00200B], + [0x00200E, 0x00202E], + [0x002030, 0x002064], + [0x002066, 0x002070], + [0x002074, 0x00207E], + [0x002080, 0x00208E], + [0x0020A0, 0x0020C0], + [0x002100, 0x002125], + [0x002127, 0x002129], + [0x00212C, 0x002131], + [0x002133, 0x00214D], + [0x00214F, 0x00215F], + [0x002189, 0x00218B], + [0x002190, 0x002426], + [0x002440, 0x00244A], + [0x002460, 0x0027FF], + [0x002900, 0x002B73], + [0x002B76, 0x002B95], + [0x002B97, 0x002BFF], + [0x002E00, 0x002E42], + [0x002E44, 0x002E5D], + [0x002FF0, 0x002FFB], + [0x003248, 0x00325F], + [0x0032B1, 0x0032BF], + [0x0032CC, 0x0032CF], + [0x003371, 0x00337A], + [0x003380, 0x0033DF], + [0x004DC0, 0x004DFF], + [0x00A708, 0x00A721], + [0x00A788, 0x00A78A], + [0x00AB6A, 0x00AB6B], + [0x00FE10, 0x00FE19], + [0x00FE30, 0x00FE44], + [0x00FE47, 0x00FE52], + [0x00FE54, 0x00FE66], + [0x00FE68, 0x00FE6B], + [0x00FF01, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x00FF60], + [0x00FFE0, 0x00FFE6], + [0x00FFE8, 0x00FFEE], + [0x00FFF9, 0x00FFFD], + [0x010190, 0x01019C], + [0x0101D0, 0x0101FC], + [0x01CF50, 0x01CFC3], + [0x01D000, 0x01D0F5], + [0x01D100, 0x01D126], + [0x01D129, 0x01D166], + [0x01D16A, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D1EA], + [0x01D2C0, 0x01D2D3], + [0x01D2E0, 0x01D2F3], + [0x01D300, 0x01D356], + [0x01D372, 0x01D378], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D7CB], + [0x01D7CE, 0x01D7FF], + [0x01EC71, 0x01ECB4], + [0x01ED01, 0x01ED3D], + [0x01F000, 0x01F02B], + [0x01F030, 0x01F093], + [0x01F0A0, 0x01F0AE], + [0x01F0B1, 0x01F0BF], + [0x01F0C1, 0x01F0CF], + [0x01F0D1, 0x01F0F5], + [0x01F100, 0x01F1AD], + [0x01F1E6, 0x01F1FF], + [0x01F201, 0x01F202], + [0x01F210, 0x01F23B], + [0x01F240, 0x01F248], + [0x01F260, 0x01F265], + [0x01F300, 0x01F6D7], + [0x01F6DC, 0x01F6EC], + [0x01F6F0, 0x01F6FC], + [0x01F700, 0x01F776], + [0x01F77B, 0x01F7D9], + [0x01F7E0, 0x01F7EB], + [0x01F800, 0x01F80B], + [0x01F810, 0x01F847], + [0x01F850, 0x01F859], + [0x01F860, 0x01F887], + [0x01F890, 0x01F8AD], + [0x01F8B0, 0x01F8B1], + [0x01F900, 0x01FA53], + [0x01FA60, 0x01FA6D], + [0x01FA70, 0x01FA7C], + [0x01FA80, 0x01FA88], + [0x01FA90, 0x01FABD], + [0x01FABF, 0x01FAC5], + [0x01FACE, 0x01FADB], + [0x01FAE0, 0x01FAE8], + [0x01FAF0, 0x01FAF8], + [0x01FB00, 0x01FB92], + [0x01FB94, 0x01FBCA], + [0x01FBF0, 0x01FBF9], + [0x0E0020, 0x0E007F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Common}+$/u, + matchSymbols, + "\\p{Script_Extensions=Common}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Zyyy}+$/u, + matchSymbols, + "\\p{Script_Extensions=Zyyy}" +); +testPropertyEscapes( + /^\p{scx=Common}+$/u, + matchSymbols, + "\\p{scx=Common}" +); +testPropertyEscapes( + /^\p{scx=Zyyy}+$/u, + matchSymbols, + "\\p{scx=Zyyy}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000BA, + 0x000386, + 0x00202F, + 0x002065, + 0x00207F, + 0x002126, + 0x002132, + 0x00214E, + 0x002B96, + 0x002E43, + 0x00FE53, + 0x00FE67, + 0x00FF00, + 0x00FFE7, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01F0C0, + 0x01F0D0, + 0x01F200, + 0x01FABE, + 0x01FB93 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002B8], + [0x0002E0, 0x0002E4], + [0x0002EA, 0x0002EB], + [0x000300, 0x000373], + [0x000375, 0x00037D], + [0x00037F, 0x000384], + [0x000388, 0x000604], + [0x000606, 0x0006DC], + [0x0006DE, 0x0008E1], + [0x0008E3, 0x000E3E], + [0x000E40, 0x000FD4], + [0x000FD9, 0x0016EA], + [0x0016EE, 0x001FFF], + [0x00200C, 0x00200D], + [0x002071, 0x002073], + [0x00208F, 0x00209F], + [0x0020C1, 0x0020FF], + [0x00212A, 0x00212B], + [0x002160, 0x002188], + [0x00218C, 0x00218F], + [0x002427, 0x00243F], + [0x00244B, 0x00245F], + [0x002800, 0x0028FF], + [0x002B74, 0x002B75], + [0x002C00, 0x002DFF], + [0x002E5E, 0x002FEF], + [0x002FFC, 0x002FFF], + [0x003001, 0x003003], + [0x003005, 0x003011], + [0x003013, 0x00301F], + [0x003021, 0x003035], + [0x003037, 0x003247], + [0x003260, 0x00327E], + [0x003280, 0x0032B0], + [0x0032C0, 0x0032CB], + [0x0032D0, 0x003370], + [0x00337B, 0x00337F], + [0x0033E0, 0x0033FE], + [0x003400, 0x004DBF], + [0x004E00, 0x00A707], + [0x00A722, 0x00A787], + [0x00A78B, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB6C, 0x00DBFF], + [0x00E000, 0x00FE0F], + [0x00FE1A, 0x00FE2F], + [0x00FE45, 0x00FE46], + [0x00FE6C, 0x00FEFE], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x00FF61, 0x00FFDF], + [0x00FFEF, 0x00FFF8], + [0x00FFFE, 0x01018F], + [0x01019D, 0x0101CF], + [0x0101FD, 0x01CF4F], + [0x01CFC4, 0x01CFFF], + [0x01D0F6, 0x01D0FF], + [0x01D127, 0x01D128], + [0x01D167, 0x01D169], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D1EB, 0x01D2BF], + [0x01D2D4, 0x01D2DF], + [0x01D2F4, 0x01D2FF], + [0x01D357, 0x01D371], + [0x01D379, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01D800, 0x01EC70], + [0x01ECB5, 0x01ED00], + [0x01ED3E, 0x01EFFF], + [0x01F02C, 0x01F02F], + [0x01F094, 0x01F09F], + [0x01F0AF, 0x01F0B0], + [0x01F0F6, 0x01F0FF], + [0x01F1AE, 0x01F1E5], + [0x01F203, 0x01F20F], + [0x01F23C, 0x01F23F], + [0x01F249, 0x01F25F], + [0x01F266, 0x01F2FF], + [0x01F6D8, 0x01F6DB], + [0x01F6ED, 0x01F6EF], + [0x01F6FD, 0x01F6FF], + [0x01F777, 0x01F77A], + [0x01F7DA, 0x01F7DF], + [0x01F7EC, 0x01F7EF], + [0x01F7F1, 0x01F7FF], + [0x01F80C, 0x01F80F], + [0x01F848, 0x01F84F], + [0x01F85A, 0x01F85F], + [0x01F888, 0x01F88F], + [0x01F8AE, 0x01F8AF], + [0x01F8B2, 0x01F8FF], + [0x01FA54, 0x01FA5F], + [0x01FA6E, 0x01FA6F], + [0x01FA7D, 0x01FA7F], + [0x01FA89, 0x01FA8F], + [0x01FAC6, 0x01FACD], + [0x01FADC, 0x01FADF], + [0x01FAE9, 0x01FAEF], + [0x01FAF9, 0x01FAFF], + [0x01FBCB, 0x01FBEF], + [0x01FBFA, 0x0E0000], + [0x0E0002, 0x0E001F], + [0x0E0080, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Common}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Common}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Zyyy}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Zyyy}" +); +testPropertyEscapes( + /^\P{scx=Common}+$/u, + nonMatchSymbols, + "\\P{scx=Common}" +); +testPropertyEscapes( + /^\P{scx=Zyyy}+$/u, + nonMatchSymbols, + "\\P{scx=Zyyy}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js new file mode 100644 index 0000000000..dc1719bfa5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Coptic.js @@ -0,0 +1,99 @@ +// Copyright 2022 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 for `Script_Extensions=Coptic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0003E2, 0x0003EF], + [0x002C80, 0x002CF3], + [0x002CF9, 0x002CFF], + [0x0102E0, 0x0102FB] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Coptic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Coptic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Copt}+$/u, + matchSymbols, + "\\p{Script_Extensions=Copt}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Qaac}+$/u, + matchSymbols, + "\\p{Script_Extensions=Qaac}" +); +testPropertyEscapes( + /^\p{scx=Coptic}+$/u, + matchSymbols, + "\\p{scx=Coptic}" +); +testPropertyEscapes( + /^\p{scx=Copt}+$/u, + matchSymbols, + "\\p{scx=Copt}" +); +testPropertyEscapes( + /^\p{scx=Qaac}+$/u, + matchSymbols, + "\\p{scx=Qaac}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0003E1], + [0x0003F0, 0x002C7F], + [0x002CF4, 0x002CF8], + [0x002D00, 0x00DBFF], + [0x00E000, 0x0102DF], + [0x0102FC, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Coptic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Coptic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Copt}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Copt}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Qaac}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Qaac}" +); +testPropertyEscapes( + /^\P{scx=Coptic}+$/u, + nonMatchSymbols, + "\\P{scx=Coptic}" +); +testPropertyEscapes( + /^\P{scx=Copt}+$/u, + nonMatchSymbols, + "\\P{scx=Copt}" +); +testPropertyEscapes( + /^\P{scx=Qaac}+$/u, + nonMatchSymbols, + "\\P{scx=Qaac}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js new file mode 100644 index 0000000000..dee5cea487 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cuneiform.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script_Extensions=Cuneiform` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x012000, 0x012399], + [0x012400, 0x01246E], + [0x012470, 0x012474], + [0x012480, 0x012543] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Cuneiform}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cuneiform}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Xsux}+$/u, + matchSymbols, + "\\p{Script_Extensions=Xsux}" +); +testPropertyEscapes( + /^\p{scx=Cuneiform}+$/u, + matchSymbols, + "\\p{scx=Cuneiform}" +); +testPropertyEscapes( + /^\p{scx=Xsux}+$/u, + matchSymbols, + "\\p{scx=Xsux}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01246F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011FFF], + [0x01239A, 0x0123FF], + [0x012475, 0x01247F], + [0x012544, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Cuneiform}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cuneiform}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Xsux}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Xsux}" +); +testPropertyEscapes( + /^\P{scx=Cuneiform}+$/u, + nonMatchSymbols, + "\\P{scx=Cuneiform}" +); +testPropertyEscapes( + /^\P{scx=Xsux}+$/u, + nonMatchSymbols, + "\\P{scx=Xsux}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js new file mode 100644 index 0000000000..69fd714254 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypriot.js @@ -0,0 +1,91 @@ +// Copyright 2022 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 for `Script_Extensions=Cypriot` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x010808, + 0x01083C, + 0x01083F + ], + ranges: [ + [0x010100, 0x010102], + [0x010107, 0x010133], + [0x010137, 0x01013F], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Cypriot}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cypriot}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Cprt}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cprt}" +); +testPropertyEscapes( + /^\p{scx=Cypriot}+$/u, + matchSymbols, + "\\p{scx=Cypriot}" +); +testPropertyEscapes( + /^\p{scx=Cprt}+$/u, + matchSymbols, + "\\p{scx=Cprt}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x010809, + 0x010836 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0100FF], + [0x010103, 0x010106], + [0x010134, 0x010136], + [0x010140, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x010840, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Cypriot}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cypriot}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Cprt}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cprt}" +); +testPropertyEscapes( + /^\P{scx=Cypriot}+$/u, + nonMatchSymbols, + "\\P{scx=Cypriot}" +); +testPropertyEscapes( + /^\P{scx=Cprt}+$/u, + nonMatchSymbols, + "\\P{scx=Cprt}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js new file mode 100644 index 0000000000..d4cca6be76 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cypro_Minoan.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Cypro_Minoan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010100, 0x010101], + [0x012F90, 0x012FF2] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Cypro_Minoan}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cypro_Minoan}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Cpmn}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cpmn}" +); +testPropertyEscapes( + /^\p{scx=Cypro_Minoan}+$/u, + matchSymbols, + "\\p{scx=Cypro_Minoan}" +); +testPropertyEscapes( + /^\p{scx=Cpmn}+$/u, + matchSymbols, + "\\p{scx=Cpmn}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0100FF], + [0x010102, 0x012F8F], + [0x012FF3, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Cypro_Minoan}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cypro_Minoan}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Cpmn}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cpmn}" +); +testPropertyEscapes( + /^\P{scx=Cypro_Minoan}+$/u, + nonMatchSymbols, + "\\P{scx=Cypro_Minoan}" +); +testPropertyEscapes( + /^\P{scx=Cpmn}+$/u, + nonMatchSymbols, + "\\P{scx=Cpmn}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js new file mode 100644 index 0000000000..e478cabcae --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Cyrillic.js @@ -0,0 +1,94 @@ +// Copyright 2022 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 for `Script_Extensions=Cyrillic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001D2B, + 0x001D78, + 0x001DF8, + 0x002E43, + 0x01E08F + ], + ranges: [ + [0x000400, 0x00052F], + [0x001C80, 0x001C88], + [0x002DE0, 0x002DFF], + [0x00A640, 0x00A69F], + [0x00FE2E, 0x00FE2F], + [0x01E030, 0x01E06D] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Cyrillic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cyrillic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Cyrl}+$/u, + matchSymbols, + "\\p{Script_Extensions=Cyrl}" +); +testPropertyEscapes( + /^\p{scx=Cyrillic}+$/u, + matchSymbols, + "\\p{scx=Cyrillic}" +); +testPropertyEscapes( + /^\p{scx=Cyrl}+$/u, + matchSymbols, + "\\p{scx=Cyrl}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0003FF], + [0x000530, 0x001C7F], + [0x001C89, 0x001D2A], + [0x001D2C, 0x001D77], + [0x001D79, 0x001DF7], + [0x001DF9, 0x002DDF], + [0x002E00, 0x002E42], + [0x002E44, 0x00A63F], + [0x00A6A0, 0x00DBFF], + [0x00E000, 0x00FE2D], + [0x00FE30, 0x01E02F], + [0x01E06E, 0x01E08E], + [0x01E090, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Cyrillic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cyrillic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Cyrl}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Cyrl}" +); +testPropertyEscapes( + /^\P{scx=Cyrillic}+$/u, + nonMatchSymbols, + "\\P{scx=Cyrillic}" +); +testPropertyEscapes( + /^\P{scx=Cyrl}+$/u, + nonMatchSymbols, + "\\P{scx=Cyrl}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js new file mode 100644 index 0000000000..3c66f307a4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Deseret.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Deseret` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010400, 0x01044F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Deseret}+$/u, + matchSymbols, + "\\p{Script_Extensions=Deseret}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Dsrt}+$/u, + matchSymbols, + "\\p{Script_Extensions=Dsrt}" +); +testPropertyEscapes( + /^\p{scx=Deseret}+$/u, + matchSymbols, + "\\p{scx=Deseret}" +); +testPropertyEscapes( + /^\p{scx=Dsrt}+$/u, + matchSymbols, + "\\p{scx=Dsrt}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0103FF], + [0x010450, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Deseret}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Deseret}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Dsrt}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Dsrt}" +); +testPropertyEscapes( + /^\P{scx=Deseret}+$/u, + nonMatchSymbols, + "\\P{scx=Deseret}" +); +testPropertyEscapes( + /^\P{scx=Dsrt}+$/u, + nonMatchSymbols, + "\\P{scx=Dsrt}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js new file mode 100644 index 0000000000..b4edfd66ab --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Devanagari.js @@ -0,0 +1,89 @@ +// Copyright 2022 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 for `Script_Extensions=Devanagari` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0020F0 + ], + ranges: [ + [0x000900, 0x000952], + [0x000955, 0x00097F], + [0x001CD0, 0x001CF6], + [0x001CF8, 0x001CF9], + [0x00A830, 0x00A839], + [0x00A8E0, 0x00A8FF], + [0x011B00, 0x011B09] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Devanagari}+$/u, + matchSymbols, + "\\p{Script_Extensions=Devanagari}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Deva}+$/u, + matchSymbols, + "\\p{Script_Extensions=Deva}" +); +testPropertyEscapes( + /^\p{scx=Devanagari}+$/u, + matchSymbols, + "\\p{scx=Devanagari}" +); +testPropertyEscapes( + /^\p{scx=Deva}+$/u, + matchSymbols, + "\\p{scx=Deva}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001CF7 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0008FF], + [0x000953, 0x000954], + [0x000980, 0x001CCF], + [0x001CFA, 0x0020EF], + [0x0020F1, 0x00A82F], + [0x00A83A, 0x00A8DF], + [0x00A900, 0x00DBFF], + [0x00E000, 0x011AFF], + [0x011B0A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Devanagari}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Devanagari}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Deva}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Deva}" +); +testPropertyEscapes( + /^\P{scx=Devanagari}+$/u, + nonMatchSymbols, + "\\P{scx=Devanagari}" +); +testPropertyEscapes( + /^\P{scx=Deva}+$/u, + nonMatchSymbols, + "\\P{scx=Deva}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js new file mode 100644 index 0000000000..cda1c55cbd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dives_Akuru.js @@ -0,0 +1,89 @@ +// Copyright 2022 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 for `Script_Extensions=Dives_Akuru` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x011909 + ], + ranges: [ + [0x011900, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x011935], + [0x011937, 0x011938], + [0x01193B, 0x011946], + [0x011950, 0x011959] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Dives_Akuru}+$/u, + matchSymbols, + "\\p{Script_Extensions=Dives_Akuru}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Diak}+$/u, + matchSymbols, + "\\p{Script_Extensions=Diak}" +); +testPropertyEscapes( + /^\p{scx=Dives_Akuru}+$/u, + matchSymbols, + "\\p{scx=Dives_Akuru}" +); +testPropertyEscapes( + /^\p{scx=Diak}+$/u, + matchSymbols, + "\\p{scx=Diak}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011914, + 0x011917, + 0x011936 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0118FF], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011939, 0x01193A], + [0x011947, 0x01194F], + [0x01195A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Dives_Akuru}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Dives_Akuru}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Diak}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Diak}" +); +testPropertyEscapes( + /^\P{scx=Dives_Akuru}+$/u, + nonMatchSymbols, + "\\P{scx=Dives_Akuru}" +); +testPropertyEscapes( + /^\P{scx=Diak}+$/u, + nonMatchSymbols, + "\\P{scx=Diak}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js new file mode 100644 index 0000000000..b4e0dee805 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Dogra.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Dogra` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000964, 0x00096F], + [0x00A830, 0x00A839], + [0x011800, 0x01183B] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Dogra}+$/u, + matchSymbols, + "\\p{Script_Extensions=Dogra}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Dogr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Dogr}" +); +testPropertyEscapes( + /^\p{scx=Dogra}+$/u, + matchSymbols, + "\\p{scx=Dogra}" +); +testPropertyEscapes( + /^\p{scx=Dogr}+$/u, + matchSymbols, + "\\p{scx=Dogr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000970, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x0117FF], + [0x01183C, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Dogra}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Dogra}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Dogr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Dogr}" +); +testPropertyEscapes( + /^\P{scx=Dogra}+$/u, + nonMatchSymbols, + "\\P{scx=Dogra}" +); +testPropertyEscapes( + /^\P{scx=Dogr}+$/u, + nonMatchSymbols, + "\\P{scx=Dogr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js new file mode 100644 index 0000000000..7b07e7075b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Duployan.js @@ -0,0 +1,81 @@ +// Copyright 2022 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 for `Script_Extensions=Duployan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01BC9C, 0x01BCA3] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Duployan}+$/u, + matchSymbols, + "\\p{Script_Extensions=Duployan}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Dupl}+$/u, + matchSymbols, + "\\p{Script_Extensions=Dupl}" +); +testPropertyEscapes( + /^\p{scx=Duployan}+$/u, + matchSymbols, + "\\p{scx=Duployan}" +); +testPropertyEscapes( + /^\p{scx=Dupl}+$/u, + matchSymbols, + "\\p{scx=Dupl}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01BC9B], + [0x01BCA4, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Duployan}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Duployan}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Dupl}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Dupl}" +); +testPropertyEscapes( + /^\P{scx=Duployan}+$/u, + nonMatchSymbols, + "\\P{scx=Duployan}" +); +testPropertyEscapes( + /^\P{scx=Dupl}+$/u, + nonMatchSymbols, + "\\P{scx=Dupl}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js new file mode 100644 index 0000000000..52fa6d158e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Egyptian_Hieroglyphs.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Egyptian_Hieroglyphs` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x013000, 0x013455] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Egyptian_Hieroglyphs}+$/u, + matchSymbols, + "\\p{Script_Extensions=Egyptian_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Egyp}+$/u, + matchSymbols, + "\\p{Script_Extensions=Egyp}" +); +testPropertyEscapes( + /^\p{scx=Egyptian_Hieroglyphs}+$/u, + matchSymbols, + "\\p{scx=Egyptian_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{scx=Egyp}+$/u, + matchSymbols, + "\\p{scx=Egyp}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x012FFF], + [0x013456, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Egyptian_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Egyptian_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Egyp}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Egyp}" +); +testPropertyEscapes( + /^\P{scx=Egyptian_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{scx=Egyptian_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{scx=Egyp}+$/u, + nonMatchSymbols, + "\\P{scx=Egyp}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js new file mode 100644 index 0000000000..42ea2c70a9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elbasan.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Elbasan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010500, 0x010527] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Elbasan}+$/u, + matchSymbols, + "\\p{Script_Extensions=Elbasan}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Elba}+$/u, + matchSymbols, + "\\p{Script_Extensions=Elba}" +); +testPropertyEscapes( + /^\p{scx=Elbasan}+$/u, + matchSymbols, + "\\p{scx=Elbasan}" +); +testPropertyEscapes( + /^\p{scx=Elba}+$/u, + matchSymbols, + "\\p{scx=Elba}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0104FF], + [0x010528, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Elbasan}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Elbasan}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Elba}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Elba}" +); +testPropertyEscapes( + /^\P{scx=Elbasan}+$/u, + nonMatchSymbols, + "\\P{scx=Elbasan}" +); +testPropertyEscapes( + /^\P{scx=Elba}+$/u, + nonMatchSymbols, + "\\P{scx=Elba}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js new file mode 100644 index 0000000000..87a0320e91 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Elymaic.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Elymaic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010FE0, 0x010FF6] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Elymaic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Elymaic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Elym}+$/u, + matchSymbols, + "\\p{Script_Extensions=Elym}" +); +testPropertyEscapes( + /^\p{scx=Elymaic}+$/u, + matchSymbols, + "\\p{scx=Elymaic}" +); +testPropertyEscapes( + /^\p{scx=Elym}+$/u, + matchSymbols, + "\\p{scx=Elym}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010FDF], + [0x010FF7, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Elymaic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Elymaic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Elym}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Elym}" +); +testPropertyEscapes( + /^\P{scx=Elymaic}+$/u, + nonMatchSymbols, + "\\P{scx=Elymaic}" +); +testPropertyEscapes( + /^\P{scx=Elym}+$/u, + nonMatchSymbols, + "\\P{scx=Elym}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js new file mode 100644 index 0000000000..dc05ba161b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ethiopic.js @@ -0,0 +1,145 @@ +// Copyright 2022 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 for `Script_Extensions=Ethiopic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001258, + 0x0012C0 + ], + ranges: [ + [0x001200, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x00135D, 0x00137C], + [0x001380, 0x001399], + [0x002D80, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Ethiopic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ethiopic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Ethi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ethi}" +); +testPropertyEscapes( + /^\p{scx=Ethiopic}+$/u, + matchSymbols, + "\\p{scx=Ethiopic}" +); +testPropertyEscapes( + /^\p{scx=Ethi}+$/u, + matchSymbols, + "\\p{scx=Ethi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x00AB27, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0011FF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00135C], + [0x00137D, 0x00137F], + [0x00139A, 0x002D7F], + [0x002D97, 0x002D9F], + [0x002DDF, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB2F, 0x00DBFF], + [0x00E000, 0x01E7DF], + [0x01E7FF, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Ethiopic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ethiopic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Ethi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ethi}" +); +testPropertyEscapes( + /^\P{scx=Ethiopic}+$/u, + nonMatchSymbols, + "\\P{scx=Ethiopic}" +); +testPropertyEscapes( + /^\P{scx=Ethi}+$/u, + nonMatchSymbols, + "\\P{scx=Ethi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js new file mode 100644 index 0000000000..750be25148 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Georgian.js @@ -0,0 +1,91 @@ +// Copyright 2022 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 for `Script_Extensions=Georgian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0010C7, + 0x0010CD, + 0x002D27, + 0x002D2D + ], + ranges: [ + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FF], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x002D00, 0x002D25] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Georgian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Georgian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Geor}+$/u, + matchSymbols, + "\\p{Script_Extensions=Geor}" +); +testPropertyEscapes( + /^\p{scx=Georgian}+$/u, + matchSymbols, + "\\p{scx=Georgian}" +); +testPropertyEscapes( + /^\p{scx=Geor}+$/u, + matchSymbols, + "\\p{scx=Geor}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0010C6, + 0x002D26 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x001100, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Georgian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Georgian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Geor}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Geor}" +); +testPropertyEscapes( + /^\P{scx=Georgian}+$/u, + nonMatchSymbols, + "\\P{scx=Georgian}" +); +testPropertyEscapes( + /^\P{scx=Geor}+$/u, + nonMatchSymbols, + "\\P{scx=Geor}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js new file mode 100644 index 0000000000..16f0dfbd30 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Glagolitic.js @@ -0,0 +1,93 @@ +// Copyright 2022 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 for `Script_Extensions=Glagolitic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000484, + 0x000487, + 0x002E43, + 0x00A66F + ], + ranges: [ + [0x002C00, 0x002C5F], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Glagolitic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Glagolitic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Glag}+$/u, + matchSymbols, + "\\p{Script_Extensions=Glag}" +); +testPropertyEscapes( + /^\p{scx=Glagolitic}+$/u, + matchSymbols, + "\\p{scx=Glagolitic}" +); +testPropertyEscapes( + /^\p{scx=Glag}+$/u, + matchSymbols, + "\\p{scx=Glag}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01E007, + 0x01E022, + 0x01E025 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000483], + [0x000485, 0x000486], + [0x000488, 0x002BFF], + [0x002C60, 0x002E42], + [0x002E44, 0x00A66E], + [0x00A670, 0x00DBFF], + [0x00E000, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Glagolitic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Glagolitic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Glag}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Glag}" +); +testPropertyEscapes( + /^\P{scx=Glagolitic}+$/u, + nonMatchSymbols, + "\\P{scx=Glagolitic}" +); +testPropertyEscapes( + /^\P{scx=Glag}+$/u, + nonMatchSymbols, + "\\P{scx=Glag}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js new file mode 100644 index 0000000000..d23965429d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gothic.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Gothic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010330, 0x01034A] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Gothic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gothic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Goth}+$/u, + matchSymbols, + "\\p{Script_Extensions=Goth}" +); +testPropertyEscapes( + /^\p{scx=Gothic}+$/u, + matchSymbols, + "\\p{scx=Gothic}" +); +testPropertyEscapes( + /^\p{scx=Goth}+$/u, + matchSymbols, + "\\p{scx=Goth}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01032F], + [0x01034B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Gothic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gothic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Goth}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Goth}" +); +testPropertyEscapes( + /^\P{scx=Gothic}+$/u, + nonMatchSymbols, + "\\P{scx=Gothic}" +); +testPropertyEscapes( + /^\P{scx=Goth}+$/u, + nonMatchSymbols, + "\\P{scx=Goth}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js new file mode 100644 index 0000000000..90111960b1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Grantha.js @@ -0,0 +1,123 @@ +// Copyright 2022 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 for `Script_Extensions=Grantha` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001CD0, + 0x0020F0, + 0x011350, + 0x011357, + 0x011FD3 + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x000BE6, 0x000BF3], + [0x001CD2, 0x001CD3], + [0x001CF2, 0x001CF4], + [0x001CF8, 0x001CF9], + [0x011300, 0x011303], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01133B, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x01135D, 0x011363], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011FD0, 0x011FD1] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Grantha}+$/u, + matchSymbols, + "\\p{Script_Extensions=Grantha}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Gran}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gran}" +); +testPropertyEscapes( + /^\p{scx=Grantha}+$/u, + matchSymbols, + "\\p{scx=Grantha}" +); +testPropertyEscapes( + /^\p{scx=Gran}+$/u, + matchSymbols, + "\\p{scx=Gran}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001CD1, + 0x011304, + 0x011329, + 0x011331, + 0x011334, + 0x01133A, + 0x011FD2 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x000BE5], + [0x000BF4, 0x001CCF], + [0x001CD4, 0x001CF1], + [0x001CF5, 0x001CF7], + [0x001CFA, 0x0020EF], + [0x0020F1, 0x00DBFF], + [0x00E000, 0x0112FF], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x01134F], + [0x011351, 0x011356], + [0x011358, 0x01135C], + [0x011364, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x011FCF], + [0x011FD4, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Grantha}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Grantha}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Gran}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gran}" +); +testPropertyEscapes( + /^\P{scx=Grantha}+$/u, + nonMatchSymbols, + "\\P{scx=Grantha}" +); +testPropertyEscapes( + /^\P{scx=Gran}+$/u, + nonMatchSymbols, + "\\P{scx=Gran}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js new file mode 100644 index 0000000000..753f7b336f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Greek.js @@ -0,0 +1,149 @@ +// Copyright 2022 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 for `Script_Extensions=Greek` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000342, + 0x000345, + 0x00037F, + 0x000384, + 0x000386, + 0x00038C, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x002126, + 0x00AB65, + 0x0101A0 + ], + ranges: [ + [0x000370, 0x000373], + [0x000375, 0x000377], + [0x00037A, 0x00037D], + [0x000388, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003E1], + [0x0003F0, 0x0003FF], + [0x001D26, 0x001D2A], + [0x001D5D, 0x001D61], + [0x001D66, 0x001D6A], + [0x001DBF, 0x001DC1], + [0x001F00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FC4], + [0x001FC6, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FDD, 0x001FEF], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFE], + [0x010140, 0x01018E], + [0x01D200, 0x01D245] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Greek}+$/u, + matchSymbols, + "\\p{Script_Extensions=Greek}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Grek}+$/u, + matchSymbols, + "\\p{Script_Extensions=Grek}" +); +testPropertyEscapes( + /^\p{scx=Greek}+$/u, + matchSymbols, + "\\p{scx=Greek}" +); +testPropertyEscapes( + /^\p{scx=Grek}+$/u, + matchSymbols, + "\\p{scx=Grek}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000374, + 0x00037E, + 0x000385, + 0x000387, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FC5, + 0x001FDC, + 0x001FF5 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000341], + [0x000343, 0x000344], + [0x000346, 0x00036F], + [0x000378, 0x000379], + [0x000380, 0x000383], + [0x0003E2, 0x0003EF], + [0x000400, 0x001D25], + [0x001D2B, 0x001D5C], + [0x001D62, 0x001D65], + [0x001D6B, 0x001DBE], + [0x001DC2, 0x001EFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FD4, 0x001FD5], + [0x001FF0, 0x001FF1], + [0x001FFF, 0x002125], + [0x002127, 0x00AB64], + [0x00AB66, 0x00DBFF], + [0x00E000, 0x01013F], + [0x01018F, 0x01019F], + [0x0101A1, 0x01D1FF], + [0x01D246, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Greek}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Greek}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Grek}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Grek}" +); +testPropertyEscapes( + /^\P{scx=Greek}+$/u, + nonMatchSymbols, + "\\P{scx=Greek}" +); +testPropertyEscapes( + /^\P{scx=Grek}+$/u, + nonMatchSymbols, + "\\P{scx=Grek}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js new file mode 100644 index 0000000000..8de7442569 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gujarati.js @@ -0,0 +1,107 @@ +// Copyright 2022 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 for `Script_Extensions=Gujarati` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000AD0 + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x000A81, 0x000A83], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000ABC, 0x000AC5], + [0x000AC7, 0x000AC9], + [0x000ACB, 0x000ACD], + [0x000AE0, 0x000AE3], + [0x000AE6, 0x000AF1], + [0x000AF9, 0x000AFF], + [0x00A830, 0x00A839] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Gujarati}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gujarati}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Gujr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gujr}" +); +testPropertyEscapes( + /^\p{scx=Gujarati}+$/u, + matchSymbols, + "\\p{scx=Gujarati}" +); +testPropertyEscapes( + /^\p{scx=Gujr}+$/u, + matchSymbols, + "\\p{scx=Gujr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000A84, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000AC6, + 0x000ACA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x000A80], + [0x000ABA, 0x000ABB], + [0x000ACE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE4, 0x000AE5], + [0x000AF2, 0x000AF8], + [0x000B00, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Gujarati}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gujarati}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Gujr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gujr}" +); +testPropertyEscapes( + /^\P{scx=Gujarati}+$/u, + nonMatchSymbols, + "\\P{scx=Gujarati}" +); +testPropertyEscapes( + /^\P{scx=Gujr}+$/u, + nonMatchSymbols, + "\\P{scx=Gujr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js new file mode 100644 index 0000000000..6e00ac8a45 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gunjala_Gondi.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Script_Extensions=Gunjala_Gondi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000964, 0x000965], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D8E], + [0x011D90, 0x011D91], + [0x011D93, 0x011D98], + [0x011DA0, 0x011DA9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Gunjala_Gondi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gunjala_Gondi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Gong}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gong}" +); +testPropertyEscapes( + /^\p{scx=Gunjala_Gondi}+$/u, + matchSymbols, + "\\p{scx=Gunjala_Gondi}" +); +testPropertyEscapes( + /^\p{scx=Gong}+$/u, + matchSymbols, + "\\p{scx=Gong}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011D66, + 0x011D69, + 0x011D8F, + 0x011D92 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000966, 0x00DBFF], + [0x00E000, 0x011D5F], + [0x011D99, 0x011D9F], + [0x011DAA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Gunjala_Gondi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gunjala_Gondi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Gong}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gong}" +); +testPropertyEscapes( + /^\P{scx=Gunjala_Gondi}+$/u, + nonMatchSymbols, + "\\P{scx=Gunjala_Gondi}" +); +testPropertyEscapes( + /^\P{scx=Gong}+$/u, + nonMatchSymbols, + "\\P{scx=Gong}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js new file mode 100644 index 0000000000..e0b906c6bf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Gurmukhi.js @@ -0,0 +1,111 @@ +// Copyright 2022 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 for `Script_Extensions=Gurmukhi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000A3C, + 0x000A51, + 0x000A5E + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x000A01, 0x000A03], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A3E, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A59, 0x000A5C], + [0x000A66, 0x000A76], + [0x00A830, 0x00A839] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Gurmukhi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gurmukhi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Guru}+$/u, + matchSymbols, + "\\p{Script_Extensions=Guru}" +); +testPropertyEscapes( + /^\p{scx=Gurmukhi}+$/u, + matchSymbols, + "\\p{scx=Gurmukhi}" +); +testPropertyEscapes( + /^\p{scx=Guru}+$/u, + matchSymbols, + "\\p{scx=Guru}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000A04, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A3D, + 0x000A5D + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x000A00], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A3B], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A58], + [0x000A5F, 0x000A65], + [0x000A77, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Gurmukhi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gurmukhi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Guru}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Guru}" +); +testPropertyEscapes( + /^\P{scx=Gurmukhi}+$/u, + nonMatchSymbols, + "\\P{scx=Gurmukhi}" +); +testPropertyEscapes( + /^\P{scx=Guru}+$/u, + nonMatchSymbols, + "\\P{scx=Guru}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js new file mode 100644 index 0000000000..afda8c17de --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Han.js @@ -0,0 +1,149 @@ +// Copyright 2022 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 for `Script_Extensions=Han` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x003030, + 0x0030FB, + 0x0032FF + ], + ranges: [ + [0x002E80, 0x002E99], + [0x002E9B, 0x002EF3], + [0x002F00, 0x002FD5], + [0x003001, 0x003003], + [0x003005, 0x003011], + [0x003013, 0x00301F], + [0x003021, 0x00302D], + [0x003037, 0x00303F], + [0x003190, 0x00319F], + [0x0031C0, 0x0031E3], + [0x003220, 0x003247], + [0x003280, 0x0032B0], + [0x0032C0, 0x0032CB], + [0x003358, 0x003370], + [0x00337B, 0x00337F], + [0x0033E0, 0x0033FE], + [0x003400, 0x004DBF], + [0x004E00, 0x009FFF], + [0x00A700, 0x00A707], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FE45, 0x00FE46], + [0x00FF61, 0x00FF65], + [0x016FE2, 0x016FE3], + [0x016FF0, 0x016FF1], + [0x01D360, 0x01D371], + [0x01F250, 0x01F251], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Han}+$/u, + matchSymbols, + "\\p{Script_Extensions=Han}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hani}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hani}" +); +testPropertyEscapes( + /^\p{scx=Han}+$/u, + matchSymbols, + "\\p{scx=Han}" +); +testPropertyEscapes( + /^\p{scx=Hani}+$/u, + matchSymbols, + "\\p{scx=Hani}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x002E9A, + 0x003004, + 0x003012, + 0x003020, + 0x0033FF + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002E7F], + [0x002EF4, 0x002EFF], + [0x002FD6, 0x003000], + [0x00302E, 0x00302F], + [0x003031, 0x003036], + [0x003040, 0x0030FA], + [0x0030FC, 0x00318F], + [0x0031A0, 0x0031BF], + [0x0031E4, 0x00321F], + [0x003248, 0x00327F], + [0x0032B1, 0x0032BF], + [0x0032CC, 0x0032FE], + [0x003300, 0x003357], + [0x003371, 0x00337A], + [0x003380, 0x0033DF], + [0x004DC0, 0x004DFF], + [0x00A000, 0x00A6FF], + [0x00A708, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FE44], + [0x00FE47, 0x00FF60], + [0x00FF66, 0x016FE1], + [0x016FE4, 0x016FEF], + [0x016FF2, 0x01D35F], + [0x01D372, 0x01F24F], + [0x01F252, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Han}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Han}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hani}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hani}" +); +testPropertyEscapes( + /^\P{scx=Han}+$/u, + nonMatchSymbols, + "\\P{scx=Han}" +); +testPropertyEscapes( + /^\P{scx=Hani}+$/u, + nonMatchSymbols, + "\\P{scx=Hani}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js new file mode 100644 index 0000000000..34dde15511 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hangul.js @@ -0,0 +1,115 @@ +// Copyright 2022 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 for `Script_Extensions=Hangul` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x003037, + 0x0030FB + ], + ranges: [ + [0x001100, 0x0011FF], + [0x003001, 0x003003], + [0x003008, 0x003011], + [0x003013, 0x00301F], + [0x00302E, 0x003030], + [0x003131, 0x00318E], + [0x003200, 0x00321E], + [0x003260, 0x00327E], + [0x00A960, 0x00A97C], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00FE45, 0x00FE46], + [0x00FF61, 0x00FF65], + [0x00FFA0, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Hangul}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hangul}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hang}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hang}" +); +testPropertyEscapes( + /^\p{scx=Hangul}+$/u, + matchSymbols, + "\\p{scx=Hangul}" +); +testPropertyEscapes( + /^\p{scx=Hang}+$/u, + matchSymbols, + "\\p{scx=Hang}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x003012 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0010FF], + [0x001200, 0x003000], + [0x003004, 0x003007], + [0x003020, 0x00302D], + [0x003031, 0x003036], + [0x003038, 0x0030FA], + [0x0030FC, 0x003130], + [0x00318F, 0x0031FF], + [0x00321F, 0x00325F], + [0x00327F, 0x00A95F], + [0x00A97D, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00FE44], + [0x00FE47, 0x00FF60], + [0x00FF66, 0x00FF9F], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Hangul}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hangul}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hang}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hang}" +); +testPropertyEscapes( + /^\P{scx=Hangul}+$/u, + nonMatchSymbols, + "\\P{scx=Hangul}" +); +testPropertyEscapes( + /^\P{scx=Hang}+$/u, + nonMatchSymbols, + "\\P{scx=Hang}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js new file mode 100644 index 0000000000..1837d2ca78 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanifi_Rohingya.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Script_Extensions=Hanifi_Rohingya` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00060C, + 0x00061B, + 0x00061F, + 0x000640, + 0x0006D4 + ], + ranges: [ + [0x010D00, 0x010D27], + [0x010D30, 0x010D39] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Hanifi_Rohingya}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hanifi_Rohingya}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Rohg}+$/u, + matchSymbols, + "\\p{Script_Extensions=Rohg}" +); +testPropertyEscapes( + /^\p{scx=Hanifi_Rohingya}+$/u, + matchSymbols, + "\\p{scx=Hanifi_Rohingya}" +); +testPropertyEscapes( + /^\p{scx=Rohg}+$/u, + matchSymbols, + "\\p{scx=Rohg}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00060B], + [0x00060D, 0x00061A], + [0x00061C, 0x00061E], + [0x000620, 0x00063F], + [0x000641, 0x0006D3], + [0x0006D5, 0x00DBFF], + [0x00E000, 0x010CFF], + [0x010D28, 0x010D2F], + [0x010D3A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Hanifi_Rohingya}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hanifi_Rohingya}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Rohg}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Rohg}" +); +testPropertyEscapes( + /^\P{scx=Hanifi_Rohingya}+$/u, + nonMatchSymbols, + "\\P{scx=Hanifi_Rohingya}" +); +testPropertyEscapes( + /^\P{scx=Rohg}+$/u, + nonMatchSymbols, + "\\P{scx=Rohg}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js new file mode 100644 index 0000000000..cc83ac7b4d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hanunoo.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Hanunoo` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001720, 0x001736] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Hanunoo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hanunoo}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hano}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hano}" +); +testPropertyEscapes( + /^\p{scx=Hanunoo}+$/u, + matchSymbols, + "\\p{scx=Hanunoo}" +); +testPropertyEscapes( + /^\p{scx=Hano}+$/u, + matchSymbols, + "\\p{scx=Hano}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00171F], + [0x001737, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Hanunoo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hanunoo}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hano}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hano}" +); +testPropertyEscapes( + /^\P{scx=Hanunoo}+$/u, + nonMatchSymbols, + "\\P{scx=Hanunoo}" +); +testPropertyEscapes( + /^\P{scx=Hano}+$/u, + nonMatchSymbols, + "\\P{scx=Hano}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js new file mode 100644 index 0000000000..ebb03da0ed --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hatran.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Hatran` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x0108FB, 0x0108FF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Hatran}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hatran}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hatr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hatr}" +); +testPropertyEscapes( + /^\p{scx=Hatran}+$/u, + matchSymbols, + "\\p{scx=Hatran}" +); +testPropertyEscapes( + /^\p{scx=Hatr}+$/u, + matchSymbols, + "\\p{scx=Hatr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0108F3 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0108DF], + [0x0108F6, 0x0108FA], + [0x010900, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Hatran}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hatran}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hatr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hatr}" +); +testPropertyEscapes( + /^\P{scx=Hatran}+$/u, + nonMatchSymbols, + "\\P{scx=Hatran}" +); +testPropertyEscapes( + /^\P{scx=Hatr}+$/u, + nonMatchSymbols, + "\\P{scx=Hatr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js new file mode 100644 index 0000000000..d46bd57180 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hebrew.js @@ -0,0 +1,91 @@ +// Copyright 2022 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 for `Script_Extensions=Hebrew` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00FB3E + ], + ranges: [ + [0x000591, 0x0005C7], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F4], + [0x00FB1D, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FB4F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Hebrew}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hebrew}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hebr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hebr}" +); +testPropertyEscapes( + /^\p{scx=Hebrew}+$/u, + matchSymbols, + "\\p{scx=Hebrew}" +); +testPropertyEscapes( + /^\p{scx=Hebr}+$/u, + matchSymbols, + "\\p{scx=Hebr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000590], + [0x0005C8, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F5, 0x00DBFF], + [0x00E000, 0x00FB1C], + [0x00FB50, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Hebrew}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hebrew}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hebr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hebr}" +); +testPropertyEscapes( + /^\P{scx=Hebrew}+$/u, + nonMatchSymbols, + "\\P{scx=Hebrew}" +); +testPropertyEscapes( + /^\P{scx=Hebr}+$/u, + nonMatchSymbols, + "\\P{scx=Hebr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js new file mode 100644 index 0000000000..8d13ebd3f7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Hiragana.js @@ -0,0 +1,107 @@ +// Copyright 2022 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 for `Script_Extensions=Hiragana` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x003037, + 0x00FF70, + 0x01B132, + 0x01F200 + ], + ranges: [ + [0x003001, 0x003003], + [0x003008, 0x003011], + [0x003013, 0x00301F], + [0x003030, 0x003035], + [0x00303C, 0x00303D], + [0x003041, 0x003096], + [0x003099, 0x0030A0], + [0x0030FB, 0x0030FC], + [0x00FE45, 0x00FE46], + [0x00FF61, 0x00FF65], + [0x00FF9E, 0x00FF9F], + [0x01B001, 0x01B11F], + [0x01B150, 0x01B152] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Hiragana}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hiragana}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hira}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hira}" +); +testPropertyEscapes( + /^\p{scx=Hiragana}+$/u, + matchSymbols, + "\\p{scx=Hiragana}" +); +testPropertyEscapes( + /^\p{scx=Hira}+$/u, + matchSymbols, + "\\p{scx=Hira}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x003012, + 0x003036 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x003000], + [0x003004, 0x003007], + [0x003020, 0x00302F], + [0x003038, 0x00303B], + [0x00303E, 0x003040], + [0x003097, 0x003098], + [0x0030A1, 0x0030FA], + [0x0030FD, 0x00DBFF], + [0x00E000, 0x00FE44], + [0x00FE47, 0x00FF60], + [0x00FF66, 0x00FF6F], + [0x00FF71, 0x00FF9D], + [0x00FFA0, 0x01B000], + [0x01B120, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01F1FF], + [0x01F201, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Hiragana}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hiragana}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hira}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hira}" +); +testPropertyEscapes( + /^\P{scx=Hiragana}+$/u, + nonMatchSymbols, + "\\P{scx=Hiragana}" +); +testPropertyEscapes( + /^\P{scx=Hira}+$/u, + nonMatchSymbols, + "\\P{scx=Hira}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js new file mode 100644 index 0000000000..69a39e1507 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Imperial_Aramaic.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Imperial_Aramaic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010840, 0x010855], + [0x010857, 0x01085F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Imperial_Aramaic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Imperial_Aramaic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Armi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Armi}" +); +testPropertyEscapes( + /^\p{scx=Imperial_Aramaic}+$/u, + matchSymbols, + "\\p{scx=Imperial_Aramaic}" +); +testPropertyEscapes( + /^\p{scx=Armi}+$/u, + matchSymbols, + "\\p{scx=Armi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x010856 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01083F], + [0x010860, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Imperial_Aramaic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Imperial_Aramaic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Armi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Armi}" +); +testPropertyEscapes( + /^\P{scx=Imperial_Aramaic}+$/u, + nonMatchSymbols, + "\\P{scx=Imperial_Aramaic}" +); +testPropertyEscapes( + /^\P{scx=Armi}+$/u, + nonMatchSymbols, + "\\P{scx=Armi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js new file mode 100644 index 0000000000..922b5b0077 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inherited.js @@ -0,0 +1,133 @@ +// Copyright 2022 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 for `Script_Extensions=Inherited` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001DF9, + 0x0101FD + ], + ranges: [ + [0x000300, 0x000341], + [0x000343, 0x000344], + [0x000346, 0x000362], + [0x000953, 0x000954], + [0x001AB0, 0x001ACE], + [0x001DC2, 0x001DF7], + [0x001DFB, 0x001DFF], + [0x00200C, 0x00200D], + [0x0020D0, 0x0020EF], + [0x00FE00, 0x00FE0F], + [0x00FE20, 0x00FE2D], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01D167, 0x01D169], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Inherited}+$/u, + matchSymbols, + "\\p{Script_Extensions=Inherited}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Zinh}+$/u, + matchSymbols, + "\\p{Script_Extensions=Zinh}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Qaai}+$/u, + matchSymbols, + "\\p{Script_Extensions=Qaai}" +); +testPropertyEscapes( + /^\p{scx=Inherited}+$/u, + matchSymbols, + "\\p{scx=Inherited}" +); +testPropertyEscapes( + /^\p{scx=Zinh}+$/u, + matchSymbols, + "\\p{scx=Zinh}" +); +testPropertyEscapes( + /^\p{scx=Qaai}+$/u, + matchSymbols, + "\\p{scx=Qaai}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000342, + 0x000345, + 0x001DF8, + 0x001DFA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0002FF], + [0x000363, 0x000952], + [0x000955, 0x001AAF], + [0x001ACF, 0x001DC1], + [0x001E00, 0x00200B], + [0x00200E, 0x0020CF], + [0x0020F0, 0x00DBFF], + [0x00E000, 0x00FDFF], + [0x00FE10, 0x00FE1F], + [0x00FE2E, 0x0101FC], + [0x0101FE, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01D166], + [0x01D16A, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Inherited}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Inherited}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Zinh}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Zinh}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Qaai}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Qaai}" +); +testPropertyEscapes( + /^\P{scx=Inherited}+$/u, + nonMatchSymbols, + "\\P{scx=Inherited}" +); +testPropertyEscapes( + /^\P{scx=Zinh}+$/u, + nonMatchSymbols, + "\\P{scx=Zinh}" +); +testPropertyEscapes( + /^\P{scx=Qaai}+$/u, + nonMatchSymbols, + "\\P{scx=Qaai}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js new file mode 100644 index 0000000000..da0bc1aa4f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Pahlavi.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Inscriptional_Pahlavi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010B60, 0x010B72], + [0x010B78, 0x010B7F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Inscriptional_Pahlavi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Inscriptional_Pahlavi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Phli}+$/u, + matchSymbols, + "\\p{Script_Extensions=Phli}" +); +testPropertyEscapes( + /^\p{scx=Inscriptional_Pahlavi}+$/u, + matchSymbols, + "\\p{scx=Inscriptional_Pahlavi}" +); +testPropertyEscapes( + /^\p{scx=Phli}+$/u, + matchSymbols, + "\\p{scx=Phli}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010B5F], + [0x010B73, 0x010B77], + [0x010B80, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Inscriptional_Pahlavi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Inscriptional_Pahlavi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Phli}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Phli}" +); +testPropertyEscapes( + /^\P{scx=Inscriptional_Pahlavi}+$/u, + nonMatchSymbols, + "\\P{scx=Inscriptional_Pahlavi}" +); +testPropertyEscapes( + /^\P{scx=Phli}+$/u, + nonMatchSymbols, + "\\P{scx=Phli}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js new file mode 100644 index 0000000000..a81529feaa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Inscriptional_Parthian.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Inscriptional_Parthian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010B40, 0x010B55], + [0x010B58, 0x010B5F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Inscriptional_Parthian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Inscriptional_Parthian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Prti}+$/u, + matchSymbols, + "\\p{Script_Extensions=Prti}" +); +testPropertyEscapes( + /^\p{scx=Inscriptional_Parthian}+$/u, + matchSymbols, + "\\p{scx=Inscriptional_Parthian}" +); +testPropertyEscapes( + /^\p{scx=Prti}+$/u, + matchSymbols, + "\\p{scx=Prti}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010B3F], + [0x010B56, 0x010B57], + [0x010B60, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Inscriptional_Parthian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Inscriptional_Parthian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Prti}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Prti}" +); +testPropertyEscapes( + /^\P{scx=Inscriptional_Parthian}+$/u, + nonMatchSymbols, + "\\P{scx=Inscriptional_Parthian}" +); +testPropertyEscapes( + /^\P{scx=Prti}+$/u, + nonMatchSymbols, + "\\P{scx=Prti}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js new file mode 100644 index 0000000000..06f6bc758c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Javanese.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Javanese` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A980, 0x00A9CD], + [0x00A9CF, 0x00A9D9], + [0x00A9DE, 0x00A9DF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Javanese}+$/u, + matchSymbols, + "\\p{Script_Extensions=Javanese}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Java}+$/u, + matchSymbols, + "\\p{Script_Extensions=Java}" +); +testPropertyEscapes( + /^\p{scx=Javanese}+$/u, + matchSymbols, + "\\p{scx=Javanese}" +); +testPropertyEscapes( + /^\p{scx=Java}+$/u, + matchSymbols, + "\\p{scx=Java}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00A9CE + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A97F], + [0x00A9DA, 0x00A9DD], + [0x00A9E0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Javanese}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Javanese}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Java}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Java}" +); +testPropertyEscapes( + /^\P{scx=Javanese}+$/u, + nonMatchSymbols, + "\\P{scx=Javanese}" +); +testPropertyEscapes( + /^\P{scx=Java}+$/u, + nonMatchSymbols, + "\\P{scx=Java}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js new file mode 100644 index 0000000000..afa0c5a1ae --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kaithi.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script_Extensions=Kaithi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0110CD + ], + ranges: [ + [0x000966, 0x00096F], + [0x00A830, 0x00A839], + [0x011080, 0x0110C2] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Kaithi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kaithi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Kthi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kthi}" +); +testPropertyEscapes( + /^\p{scx=Kaithi}+$/u, + matchSymbols, + "\\p{scx=Kaithi}" +); +testPropertyEscapes( + /^\p{scx=Kthi}+$/u, + matchSymbols, + "\\p{scx=Kthi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000965], + [0x000970, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x01107F], + [0x0110C3, 0x0110CC], + [0x0110CE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Kaithi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kaithi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Kthi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kthi}" +); +testPropertyEscapes( + /^\P{scx=Kaithi}+$/u, + nonMatchSymbols, + "\\P{scx=Kaithi}" +); +testPropertyEscapes( + /^\P{scx=Kthi}+$/u, + nonMatchSymbols, + "\\P{scx=Kthi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js new file mode 100644 index 0000000000..037b733ce4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kannada.js @@ -0,0 +1,115 @@ +// Copyright 2022 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 for `Script_Extensions=Kannada` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001CD0, + 0x001CD2, + 0x001CDA, + 0x001CF2, + 0x001CF4 + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x000C80, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CBC, 0x000CC4], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCD], + [0x000CD5, 0x000CD6], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE3], + [0x000CE6, 0x000CEF], + [0x000CF1, 0x000CF3], + [0x00A830, 0x00A835] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Kannada}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kannada}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Knda}+$/u, + matchSymbols, + "\\p{Script_Extensions=Knda}" +); +testPropertyEscapes( + /^\p{scx=Kannada}+$/u, + matchSymbols, + "\\p{scx=Kannada}" +); +testPropertyEscapes( + /^\p{scx=Knda}+$/u, + matchSymbols, + "\\p{scx=Knda}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CC5, + 0x000CC9, + 0x000CDF, + 0x000CF0, + 0x001CD1, + 0x001CF3 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x000C7F], + [0x000CBA, 0x000CBB], + [0x000CCE, 0x000CD4], + [0x000CD7, 0x000CDC], + [0x000CE4, 0x000CE5], + [0x000CF4, 0x001CCF], + [0x001CD3, 0x001CD9], + [0x001CDB, 0x001CF1], + [0x001CF5, 0x00A82F], + [0x00A836, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Kannada}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kannada}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Knda}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Knda}" +); +testPropertyEscapes( + /^\P{scx=Kannada}+$/u, + nonMatchSymbols, + "\\P{scx=Kannada}" +); +testPropertyEscapes( + /^\P{scx=Knda}+$/u, + nonMatchSymbols, + "\\P{scx=Knda}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js new file mode 100644 index 0000000000..ba8d1e7810 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Katakana.js @@ -0,0 +1,113 @@ +// Copyright 2022 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 for `Script_Extensions=Katakana` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x003037, + 0x01B000, + 0x01B155 + ], + ranges: [ + [0x003001, 0x003003], + [0x003008, 0x003011], + [0x003013, 0x00301F], + [0x003030, 0x003035], + [0x00303C, 0x00303D], + [0x003099, 0x00309C], + [0x0030A0, 0x0030FF], + [0x0031F0, 0x0031FF], + [0x0032D0, 0x0032FE], + [0x003300, 0x003357], + [0x00FE45, 0x00FE46], + [0x00FF61, 0x00FF9F], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B120, 0x01B122], + [0x01B164, 0x01B167] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Katakana}+$/u, + matchSymbols, + "\\p{Script_Extensions=Katakana}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Kana}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kana}" +); +testPropertyEscapes( + /^\p{scx=Katakana}+$/u, + matchSymbols, + "\\p{scx=Katakana}" +); +testPropertyEscapes( + /^\p{scx=Kana}+$/u, + matchSymbols, + "\\p{scx=Kana}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x003012, + 0x003036, + 0x0032FF, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x003000], + [0x003004, 0x003007], + [0x003020, 0x00302F], + [0x003038, 0x00303B], + [0x00303E, 0x003098], + [0x00309D, 0x00309F], + [0x003100, 0x0031EF], + [0x003200, 0x0032CF], + [0x003358, 0x00DBFF], + [0x00E000, 0x00FE44], + [0x00FE47, 0x00FF60], + [0x00FFA0, 0x01AFEF], + [0x01B001, 0x01B11F], + [0x01B123, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Katakana}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Katakana}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Kana}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kana}" +); +testPropertyEscapes( + /^\P{scx=Katakana}+$/u, + nonMatchSymbols, + "\\P{scx=Katakana}" +); +testPropertyEscapes( + /^\P{scx=Kana}+$/u, + nonMatchSymbols, + "\\P{scx=Kana}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js new file mode 100644 index 0000000000..31abbac649 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kawi.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Kawi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011F00, 0x011F10], + [0x011F12, 0x011F3A], + [0x011F3E, 0x011F59] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Kawi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kawi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Kawi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kawi}" +); +testPropertyEscapes( + /^\p{scx=Kawi}+$/u, + matchSymbols, + "\\p{scx=Kawi}" +); +testPropertyEscapes( + /^\p{scx=Kawi}+$/u, + matchSymbols, + "\\p{scx=Kawi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011F11 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011EFF], + [0x011F3B, 0x011F3D], + [0x011F5A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Kawi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kawi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Kawi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kawi}" +); +testPropertyEscapes( + /^\P{scx=Kawi}+$/u, + nonMatchSymbols, + "\\P{scx=Kawi}" +); +testPropertyEscapes( + /^\P{scx=Kawi}+$/u, + nonMatchSymbols, + "\\P{scx=Kawi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js new file mode 100644 index 0000000000..53ed26ff40 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kayah_Li.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Kayah_Li` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A900, 0x00A92F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Kayah_Li}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kayah_Li}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Kali}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kali}" +); +testPropertyEscapes( + /^\p{scx=Kayah_Li}+$/u, + matchSymbols, + "\\p{scx=Kayah_Li}" +); +testPropertyEscapes( + /^\p{scx=Kali}+$/u, + matchSymbols, + "\\p{scx=Kali}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A8FF], + [0x00A930, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Kayah_Li}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kayah_Li}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Kali}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kali}" +); +testPropertyEscapes( + /^\P{scx=Kayah_Li}+$/u, + nonMatchSymbols, + "\\P{scx=Kayah_Li}" +); +testPropertyEscapes( + /^\P{scx=Kali}+$/u, + nonMatchSymbols, + "\\P{scx=Kali}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js new file mode 100644 index 0000000000..906e7f46b0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Kharoshthi.js @@ -0,0 +1,88 @@ +// Copyright 2022 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 for `Script_Extensions=Kharoshthi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010A00, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A38, 0x010A3A], + [0x010A3F, 0x010A48], + [0x010A50, 0x010A58] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Kharoshthi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kharoshthi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Khar}+$/u, + matchSymbols, + "\\p{Script_Extensions=Khar}" +); +testPropertyEscapes( + /^\p{scx=Kharoshthi}+$/u, + matchSymbols, + "\\p{scx=Kharoshthi}" +); +testPropertyEscapes( + /^\p{scx=Khar}+$/u, + matchSymbols, + "\\p{scx=Khar}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x010A04, + 0x010A14, + 0x010A18 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0109FF], + [0x010A07, 0x010A0B], + [0x010A36, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A49, 0x010A4F], + [0x010A59, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Kharoshthi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kharoshthi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Khar}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Khar}" +); +testPropertyEscapes( + /^\P{scx=Kharoshthi}+$/u, + nonMatchSymbols, + "\\P{scx=Kharoshthi}" +); +testPropertyEscapes( + /^\P{scx=Khar}+$/u, + nonMatchSymbols, + "\\P{scx=Khar}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js new file mode 100644 index 0000000000..c1a6bba218 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khitan_Small_Script.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Khitan_Small_Script` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x016FE4 + ], + ranges: [ + [0x018B00, 0x018CD5] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Khitan_Small_Script}+$/u, + matchSymbols, + "\\p{Script_Extensions=Khitan_Small_Script}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Kits}+$/u, + matchSymbols, + "\\p{Script_Extensions=Kits}" +); +testPropertyEscapes( + /^\p{scx=Khitan_Small_Script}+$/u, + matchSymbols, + "\\p{scx=Khitan_Small_Script}" +); +testPropertyEscapes( + /^\p{scx=Kits}+$/u, + matchSymbols, + "\\p{scx=Kits}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016FE3], + [0x016FE5, 0x018AFF], + [0x018CD6, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Khitan_Small_Script}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Khitan_Small_Script}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Kits}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Kits}" +); +testPropertyEscapes( + /^\P{scx=Khitan_Small_Script}+$/u, + nonMatchSymbols, + "\\P{scx=Khitan_Small_Script}" +); +testPropertyEscapes( + /^\P{scx=Kits}+$/u, + nonMatchSymbols, + "\\P{scx=Kits}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js new file mode 100644 index 0000000000..f887b1a1a8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khmer.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script_Extensions=Khmer` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001780, 0x0017DD], + [0x0017E0, 0x0017E9], + [0x0017F0, 0x0017F9], + [0x0019E0, 0x0019FF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Khmer}+$/u, + matchSymbols, + "\\p{Script_Extensions=Khmer}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Khmr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Khmr}" +); +testPropertyEscapes( + /^\p{scx=Khmer}+$/u, + matchSymbols, + "\\p{scx=Khmer}" +); +testPropertyEscapes( + /^\p{scx=Khmr}+$/u, + matchSymbols, + "\\p{scx=Khmr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00177F], + [0x0017DE, 0x0017DF], + [0x0017EA, 0x0017EF], + [0x0017FA, 0x0019DF], + [0x001A00, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Khmer}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Khmer}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Khmr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Khmr}" +); +testPropertyEscapes( + /^\P{scx=Khmer}+$/u, + nonMatchSymbols, + "\\P{scx=Khmer}" +); +testPropertyEscapes( + /^\P{scx=Khmr}+$/u, + nonMatchSymbols, + "\\P{scx=Khmr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js new file mode 100644 index 0000000000..de582481b7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khojki.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script_Extensions=Khojki` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000AE6, 0x000AEF], + [0x00A830, 0x00A839], + [0x011200, 0x011211], + [0x011213, 0x011241] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Khojki}+$/u, + matchSymbols, + "\\p{Script_Extensions=Khojki}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Khoj}+$/u, + matchSymbols, + "\\p{Script_Extensions=Khoj}" +); +testPropertyEscapes( + /^\p{scx=Khojki}+$/u, + matchSymbols, + "\\p{scx=Khojki}" +); +testPropertyEscapes( + /^\p{scx=Khoj}+$/u, + matchSymbols, + "\\p{scx=Khoj}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011212 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000AE5], + [0x000AF0, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x0111FF], + [0x011242, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Khojki}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Khojki}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Khoj}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Khoj}" +); +testPropertyEscapes( + /^\P{scx=Khojki}+$/u, + nonMatchSymbols, + "\\P{scx=Khojki}" +); +testPropertyEscapes( + /^\P{scx=Khoj}+$/u, + nonMatchSymbols, + "\\P{scx=Khoj}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js new file mode 100644 index 0000000000..a7dd376e1b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Khudawadi.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script_Extensions=Khudawadi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000964, 0x000965], + [0x00A830, 0x00A839], + [0x0112B0, 0x0112EA], + [0x0112F0, 0x0112F9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Khudawadi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Khudawadi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sind}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sind}" +); +testPropertyEscapes( + /^\p{scx=Khudawadi}+$/u, + matchSymbols, + "\\p{scx=Khudawadi}" +); +testPropertyEscapes( + /^\p{scx=Sind}+$/u, + matchSymbols, + "\\p{scx=Sind}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000966, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x0112AF], + [0x0112EB, 0x0112EF], + [0x0112FA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Khudawadi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Khudawadi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sind}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sind}" +); +testPropertyEscapes( + /^\P{scx=Khudawadi}+$/u, + nonMatchSymbols, + "\\P{scx=Khudawadi}" +); +testPropertyEscapes( + /^\P{scx=Sind}+$/u, + nonMatchSymbols, + "\\P{scx=Sind}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js new file mode 100644 index 0000000000..12281a09ad --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lao.js @@ -0,0 +1,95 @@ +// Copyright 2022 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 for `Script_Extensions=Lao` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000E84, + 0x000EA5, + 0x000EC6 + ], + ranges: [ + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EBD], + [0x000EC0, 0x000EC4], + [0x000EC8, 0x000ECE], + [0x000ED0, 0x000ED9], + [0x000EDC, 0x000EDF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Lao}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lao}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Laoo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Laoo}" +); +testPropertyEscapes( + /^\p{scx=Lao}+$/u, + matchSymbols, + "\\p{scx=Lao}" +); +testPropertyEscapes( + /^\p{scx=Laoo}+$/u, + matchSymbols, + "\\p{scx=Laoo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EC5, + 0x000EC7, + 0x000ECF + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000E80], + [0x000EBE, 0x000EBF], + [0x000EDA, 0x000EDB], + [0x000EE0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Lao}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lao}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Laoo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Laoo}" +); +testPropertyEscapes( + /^\P{scx=Lao}+$/u, + nonMatchSymbols, + "\\P{scx=Lao}" +); +testPropertyEscapes( + /^\P{scx=Laoo}+$/u, + nonMatchSymbols, + "\\P{scx=Laoo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js new file mode 100644 index 0000000000..49a286a298 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Latin.js @@ -0,0 +1,167 @@ +// Copyright 2022 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 for `Script_Extensions=Latin` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000BA, + 0x0010FB, + 0x00202F, + 0x002071, + 0x00207F, + 0x0020F0, + 0x002132, + 0x00214E, + 0x00A7D3, + 0x00A92E + ], + ranges: [ + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002B8], + [0x0002E0, 0x0002E4], + [0x000363, 0x00036F], + [0x000485, 0x000486], + [0x000951, 0x000952], + [0x001D00, 0x001D25], + [0x001D2C, 0x001D5C], + [0x001D62, 0x001D65], + [0x001D6B, 0x001D77], + [0x001D79, 0x001DBE], + [0x001E00, 0x001EFF], + [0x002090, 0x00209C], + [0x00212A, 0x00212B], + [0x002160, 0x002188], + [0x002C60, 0x002C7F], + [0x00A700, 0x00A707], + [0x00A722, 0x00A787], + [0x00A78B, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A7FF], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB64], + [0x00AB66, 0x00AB69], + [0x00FB00, 0x00FB06], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Latin}+$/u, + matchSymbols, + "\\p{Script_Extensions=Latin}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Latn}+$/u, + matchSymbols, + "\\p{Script_Extensions=Latn}" +); +testPropertyEscapes( + /^\p{scx=Latin}+$/u, + matchSymbols, + "\\p{scx=Latin}" +); +testPropertyEscapes( + /^\p{scx=Latn}+$/u, + matchSymbols, + "\\p{scx=Latn}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x001D78, + 0x00A7D2, + 0x00A7D4, + 0x00AB5B, + 0x00AB65, + 0x010786, + 0x0107B1 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002B9, 0x0002DF], + [0x0002E5, 0x000362], + [0x000370, 0x000484], + [0x000487, 0x000950], + [0x000953, 0x0010FA], + [0x0010FC, 0x001CFF], + [0x001D26, 0x001D2B], + [0x001D5D, 0x001D61], + [0x001D66, 0x001D6A], + [0x001DBF, 0x001DFF], + [0x001F00, 0x00202E], + [0x002030, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x0020EF], + [0x0020F1, 0x002129], + [0x00212C, 0x002131], + [0x002133, 0x00214D], + [0x00214F, 0x00215F], + [0x002189, 0x002C5F], + [0x002C80, 0x00A6FF], + [0x00A708, 0x00A721], + [0x00A788, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A800, 0x00A92D], + [0x00A92F, 0x00AB2F], + [0x00AB6A, 0x00DBFF], + [0x00E000, 0x00FAFF], + [0x00FB07, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x01077F], + [0x0107BB, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Latin}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Latin}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Latn}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Latn}" +); +testPropertyEscapes( + /^\P{scx=Latin}+$/u, + nonMatchSymbols, + "\\P{scx=Latin}" +); +testPropertyEscapes( + /^\P{scx=Latn}+$/u, + nonMatchSymbols, + "\\P{scx=Latn}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js new file mode 100644 index 0000000000..879fdb54f3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lepcha.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Lepcha` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001C00, 0x001C37], + [0x001C3B, 0x001C49], + [0x001C4D, 0x001C4F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Lepcha}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lepcha}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Lepc}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lepc}" +); +testPropertyEscapes( + /^\p{scx=Lepcha}+$/u, + matchSymbols, + "\\p{scx=Lepcha}" +); +testPropertyEscapes( + /^\p{scx=Lepc}+$/u, + matchSymbols, + "\\p{scx=Lepc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001BFF], + [0x001C38, 0x001C3A], + [0x001C4A, 0x001C4C], + [0x001C50, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Lepcha}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lepcha}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Lepc}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lepc}" +); +testPropertyEscapes( + /^\P{scx=Lepcha}+$/u, + nonMatchSymbols, + "\\P{scx=Lepcha}" +); +testPropertyEscapes( + /^\P{scx=Lepc}+$/u, + nonMatchSymbols, + "\\P{scx=Lepc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js new file mode 100644 index 0000000000..7d790ff104 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Limbu.js @@ -0,0 +1,85 @@ +// Copyright 2022 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 for `Script_Extensions=Limbu` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000965, + 0x001940 + ], + ranges: [ + [0x001900, 0x00191E], + [0x001920, 0x00192B], + [0x001930, 0x00193B], + [0x001944, 0x00194F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Limbu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Limbu}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Limb}+$/u, + matchSymbols, + "\\p{Script_Extensions=Limb}" +); +testPropertyEscapes( + /^\p{scx=Limbu}+$/u, + matchSymbols, + "\\p{scx=Limbu}" +); +testPropertyEscapes( + /^\p{scx=Limb}+$/u, + matchSymbols, + "\\p{scx=Limb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00191F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000964], + [0x000966, 0x0018FF], + [0x00192C, 0x00192F], + [0x00193C, 0x00193F], + [0x001941, 0x001943], + [0x001950, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Limbu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Limbu}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Limb}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Limb}" +); +testPropertyEscapes( + /^\P{scx=Limbu}+$/u, + nonMatchSymbols, + "\\P{scx=Limbu}" +); +testPropertyEscapes( + /^\P{scx=Limb}+$/u, + nonMatchSymbols, + "\\P{scx=Limb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js new file mode 100644 index 0000000000..d53b7bf47f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_A.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script_Extensions=Linear_A` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010107, 0x010133], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Linear_A}+$/u, + matchSymbols, + "\\p{Script_Extensions=Linear_A}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Lina}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lina}" +); +testPropertyEscapes( + /^\p{scx=Linear_A}+$/u, + matchSymbols, + "\\p{scx=Linear_A}" +); +testPropertyEscapes( + /^\p{scx=Lina}+$/u, + matchSymbols, + "\\p{scx=Lina}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010106], + [0x010134, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Linear_A}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Linear_A}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Lina}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lina}" +); +testPropertyEscapes( + /^\P{scx=Linear_A}+$/u, + nonMatchSymbols, + "\\P{scx=Linear_A}" +); +testPropertyEscapes( + /^\P{scx=Lina}+$/u, + nonMatchSymbols, + "\\P{scx=Lina}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js new file mode 100644 index 0000000000..d8ffc94fb2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Linear_B.js @@ -0,0 +1,92 @@ +// Copyright 2022 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 for `Script_Extensions=Linear_B` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010100, 0x010102], + [0x010107, 0x010133], + [0x010137, 0x01013F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Linear_B}+$/u, + matchSymbols, + "\\p{Script_Extensions=Linear_B}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Linb}+$/u, + matchSymbols, + "\\p{Script_Extensions=Linb}" +); +testPropertyEscapes( + /^\p{scx=Linear_B}+$/u, + matchSymbols, + "\\p{scx=Linear_B}" +); +testPropertyEscapes( + /^\p{scx=Linb}+$/u, + matchSymbols, + "\\p{scx=Linb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x0100FF], + [0x010103, 0x010106], + [0x010134, 0x010136], + [0x010140, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Linear_B}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Linear_B}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Linb}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Linb}" +); +testPropertyEscapes( + /^\P{scx=Linear_B}+$/u, + nonMatchSymbols, + "\\P{scx=Linear_B}" +); +testPropertyEscapes( + /^\P{scx=Linb}+$/u, + nonMatchSymbols, + "\\P{scx=Linb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js new file mode 100644 index 0000000000..758e53c99b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lisu.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Lisu` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x011FB0 + ], + ranges: [ + [0x00A4D0, 0x00A4FF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Lisu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lisu}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Lisu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lisu}" +); +testPropertyEscapes( + /^\p{scx=Lisu}+$/u, + matchSymbols, + "\\p{scx=Lisu}" +); +testPropertyEscapes( + /^\p{scx=Lisu}+$/u, + matchSymbols, + "\\p{scx=Lisu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A4CF], + [0x00A500, 0x00DBFF], + [0x00E000, 0x011FAF], + [0x011FB1, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Lisu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lisu}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Lisu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lisu}" +); +testPropertyEscapes( + /^\P{scx=Lisu}+$/u, + nonMatchSymbols, + "\\P{scx=Lisu}" +); +testPropertyEscapes( + /^\P{scx=Lisu}+$/u, + nonMatchSymbols, + "\\P{scx=Lisu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js new file mode 100644 index 0000000000..3c065d909d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lycian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Lycian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010280, 0x01029C] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Lycian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lycian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Lyci}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lyci}" +); +testPropertyEscapes( + /^\p{scx=Lycian}+$/u, + matchSymbols, + "\\p{scx=Lycian}" +); +testPropertyEscapes( + /^\p{scx=Lyci}+$/u, + matchSymbols, + "\\p{scx=Lyci}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01027F], + [0x01029D, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Lycian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lycian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Lyci}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lyci}" +); +testPropertyEscapes( + /^\P{scx=Lycian}+$/u, + nonMatchSymbols, + "\\P{scx=Lycian}" +); +testPropertyEscapes( + /^\P{scx=Lyci}+$/u, + nonMatchSymbols, + "\\P{scx=Lyci}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js new file mode 100644 index 0000000000..af89318235 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Lydian.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Lydian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01093F + ], + ranges: [ + [0x010920, 0x010939] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Lydian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lydian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Lydi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lydi}" +); +testPropertyEscapes( + /^\p{scx=Lydian}+$/u, + matchSymbols, + "\\p{scx=Lydian}" +); +testPropertyEscapes( + /^\p{scx=Lydi}+$/u, + matchSymbols, + "\\p{scx=Lydi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01091F], + [0x01093A, 0x01093E], + [0x010940, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Lydian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lydian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Lydi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lydi}" +); +testPropertyEscapes( + /^\P{scx=Lydian}+$/u, + nonMatchSymbols, + "\\P{scx=Lydian}" +); +testPropertyEscapes( + /^\P{scx=Lydi}+$/u, + nonMatchSymbols, + "\\P{scx=Lydi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js new file mode 100644 index 0000000000..feebf3827b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mahajani.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Mahajani` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000964, 0x00096F], + [0x00A830, 0x00A839], + [0x011150, 0x011176] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Mahajani}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mahajani}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mahj}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mahj}" +); +testPropertyEscapes( + /^\p{scx=Mahajani}+$/u, + matchSymbols, + "\\p{scx=Mahajani}" +); +testPropertyEscapes( + /^\p{scx=Mahj}+$/u, + matchSymbols, + "\\p{scx=Mahj}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000970, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x01114F], + [0x011177, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Mahajani}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mahajani}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mahj}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mahj}" +); +testPropertyEscapes( + /^\P{scx=Mahajani}+$/u, + nonMatchSymbols, + "\\P{scx=Mahajani}" +); +testPropertyEscapes( + /^\P{scx=Mahj}+$/u, + nonMatchSymbols, + "\\P{scx=Mahj}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js new file mode 100644 index 0000000000..701ee1dc1b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Makasar.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Makasar` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011EE0, 0x011EF8] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Makasar}+$/u, + matchSymbols, + "\\p{Script_Extensions=Makasar}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Maka}+$/u, + matchSymbols, + "\\p{Script_Extensions=Maka}" +); +testPropertyEscapes( + /^\p{scx=Makasar}+$/u, + matchSymbols, + "\\p{scx=Makasar}" +); +testPropertyEscapes( + /^\p{scx=Maka}+$/u, + matchSymbols, + "\\p{scx=Maka}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011EDF], + [0x011EF9, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Makasar}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Makasar}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Maka}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Maka}" +); +testPropertyEscapes( + /^\P{scx=Makasar}+$/u, + nonMatchSymbols, + "\\P{scx=Makasar}" +); +testPropertyEscapes( + /^\P{scx=Maka}+$/u, + nonMatchSymbols, + "\\P{scx=Maka}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js new file mode 100644 index 0000000000..39cd2edddf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Malayalam.js @@ -0,0 +1,95 @@ +// Copyright 2022 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 for `Script_Extensions=Malayalam` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001CDA + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x000D00, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D44], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4F], + [0x000D54, 0x000D63], + [0x000D66, 0x000D7F], + [0x00A830, 0x00A832] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Malayalam}+$/u, + matchSymbols, + "\\p{Script_Extensions=Malayalam}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mlym}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mlym}" +); +testPropertyEscapes( + /^\p{scx=Malayalam}+$/u, + matchSymbols, + "\\p{scx=Malayalam}" +); +testPropertyEscapes( + /^\p{scx=Mlym}+$/u, + matchSymbols, + "\\p{scx=Mlym}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000D0D, + 0x000D11, + 0x000D45, + 0x000D49 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x000CFF], + [0x000D50, 0x000D53], + [0x000D64, 0x000D65], + [0x000D80, 0x001CD9], + [0x001CDB, 0x00A82F], + [0x00A833, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Malayalam}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Malayalam}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mlym}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mlym}" +); +testPropertyEscapes( + /^\P{scx=Malayalam}+$/u, + nonMatchSymbols, + "\\P{scx=Malayalam}" +); +testPropertyEscapes( + /^\P{scx=Mlym}+$/u, + nonMatchSymbols, + "\\P{scx=Mlym}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js new file mode 100644 index 0000000000..84dc0aadd4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mandaic.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Mandaic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000640, + 0x00085E + ], + ranges: [ + [0x000840, 0x00085B] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Mandaic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mandaic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mand}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mand}" +); +testPropertyEscapes( + /^\p{scx=Mandaic}+$/u, + matchSymbols, + "\\p{scx=Mandaic}" +); +testPropertyEscapes( + /^\p{scx=Mand}+$/u, + matchSymbols, + "\\p{scx=Mand}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00063F], + [0x000641, 0x00083F], + [0x00085C, 0x00085D], + [0x00085F, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Mandaic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mandaic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mand}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mand}" +); +testPropertyEscapes( + /^\P{scx=Mandaic}+$/u, + nonMatchSymbols, + "\\P{scx=Mandaic}" +); +testPropertyEscapes( + /^\P{scx=Mand}+$/u, + nonMatchSymbols, + "\\P{scx=Mand}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js new file mode 100644 index 0000000000..d3055c5963 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Manichaean.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Manichaean` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000640 + ], + ranges: [ + [0x010AC0, 0x010AE6], + [0x010AEB, 0x010AF6] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Manichaean}+$/u, + matchSymbols, + "\\p{Script_Extensions=Manichaean}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mani}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mani}" +); +testPropertyEscapes( + /^\p{scx=Manichaean}+$/u, + matchSymbols, + "\\p{scx=Manichaean}" +); +testPropertyEscapes( + /^\p{scx=Mani}+$/u, + matchSymbols, + "\\p{scx=Mani}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00063F], + [0x000641, 0x00DBFF], + [0x00E000, 0x010ABF], + [0x010AE7, 0x010AEA], + [0x010AF7, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Manichaean}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Manichaean}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mani}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mani}" +); +testPropertyEscapes( + /^\P{scx=Manichaean}+$/u, + nonMatchSymbols, + "\\P{scx=Manichaean}" +); +testPropertyEscapes( + /^\P{scx=Mani}+$/u, + nonMatchSymbols, + "\\P{scx=Mani}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js new file mode 100644 index 0000000000..aebafde323 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Marchen.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Marchen` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011C70, 0x011C8F], + [0x011C92, 0x011CA7], + [0x011CA9, 0x011CB6] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Marchen}+$/u, + matchSymbols, + "\\p{Script_Extensions=Marchen}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Marc}+$/u, + matchSymbols, + "\\p{Script_Extensions=Marc}" +); +testPropertyEscapes( + /^\p{scx=Marchen}+$/u, + matchSymbols, + "\\p{scx=Marchen}" +); +testPropertyEscapes( + /^\p{scx=Marc}+$/u, + matchSymbols, + "\\p{scx=Marc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011CA8 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011C6F], + [0x011C90, 0x011C91], + [0x011CB7, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Marchen}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Marchen}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Marc}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Marc}" +); +testPropertyEscapes( + /^\P{scx=Marchen}+$/u, + nonMatchSymbols, + "\\P{scx=Marchen}" +); +testPropertyEscapes( + /^\P{scx=Marc}+$/u, + nonMatchSymbols, + "\\P{scx=Marc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js new file mode 100644 index 0000000000..f24ea83720 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Masaram_Gondi.js @@ -0,0 +1,89 @@ +// Copyright 2022 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 for `Script_Extensions=Masaram_Gondi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x011D3A + ], + ranges: [ + [0x000964, 0x000965], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D47], + [0x011D50, 0x011D59] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Masaram_Gondi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Masaram_Gondi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Gonm}+$/u, + matchSymbols, + "\\p{Script_Extensions=Gonm}" +); +testPropertyEscapes( + /^\p{scx=Masaram_Gondi}+$/u, + matchSymbols, + "\\p{scx=Masaram_Gondi}" +); +testPropertyEscapes( + /^\p{scx=Gonm}+$/u, + matchSymbols, + "\\p{scx=Gonm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011D07, + 0x011D0A, + 0x011D3B, + 0x011D3E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000966, 0x00DBFF], + [0x00E000, 0x011CFF], + [0x011D37, 0x011D39], + [0x011D48, 0x011D4F], + [0x011D5A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Masaram_Gondi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Masaram_Gondi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Gonm}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Gonm}" +); +testPropertyEscapes( + /^\P{scx=Masaram_Gondi}+$/u, + nonMatchSymbols, + "\\P{scx=Masaram_Gondi}" +); +testPropertyEscapes( + /^\P{scx=Gonm}+$/u, + nonMatchSymbols, + "\\P{scx=Gonm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js new file mode 100644 index 0000000000..ae8f0bbf69 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Medefaidrin.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Medefaidrin` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016E40, 0x016E9A] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Medefaidrin}+$/u, + matchSymbols, + "\\p{Script_Extensions=Medefaidrin}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Medf}+$/u, + matchSymbols, + "\\p{Script_Extensions=Medf}" +); +testPropertyEscapes( + /^\p{scx=Medefaidrin}+$/u, + matchSymbols, + "\\p{scx=Medefaidrin}" +); +testPropertyEscapes( + /^\p{scx=Medf}+$/u, + matchSymbols, + "\\p{scx=Medf}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016E3F], + [0x016E9B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Medefaidrin}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Medefaidrin}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Medf}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Medf}" +); +testPropertyEscapes( + /^\P{scx=Medefaidrin}+$/u, + nonMatchSymbols, + "\\P{scx=Medefaidrin}" +); +testPropertyEscapes( + /^\P{scx=Medf}+$/u, + nonMatchSymbols, + "\\P{scx=Medf}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js new file mode 100644 index 0000000000..75c6d5d13f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meetei_Mayek.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Meetei_Mayek` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00AAE0, 0x00AAF6], + [0x00ABC0, 0x00ABED], + [0x00ABF0, 0x00ABF9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Meetei_Mayek}+$/u, + matchSymbols, + "\\p{Script_Extensions=Meetei_Mayek}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mtei}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mtei}" +); +testPropertyEscapes( + /^\p{scx=Meetei_Mayek}+$/u, + matchSymbols, + "\\p{scx=Meetei_Mayek}" +); +testPropertyEscapes( + /^\p{scx=Mtei}+$/u, + matchSymbols, + "\\p{scx=Mtei}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00AADF], + [0x00AAF7, 0x00ABBF], + [0x00ABEE, 0x00ABEF], + [0x00ABFA, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Meetei_Mayek}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Meetei_Mayek}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mtei}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mtei}" +); +testPropertyEscapes( + /^\P{scx=Meetei_Mayek}+$/u, + nonMatchSymbols, + "\\P{scx=Meetei_Mayek}" +); +testPropertyEscapes( + /^\P{scx=Mtei}+$/u, + nonMatchSymbols, + "\\P{scx=Mtei}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js new file mode 100644 index 0000000000..b7f99bf477 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mende_Kikakui.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Mende_Kikakui` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01E800, 0x01E8C4], + [0x01E8C7, 0x01E8D6] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Mende_Kikakui}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mende_Kikakui}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mend}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mend}" +); +testPropertyEscapes( + /^\p{scx=Mende_Kikakui}+$/u, + matchSymbols, + "\\p{scx=Mende_Kikakui}" +); +testPropertyEscapes( + /^\p{scx=Mend}+$/u, + matchSymbols, + "\\p{scx=Mend}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E7FF], + [0x01E8C5, 0x01E8C6], + [0x01E8D7, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Mende_Kikakui}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mende_Kikakui}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mend}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mend}" +); +testPropertyEscapes( + /^\P{scx=Mende_Kikakui}+$/u, + nonMatchSymbols, + "\\P{scx=Mende_Kikakui}" +); +testPropertyEscapes( + /^\P{scx=Mend}+$/u, + nonMatchSymbols, + "\\P{scx=Mend}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js new file mode 100644 index 0000000000..98a217d398 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Cursive.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Meroitic_Cursive` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0109A0, 0x0109B7], + [0x0109BC, 0x0109CF], + [0x0109D2, 0x0109FF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Meroitic_Cursive}+$/u, + matchSymbols, + "\\p{Script_Extensions=Meroitic_Cursive}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Merc}+$/u, + matchSymbols, + "\\p{Script_Extensions=Merc}" +); +testPropertyEscapes( + /^\p{scx=Meroitic_Cursive}+$/u, + matchSymbols, + "\\p{scx=Meroitic_Cursive}" +); +testPropertyEscapes( + /^\p{scx=Merc}+$/u, + matchSymbols, + "\\p{scx=Merc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01099F], + [0x0109B8, 0x0109BB], + [0x0109D0, 0x0109D1], + [0x010A00, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Meroitic_Cursive}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Meroitic_Cursive}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Merc}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Merc}" +); +testPropertyEscapes( + /^\P{scx=Meroitic_Cursive}+$/u, + nonMatchSymbols, + "\\P{scx=Meroitic_Cursive}" +); +testPropertyEscapes( + /^\P{scx=Merc}+$/u, + nonMatchSymbols, + "\\P{scx=Merc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js new file mode 100644 index 0000000000..e5bdd2596b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Meroitic_Hieroglyphs.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Meroitic_Hieroglyphs` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010980, 0x01099F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Meroitic_Hieroglyphs}+$/u, + matchSymbols, + "\\p{Script_Extensions=Meroitic_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mero}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mero}" +); +testPropertyEscapes( + /^\p{scx=Meroitic_Hieroglyphs}+$/u, + matchSymbols, + "\\p{scx=Meroitic_Hieroglyphs}" +); +testPropertyEscapes( + /^\p{scx=Mero}+$/u, + matchSymbols, + "\\p{scx=Mero}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01097F], + [0x0109A0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Meroitic_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Meroitic_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mero}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mero}" +); +testPropertyEscapes( + /^\P{scx=Meroitic_Hieroglyphs}+$/u, + nonMatchSymbols, + "\\P{scx=Meroitic_Hieroglyphs}" +); +testPropertyEscapes( + /^\P{scx=Mero}+$/u, + nonMatchSymbols, + "\\P{scx=Mero}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js new file mode 100644 index 0000000000..ed2a7f199f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Miao.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Miao` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016F00, 0x016F4A], + [0x016F4F, 0x016F87], + [0x016F8F, 0x016F9F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Miao}+$/u, + matchSymbols, + "\\p{Script_Extensions=Miao}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Plrd}+$/u, + matchSymbols, + "\\p{Script_Extensions=Plrd}" +); +testPropertyEscapes( + /^\p{scx=Miao}+$/u, + matchSymbols, + "\\p{scx=Miao}" +); +testPropertyEscapes( + /^\p{scx=Plrd}+$/u, + matchSymbols, + "\\p{scx=Plrd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016EFF], + [0x016F4B, 0x016F4E], + [0x016F88, 0x016F8E], + [0x016FA0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Miao}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Miao}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Plrd}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Plrd}" +); +testPropertyEscapes( + /^\P{scx=Miao}+$/u, + nonMatchSymbols, + "\\P{scx=Miao}" +); +testPropertyEscapes( + /^\P{scx=Plrd}+$/u, + nonMatchSymbols, + "\\P{scx=Plrd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js new file mode 100644 index 0000000000..d5b65f0130 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Modi.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Modi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A830, 0x00A839], + [0x011600, 0x011644], + [0x011650, 0x011659] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Modi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Modi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Modi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Modi}" +); +testPropertyEscapes( + /^\p{scx=Modi}+$/u, + matchSymbols, + "\\p{scx=Modi}" +); +testPropertyEscapes( + /^\p{scx=Modi}+$/u, + matchSymbols, + "\\p{scx=Modi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x0115FF], + [0x011645, 0x01164F], + [0x01165A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Modi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Modi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Modi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Modi}" +); +testPropertyEscapes( + /^\P{scx=Modi}+$/u, + nonMatchSymbols, + "\\P{scx=Modi}" +); +testPropertyEscapes( + /^\P{scx=Modi}+$/u, + nonMatchSymbols, + "\\P{scx=Modi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js new file mode 100644 index 0000000000..494e359a21 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mongolian.js @@ -0,0 +1,82 @@ +// Copyright 2022 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 for `Script_Extensions=Mongolian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00202F + ], + ranges: [ + [0x001800, 0x001819], + [0x001820, 0x001878], + [0x001880, 0x0018AA], + [0x011660, 0x01166C] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Mongolian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mongolian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mong}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mong}" +); +testPropertyEscapes( + /^\p{scx=Mongolian}+$/u, + matchSymbols, + "\\p{scx=Mongolian}" +); +testPropertyEscapes( + /^\p{scx=Mong}+$/u, + matchSymbols, + "\\p{scx=Mong}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0017FF], + [0x00181A, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x00202E], + [0x002030, 0x00DBFF], + [0x00E000, 0x01165F], + [0x01166D, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Mongolian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mongolian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mong}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mong}" +); +testPropertyEscapes( + /^\P{scx=Mongolian}+$/u, + nonMatchSymbols, + "\\P{scx=Mongolian}" +); +testPropertyEscapes( + /^\P{scx=Mong}+$/u, + nonMatchSymbols, + "\\P{scx=Mong}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js new file mode 100644 index 0000000000..cb0122c5b6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Mro.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Mro` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016A40, 0x016A5E], + [0x016A60, 0x016A69], + [0x016A6E, 0x016A6F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Mro}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mro}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mroo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mroo}" +); +testPropertyEscapes( + /^\p{scx=Mro}+$/u, + matchSymbols, + "\\p{scx=Mro}" +); +testPropertyEscapes( + /^\p{scx=Mroo}+$/u, + matchSymbols, + "\\p{scx=Mroo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x016A5F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016A3F], + [0x016A6A, 0x016A6D], + [0x016A70, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Mro}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mro}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mroo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mroo}" +); +testPropertyEscapes( + /^\P{scx=Mro}+$/u, + nonMatchSymbols, + "\\P{scx=Mro}" +); +testPropertyEscapes( + /^\P{scx=Mroo}+$/u, + nonMatchSymbols, + "\\P{scx=Mroo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js new file mode 100644 index 0000000000..bd72aad226 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Multani.js @@ -0,0 +1,85 @@ +// Copyright 2022 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 for `Script_Extensions=Multani` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x011288 + ], + ranges: [ + [0x000A66, 0x000A6F], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Multani}+$/u, + matchSymbols, + "\\p{Script_Extensions=Multani}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mult}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mult}" +); +testPropertyEscapes( + /^\p{scx=Multani}+$/u, + matchSymbols, + "\\p{scx=Multani}" +); +testPropertyEscapes( + /^\p{scx=Mult}+$/u, + matchSymbols, + "\\p{scx=Mult}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x011287, + 0x011289, + 0x01128E, + 0x01129E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000A65], + [0x000A70, 0x00DBFF], + [0x00E000, 0x01127F], + [0x0112AA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Multani}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Multani}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mult}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mult}" +); +testPropertyEscapes( + /^\P{scx=Multani}+$/u, + nonMatchSymbols, + "\\P{scx=Multani}" +); +testPropertyEscapes( + /^\P{scx=Mult}+$/u, + nonMatchSymbols, + "\\P{scx=Mult}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js new file mode 100644 index 0000000000..4faf1129ca --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Myanmar.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script_Extensions=Myanmar` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00A92E + ], + ranges: [ + [0x001000, 0x00109F], + [0x00A9E0, 0x00A9FE], + [0x00AA60, 0x00AA7F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Myanmar}+$/u, + matchSymbols, + "\\p{Script_Extensions=Myanmar}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Mymr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Mymr}" +); +testPropertyEscapes( + /^\p{scx=Myanmar}+$/u, + matchSymbols, + "\\p{scx=Myanmar}" +); +testPropertyEscapes( + /^\p{scx=Mymr}+$/u, + matchSymbols, + "\\p{scx=Mymr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000FFF], + [0x0010A0, 0x00A92D], + [0x00A92F, 0x00A9DF], + [0x00A9FF, 0x00AA5F], + [0x00AA80, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Myanmar}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Myanmar}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Mymr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Mymr}" +); +testPropertyEscapes( + /^\P{scx=Myanmar}+$/u, + nonMatchSymbols, + "\\P{scx=Myanmar}" +); +testPropertyEscapes( + /^\P{scx=Mymr}+$/u, + nonMatchSymbols, + "\\P{scx=Mymr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js new file mode 100644 index 0000000000..1ef6ba9261 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nabataean.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Nabataean` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010880, 0x01089E], + [0x0108A7, 0x0108AF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Nabataean}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nabataean}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Nbat}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nbat}" +); +testPropertyEscapes( + /^\p{scx=Nabataean}+$/u, + matchSymbols, + "\\p{scx=Nabataean}" +); +testPropertyEscapes( + /^\p{scx=Nbat}+$/u, + matchSymbols, + "\\p{scx=Nbat}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01087F], + [0x01089F, 0x0108A6], + [0x0108B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Nabataean}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nabataean}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Nbat}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nbat}" +); +testPropertyEscapes( + /^\P{scx=Nabataean}+$/u, + nonMatchSymbols, + "\\P{scx=Nabataean}" +); +testPropertyEscapes( + /^\P{scx=Nbat}+$/u, + nonMatchSymbols, + "\\P{scx=Nbat}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js new file mode 100644 index 0000000000..52fc0e732d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nag_Mundari.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Nag_Mundari` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01E4D0, 0x01E4F9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Nag_Mundari}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nag_Mundari}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Nagm}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nagm}" +); +testPropertyEscapes( + /^\p{scx=Nag_Mundari}+$/u, + matchSymbols, + "\\p{scx=Nag_Mundari}" +); +testPropertyEscapes( + /^\p{scx=Nagm}+$/u, + matchSymbols, + "\\p{scx=Nagm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E4CF], + [0x01E4FA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Nag_Mundari}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nag_Mundari}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Nagm}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nagm}" +); +testPropertyEscapes( + /^\P{scx=Nag_Mundari}+$/u, + nonMatchSymbols, + "\\P{scx=Nag_Mundari}" +); +testPropertyEscapes( + /^\P{scx=Nagm}+$/u, + nonMatchSymbols, + "\\P{scx=Nagm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js new file mode 100644 index 0000000000..c9440ace83 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nandinagari.js @@ -0,0 +1,90 @@ +// Copyright 2022 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 for `Script_Extensions=Nandinagari` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001CE9, + 0x001CF2, + 0x001CFA + ], + ranges: [ + [0x000964, 0x000965], + [0x000CE6, 0x000CEF], + [0x00A830, 0x00A835], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D7], + [0x0119DA, 0x0119E4] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Nandinagari}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nandinagari}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Nand}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nand}" +); +testPropertyEscapes( + /^\p{scx=Nandinagari}+$/u, + matchSymbols, + "\\p{scx=Nandinagari}" +); +testPropertyEscapes( + /^\p{scx=Nand}+$/u, + matchSymbols, + "\\p{scx=Nand}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000966, 0x000CE5], + [0x000CF0, 0x001CE8], + [0x001CEA, 0x001CF1], + [0x001CF3, 0x001CF9], + [0x001CFB, 0x00A82F], + [0x00A836, 0x00DBFF], + [0x00E000, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D8, 0x0119D9], + [0x0119E5, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Nandinagari}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nandinagari}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Nand}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nand}" +); +testPropertyEscapes( + /^\P{scx=Nandinagari}+$/u, + nonMatchSymbols, + "\\P{scx=Nandinagari}" +); +testPropertyEscapes( + /^\P{scx=Nand}+$/u, + nonMatchSymbols, + "\\P{scx=Nand}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js new file mode 100644 index 0000000000..69d7b1e3a2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_New_Tai_Lue.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script_Extensions=New_Tai_Lue` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x0019D0, 0x0019DA], + [0x0019DE, 0x0019DF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=New_Tai_Lue}+$/u, + matchSymbols, + "\\p{Script_Extensions=New_Tai_Lue}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Talu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Talu}" +); +testPropertyEscapes( + /^\p{scx=New_Tai_Lue}+$/u, + matchSymbols, + "\\p{scx=New_Tai_Lue}" +); +testPropertyEscapes( + /^\p{scx=Talu}+$/u, + matchSymbols, + "\\p{scx=Talu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019CF], + [0x0019DB, 0x0019DD], + [0x0019E0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=New_Tai_Lue}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=New_Tai_Lue}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Talu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Talu}" +); +testPropertyEscapes( + /^\P{scx=New_Tai_Lue}+$/u, + nonMatchSymbols, + "\\P{scx=New_Tai_Lue}" +); +testPropertyEscapes( + /^\P{scx=Talu}+$/u, + nonMatchSymbols, + "\\P{scx=Talu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js new file mode 100644 index 0000000000..089add5c10 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Newa.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Newa` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011400, 0x01145B], + [0x01145D, 0x011461] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Newa}+$/u, + matchSymbols, + "\\p{Script_Extensions=Newa}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Newa}+$/u, + matchSymbols, + "\\p{Script_Extensions=Newa}" +); +testPropertyEscapes( + /^\p{scx=Newa}+$/u, + matchSymbols, + "\\p{scx=Newa}" +); +testPropertyEscapes( + /^\p{scx=Newa}+$/u, + matchSymbols, + "\\p{scx=Newa}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01145C + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0113FF], + [0x011462, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Newa}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Newa}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Newa}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Newa}" +); +testPropertyEscapes( + /^\P{scx=Newa}+$/u, + nonMatchSymbols, + "\\P{scx=Newa}" +); +testPropertyEscapes( + /^\P{scx=Newa}+$/u, + nonMatchSymbols, + "\\P{scx=Newa}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js new file mode 100644 index 0000000000..bc8290aa0f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nko.js @@ -0,0 +1,84 @@ +// Copyright 2022 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 for `Script_Extensions=Nko` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00060C, + 0x00061B, + 0x00061F + ], + ranges: [ + [0x0007C0, 0x0007FA], + [0x0007FD, 0x0007FF], + [0x00FD3E, 0x00FD3F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Nko}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nko}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Nkoo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nkoo}" +); +testPropertyEscapes( + /^\p{scx=Nko}+$/u, + matchSymbols, + "\\p{scx=Nko}" +); +testPropertyEscapes( + /^\p{scx=Nkoo}+$/u, + matchSymbols, + "\\p{scx=Nkoo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00060B], + [0x00060D, 0x00061A], + [0x00061C, 0x00061E], + [0x000620, 0x0007BF], + [0x0007FB, 0x0007FC], + [0x000800, 0x00DBFF], + [0x00E000, 0x00FD3D], + [0x00FD40, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Nko}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nko}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Nkoo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nkoo}" +); +testPropertyEscapes( + /^\P{scx=Nko}+$/u, + nonMatchSymbols, + "\\P{scx=Nko}" +); +testPropertyEscapes( + /^\P{scx=Nkoo}+$/u, + nonMatchSymbols, + "\\P{scx=Nkoo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js new file mode 100644 index 0000000000..f637aee394 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nushu.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Nushu` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x016FE1 + ], + ranges: [ + [0x01B170, 0x01B2FB] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Nushu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nushu}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Nshu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nshu}" +); +testPropertyEscapes( + /^\p{scx=Nushu}+$/u, + matchSymbols, + "\\p{scx=Nushu}" +); +testPropertyEscapes( + /^\p{scx=Nshu}+$/u, + matchSymbols, + "\\p{scx=Nshu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016FE0], + [0x016FE2, 0x01B16F], + [0x01B2FC, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Nushu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nushu}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Nshu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nshu}" +); +testPropertyEscapes( + /^\P{scx=Nushu}+$/u, + nonMatchSymbols, + "\\P{scx=Nushu}" +); +testPropertyEscapes( + /^\P{scx=Nshu}+$/u, + nonMatchSymbols, + "\\P{scx=Nshu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js new file mode 100644 index 0000000000..636cfc232f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Nyiakeng_Puachue_Hmong.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script_Extensions=Nyiakeng_Puachue_Hmong` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01E100, 0x01E12C], + [0x01E130, 0x01E13D], + [0x01E140, 0x01E149], + [0x01E14E, 0x01E14F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Nyiakeng_Puachue_Hmong}+$/u, + matchSymbols, + "\\p{Script_Extensions=Nyiakeng_Puachue_Hmong}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hmnp}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hmnp}" +); +testPropertyEscapes( + /^\p{scx=Nyiakeng_Puachue_Hmong}+$/u, + matchSymbols, + "\\p{scx=Nyiakeng_Puachue_Hmong}" +); +testPropertyEscapes( + /^\p{scx=Hmnp}+$/u, + matchSymbols, + "\\p{scx=Hmnp}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E0FF], + [0x01E12D, 0x01E12F], + [0x01E13E, 0x01E13F], + [0x01E14A, 0x01E14D], + [0x01E150, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Nyiakeng_Puachue_Hmong}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Nyiakeng_Puachue_Hmong}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hmnp}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hmnp}" +); +testPropertyEscapes( + /^\P{scx=Nyiakeng_Puachue_Hmong}+$/u, + nonMatchSymbols, + "\\P{scx=Nyiakeng_Puachue_Hmong}" +); +testPropertyEscapes( + /^\P{scx=Hmnp}+$/u, + nonMatchSymbols, + "\\P{scx=Hmnp}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js new file mode 100644 index 0000000000..8387ae9afa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ogham.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Ogham` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001680, 0x00169C] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Ogham}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ogham}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Ogam}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ogam}" +); +testPropertyEscapes( + /^\p{scx=Ogham}+$/u, + matchSymbols, + "\\p{scx=Ogham}" +); +testPropertyEscapes( + /^\p{scx=Ogam}+$/u, + matchSymbols, + "\\p{scx=Ogam}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00167F], + [0x00169D, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Ogham}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ogham}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Ogam}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ogam}" +); +testPropertyEscapes( + /^\P{scx=Ogham}+$/u, + nonMatchSymbols, + "\\P{scx=Ogham}" +); +testPropertyEscapes( + /^\P{scx=Ogam}+$/u, + nonMatchSymbols, + "\\P{scx=Ogam}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js new file mode 100644 index 0000000000..4d65726487 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ol_Chiki.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Ol_Chiki` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001C50, 0x001C7F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Ol_Chiki}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ol_Chiki}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Olck}+$/u, + matchSymbols, + "\\p{Script_Extensions=Olck}" +); +testPropertyEscapes( + /^\p{scx=Ol_Chiki}+$/u, + matchSymbols, + "\\p{scx=Ol_Chiki}" +); +testPropertyEscapes( + /^\p{scx=Olck}+$/u, + matchSymbols, + "\\p{scx=Olck}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001C4F], + [0x001C80, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Ol_Chiki}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ol_Chiki}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Olck}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Olck}" +); +testPropertyEscapes( + /^\P{scx=Ol_Chiki}+$/u, + nonMatchSymbols, + "\\P{scx=Ol_Chiki}" +); +testPropertyEscapes( + /^\P{scx=Olck}+$/u, + nonMatchSymbols, + "\\P{scx=Olck}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js new file mode 100644 index 0000000000..973eaa2a45 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Hungarian.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Old_Hungarian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010CFA, 0x010CFF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Old_Hungarian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Old_Hungarian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hung}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hung}" +); +testPropertyEscapes( + /^\p{scx=Old_Hungarian}+$/u, + matchSymbols, + "\\p{scx=Old_Hungarian}" +); +testPropertyEscapes( + /^\p{scx=Hung}+$/u, + matchSymbols, + "\\p{scx=Hung}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CF9], + [0x010D00, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Old_Hungarian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Old_Hungarian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hung}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hung}" +); +testPropertyEscapes( + /^\P{scx=Old_Hungarian}+$/u, + nonMatchSymbols, + "\\P{scx=Old_Hungarian}" +); +testPropertyEscapes( + /^\P{scx=Hung}+$/u, + nonMatchSymbols, + "\\P{scx=Hung}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js new file mode 100644 index 0000000000..46cc2f3db5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Italic.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Old_Italic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010300, 0x010323], + [0x01032D, 0x01032F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Old_Italic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Old_Italic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Ital}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ital}" +); +testPropertyEscapes( + /^\p{scx=Old_Italic}+$/u, + matchSymbols, + "\\p{scx=Old_Italic}" +); +testPropertyEscapes( + /^\p{scx=Ital}+$/u, + matchSymbols, + "\\p{scx=Ital}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0102FF], + [0x010324, 0x01032C], + [0x010330, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Old_Italic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Old_Italic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Ital}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ital}" +); +testPropertyEscapes( + /^\P{scx=Old_Italic}+$/u, + nonMatchSymbols, + "\\P{scx=Old_Italic}" +); +testPropertyEscapes( + /^\P{scx=Ital}+$/u, + nonMatchSymbols, + "\\P{scx=Ital}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js new file mode 100644 index 0000000000..ab09b98ee3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_North_Arabian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Old_North_Arabian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010A80, 0x010A9F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Old_North_Arabian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Old_North_Arabian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Narb}+$/u, + matchSymbols, + "\\p{Script_Extensions=Narb}" +); +testPropertyEscapes( + /^\p{scx=Old_North_Arabian}+$/u, + matchSymbols, + "\\p{scx=Old_North_Arabian}" +); +testPropertyEscapes( + /^\p{scx=Narb}+$/u, + matchSymbols, + "\\p{scx=Narb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010A7F], + [0x010AA0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Old_North_Arabian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Old_North_Arabian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Narb}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Narb}" +); +testPropertyEscapes( + /^\P{scx=Old_North_Arabian}+$/u, + nonMatchSymbols, + "\\P{scx=Old_North_Arabian}" +); +testPropertyEscapes( + /^\P{scx=Narb}+$/u, + nonMatchSymbols, + "\\P{scx=Narb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js new file mode 100644 index 0000000000..265bf67d89 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Permic.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Old_Permic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000483 + ], + ranges: [ + [0x010350, 0x01037A] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Old_Permic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Old_Permic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Perm}+$/u, + matchSymbols, + "\\p{Script_Extensions=Perm}" +); +testPropertyEscapes( + /^\p{scx=Old_Permic}+$/u, + matchSymbols, + "\\p{scx=Old_Permic}" +); +testPropertyEscapes( + /^\p{scx=Perm}+$/u, + matchSymbols, + "\\p{scx=Perm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000482], + [0x000484, 0x00DBFF], + [0x00E000, 0x01034F], + [0x01037B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Old_Permic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Old_Permic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Perm}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Perm}" +); +testPropertyEscapes( + /^\P{scx=Old_Permic}+$/u, + nonMatchSymbols, + "\\P{scx=Old_Permic}" +); +testPropertyEscapes( + /^\P{scx=Perm}+$/u, + nonMatchSymbols, + "\\P{scx=Perm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js new file mode 100644 index 0000000000..b1c5b29844 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Persian.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Old_Persian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0103A0, 0x0103C3], + [0x0103C8, 0x0103D5] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Old_Persian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Old_Persian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Xpeo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Xpeo}" +); +testPropertyEscapes( + /^\p{scx=Old_Persian}+$/u, + matchSymbols, + "\\p{scx=Old_Persian}" +); +testPropertyEscapes( + /^\p{scx=Xpeo}+$/u, + matchSymbols, + "\\p{scx=Xpeo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01039F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Old_Persian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Old_Persian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Xpeo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Xpeo}" +); +testPropertyEscapes( + /^\P{scx=Old_Persian}+$/u, + nonMatchSymbols, + "\\P{scx=Old_Persian}" +); +testPropertyEscapes( + /^\P{scx=Xpeo}+$/u, + nonMatchSymbols, + "\\P{scx=Xpeo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js new file mode 100644 index 0000000000..bb0e881d2a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Sogdian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Old_Sogdian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010F00, 0x010F27] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Old_Sogdian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Old_Sogdian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sogo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sogo}" +); +testPropertyEscapes( + /^\p{scx=Old_Sogdian}+$/u, + matchSymbols, + "\\p{scx=Old_Sogdian}" +); +testPropertyEscapes( + /^\p{scx=Sogo}+$/u, + matchSymbols, + "\\p{scx=Sogo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010EFF], + [0x010F28, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Old_Sogdian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Old_Sogdian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sogo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sogo}" +); +testPropertyEscapes( + /^\P{scx=Old_Sogdian}+$/u, + nonMatchSymbols, + "\\P{scx=Old_Sogdian}" +); +testPropertyEscapes( + /^\P{scx=Sogo}+$/u, + nonMatchSymbols, + "\\P{scx=Sogo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js new file mode 100644 index 0000000000..15be5ad14e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_South_Arabian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Old_South_Arabian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010A60, 0x010A7F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Old_South_Arabian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Old_South_Arabian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sarb}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sarb}" +); +testPropertyEscapes( + /^\p{scx=Old_South_Arabian}+$/u, + matchSymbols, + "\\p{scx=Old_South_Arabian}" +); +testPropertyEscapes( + /^\p{scx=Sarb}+$/u, + matchSymbols, + "\\p{scx=Sarb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010A5F], + [0x010A80, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Old_South_Arabian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Old_South_Arabian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sarb}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sarb}" +); +testPropertyEscapes( + /^\P{scx=Old_South_Arabian}+$/u, + nonMatchSymbols, + "\\P{scx=Old_South_Arabian}" +); +testPropertyEscapes( + /^\P{scx=Sarb}+$/u, + nonMatchSymbols, + "\\P{scx=Sarb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js new file mode 100644 index 0000000000..3df042b56b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Turkic.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Old_Turkic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010C00, 0x010C48] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Old_Turkic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Old_Turkic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Orkh}+$/u, + matchSymbols, + "\\p{Script_Extensions=Orkh}" +); +testPropertyEscapes( + /^\p{scx=Old_Turkic}+$/u, + matchSymbols, + "\\p{scx=Old_Turkic}" +); +testPropertyEscapes( + /^\p{scx=Orkh}+$/u, + matchSymbols, + "\\p{scx=Orkh}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x010BFF], + [0x010C49, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Old_Turkic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Old_Turkic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Orkh}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Orkh}" +); +testPropertyEscapes( + /^\P{scx=Old_Turkic}+$/u, + nonMatchSymbols, + "\\P{scx=Old_Turkic}" +); +testPropertyEscapes( + /^\P{scx=Orkh}+$/u, + nonMatchSymbols, + "\\P{scx=Orkh}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js new file mode 100644 index 0000000000..8ca702d8ad --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Old_Uyghur.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Old_Uyghur` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000640, + 0x010AF2 + ], + ranges: [ + [0x010F70, 0x010F89] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Old_Uyghur}+$/u, + matchSymbols, + "\\p{Script_Extensions=Old_Uyghur}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Ougr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ougr}" +); +testPropertyEscapes( + /^\p{scx=Old_Uyghur}+$/u, + matchSymbols, + "\\p{scx=Old_Uyghur}" +); +testPropertyEscapes( + /^\p{scx=Ougr}+$/u, + matchSymbols, + "\\p{scx=Ougr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00063F], + [0x000641, 0x00DBFF], + [0x00E000, 0x010AF1], + [0x010AF3, 0x010F6F], + [0x010F8A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Old_Uyghur}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Old_Uyghur}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Ougr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ougr}" +); +testPropertyEscapes( + /^\P{scx=Old_Uyghur}+$/u, + nonMatchSymbols, + "\\P{scx=Old_Uyghur}" +); +testPropertyEscapes( + /^\P{scx=Ougr}+$/u, + nonMatchSymbols, + "\\P{scx=Ougr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js new file mode 100644 index 0000000000..76bc87993b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Oriya.js @@ -0,0 +1,109 @@ +// Copyright 2022 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 for `Script_Extensions=Oriya` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001CDA, + 0x001CF2 + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x000B01, 0x000B03], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B3C, 0x000B44], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4D], + [0x000B55, 0x000B57], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B63], + [0x000B66, 0x000B77] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Oriya}+$/u, + matchSymbols, + "\\p{Script_Extensions=Oriya}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Orya}+$/u, + matchSymbols, + "\\p{Script_Extensions=Orya}" +); +testPropertyEscapes( + /^\p{scx=Oriya}+$/u, + matchSymbols, + "\\p{scx=Oriya}" +); +testPropertyEscapes( + /^\p{scx=Orya}+$/u, + matchSymbols, + "\\p{scx=Orya}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000B04, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x000B00], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3B], + [0x000B45, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4E, 0x000B54], + [0x000B58, 0x000B5B], + [0x000B64, 0x000B65], + [0x000B78, 0x001CD9], + [0x001CDB, 0x001CF1], + [0x001CF3, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Oriya}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Oriya}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Orya}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Orya}" +); +testPropertyEscapes( + /^\P{scx=Oriya}+$/u, + nonMatchSymbols, + "\\P{scx=Oriya}" +); +testPropertyEscapes( + /^\P{scx=Orya}+$/u, + nonMatchSymbols, + "\\P{scx=Orya}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js new file mode 100644 index 0000000000..d0538a6feb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osage.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Osage` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Osage}+$/u, + matchSymbols, + "\\p{Script_Extensions=Osage}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Osge}+$/u, + matchSymbols, + "\\p{Script_Extensions=Osge}" +); +testPropertyEscapes( + /^\p{scx=Osage}+$/u, + matchSymbols, + "\\p{scx=Osage}" +); +testPropertyEscapes( + /^\p{scx=Osge}+$/u, + matchSymbols, + "\\p{scx=Osge}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Osage}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Osage}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Osge}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Osge}" +); +testPropertyEscapes( + /^\P{scx=Osage}+$/u, + nonMatchSymbols, + "\\P{scx=Osage}" +); +testPropertyEscapes( + /^\P{scx=Osge}+$/u, + nonMatchSymbols, + "\\P{scx=Osge}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js new file mode 100644 index 0000000000..14dabea2f2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Osmanya.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Osmanya` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010480, 0x01049D], + [0x0104A0, 0x0104A9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Osmanya}+$/u, + matchSymbols, + "\\p{Script_Extensions=Osmanya}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Osma}+$/u, + matchSymbols, + "\\p{Script_Extensions=Osma}" +); +testPropertyEscapes( + /^\p{scx=Osmanya}+$/u, + matchSymbols, + "\\p{scx=Osmanya}" +); +testPropertyEscapes( + /^\p{scx=Osma}+$/u, + matchSymbols, + "\\p{scx=Osma}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01047F], + [0x01049E, 0x01049F], + [0x0104AA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Osmanya}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Osmanya}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Osma}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Osma}" +); +testPropertyEscapes( + /^\P{scx=Osmanya}+$/u, + nonMatchSymbols, + "\\P{scx=Osmanya}" +); +testPropertyEscapes( + /^\P{scx=Osma}+$/u, + nonMatchSymbols, + "\\P{scx=Osma}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js new file mode 100644 index 0000000000..e32728e727 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pahawh_Hmong.js @@ -0,0 +1,82 @@ +// Copyright 2022 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 for `Script_Extensions=Pahawh_Hmong` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016B00, 0x016B45], + [0x016B50, 0x016B59], + [0x016B5B, 0x016B61], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Pahawh_Hmong}+$/u, + matchSymbols, + "\\p{Script_Extensions=Pahawh_Hmong}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Hmng}+$/u, + matchSymbols, + "\\p{Script_Extensions=Hmng}" +); +testPropertyEscapes( + /^\p{scx=Pahawh_Hmong}+$/u, + matchSymbols, + "\\p{scx=Pahawh_Hmong}" +); +testPropertyEscapes( + /^\p{scx=Hmng}+$/u, + matchSymbols, + "\\p{scx=Hmng}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x016B5A, + 0x016B62 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016AFF], + [0x016B46, 0x016B4F], + [0x016B78, 0x016B7C], + [0x016B90, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Pahawh_Hmong}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Pahawh_Hmong}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Hmng}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Hmng}" +); +testPropertyEscapes( + /^\P{scx=Pahawh_Hmong}+$/u, + nonMatchSymbols, + "\\P{scx=Pahawh_Hmong}" +); +testPropertyEscapes( + /^\P{scx=Hmng}+$/u, + nonMatchSymbols, + "\\P{scx=Hmng}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js new file mode 100644 index 0000000000..433656117d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Palmyrene.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Palmyrene` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010860, 0x01087F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Palmyrene}+$/u, + matchSymbols, + "\\p{Script_Extensions=Palmyrene}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Palm}+$/u, + matchSymbols, + "\\p{Script_Extensions=Palm}" +); +testPropertyEscapes( + /^\p{scx=Palmyrene}+$/u, + matchSymbols, + "\\p{scx=Palmyrene}" +); +testPropertyEscapes( + /^\p{scx=Palm}+$/u, + matchSymbols, + "\\p{scx=Palm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01085F], + [0x010880, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Palmyrene}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Palmyrene}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Palm}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Palm}" +); +testPropertyEscapes( + /^\P{scx=Palmyrene}+$/u, + nonMatchSymbols, + "\\P{scx=Palmyrene}" +); +testPropertyEscapes( + /^\P{scx=Palm}+$/u, + nonMatchSymbols, + "\\P{scx=Palm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js new file mode 100644 index 0000000000..63b561b0e1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Pau_Cin_Hau.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Pau_Cin_Hau` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011AC0, 0x011AF8] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Pau_Cin_Hau}+$/u, + matchSymbols, + "\\p{Script_Extensions=Pau_Cin_Hau}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Pauc}+$/u, + matchSymbols, + "\\p{Script_Extensions=Pauc}" +); +testPropertyEscapes( + /^\p{scx=Pau_Cin_Hau}+$/u, + matchSymbols, + "\\p{scx=Pau_Cin_Hau}" +); +testPropertyEscapes( + /^\p{scx=Pauc}+$/u, + matchSymbols, + "\\p{scx=Pauc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011ABF], + [0x011AF9, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Pau_Cin_Hau}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Pau_Cin_Hau}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Pauc}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Pauc}" +); +testPropertyEscapes( + /^\P{scx=Pau_Cin_Hau}+$/u, + nonMatchSymbols, + "\\P{scx=Pau_Cin_Hau}" +); +testPropertyEscapes( + /^\P{scx=Pauc}+$/u, + nonMatchSymbols, + "\\P{scx=Pauc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js new file mode 100644 index 0000000000..4311fdd53f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phags_Pa.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script_Extensions=Phags_Pa` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001805 + ], + ranges: [ + [0x001802, 0x001803], + [0x00A840, 0x00A877] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Phags_Pa}+$/u, + matchSymbols, + "\\p{Script_Extensions=Phags_Pa}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Phag}+$/u, + matchSymbols, + "\\p{Script_Extensions=Phag}" +); +testPropertyEscapes( + /^\p{scx=Phags_Pa}+$/u, + matchSymbols, + "\\p{scx=Phags_Pa}" +); +testPropertyEscapes( + /^\p{scx=Phag}+$/u, + matchSymbols, + "\\p{scx=Phag}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001804 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001801], + [0x001806, 0x00A83F], + [0x00A878, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Phags_Pa}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Phags_Pa}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Phag}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Phag}" +); +testPropertyEscapes( + /^\P{scx=Phags_Pa}+$/u, + nonMatchSymbols, + "\\P{scx=Phags_Pa}" +); +testPropertyEscapes( + /^\P{scx=Phag}+$/u, + nonMatchSymbols, + "\\P{scx=Phag}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js new file mode 100644 index 0000000000..825c8686f0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Phoenician.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Phoenician` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01091F + ], + ranges: [ + [0x010900, 0x01091B] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Phoenician}+$/u, + matchSymbols, + "\\p{Script_Extensions=Phoenician}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Phnx}+$/u, + matchSymbols, + "\\p{Script_Extensions=Phnx}" +); +testPropertyEscapes( + /^\p{scx=Phoenician}+$/u, + matchSymbols, + "\\p{scx=Phoenician}" +); +testPropertyEscapes( + /^\p{scx=Phnx}+$/u, + matchSymbols, + "\\p{scx=Phnx}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0108FF], + [0x01091C, 0x01091E], + [0x010920, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Phoenician}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Phoenician}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Phnx}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Phnx}" +); +testPropertyEscapes( + /^\P{scx=Phoenician}+$/u, + nonMatchSymbols, + "\\P{scx=Phoenician}" +); +testPropertyEscapes( + /^\P{scx=Phnx}+$/u, + nonMatchSymbols, + "\\P{scx=Phnx}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js new file mode 100644 index 0000000000..57150997e5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Psalter_Pahlavi.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script_Extensions=Psalter_Pahlavi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000640 + ], + ranges: [ + [0x010B80, 0x010B91], + [0x010B99, 0x010B9C], + [0x010BA9, 0x010BAF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Psalter_Pahlavi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Psalter_Pahlavi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Phlp}+$/u, + matchSymbols, + "\\p{Script_Extensions=Phlp}" +); +testPropertyEscapes( + /^\p{scx=Psalter_Pahlavi}+$/u, + matchSymbols, + "\\p{scx=Psalter_Pahlavi}" +); +testPropertyEscapes( + /^\p{scx=Phlp}+$/u, + matchSymbols, + "\\p{scx=Phlp}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00063F], + [0x000641, 0x00DBFF], + [0x00E000, 0x010B7F], + [0x010B92, 0x010B98], + [0x010B9D, 0x010BA8], + [0x010BB0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Psalter_Pahlavi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Psalter_Pahlavi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Phlp}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Phlp}" +); +testPropertyEscapes( + /^\P{scx=Psalter_Pahlavi}+$/u, + nonMatchSymbols, + "\\P{scx=Psalter_Pahlavi}" +); +testPropertyEscapes( + /^\P{scx=Phlp}+$/u, + nonMatchSymbols, + "\\P{scx=Phlp}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js new file mode 100644 index 0000000000..a706dd2e1d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Rejang.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Rejang` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00A95F + ], + ranges: [ + [0x00A930, 0x00A953] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Rejang}+$/u, + matchSymbols, + "\\p{Script_Extensions=Rejang}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Rjng}+$/u, + matchSymbols, + "\\p{Script_Extensions=Rjng}" +); +testPropertyEscapes( + /^\p{scx=Rejang}+$/u, + matchSymbols, + "\\p{scx=Rejang}" +); +testPropertyEscapes( + /^\p{scx=Rjng}+$/u, + matchSymbols, + "\\p{scx=Rjng}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A92F], + [0x00A954, 0x00A95E], + [0x00A960, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Rejang}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Rejang}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Rjng}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Rjng}" +); +testPropertyEscapes( + /^\P{scx=Rejang}+$/u, + nonMatchSymbols, + "\\P{scx=Rejang}" +); +testPropertyEscapes( + /^\P{scx=Rjng}+$/u, + nonMatchSymbols, + "\\P{scx=Rjng}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js new file mode 100644 index 0000000000..281845cc30 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Runic.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Runic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0016A0, 0x0016EA], + [0x0016EE, 0x0016F8] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Runic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Runic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Runr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Runr}" +); +testPropertyEscapes( + /^\p{scx=Runic}+$/u, + matchSymbols, + "\\p{scx=Runic}" +); +testPropertyEscapes( + /^\p{scx=Runr}+$/u, + matchSymbols, + "\\p{scx=Runr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00169F], + [0x0016EB, 0x0016ED], + [0x0016F9, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Runic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Runic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Runr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Runr}" +); +testPropertyEscapes( + /^\P{scx=Runic}+$/u, + nonMatchSymbols, + "\\P{scx=Runic}" +); +testPropertyEscapes( + /^\P{scx=Runr}+$/u, + nonMatchSymbols, + "\\P{scx=Runr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js new file mode 100644 index 0000000000..bd2a2cc758 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Samaritan.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Samaritan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000800, 0x00082D], + [0x000830, 0x00083E] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Samaritan}+$/u, + matchSymbols, + "\\p{Script_Extensions=Samaritan}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Samr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Samr}" +); +testPropertyEscapes( + /^\p{scx=Samaritan}+$/u, + matchSymbols, + "\\p{scx=Samaritan}" +); +testPropertyEscapes( + /^\p{scx=Samr}+$/u, + matchSymbols, + "\\p{scx=Samr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0007FF], + [0x00082E, 0x00082F], + [0x00083F, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Samaritan}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Samaritan}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Samr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Samr}" +); +testPropertyEscapes( + /^\P{scx=Samaritan}+$/u, + nonMatchSymbols, + "\\P{scx=Samaritan}" +); +testPropertyEscapes( + /^\P{scx=Samr}+$/u, + nonMatchSymbols, + "\\P{scx=Samr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js new file mode 100644 index 0000000000..755e3523eb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Saurashtra.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Saurashtra` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A880, 0x00A8C5], + [0x00A8CE, 0x00A8D9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Saurashtra}+$/u, + matchSymbols, + "\\p{Script_Extensions=Saurashtra}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Saur}+$/u, + matchSymbols, + "\\p{Script_Extensions=Saur}" +); +testPropertyEscapes( + /^\p{scx=Saurashtra}+$/u, + matchSymbols, + "\\p{scx=Saurashtra}" +); +testPropertyEscapes( + /^\p{scx=Saur}+$/u, + matchSymbols, + "\\p{scx=Saur}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A87F], + [0x00A8C6, 0x00A8CD], + [0x00A8DA, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Saurashtra}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Saurashtra}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Saur}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Saur}" +); +testPropertyEscapes( + /^\P{scx=Saurashtra}+$/u, + nonMatchSymbols, + "\\P{scx=Saurashtra}" +); +testPropertyEscapes( + /^\P{scx=Saur}+$/u, + nonMatchSymbols, + "\\P{scx=Saur}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js new file mode 100644 index 0000000000..76baad53c0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sharada.js @@ -0,0 +1,85 @@ +// Copyright 2022 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 for `Script_Extensions=Sharada` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000951, + 0x001CD7, + 0x001CD9, + 0x001CE0 + ], + ranges: [ + [0x001CDC, 0x001CDD], + [0x011180, 0x0111DF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Sharada}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sharada}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Shrd}+$/u, + matchSymbols, + "\\p{Script_Extensions=Shrd}" +); +testPropertyEscapes( + /^\p{scx=Sharada}+$/u, + matchSymbols, + "\\p{scx=Sharada}" +); +testPropertyEscapes( + /^\p{scx=Shrd}+$/u, + matchSymbols, + "\\p{scx=Shrd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001CD8 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000952, 0x001CD6], + [0x001CDA, 0x001CDB], + [0x001CDE, 0x001CDF], + [0x001CE1, 0x00DBFF], + [0x00E000, 0x01117F], + [0x0111E0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Sharada}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sharada}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Shrd}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Shrd}" +); +testPropertyEscapes( + /^\P{scx=Sharada}+$/u, + nonMatchSymbols, + "\\P{scx=Sharada}" +); +testPropertyEscapes( + /^\P{scx=Shrd}+$/u, + nonMatchSymbols, + "\\P{scx=Shrd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js new file mode 100644 index 0000000000..ccf0477d43 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Shavian.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Shavian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010450, 0x01047F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Shavian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Shavian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Shaw}+$/u, + matchSymbols, + "\\p{Script_Extensions=Shaw}" +); +testPropertyEscapes( + /^\p{scx=Shavian}+$/u, + matchSymbols, + "\\p{scx=Shavian}" +); +testPropertyEscapes( + /^\p{scx=Shaw}+$/u, + matchSymbols, + "\\p{scx=Shaw}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01044F], + [0x010480, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Shavian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Shavian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Shaw}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Shaw}" +); +testPropertyEscapes( + /^\P{scx=Shavian}+$/u, + nonMatchSymbols, + "\\P{scx=Shavian}" +); +testPropertyEscapes( + /^\P{scx=Shaw}+$/u, + nonMatchSymbols, + "\\P{scx=Shaw}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js new file mode 100644 index 0000000000..f7cde205e4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Siddham.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Siddham` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011580, 0x0115B5], + [0x0115B8, 0x0115DD] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Siddham}+$/u, + matchSymbols, + "\\p{Script_Extensions=Siddham}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sidd}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sidd}" +); +testPropertyEscapes( + /^\p{scx=Siddham}+$/u, + matchSymbols, + "\\p{scx=Siddham}" +); +testPropertyEscapes( + /^\p{scx=Sidd}+$/u, + matchSymbols, + "\\p{scx=Sidd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01157F], + [0x0115B6, 0x0115B7], + [0x0115DE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Siddham}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Siddham}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sidd}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sidd}" +); +testPropertyEscapes( + /^\P{scx=Siddham}+$/u, + nonMatchSymbols, + "\\P{scx=Siddham}" +); +testPropertyEscapes( + /^\P{scx=Sidd}+$/u, + nonMatchSymbols, + "\\P{scx=Sidd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js new file mode 100644 index 0000000000..3543353ff7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_SignWriting.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=SignWriting` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01D800, 0x01DA8B], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=SignWriting}+$/u, + matchSymbols, + "\\p{Script_Extensions=SignWriting}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sgnw}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sgnw}" +); +testPropertyEscapes( + /^\p{scx=SignWriting}+$/u, + matchSymbols, + "\\p{scx=SignWriting}" +); +testPropertyEscapes( + /^\p{scx=Sgnw}+$/u, + matchSymbols, + "\\p{scx=Sgnw}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01DAA0 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01D7FF], + [0x01DA8C, 0x01DA9A], + [0x01DAB0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=SignWriting}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=SignWriting}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sgnw}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sgnw}" +); +testPropertyEscapes( + /^\P{scx=SignWriting}+$/u, + nonMatchSymbols, + "\\P{scx=SignWriting}" +); +testPropertyEscapes( + /^\P{scx=Sgnw}+$/u, + nonMatchSymbols, + "\\P{scx=Sgnw}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js new file mode 100644 index 0000000000..5a5d60e541 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sinhala.js @@ -0,0 +1,101 @@ +// Copyright 2022 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 for `Script_Extensions=Sinhala` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000DBD, + 0x000DCA, + 0x000DD6 + ], + ranges: [ + [0x000964, 0x000965], + [0x000D81, 0x000D83], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000DCF, 0x000DD4], + [0x000DD8, 0x000DDF], + [0x000DE6, 0x000DEF], + [0x000DF2, 0x000DF4], + [0x0111E1, 0x0111F4] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Sinhala}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sinhala}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sinh}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sinh}" +); +testPropertyEscapes( + /^\p{scx=Sinhala}+$/u, + matchSymbols, + "\\p{scx=Sinhala}" +); +testPropertyEscapes( + /^\p{scx=Sinh}+$/u, + matchSymbols, + "\\p{scx=Sinh}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000D84, + 0x000DB2, + 0x000DBC, + 0x000DD5, + 0x000DD7 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000966, 0x000D80], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000DC9], + [0x000DCB, 0x000DCE], + [0x000DE0, 0x000DE5], + [0x000DF0, 0x000DF1], + [0x000DF5, 0x00DBFF], + [0x00E000, 0x0111E0], + [0x0111F5, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Sinhala}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sinhala}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sinh}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sinh}" +); +testPropertyEscapes( + /^\P{scx=Sinhala}+$/u, + nonMatchSymbols, + "\\P{scx=Sinhala}" +); +testPropertyEscapes( + /^\P{scx=Sinh}+$/u, + nonMatchSymbols, + "\\P{scx=Sinh}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js new file mode 100644 index 0000000000..c7ec852669 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sogdian.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Sogdian` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000640 + ], + ranges: [ + [0x010F30, 0x010F59] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Sogdian}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sogdian}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sogd}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sogd}" +); +testPropertyEscapes( + /^\p{scx=Sogdian}+$/u, + matchSymbols, + "\\p{scx=Sogdian}" +); +testPropertyEscapes( + /^\p{scx=Sogd}+$/u, + matchSymbols, + "\\p{scx=Sogd}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00063F], + [0x000641, 0x00DBFF], + [0x00E000, 0x010F2F], + [0x010F5A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Sogdian}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sogdian}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sogd}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sogd}" +); +testPropertyEscapes( + /^\P{scx=Sogdian}+$/u, + nonMatchSymbols, + "\\P{scx=Sogdian}" +); +testPropertyEscapes( + /^\P{scx=Sogd}+$/u, + nonMatchSymbols, + "\\P{scx=Sogd}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js new file mode 100644 index 0000000000..fb28392238 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sora_Sompeng.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Sora_Sompeng` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x0110D0, 0x0110E8], + [0x0110F0, 0x0110F9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Sora_Sompeng}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sora_Sompeng}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sora}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sora}" +); +testPropertyEscapes( + /^\p{scx=Sora_Sompeng}+$/u, + matchSymbols, + "\\p{scx=Sora_Sompeng}" +); +testPropertyEscapes( + /^\p{scx=Sora}+$/u, + matchSymbols, + "\\p{scx=Sora}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0110CF], + [0x0110E9, 0x0110EF], + [0x0110FA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Sora_Sompeng}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sora_Sompeng}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sora}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sora}" +); +testPropertyEscapes( + /^\P{scx=Sora_Sompeng}+$/u, + nonMatchSymbols, + "\\P{scx=Sora_Sompeng}" +); +testPropertyEscapes( + /^\P{scx=Sora}+$/u, + nonMatchSymbols, + "\\P{scx=Sora}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js new file mode 100644 index 0000000000..74e3579ff0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Soyombo.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Soyombo` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011A50, 0x011AA2] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Soyombo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Soyombo}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Soyo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Soyo}" +); +testPropertyEscapes( + /^\p{scx=Soyombo}+$/u, + matchSymbols, + "\\p{scx=Soyombo}" +); +testPropertyEscapes( + /^\p{scx=Soyo}+$/u, + matchSymbols, + "\\p{scx=Soyo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x011A4F], + [0x011AA3, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Soyombo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Soyombo}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Soyo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Soyo}" +); +testPropertyEscapes( + /^\P{scx=Soyombo}+$/u, + nonMatchSymbols, + "\\P{scx=Soyombo}" +); +testPropertyEscapes( + /^\P{scx=Soyo}+$/u, + nonMatchSymbols, + "\\P{scx=Soyo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js new file mode 100644 index 0000000000..47fa90159a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Sundanese.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Sundanese` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001B80, 0x001BBF], + [0x001CC0, 0x001CC7] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Sundanese}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sundanese}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sund}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sund}" +); +testPropertyEscapes( + /^\p{scx=Sundanese}+$/u, + matchSymbols, + "\\p{scx=Sundanese}" +); +testPropertyEscapes( + /^\p{scx=Sund}+$/u, + matchSymbols, + "\\p{scx=Sund}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001B7F], + [0x001BC0, 0x001CBF], + [0x001CC8, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Sundanese}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sundanese}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sund}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sund}" +); +testPropertyEscapes( + /^\P{scx=Sundanese}+$/u, + nonMatchSymbols, + "\\P{scx=Sundanese}" +); +testPropertyEscapes( + /^\P{scx=Sund}+$/u, + nonMatchSymbols, + "\\P{scx=Sund}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js new file mode 100644 index 0000000000..4875b64499 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syloti_Nagri.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Syloti_Nagri` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000964, 0x000965], + [0x0009E6, 0x0009EF], + [0x00A800, 0x00A82C] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Syloti_Nagri}+$/u, + matchSymbols, + "\\p{Script_Extensions=Syloti_Nagri}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Sylo}+$/u, + matchSymbols, + "\\p{Script_Extensions=Sylo}" +); +testPropertyEscapes( + /^\p{scx=Syloti_Nagri}+$/u, + matchSymbols, + "\\p{scx=Syloti_Nagri}" +); +testPropertyEscapes( + /^\p{scx=Sylo}+$/u, + matchSymbols, + "\\p{scx=Sylo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000966, 0x0009E5], + [0x0009F0, 0x00A7FF], + [0x00A82D, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Syloti_Nagri}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Syloti_Nagri}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Sylo}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Sylo}" +); +testPropertyEscapes( + /^\P{scx=Syloti_Nagri}+$/u, + nonMatchSymbols, + "\\P{scx=Syloti_Nagri}" +); +testPropertyEscapes( + /^\P{scx=Sylo}+$/u, + nonMatchSymbols, + "\\P{scx=Sylo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js new file mode 100644 index 0000000000..ba7cbaf24f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Syriac.js @@ -0,0 +1,97 @@ +// Copyright 2022 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 for `Script_Extensions=Syriac` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00060C, + 0x00061F, + 0x000640, + 0x000670, + 0x001DF8, + 0x001DFA + ], + ranges: [ + [0x00061B, 0x00061C], + [0x00064B, 0x000655], + [0x000700, 0x00070D], + [0x00070F, 0x00074A], + [0x00074D, 0x00074F], + [0x000860, 0x00086A] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Syriac}+$/u, + matchSymbols, + "\\p{Script_Extensions=Syriac}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Syrc}+$/u, + matchSymbols, + "\\p{Script_Extensions=Syrc}" +); +testPropertyEscapes( + /^\p{scx=Syriac}+$/u, + matchSymbols, + "\\p{scx=Syriac}" +); +testPropertyEscapes( + /^\p{scx=Syrc}+$/u, + matchSymbols, + "\\p{scx=Syrc}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00070E, + 0x001DF9 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00060B], + [0x00060D, 0x00061A], + [0x00061D, 0x00061E], + [0x000620, 0x00063F], + [0x000641, 0x00064A], + [0x000656, 0x00066F], + [0x000671, 0x0006FF], + [0x00074B, 0x00074C], + [0x000750, 0x00085F], + [0x00086B, 0x001DF7], + [0x001DFB, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Syriac}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Syriac}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Syrc}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Syrc}" +); +testPropertyEscapes( + /^\P{scx=Syriac}+$/u, + nonMatchSymbols, + "\\P{scx=Syriac}" +); +testPropertyEscapes( + /^\P{scx=Syrc}+$/u, + nonMatchSymbols, + "\\P{scx=Syrc}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js new file mode 100644 index 0000000000..c75881fd0e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagalog.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Tagalog` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00171F + ], + ranges: [ + [0x001700, 0x001715], + [0x001735, 0x001736] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tagalog}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tagalog}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tglg}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tglg}" +); +testPropertyEscapes( + /^\p{scx=Tagalog}+$/u, + matchSymbols, + "\\p{scx=Tagalog}" +); +testPropertyEscapes( + /^\p{scx=Tglg}+$/u, + matchSymbols, + "\\p{scx=Tglg}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0016FF], + [0x001716, 0x00171E], + [0x001720, 0x001734], + [0x001737, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tagalog}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tagalog}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tglg}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tglg}" +); +testPropertyEscapes( + /^\P{scx=Tagalog}+$/u, + nonMatchSymbols, + "\\P{scx=Tagalog}" +); +testPropertyEscapes( + /^\P{scx=Tglg}+$/u, + nonMatchSymbols, + "\\P{scx=Tglg}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js new file mode 100644 index 0000000000..391be08d40 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tagbanwa.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script_Extensions=Tagbanwa` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001735, 0x001736], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001772, 0x001773] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tagbanwa}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tagbanwa}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tagb}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tagb}" +); +testPropertyEscapes( + /^\p{scx=Tagbanwa}+$/u, + matchSymbols, + "\\p{scx=Tagbanwa}" +); +testPropertyEscapes( + /^\p{scx=Tagb}+$/u, + matchSymbols, + "\\p{scx=Tagb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00176D, + 0x001771 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001734], + [0x001737, 0x00175F], + [0x001774, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tagbanwa}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tagbanwa}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tagb}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tagb}" +); +testPropertyEscapes( + /^\P{scx=Tagbanwa}+$/u, + nonMatchSymbols, + "\\P{scx=Tagbanwa}" +); +testPropertyEscapes( + /^\P{scx=Tagb}+$/u, + nonMatchSymbols, + "\\P{scx=Tagb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js new file mode 100644 index 0000000000..883f01fc03 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Le.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Tai_Le` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001040, 0x001049], + [0x001950, 0x00196D], + [0x001970, 0x001974] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tai_Le}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tai_Le}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tale}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tale}" +); +testPropertyEscapes( + /^\p{scx=Tai_Le}+$/u, + matchSymbols, + "\\p{scx=Tai_Le}" +); +testPropertyEscapes( + /^\p{scx=Tale}+$/u, + matchSymbols, + "\\p{scx=Tale}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00103F], + [0x00104A, 0x00194F], + [0x00196E, 0x00196F], + [0x001975, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tai_Le}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tai_Le}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tale}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tale}" +); +testPropertyEscapes( + /^\P{scx=Tai_Le}+$/u, + nonMatchSymbols, + "\\P{scx=Tai_Le}" +); +testPropertyEscapes( + /^\P{scx=Tale}+$/u, + nonMatchSymbols, + "\\P{scx=Tale}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js new file mode 100644 index 0000000000..ca1610bfb6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Tham.js @@ -0,0 +1,82 @@ +// Copyright 2022 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 for `Script_Extensions=Tai_Tham` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x001A20, 0x001A5E], + [0x001A60, 0x001A7C], + [0x001A7F, 0x001A89], + [0x001A90, 0x001A99], + [0x001AA0, 0x001AAD] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tai_Tham}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tai_Tham}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Lana}+$/u, + matchSymbols, + "\\p{Script_Extensions=Lana}" +); +testPropertyEscapes( + /^\p{scx=Tai_Tham}+$/u, + matchSymbols, + "\\p{scx=Tai_Tham}" +); +testPropertyEscapes( + /^\p{scx=Lana}+$/u, + matchSymbols, + "\\p{scx=Lana}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x001A5F + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x001A1F], + [0x001A7D, 0x001A7E], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001A9F], + [0x001AAE, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tai_Tham}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tai_Tham}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Lana}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Lana}" +); +testPropertyEscapes( + /^\P{scx=Tai_Tham}+$/u, + nonMatchSymbols, + "\\P{scx=Tai_Tham}" +); +testPropertyEscapes( + /^\P{scx=Lana}+$/u, + nonMatchSymbols, + "\\P{scx=Lana}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js new file mode 100644 index 0000000000..44d33d8a3d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tai_Viet.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Tai_Viet` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00AA80, 0x00AAC2], + [0x00AADB, 0x00AADF] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tai_Viet}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tai_Viet}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tavt}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tavt}" +); +testPropertyEscapes( + /^\p{scx=Tai_Viet}+$/u, + matchSymbols, + "\\p{scx=Tai_Viet}" +); +testPropertyEscapes( + /^\p{scx=Tavt}+$/u, + matchSymbols, + "\\p{scx=Tavt}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00AA7F], + [0x00AAC3, 0x00AADA], + [0x00AAE0, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tai_Viet}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tai_Viet}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tavt}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tavt}" +); +testPropertyEscapes( + /^\P{scx=Tai_Viet}+$/u, + nonMatchSymbols, + "\\P{scx=Tai_Viet}" +); +testPropertyEscapes( + /^\P{scx=Tavt}+$/u, + nonMatchSymbols, + "\\P{scx=Tavt}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js new file mode 100644 index 0000000000..432185ad96 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Takri.js @@ -0,0 +1,79 @@ +// Copyright 2022 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 for `Script_Extensions=Takri` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000964, 0x000965], + [0x00A830, 0x00A839], + [0x011680, 0x0116B9], + [0x0116C0, 0x0116C9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Takri}+$/u, + matchSymbols, + "\\p{Script_Extensions=Takri}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Takr}+$/u, + matchSymbols, + "\\p{Script_Extensions=Takr}" +); +testPropertyEscapes( + /^\p{scx=Takri}+$/u, + matchSymbols, + "\\p{scx=Takri}" +); +testPropertyEscapes( + /^\p{scx=Takr}+$/u, + matchSymbols, + "\\p{scx=Takr}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000963], + [0x000966, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x01167F], + [0x0116BA, 0x0116BF], + [0x0116CA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Takri}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Takri}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Takr}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Takr}" +); +testPropertyEscapes( + /^\P{scx=Takri}+$/u, + nonMatchSymbols, + "\\P{scx=Takri}" +); +testPropertyEscapes( + /^\P{scx=Takr}+$/u, + nonMatchSymbols, + "\\P{scx=Takr}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js new file mode 100644 index 0000000000..597e517ce5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tamil.js @@ -0,0 +1,123 @@ +// Copyright 2022 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 for `Script_Extensions=Tamil` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000B9C, + 0x000BD0, + 0x000BD7, + 0x001CDA, + 0x00A8F3, + 0x011301, + 0x011303, + 0x011FFF + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x000B82, 0x000B83], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000BBE, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCD], + [0x000BE6, 0x000BFA], + [0x01133B, 0x01133C], + [0x011FC0, 0x011FF1] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tamil}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tamil}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Taml}+$/u, + matchSymbols, + "\\p{Script_Extensions=Taml}" +); +testPropertyEscapes( + /^\p{scx=Tamil}+$/u, + matchSymbols, + "\\p{scx=Tamil}" +); +testPropertyEscapes( + /^\p{scx=Taml}+$/u, + matchSymbols, + "\\p{scx=Taml}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000BC9, + 0x011302 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x000B81], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCE, 0x000BCF], + [0x000BD1, 0x000BD6], + [0x000BD8, 0x000BE5], + [0x000BFB, 0x001CD9], + [0x001CDB, 0x00A8F2], + [0x00A8F4, 0x00DBFF], + [0x00E000, 0x011300], + [0x011304, 0x01133A], + [0x01133D, 0x011FBF], + [0x011FF2, 0x011FFE], + [0x012000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tamil}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tamil}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Taml}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Taml}" +); +testPropertyEscapes( + /^\P{scx=Tamil}+$/u, + nonMatchSymbols, + "\\P{scx=Tamil}" +); +testPropertyEscapes( + /^\P{scx=Taml}+$/u, + nonMatchSymbols, + "\\P{scx=Taml}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js new file mode 100644 index 0000000000..9c7bd2d04a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangsa.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Tangsa` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x016A70, 0x016ABE], + [0x016AC0, 0x016AC9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tangsa}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tangsa}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tnsa}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tnsa}" +); +testPropertyEscapes( + /^\p{scx=Tangsa}+$/u, + matchSymbols, + "\\p{scx=Tangsa}" +); +testPropertyEscapes( + /^\p{scx=Tnsa}+$/u, + matchSymbols, + "\\p{scx=Tnsa}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x016ABF + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016A6F], + [0x016ACA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tangsa}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tangsa}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tnsa}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tnsa}" +); +testPropertyEscapes( + /^\P{scx=Tangsa}+$/u, + nonMatchSymbols, + "\\P{scx=Tangsa}" +); +testPropertyEscapes( + /^\P{scx=Tnsa}+$/u, + nonMatchSymbols, + "\\P{scx=Tnsa}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js new file mode 100644 index 0000000000..d88dcf6cc1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tangut.js @@ -0,0 +1,80 @@ +// Copyright 2022 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 for `Script_Extensions=Tangut` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x016FE0 + ], + ranges: [ + [0x017000, 0x0187F7], + [0x018800, 0x018AFF], + [0x018D00, 0x018D08] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tangut}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tangut}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tang}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tang}" +); +testPropertyEscapes( + /^\p{scx=Tangut}+$/u, + matchSymbols, + "\\p{scx=Tangut}" +); +testPropertyEscapes( + /^\p{scx=Tang}+$/u, + matchSymbols, + "\\p{scx=Tang}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x016FDF], + [0x016FE1, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018B00, 0x018CFF], + [0x018D09, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tangut}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tangut}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tang}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tang}" +); +testPropertyEscapes( + /^\P{scx=Tangut}+$/u, + nonMatchSymbols, + "\\P{scx=Tangut}" +); +testPropertyEscapes( + /^\P{scx=Tang}+$/u, + nonMatchSymbols, + "\\P{scx=Tang}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js new file mode 100644 index 0000000000..21a3857734 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Telugu.js @@ -0,0 +1,107 @@ +// Copyright 2022 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 for `Script_Extensions=Telugu` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000C5D, + 0x001CDA, + 0x001CF2 + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x000C00, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C3C, 0x000C44], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C63], + [0x000C66, 0x000C6F], + [0x000C77, 0x000C7F] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Telugu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Telugu}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Telu}+$/u, + matchSymbols, + "\\p{Script_Extensions=Telu}" +); +testPropertyEscapes( + /^\p{scx=Telugu}+$/u, + matchSymbols, + "\\p{scx=Telugu}" +); +testPropertyEscapes( + /^\p{scx=Telu}+$/u, + matchSymbols, + "\\p{scx=Telu}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C45, + 0x000C49, + 0x000C57 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x000BFF], + [0x000C3A, 0x000C3B], + [0x000C4E, 0x000C54], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C64, 0x000C65], + [0x000C70, 0x000C76], + [0x000C80, 0x001CD9], + [0x001CDB, 0x001CF1], + [0x001CF3, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Telugu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Telugu}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Telu}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Telu}" +); +testPropertyEscapes( + /^\P{scx=Telugu}+$/u, + nonMatchSymbols, + "\\P{scx=Telugu}" +); +testPropertyEscapes( + /^\P{scx=Telu}+$/u, + nonMatchSymbols, + "\\P{scx=Telu}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js new file mode 100644 index 0000000000..69cebd5401 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thaana.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Script_Extensions=Thaana` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00060C, + 0x00061F, + 0x00FDF2, + 0x00FDFD + ], + ranges: [ + [0x00061B, 0x00061C], + [0x000660, 0x000669], + [0x000780, 0x0007B1] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Thaana}+$/u, + matchSymbols, + "\\p{Script_Extensions=Thaana}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Thaa}+$/u, + matchSymbols, + "\\p{Script_Extensions=Thaa}" +); +testPropertyEscapes( + /^\p{scx=Thaana}+$/u, + matchSymbols, + "\\p{scx=Thaana}" +); +testPropertyEscapes( + /^\p{scx=Thaa}+$/u, + matchSymbols, + "\\p{scx=Thaa}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00060B], + [0x00060D, 0x00061A], + [0x00061D, 0x00061E], + [0x000620, 0x00065F], + [0x00066A, 0x00077F], + [0x0007B2, 0x00DBFF], + [0x00E000, 0x00FDF1], + [0x00FDF3, 0x00FDFC], + [0x00FDFE, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Thaana}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Thaana}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Thaa}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Thaa}" +); +testPropertyEscapes( + /^\P{scx=Thaana}+$/u, + nonMatchSymbols, + "\\P{scx=Thaana}" +); +testPropertyEscapes( + /^\P{scx=Thaa}+$/u, + nonMatchSymbols, + "\\P{scx=Thaa}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js new file mode 100644 index 0000000000..1760749db0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Thai.js @@ -0,0 +1,75 @@ +// Copyright 2022 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 for `Script_Extensions=Thai` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000E01, 0x000E3A], + [0x000E40, 0x000E5B] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Thai}+$/u, + matchSymbols, + "\\p{Script_Extensions=Thai}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Thai}+$/u, + matchSymbols, + "\\p{Script_Extensions=Thai}" +); +testPropertyEscapes( + /^\p{scx=Thai}+$/u, + matchSymbols, + "\\p{scx=Thai}" +); +testPropertyEscapes( + /^\p{scx=Thai}+$/u, + matchSymbols, + "\\p{scx=Thai}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000E00], + [0x000E3B, 0x000E3F], + [0x000E5C, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Thai}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Thai}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Thai}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Thai}" +); +testPropertyEscapes( + /^\P{scx=Thai}+$/u, + nonMatchSymbols, + "\\P{scx=Thai}" +); +testPropertyEscapes( + /^\P{scx=Thai}+$/u, + nonMatchSymbols, + "\\P{scx=Thai}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js new file mode 100644 index 0000000000..b35d41ae2a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tibetan.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Script_Extensions=Tibetan` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x000F00, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F71, 0x000F97], + [0x000F99, 0x000FBC], + [0x000FBE, 0x000FCC], + [0x000FCE, 0x000FD4], + [0x000FD9, 0x000FDA] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tibetan}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tibetan}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tibt}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tibt}" +); +testPropertyEscapes( + /^\p{scx=Tibetan}+$/u, + matchSymbols, + "\\p{scx=Tibetan}" +); +testPropertyEscapes( + /^\p{scx=Tibt}+$/u, + matchSymbols, + "\\p{scx=Tibt}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000F48, + 0x000F98, + 0x000FBD, + 0x000FCD + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000EFF], + [0x000F6D, 0x000F70], + [0x000FD5, 0x000FD8], + [0x000FDB, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tibetan}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tibetan}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tibt}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tibt}" +); +testPropertyEscapes( + /^\P{scx=Tibetan}+$/u, + nonMatchSymbols, + "\\P{scx=Tibetan}" +); +testPropertyEscapes( + /^\P{scx=Tibt}+$/u, + nonMatchSymbols, + "\\P{scx=Tibt}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js new file mode 100644 index 0000000000..3b809af841 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tifinagh.js @@ -0,0 +1,78 @@ +// Copyright 2022 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 for `Script_Extensions=Tifinagh` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x002D7F + ], + ranges: [ + [0x002D30, 0x002D67], + [0x002D6F, 0x002D70] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tifinagh}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tifinagh}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tfng}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tfng}" +); +testPropertyEscapes( + /^\p{scx=Tifinagh}+$/u, + matchSymbols, + "\\p{scx=Tifinagh}" +); +testPropertyEscapes( + /^\p{scx=Tfng}+$/u, + matchSymbols, + "\\p{scx=Tfng}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D71, 0x002D7E], + [0x002D80, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tifinagh}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tifinagh}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tfng}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tfng}" +); +testPropertyEscapes( + /^\P{scx=Tifinagh}+$/u, + nonMatchSymbols, + "\\P{scx=Tifinagh}" +); +testPropertyEscapes( + /^\P{scx=Tfng}+$/u, + nonMatchSymbols, + "\\P{scx=Tfng}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js new file mode 100644 index 0000000000..9e565bbc17 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Tirhuta.js @@ -0,0 +1,84 @@ +// Copyright 2022 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 for `Script_Extensions=Tirhuta` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x001CF2 + ], + ranges: [ + [0x000951, 0x000952], + [0x000964, 0x000965], + [0x00A830, 0x00A839], + [0x011480, 0x0114C7], + [0x0114D0, 0x0114D9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Tirhuta}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tirhuta}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Tirh}+$/u, + matchSymbols, + "\\p{Script_Extensions=Tirh}" +); +testPropertyEscapes( + /^\p{scx=Tirhuta}+$/u, + matchSymbols, + "\\p{scx=Tirhuta}" +); +testPropertyEscapes( + /^\p{scx=Tirh}+$/u, + matchSymbols, + "\\p{scx=Tirh}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000950], + [0x000953, 0x000963], + [0x000966, 0x001CF1], + [0x001CF3, 0x00A82F], + [0x00A83A, 0x00DBFF], + [0x00E000, 0x01147F], + [0x0114C8, 0x0114CF], + [0x0114DA, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Tirhuta}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tirhuta}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Tirh}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Tirh}" +); +testPropertyEscapes( + /^\P{scx=Tirhuta}+$/u, + nonMatchSymbols, + "\\P{scx=Tirhuta}" +); +testPropertyEscapes( + /^\P{scx=Tirh}+$/u, + nonMatchSymbols, + "\\P{scx=Tirh}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js new file mode 100644 index 0000000000..58c94ee1af --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Toto.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Toto` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x01E290, 0x01E2AE] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Toto}+$/u, + matchSymbols, + "\\p{Script_Extensions=Toto}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Toto}+$/u, + matchSymbols, + "\\p{Script_Extensions=Toto}" +); +testPropertyEscapes( + /^\p{scx=Toto}+$/u, + matchSymbols, + "\\p{scx=Toto}" +); +testPropertyEscapes( + /^\p{scx=Toto}+$/u, + matchSymbols, + "\\p{scx=Toto}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E28F], + [0x01E2AF, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Toto}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Toto}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Toto}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Toto}" +); +testPropertyEscapes( + /^\P{scx=Toto}+$/u, + nonMatchSymbols, + "\\P{scx=Toto}" +); +testPropertyEscapes( + /^\P{scx=Toto}+$/u, + nonMatchSymbols, + "\\P{scx=Toto}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js new file mode 100644 index 0000000000..7bf388d4bd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Ugaritic.js @@ -0,0 +1,77 @@ +// Copyright 2022 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 for `Script_Extensions=Ugaritic` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01039F + ], + ranges: [ + [0x010380, 0x01039D] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Ugaritic}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ugaritic}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Ugar}+$/u, + matchSymbols, + "\\p{Script_Extensions=Ugar}" +); +testPropertyEscapes( + /^\p{scx=Ugaritic}+$/u, + matchSymbols, + "\\p{scx=Ugaritic}" +); +testPropertyEscapes( + /^\p{scx=Ugar}+$/u, + matchSymbols, + "\\p{scx=Ugar}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01039E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01037F], + [0x0103A0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Ugaritic}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ugaritic}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Ugar}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Ugar}" +); +testPropertyEscapes( + /^\P{scx=Ugaritic}+$/u, + nonMatchSymbols, + "\\P{scx=Ugaritic}" +); +testPropertyEscapes( + /^\P{scx=Ugar}+$/u, + nonMatchSymbols, + "\\P{scx=Ugar}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js new file mode 100644 index 0000000000..eae7e9746e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vai.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Vai` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00A500, 0x00A62B] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Vai}+$/u, + matchSymbols, + "\\p{Script_Extensions=Vai}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Vaii}+$/u, + matchSymbols, + "\\p{Script_Extensions=Vaii}" +); +testPropertyEscapes( + /^\p{scx=Vai}+$/u, + matchSymbols, + "\\p{scx=Vai}" +); +testPropertyEscapes( + /^\p{scx=Vaii}+$/u, + matchSymbols, + "\\p{scx=Vaii}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00A4FF], + [0x00A62C, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Vai}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Vai}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Vaii}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Vaii}" +); +testPropertyEscapes( + /^\P{scx=Vai}+$/u, + nonMatchSymbols, + "\\P{scx=Vai}" +); +testPropertyEscapes( + /^\P{scx=Vaii}+$/u, + nonMatchSymbols, + "\\P{scx=Vaii}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js new file mode 100644 index 0000000000..c11c28c7ea --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Vithkuqi.js @@ -0,0 +1,88 @@ +// Copyright 2022 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 for `Script_Extensions=Vithkuqi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Vithkuqi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Vithkuqi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Vith}+$/u, + matchSymbols, + "\\p{Script_Extensions=Vith}" +); +testPropertyEscapes( + /^\p{scx=Vithkuqi}+$/u, + matchSymbols, + "\\p{scx=Vithkuqi}" +); +testPropertyEscapes( + /^\p{scx=Vith}+$/u, + matchSymbols, + "\\p{scx=Vith}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01056F], + [0x0105BD, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Vithkuqi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Vithkuqi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Vith}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Vith}" +); +testPropertyEscapes( + /^\P{scx=Vithkuqi}+$/u, + nonMatchSymbols, + "\\P{scx=Vithkuqi}" +); +testPropertyEscapes( + /^\P{scx=Vith}+$/u, + nonMatchSymbols, + "\\P{scx=Vith}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js new file mode 100644 index 0000000000..11558cdb58 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Wancho.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Wancho` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x01E2FF + ], + ranges: [ + [0x01E2C0, 0x01E2F9] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Wancho}+$/u, + matchSymbols, + "\\p{Script_Extensions=Wancho}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Wcho}+$/u, + matchSymbols, + "\\p{Script_Extensions=Wcho}" +); +testPropertyEscapes( + /^\p{scx=Wancho}+$/u, + matchSymbols, + "\\p{scx=Wancho}" +); +testPropertyEscapes( + /^\p{scx=Wcho}+$/u, + matchSymbols, + "\\p{scx=Wcho}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01E2BF], + [0x01E2FA, 0x01E2FE], + [0x01E300, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Wancho}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Wancho}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Wcho}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Wcho}" +); +testPropertyEscapes( + /^\P{scx=Wancho}+$/u, + nonMatchSymbols, + "\\P{scx=Wancho}" +); +testPropertyEscapes( + /^\P{scx=Wcho}+$/u, + nonMatchSymbols, + "\\P{scx=Wcho}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js new file mode 100644 index 0000000000..ac9baefff6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Warang_Citi.js @@ -0,0 +1,76 @@ +// Copyright 2022 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 for `Script_Extensions=Warang_Citi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0118FF + ], + ranges: [ + [0x0118A0, 0x0118F2] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Warang_Citi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Warang_Citi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Wara}+$/u, + matchSymbols, + "\\p{Script_Extensions=Wara}" +); +testPropertyEscapes( + /^\p{scx=Warang_Citi}+$/u, + matchSymbols, + "\\p{scx=Warang_Citi}" +); +testPropertyEscapes( + /^\p{scx=Wara}+$/u, + matchSymbols, + "\\p{scx=Wara}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x01189F], + [0x0118F3, 0x0118FE], + [0x011900, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Warang_Citi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Warang_Citi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Wara}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Wara}" +); +testPropertyEscapes( + /^\P{scx=Warang_Citi}+$/u, + nonMatchSymbols, + "\\P{scx=Warang_Citi}" +); +testPropertyEscapes( + /^\P{scx=Wara}+$/u, + nonMatchSymbols, + "\\P{scx=Wara}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js new file mode 100644 index 0000000000..2bd939e7e5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yezidi.js @@ -0,0 +1,87 @@ +// Copyright 2022 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 for `Script_Extensions=Yezidi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00060C, + 0x00061B, + 0x00061F + ], + ranges: [ + [0x000660, 0x000669], + [0x010E80, 0x010EA9], + [0x010EAB, 0x010EAD], + [0x010EB0, 0x010EB1] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Yezidi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Yezidi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Yezi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Yezi}" +); +testPropertyEscapes( + /^\p{scx=Yezidi}+$/u, + matchSymbols, + "\\p{scx=Yezidi}" +); +testPropertyEscapes( + /^\p{scx=Yezi}+$/u, + matchSymbols, + "\\p{scx=Yezi}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x010EAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00060B], + [0x00060D, 0x00061A], + [0x00061C, 0x00061E], + [0x000620, 0x00065F], + [0x00066A, 0x00DBFF], + [0x00E000, 0x010E7F], + [0x010EAE, 0x010EAF], + [0x010EB2, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Yezidi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Yezidi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Yezi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Yezi}" +); +testPropertyEscapes( + /^\P{scx=Yezidi}+$/u, + nonMatchSymbols, + "\\P{scx=Yezidi}" +); +testPropertyEscapes( + /^\P{scx=Yezi}+$/u, + nonMatchSymbols, + "\\P{scx=Yezi}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js new file mode 100644 index 0000000000..9f401874dc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Yi.js @@ -0,0 +1,86 @@ +// Copyright 2022 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 for `Script_Extensions=Yi` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0030FB + ], + ranges: [ + [0x003001, 0x003002], + [0x003008, 0x003011], + [0x003014, 0x00301B], + [0x00A000, 0x00A48C], + [0x00A490, 0x00A4C6], + [0x00FF61, 0x00FF65] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Yi}+$/u, + matchSymbols, + "\\p{Script_Extensions=Yi}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Yiii}+$/u, + matchSymbols, + "\\p{Script_Extensions=Yiii}" +); +testPropertyEscapes( + /^\p{scx=Yi}+$/u, + matchSymbols, + "\\p{scx=Yi}" +); +testPropertyEscapes( + /^\p{scx=Yiii}+$/u, + matchSymbols, + "\\p{scx=Yiii}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x003000], + [0x003003, 0x003007], + [0x003012, 0x003013], + [0x00301C, 0x0030FA], + [0x0030FC, 0x009FFF], + [0x00A48D, 0x00A48F], + [0x00A4C7, 0x00DBFF], + [0x00E000, 0x00FF60], + [0x00FF66, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Yi}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Yi}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Yiii}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Yiii}" +); +testPropertyEscapes( + /^\P{scx=Yi}+$/u, + nonMatchSymbols, + "\\P{scx=Yi}" +); +testPropertyEscapes( + /^\P{scx=Yiii}+$/u, + nonMatchSymbols, + "\\P{scx=Yiii}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js new file mode 100644 index 0000000000..4914a6165f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Script_Extensions_-_Zanabazar_Square.js @@ -0,0 +1,73 @@ +// Copyright 2022 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 for `Script_Extensions=Zanabazar_Square` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x011A00, 0x011A47] + ] +}); +testPropertyEscapes( + /^\p{Script_Extensions=Zanabazar_Square}+$/u, + matchSymbols, + "\\p{Script_Extensions=Zanabazar_Square}" +); +testPropertyEscapes( + /^\p{Script_Extensions=Zanb}+$/u, + matchSymbols, + "\\p{Script_Extensions=Zanb}" +); +testPropertyEscapes( + /^\p{scx=Zanabazar_Square}+$/u, + matchSymbols, + "\\p{scx=Zanabazar_Square}" +); +testPropertyEscapes( + /^\p{scx=Zanb}+$/u, + matchSymbols, + "\\p{scx=Zanb}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00DBFF], + [0x00E000, 0x0119FF], + [0x011A48, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Script_Extensions=Zanabazar_Square}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Zanabazar_Square}" +); +testPropertyEscapes( + /^\P{Script_Extensions=Zanb}+$/u, + nonMatchSymbols, + "\\P{Script_Extensions=Zanb}" +); +testPropertyEscapes( + /^\P{scx=Zanabazar_Square}+$/u, + nonMatchSymbols, + "\\P{scx=Zanabazar_Square}" +); +testPropertyEscapes( + /^\P{scx=Zanb}+$/u, + nonMatchSymbols, + "\\P{scx=Zanb}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js new file mode 100644 index 0000000000..63f3440aca --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Sentence_Terminal.js @@ -0,0 +1,213 @@ +// Copyright 2022 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 for `Sentence_Terminal` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000021, + 0x00002E, + 0x00003F, + 0x000589, + 0x0006D4, + 0x0007F9, + 0x000837, + 0x000839, + 0x001362, + 0x00166E, + 0x001803, + 0x001809, + 0x002E2E, + 0x002E3C, + 0x003002, + 0x00A4FF, + 0x00A6F3, + 0x00A6F7, + 0x00A92F, + 0x00ABEB, + 0x00FE52, + 0x00FF01, + 0x00FF0E, + 0x00FF1F, + 0x00FF61, + 0x0111CD, + 0x0112A9, + 0x011944, + 0x011946, + 0x016AF5, + 0x016B44, + 0x016E98, + 0x01BC9F, + 0x01DA88 + ], + ranges: [ + [0x00061D, 0x00061F], + [0x000700, 0x000702], + [0x00083D, 0x00083E], + [0x000964, 0x000965], + [0x00104A, 0x00104B], + [0x001367, 0x001368], + [0x001735, 0x001736], + [0x001944, 0x001945], + [0x001AA8, 0x001AAB], + [0x001B5A, 0x001B5B], + [0x001B5E, 0x001B5F], + [0x001B7D, 0x001B7E], + [0x001C3B, 0x001C3C], + [0x001C7E, 0x001C7F], + [0x00203C, 0x00203D], + [0x002047, 0x002049], + [0x002E53, 0x002E54], + [0x00A60E, 0x00A60F], + [0x00A876, 0x00A877], + [0x00A8CE, 0x00A8CF], + [0x00A9C8, 0x00A9C9], + [0x00AA5D, 0x00AA5F], + [0x00AAF0, 0x00AAF1], + [0x00FE56, 0x00FE57], + [0x010A56, 0x010A57], + [0x010F55, 0x010F59], + [0x010F86, 0x010F89], + [0x011047, 0x011048], + [0x0110BE, 0x0110C1], + [0x011141, 0x011143], + [0x0111C5, 0x0111C6], + [0x0111DE, 0x0111DF], + [0x011238, 0x011239], + [0x01123B, 0x01123C], + [0x01144B, 0x01144C], + [0x0115C2, 0x0115C3], + [0x0115C9, 0x0115D7], + [0x011641, 0x011642], + [0x01173C, 0x01173E], + [0x011A42, 0x011A43], + [0x011A9B, 0x011A9C], + [0x011C41, 0x011C42], + [0x011EF7, 0x011EF8], + [0x011F43, 0x011F44], + [0x016A6E, 0x016A6F], + [0x016B37, 0x016B38] + ] +}); +testPropertyEscapes( + /^\p{Sentence_Terminal}+$/u, + matchSymbols, + "\\p{Sentence_Terminal}" +); +testPropertyEscapes( + /^\p{STerm}+$/u, + matchSymbols, + "\\p{STerm}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000838, + 0x01123A, + 0x011945 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000020], + [0x000022, 0x00002D], + [0x00002F, 0x00003E], + [0x000040, 0x000588], + [0x00058A, 0x00061C], + [0x000620, 0x0006D3], + [0x0006D5, 0x0006FF], + [0x000703, 0x0007F8], + [0x0007FA, 0x000836], + [0x00083A, 0x00083C], + [0x00083F, 0x000963], + [0x000966, 0x001049], + [0x00104C, 0x001361], + [0x001363, 0x001366], + [0x001369, 0x00166D], + [0x00166F, 0x001734], + [0x001737, 0x001802], + [0x001804, 0x001808], + [0x00180A, 0x001943], + [0x001946, 0x001AA7], + [0x001AAC, 0x001B59], + [0x001B5C, 0x001B5D], + [0x001B60, 0x001B7C], + [0x001B7F, 0x001C3A], + [0x001C3D, 0x001C7D], + [0x001C80, 0x00203B], + [0x00203E, 0x002046], + [0x00204A, 0x002E2D], + [0x002E2F, 0x002E3B], + [0x002E3D, 0x002E52], + [0x002E55, 0x003001], + [0x003003, 0x00A4FE], + [0x00A500, 0x00A60D], + [0x00A610, 0x00A6F2], + [0x00A6F4, 0x00A6F6], + [0x00A6F8, 0x00A875], + [0x00A878, 0x00A8CD], + [0x00A8D0, 0x00A92E], + [0x00A930, 0x00A9C7], + [0x00A9CA, 0x00AA5C], + [0x00AA60, 0x00AAEF], + [0x00AAF2, 0x00ABEA], + [0x00ABEC, 0x00DBFF], + [0x00E000, 0x00FE51], + [0x00FE53, 0x00FE55], + [0x00FE58, 0x00FF00], + [0x00FF02, 0x00FF0D], + [0x00FF0F, 0x00FF1E], + [0x00FF20, 0x00FF60], + [0x00FF62, 0x010A55], + [0x010A58, 0x010F54], + [0x010F5A, 0x010F85], + [0x010F8A, 0x011046], + [0x011049, 0x0110BD], + [0x0110C2, 0x011140], + [0x011144, 0x0111C4], + [0x0111C7, 0x0111CC], + [0x0111CE, 0x0111DD], + [0x0111E0, 0x011237], + [0x01123D, 0x0112A8], + [0x0112AA, 0x01144A], + [0x01144D, 0x0115C1], + [0x0115C4, 0x0115C8], + [0x0115D8, 0x011640], + [0x011643, 0x01173B], + [0x01173F, 0x011943], + [0x011947, 0x011A41], + [0x011A44, 0x011A9A], + [0x011A9D, 0x011C40], + [0x011C43, 0x011EF6], + [0x011EF9, 0x011F42], + [0x011F45, 0x016A6D], + [0x016A70, 0x016AF4], + [0x016AF6, 0x016B36], + [0x016B39, 0x016B43], + [0x016B45, 0x016E97], + [0x016E99, 0x01BC9E], + [0x01BCA0, 0x01DA87], + [0x01DA89, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Sentence_Terminal}+$/u, + nonMatchSymbols, + "\\P{Sentence_Terminal}" +); +testPropertyEscapes( + /^\P{STerm}+$/u, + nonMatchSymbols, + "\\P{STerm}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js new file mode 100644 index 0000000000..0c98e25b97 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Soft_Dotted.js @@ -0,0 +1,121 @@ +// Copyright 2022 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 for `Soft_Dotted` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00012F, + 0x000249, + 0x000268, + 0x00029D, + 0x0002B2, + 0x0003F3, + 0x000456, + 0x000458, + 0x001D62, + 0x001D96, + 0x001DA4, + 0x001DA8, + 0x001E2D, + 0x001ECB, + 0x002071, + 0x002C7C, + 0x01DF1A, + 0x01E068 + ], + ranges: [ + [0x000069, 0x00006A], + [0x002148, 0x002149], + [0x01D422, 0x01D423], + [0x01D456, 0x01D457], + [0x01D48A, 0x01D48B], + [0x01D4BE, 0x01D4BF], + [0x01D4F2, 0x01D4F3], + [0x01D526, 0x01D527], + [0x01D55A, 0x01D55B], + [0x01D58E, 0x01D58F], + [0x01D5C2, 0x01D5C3], + [0x01D5F6, 0x01D5F7], + [0x01D62A, 0x01D62B], + [0x01D65E, 0x01D65F], + [0x01D692, 0x01D693], + [0x01E04C, 0x01E04D] + ] +}); +testPropertyEscapes( + /^\p{Soft_Dotted}+$/u, + matchSymbols, + "\\p{Soft_Dotted}" +); +testPropertyEscapes( + /^\p{SD}+$/u, + matchSymbols, + "\\p{SD}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000457 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000068], + [0x00006B, 0x00012E], + [0x000130, 0x000248], + [0x00024A, 0x000267], + [0x000269, 0x00029C], + [0x00029E, 0x0002B1], + [0x0002B3, 0x0003F2], + [0x0003F4, 0x000455], + [0x000459, 0x001D61], + [0x001D63, 0x001D95], + [0x001D97, 0x001DA3], + [0x001DA5, 0x001DA7], + [0x001DA9, 0x001E2C], + [0x001E2E, 0x001ECA], + [0x001ECC, 0x002070], + [0x002072, 0x002147], + [0x00214A, 0x002C7B], + [0x002C7D, 0x00DBFF], + [0x00E000, 0x01D421], + [0x01D424, 0x01D455], + [0x01D458, 0x01D489], + [0x01D48C, 0x01D4BD], + [0x01D4C0, 0x01D4F1], + [0x01D4F4, 0x01D525], + [0x01D528, 0x01D559], + [0x01D55C, 0x01D58D], + [0x01D590, 0x01D5C1], + [0x01D5C4, 0x01D5F5], + [0x01D5F8, 0x01D629], + [0x01D62C, 0x01D65D], + [0x01D660, 0x01D691], + [0x01D694, 0x01DF19], + [0x01DF1B, 0x01E04B], + [0x01E04E, 0x01E067], + [0x01E069, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Soft_Dotted}+$/u, + nonMatchSymbols, + "\\P{Soft_Dotted}" +); +testPropertyEscapes( + /^\P{SD}+$/u, + nonMatchSymbols, + "\\P{SD}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js new file mode 100644 index 0000000000..a4fb8548e9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Terminal_Punctuation.js @@ -0,0 +1,269 @@ +// Copyright 2022 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 for `Terminal_Punctuation` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000021, + 0x00002C, + 0x00002E, + 0x00003F, + 0x00037E, + 0x000387, + 0x000589, + 0x0005C3, + 0x00060C, + 0x00061B, + 0x0006D4, + 0x00070C, + 0x00085E, + 0x000F08, + 0x00166E, + 0x0017DA, + 0x002E2E, + 0x002E3C, + 0x002E41, + 0x002E4C, + 0x00A92F, + 0x00AADF, + 0x00ABEB, + 0x00FF01, + 0x00FF0C, + 0x00FF0E, + 0x00FF1F, + 0x00FF61, + 0x00FF64, + 0x01039F, + 0x0103D0, + 0x010857, + 0x01091F, + 0x0111CD, + 0x0112A9, + 0x011944, + 0x011946, + 0x011C71, + 0x016AF5, + 0x016B44, + 0x01BC9F + ], + ranges: [ + [0x00003A, 0x00003B], + [0x00061D, 0x00061F], + [0x000700, 0x00070A], + [0x0007F8, 0x0007F9], + [0x000830, 0x00083E], + [0x000964, 0x000965], + [0x000E5A, 0x000E5B], + [0x000F0D, 0x000F12], + [0x00104A, 0x00104B], + [0x001361, 0x001368], + [0x0016EB, 0x0016ED], + [0x001735, 0x001736], + [0x0017D4, 0x0017D6], + [0x001802, 0x001805], + [0x001808, 0x001809], + [0x001944, 0x001945], + [0x001AA8, 0x001AAB], + [0x001B5A, 0x001B5B], + [0x001B5D, 0x001B5F], + [0x001B7D, 0x001B7E], + [0x001C3B, 0x001C3F], + [0x001C7E, 0x001C7F], + [0x00203C, 0x00203D], + [0x002047, 0x002049], + [0x002E4E, 0x002E4F], + [0x002E53, 0x002E54], + [0x003001, 0x003002], + [0x00A4FE, 0x00A4FF], + [0x00A60D, 0x00A60F], + [0x00A6F3, 0x00A6F7], + [0x00A876, 0x00A877], + [0x00A8CE, 0x00A8CF], + [0x00A9C7, 0x00A9C9], + [0x00AA5D, 0x00AA5F], + [0x00AAF0, 0x00AAF1], + [0x00FE50, 0x00FE52], + [0x00FE54, 0x00FE57], + [0x00FF1A, 0x00FF1B], + [0x010A56, 0x010A57], + [0x010AF0, 0x010AF5], + [0x010B3A, 0x010B3F], + [0x010B99, 0x010B9C], + [0x010F55, 0x010F59], + [0x010F86, 0x010F89], + [0x011047, 0x01104D], + [0x0110BE, 0x0110C1], + [0x011141, 0x011143], + [0x0111C5, 0x0111C6], + [0x0111DE, 0x0111DF], + [0x011238, 0x01123C], + [0x01144B, 0x01144D], + [0x01145A, 0x01145B], + [0x0115C2, 0x0115C5], + [0x0115C9, 0x0115D7], + [0x011641, 0x011642], + [0x01173C, 0x01173E], + [0x011A42, 0x011A43], + [0x011A9B, 0x011A9C], + [0x011AA1, 0x011AA2], + [0x011C41, 0x011C43], + [0x011EF7, 0x011EF8], + [0x011F43, 0x011F44], + [0x012470, 0x012474], + [0x016A6E, 0x016A6F], + [0x016B37, 0x016B39], + [0x016E97, 0x016E98], + [0x01DA87, 0x01DA8A] + ] +}); +testPropertyEscapes( + /^\p{Terminal_Punctuation}+$/u, + matchSymbols, + "\\p{Terminal_Punctuation}" +); +testPropertyEscapes( + /^\p{Term}+$/u, + matchSymbols, + "\\p{Term}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00002D, + 0x00061C, + 0x00070B, + 0x001B5C, + 0x002E4D, + 0x00FE53, + 0x00FF0D, + 0x011945 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000020], + [0x000022, 0x00002B], + [0x00002F, 0x000039], + [0x00003C, 0x00003E], + [0x000040, 0x00037D], + [0x00037F, 0x000386], + [0x000388, 0x000588], + [0x00058A, 0x0005C2], + [0x0005C4, 0x00060B], + [0x00060D, 0x00061A], + [0x000620, 0x0006D3], + [0x0006D5, 0x0006FF], + [0x00070D, 0x0007F7], + [0x0007FA, 0x00082F], + [0x00083F, 0x00085D], + [0x00085F, 0x000963], + [0x000966, 0x000E59], + [0x000E5C, 0x000F07], + [0x000F09, 0x000F0C], + [0x000F13, 0x001049], + [0x00104C, 0x001360], + [0x001369, 0x00166D], + [0x00166F, 0x0016EA], + [0x0016EE, 0x001734], + [0x001737, 0x0017D3], + [0x0017D7, 0x0017D9], + [0x0017DB, 0x001801], + [0x001806, 0x001807], + [0x00180A, 0x001943], + [0x001946, 0x001AA7], + [0x001AAC, 0x001B59], + [0x001B60, 0x001B7C], + [0x001B7F, 0x001C3A], + [0x001C40, 0x001C7D], + [0x001C80, 0x00203B], + [0x00203E, 0x002046], + [0x00204A, 0x002E2D], + [0x002E2F, 0x002E3B], + [0x002E3D, 0x002E40], + [0x002E42, 0x002E4B], + [0x002E50, 0x002E52], + [0x002E55, 0x003000], + [0x003003, 0x00A4FD], + [0x00A500, 0x00A60C], + [0x00A610, 0x00A6F2], + [0x00A6F8, 0x00A875], + [0x00A878, 0x00A8CD], + [0x00A8D0, 0x00A92E], + [0x00A930, 0x00A9C6], + [0x00A9CA, 0x00AA5C], + [0x00AA60, 0x00AADE], + [0x00AAE0, 0x00AAEF], + [0x00AAF2, 0x00ABEA], + [0x00ABEC, 0x00DBFF], + [0x00E000, 0x00FE4F], + [0x00FE58, 0x00FF00], + [0x00FF02, 0x00FF0B], + [0x00FF0F, 0x00FF19], + [0x00FF1C, 0x00FF1E], + [0x00FF20, 0x00FF60], + [0x00FF62, 0x00FF63], + [0x00FF65, 0x01039E], + [0x0103A0, 0x0103CF], + [0x0103D1, 0x010856], + [0x010858, 0x01091E], + [0x010920, 0x010A55], + [0x010A58, 0x010AEF], + [0x010AF6, 0x010B39], + [0x010B40, 0x010B98], + [0x010B9D, 0x010F54], + [0x010F5A, 0x010F85], + [0x010F8A, 0x011046], + [0x01104E, 0x0110BD], + [0x0110C2, 0x011140], + [0x011144, 0x0111C4], + [0x0111C7, 0x0111CC], + [0x0111CE, 0x0111DD], + [0x0111E0, 0x011237], + [0x01123D, 0x0112A8], + [0x0112AA, 0x01144A], + [0x01144E, 0x011459], + [0x01145C, 0x0115C1], + [0x0115C6, 0x0115C8], + [0x0115D8, 0x011640], + [0x011643, 0x01173B], + [0x01173F, 0x011943], + [0x011947, 0x011A41], + [0x011A44, 0x011A9A], + [0x011A9D, 0x011AA0], + [0x011AA3, 0x011C40], + [0x011C44, 0x011C70], + [0x011C72, 0x011EF6], + [0x011EF9, 0x011F42], + [0x011F45, 0x01246F], + [0x012475, 0x016A6D], + [0x016A70, 0x016AF4], + [0x016AF6, 0x016B36], + [0x016B3A, 0x016B43], + [0x016B45, 0x016E96], + [0x016E99, 0x01BC9E], + [0x01BCA0, 0x01DA86], + [0x01DA8B, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Terminal_Punctuation}+$/u, + nonMatchSymbols, + "\\P{Terminal_Punctuation}" +); +testPropertyEscapes( + /^\P{Term}+$/u, + nonMatchSymbols, + "\\P{Term}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js new file mode 100644 index 0000000000..19a14f5a78 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Unified_Ideograph.js @@ -0,0 +1,85 @@ +// Copyright 2022 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 for `Unified_Ideograph` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00FA11, + 0x00FA1F, + 0x00FA21 + ], + ranges: [ + [0x003400, 0x004DBF], + [0x004E00, 0x009FFF], + [0x00FA0E, 0x00FA0F], + [0x00FA13, 0x00FA14], + [0x00FA23, 0x00FA24], + [0x00FA27, 0x00FA29], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{Unified_Ideograph}+$/u, + matchSymbols, + "\\p{Unified_Ideograph}" +); +testPropertyEscapes( + /^\p{UIdeo}+$/u, + matchSymbols, + "\\p{UIdeo}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00FA10, + 0x00FA12, + 0x00FA20, + 0x00FA22 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A000, 0x00DBFF], + [0x00E000, 0x00FA0D], + [0x00FA15, 0x00FA1E], + [0x00FA25, 0x00FA26], + [0x00FA2A, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Unified_Ideograph}+$/u, + nonMatchSymbols, + "\\P{Unified_Ideograph}" +); +testPropertyEscapes( + /^\P{UIdeo}+$/u, + nonMatchSymbols, + "\\P{UIdeo}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Uppercase.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Uppercase.js new file mode 100644 index 0000000000..f2eba82613 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Uppercase.js @@ -0,0 +1,1355 @@ +// Copyright 2022 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 for `Uppercase` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000100, + 0x000102, + 0x000104, + 0x000106, + 0x000108, + 0x00010A, + 0x00010C, + 0x00010E, + 0x000110, + 0x000112, + 0x000114, + 0x000116, + 0x000118, + 0x00011A, + 0x00011C, + 0x00011E, + 0x000120, + 0x000122, + 0x000124, + 0x000126, + 0x000128, + 0x00012A, + 0x00012C, + 0x00012E, + 0x000130, + 0x000132, + 0x000134, + 0x000136, + 0x000139, + 0x00013B, + 0x00013D, + 0x00013F, + 0x000141, + 0x000143, + 0x000145, + 0x000147, + 0x00014A, + 0x00014C, + 0x00014E, + 0x000150, + 0x000152, + 0x000154, + 0x000156, + 0x000158, + 0x00015A, + 0x00015C, + 0x00015E, + 0x000160, + 0x000162, + 0x000164, + 0x000166, + 0x000168, + 0x00016A, + 0x00016C, + 0x00016E, + 0x000170, + 0x000172, + 0x000174, + 0x000176, + 0x00017B, + 0x00017D, + 0x000184, + 0x0001A2, + 0x0001A4, + 0x0001A9, + 0x0001AC, + 0x0001B5, + 0x0001BC, + 0x0001C4, + 0x0001C7, + 0x0001CA, + 0x0001CD, + 0x0001CF, + 0x0001D1, + 0x0001D3, + 0x0001D5, + 0x0001D7, + 0x0001D9, + 0x0001DB, + 0x0001DE, + 0x0001E0, + 0x0001E2, + 0x0001E4, + 0x0001E6, + 0x0001E8, + 0x0001EA, + 0x0001EC, + 0x0001EE, + 0x0001F1, + 0x0001F4, + 0x0001FA, + 0x0001FC, + 0x0001FE, + 0x000200, + 0x000202, + 0x000204, + 0x000206, + 0x000208, + 0x00020A, + 0x00020C, + 0x00020E, + 0x000210, + 0x000212, + 0x000214, + 0x000216, + 0x000218, + 0x00021A, + 0x00021C, + 0x00021E, + 0x000220, + 0x000222, + 0x000224, + 0x000226, + 0x000228, + 0x00022A, + 0x00022C, + 0x00022E, + 0x000230, + 0x000232, + 0x000241, + 0x000248, + 0x00024A, + 0x00024C, + 0x00024E, + 0x000370, + 0x000372, + 0x000376, + 0x00037F, + 0x000386, + 0x00038C, + 0x0003CF, + 0x0003D8, + 0x0003DA, + 0x0003DC, + 0x0003DE, + 0x0003E0, + 0x0003E2, + 0x0003E4, + 0x0003E6, + 0x0003E8, + 0x0003EA, + 0x0003EC, + 0x0003EE, + 0x0003F4, + 0x0003F7, + 0x000460, + 0x000462, + 0x000464, + 0x000466, + 0x000468, + 0x00046A, + 0x00046C, + 0x00046E, + 0x000470, + 0x000472, + 0x000474, + 0x000476, + 0x000478, + 0x00047A, + 0x00047C, + 0x00047E, + 0x000480, + 0x00048A, + 0x00048C, + 0x00048E, + 0x000490, + 0x000492, + 0x000494, + 0x000496, + 0x000498, + 0x00049A, + 0x00049C, + 0x00049E, + 0x0004A0, + 0x0004A2, + 0x0004A4, + 0x0004A6, + 0x0004A8, + 0x0004AA, + 0x0004AC, + 0x0004AE, + 0x0004B0, + 0x0004B2, + 0x0004B4, + 0x0004B6, + 0x0004B8, + 0x0004BA, + 0x0004BC, + 0x0004BE, + 0x0004C3, + 0x0004C5, + 0x0004C7, + 0x0004C9, + 0x0004CB, + 0x0004CD, + 0x0004D0, + 0x0004D2, + 0x0004D4, + 0x0004D6, + 0x0004D8, + 0x0004DA, + 0x0004DC, + 0x0004DE, + 0x0004E0, + 0x0004E2, + 0x0004E4, + 0x0004E6, + 0x0004E8, + 0x0004EA, + 0x0004EC, + 0x0004EE, + 0x0004F0, + 0x0004F2, + 0x0004F4, + 0x0004F6, + 0x0004F8, + 0x0004FA, + 0x0004FC, + 0x0004FE, + 0x000500, + 0x000502, + 0x000504, + 0x000506, + 0x000508, + 0x00050A, + 0x00050C, + 0x00050E, + 0x000510, + 0x000512, + 0x000514, + 0x000516, + 0x000518, + 0x00051A, + 0x00051C, + 0x00051E, + 0x000520, + 0x000522, + 0x000524, + 0x000526, + 0x000528, + 0x00052A, + 0x00052C, + 0x00052E, + 0x0010C7, + 0x0010CD, + 0x001E00, + 0x001E02, + 0x001E04, + 0x001E06, + 0x001E08, + 0x001E0A, + 0x001E0C, + 0x001E0E, + 0x001E10, + 0x001E12, + 0x001E14, + 0x001E16, + 0x001E18, + 0x001E1A, + 0x001E1C, + 0x001E1E, + 0x001E20, + 0x001E22, + 0x001E24, + 0x001E26, + 0x001E28, + 0x001E2A, + 0x001E2C, + 0x001E2E, + 0x001E30, + 0x001E32, + 0x001E34, + 0x001E36, + 0x001E38, + 0x001E3A, + 0x001E3C, + 0x001E3E, + 0x001E40, + 0x001E42, + 0x001E44, + 0x001E46, + 0x001E48, + 0x001E4A, + 0x001E4C, + 0x001E4E, + 0x001E50, + 0x001E52, + 0x001E54, + 0x001E56, + 0x001E58, + 0x001E5A, + 0x001E5C, + 0x001E5E, + 0x001E60, + 0x001E62, + 0x001E64, + 0x001E66, + 0x001E68, + 0x001E6A, + 0x001E6C, + 0x001E6E, + 0x001E70, + 0x001E72, + 0x001E74, + 0x001E76, + 0x001E78, + 0x001E7A, + 0x001E7C, + 0x001E7E, + 0x001E80, + 0x001E82, + 0x001E84, + 0x001E86, + 0x001E88, + 0x001E8A, + 0x001E8C, + 0x001E8E, + 0x001E90, + 0x001E92, + 0x001E94, + 0x001E9E, + 0x001EA0, + 0x001EA2, + 0x001EA4, + 0x001EA6, + 0x001EA8, + 0x001EAA, + 0x001EAC, + 0x001EAE, + 0x001EB0, + 0x001EB2, + 0x001EB4, + 0x001EB6, + 0x001EB8, + 0x001EBA, + 0x001EBC, + 0x001EBE, + 0x001EC0, + 0x001EC2, + 0x001EC4, + 0x001EC6, + 0x001EC8, + 0x001ECA, + 0x001ECC, + 0x001ECE, + 0x001ED0, + 0x001ED2, + 0x001ED4, + 0x001ED6, + 0x001ED8, + 0x001EDA, + 0x001EDC, + 0x001EDE, + 0x001EE0, + 0x001EE2, + 0x001EE4, + 0x001EE6, + 0x001EE8, + 0x001EEA, + 0x001EEC, + 0x001EEE, + 0x001EF0, + 0x001EF2, + 0x001EF4, + 0x001EF6, + 0x001EF8, + 0x001EFA, + 0x001EFC, + 0x001EFE, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001F5F, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x002145, + 0x002183, + 0x002C60, + 0x002C67, + 0x002C69, + 0x002C6B, + 0x002C72, + 0x002C75, + 0x002C82, + 0x002C84, + 0x002C86, + 0x002C88, + 0x002C8A, + 0x002C8C, + 0x002C8E, + 0x002C90, + 0x002C92, + 0x002C94, + 0x002C96, + 0x002C98, + 0x002C9A, + 0x002C9C, + 0x002C9E, + 0x002CA0, + 0x002CA2, + 0x002CA4, + 0x002CA6, + 0x002CA8, + 0x002CAA, + 0x002CAC, + 0x002CAE, + 0x002CB0, + 0x002CB2, + 0x002CB4, + 0x002CB6, + 0x002CB8, + 0x002CBA, + 0x002CBC, + 0x002CBE, + 0x002CC0, + 0x002CC2, + 0x002CC4, + 0x002CC6, + 0x002CC8, + 0x002CCA, + 0x002CCC, + 0x002CCE, + 0x002CD0, + 0x002CD2, + 0x002CD4, + 0x002CD6, + 0x002CD8, + 0x002CDA, + 0x002CDC, + 0x002CDE, + 0x002CE0, + 0x002CE2, + 0x002CEB, + 0x002CED, + 0x002CF2, + 0x00A640, + 0x00A642, + 0x00A644, + 0x00A646, + 0x00A648, + 0x00A64A, + 0x00A64C, + 0x00A64E, + 0x00A650, + 0x00A652, + 0x00A654, + 0x00A656, + 0x00A658, + 0x00A65A, + 0x00A65C, + 0x00A65E, + 0x00A660, + 0x00A662, + 0x00A664, + 0x00A666, + 0x00A668, + 0x00A66A, + 0x00A66C, + 0x00A680, + 0x00A682, + 0x00A684, + 0x00A686, + 0x00A688, + 0x00A68A, + 0x00A68C, + 0x00A68E, + 0x00A690, + 0x00A692, + 0x00A694, + 0x00A696, + 0x00A698, + 0x00A69A, + 0x00A722, + 0x00A724, + 0x00A726, + 0x00A728, + 0x00A72A, + 0x00A72C, + 0x00A72E, + 0x00A732, + 0x00A734, + 0x00A736, + 0x00A738, + 0x00A73A, + 0x00A73C, + 0x00A73E, + 0x00A740, + 0x00A742, + 0x00A744, + 0x00A746, + 0x00A748, + 0x00A74A, + 0x00A74C, + 0x00A74E, + 0x00A750, + 0x00A752, + 0x00A754, + 0x00A756, + 0x00A758, + 0x00A75A, + 0x00A75C, + 0x00A75E, + 0x00A760, + 0x00A762, + 0x00A764, + 0x00A766, + 0x00A768, + 0x00A76A, + 0x00A76C, + 0x00A76E, + 0x00A779, + 0x00A77B, + 0x00A780, + 0x00A782, + 0x00A784, + 0x00A786, + 0x00A78B, + 0x00A78D, + 0x00A790, + 0x00A792, + 0x00A796, + 0x00A798, + 0x00A79A, + 0x00A79C, + 0x00A79E, + 0x00A7A0, + 0x00A7A2, + 0x00A7A4, + 0x00A7A6, + 0x00A7A8, + 0x00A7B6, + 0x00A7B8, + 0x00A7BA, + 0x00A7BC, + 0x00A7BE, + 0x00A7C0, + 0x00A7C2, + 0x00A7C9, + 0x00A7D0, + 0x00A7D6, + 0x00A7D8, + 0x00A7F5, + 0x01D49C, + 0x01D4A2, + 0x01D546, + 0x01D7CA + ], + ranges: [ + [0x000041, 0x00005A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000DE], + [0x000178, 0x000179], + [0x000181, 0x000182], + [0x000186, 0x000187], + [0x000189, 0x00018B], + [0x00018E, 0x000191], + [0x000193, 0x000194], + [0x000196, 0x000198], + [0x00019C, 0x00019D], + [0x00019F, 0x0001A0], + [0x0001A6, 0x0001A7], + [0x0001AE, 0x0001AF], + [0x0001B1, 0x0001B3], + [0x0001B7, 0x0001B8], + [0x0001F6, 0x0001F8], + [0x00023A, 0x00023B], + [0x00023D, 0x00023E], + [0x000243, 0x000246], + [0x000388, 0x00038A], + [0x00038E, 0x00038F], + [0x000391, 0x0003A1], + [0x0003A3, 0x0003AB], + [0x0003D2, 0x0003D4], + [0x0003F9, 0x0003FA], + [0x0003FD, 0x00042F], + [0x0004C0, 0x0004C1], + [0x000531, 0x000556], + [0x0010A0, 0x0010C5], + [0x0013A0, 0x0013F5], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001F08, 0x001F0F], + [0x001F18, 0x001F1D], + [0x001F28, 0x001F2F], + [0x001F38, 0x001F3F], + [0x001F48, 0x001F4D], + [0x001F68, 0x001F6F], + [0x001FB8, 0x001FBB], + [0x001FC8, 0x001FCB], + [0x001FD8, 0x001FDB], + [0x001FE8, 0x001FEC], + [0x001FF8, 0x001FFB], + [0x00210B, 0x00210D], + [0x002110, 0x002112], + [0x002119, 0x00211D], + [0x00212A, 0x00212D], + [0x002130, 0x002133], + [0x00213E, 0x00213F], + [0x002160, 0x00216F], + [0x0024B6, 0x0024CF], + [0x002C00, 0x002C2F], + [0x002C62, 0x002C64], + [0x002C6D, 0x002C70], + [0x002C7E, 0x002C80], + [0x00A77D, 0x00A77E], + [0x00A7AA, 0x00A7AE], + [0x00A7B0, 0x00A7B4], + [0x00A7C4, 0x00A7C7], + [0x00FF21, 0x00FF3A], + [0x010400, 0x010427], + [0x0104B0, 0x0104D3], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010C80, 0x010CB2], + [0x0118A0, 0x0118BF], + [0x016E40, 0x016E5F], + [0x01D400, 0x01D419], + [0x01D434, 0x01D44D], + [0x01D468, 0x01D481], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B5], + [0x01D4D0, 0x01D4E9], + [0x01D504, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D538, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D56C, 0x01D585], + [0x01D5A0, 0x01D5B9], + [0x01D5D4, 0x01D5ED], + [0x01D608, 0x01D621], + [0x01D63C, 0x01D655], + [0x01D670, 0x01D689], + [0x01D6A8, 0x01D6C0], + [0x01D6E2, 0x01D6FA], + [0x01D71C, 0x01D734], + [0x01D756, 0x01D76E], + [0x01D790, 0x01D7A8], + [0x01E900, 0x01E921], + [0x01F130, 0x01F149], + [0x01F150, 0x01F169], + [0x01F170, 0x01F189] + ] +}); +testPropertyEscapes( + /^\p{Uppercase}+$/u, + matchSymbols, + "\\p{Uppercase}" +); +testPropertyEscapes( + /^\p{Upper}+$/u, + matchSymbols, + "\\p{Upper}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x000101, + 0x000103, + 0x000105, + 0x000107, + 0x000109, + 0x00010B, + 0x00010D, + 0x00010F, + 0x000111, + 0x000113, + 0x000115, + 0x000117, + 0x000119, + 0x00011B, + 0x00011D, + 0x00011F, + 0x000121, + 0x000123, + 0x000125, + 0x000127, + 0x000129, + 0x00012B, + 0x00012D, + 0x00012F, + 0x000131, + 0x000133, + 0x000135, + 0x00013A, + 0x00013C, + 0x00013E, + 0x000140, + 0x000142, + 0x000144, + 0x000146, + 0x00014B, + 0x00014D, + 0x00014F, + 0x000151, + 0x000153, + 0x000155, + 0x000157, + 0x000159, + 0x00015B, + 0x00015D, + 0x00015F, + 0x000161, + 0x000163, + 0x000165, + 0x000167, + 0x000169, + 0x00016B, + 0x00016D, + 0x00016F, + 0x000171, + 0x000173, + 0x000175, + 0x000177, + 0x00017A, + 0x00017C, + 0x000183, + 0x000185, + 0x000188, + 0x000192, + 0x000195, + 0x00019E, + 0x0001A1, + 0x0001A3, + 0x0001A5, + 0x0001A8, + 0x0001AD, + 0x0001B0, + 0x0001B4, + 0x0001B6, + 0x0001CE, + 0x0001D0, + 0x0001D2, + 0x0001D4, + 0x0001D6, + 0x0001D8, + 0x0001DA, + 0x0001DF, + 0x0001E1, + 0x0001E3, + 0x0001E5, + 0x0001E7, + 0x0001E9, + 0x0001EB, + 0x0001ED, + 0x0001F5, + 0x0001F9, + 0x0001FB, + 0x0001FD, + 0x0001FF, + 0x000201, + 0x000203, + 0x000205, + 0x000207, + 0x000209, + 0x00020B, + 0x00020D, + 0x00020F, + 0x000211, + 0x000213, + 0x000215, + 0x000217, + 0x000219, + 0x00021B, + 0x00021D, + 0x00021F, + 0x000221, + 0x000223, + 0x000225, + 0x000227, + 0x000229, + 0x00022B, + 0x00022D, + 0x00022F, + 0x000231, + 0x00023C, + 0x000242, + 0x000247, + 0x000249, + 0x00024B, + 0x00024D, + 0x000371, + 0x000387, + 0x00038B, + 0x00038D, + 0x000390, + 0x0003A2, + 0x0003D9, + 0x0003DB, + 0x0003DD, + 0x0003DF, + 0x0003E1, + 0x0003E3, + 0x0003E5, + 0x0003E7, + 0x0003E9, + 0x0003EB, + 0x0003ED, + 0x0003F8, + 0x000461, + 0x000463, + 0x000465, + 0x000467, + 0x000469, + 0x00046B, + 0x00046D, + 0x00046F, + 0x000471, + 0x000473, + 0x000475, + 0x000477, + 0x000479, + 0x00047B, + 0x00047D, + 0x00047F, + 0x00048B, + 0x00048D, + 0x00048F, + 0x000491, + 0x000493, + 0x000495, + 0x000497, + 0x000499, + 0x00049B, + 0x00049D, + 0x00049F, + 0x0004A1, + 0x0004A3, + 0x0004A5, + 0x0004A7, + 0x0004A9, + 0x0004AB, + 0x0004AD, + 0x0004AF, + 0x0004B1, + 0x0004B3, + 0x0004B5, + 0x0004B7, + 0x0004B9, + 0x0004BB, + 0x0004BD, + 0x0004BF, + 0x0004C2, + 0x0004C4, + 0x0004C6, + 0x0004C8, + 0x0004CA, + 0x0004CC, + 0x0004D1, + 0x0004D3, + 0x0004D5, + 0x0004D7, + 0x0004D9, + 0x0004DB, + 0x0004DD, + 0x0004DF, + 0x0004E1, + 0x0004E3, + 0x0004E5, + 0x0004E7, + 0x0004E9, + 0x0004EB, + 0x0004ED, + 0x0004EF, + 0x0004F1, + 0x0004F3, + 0x0004F5, + 0x0004F7, + 0x0004F9, + 0x0004FB, + 0x0004FD, + 0x0004FF, + 0x000501, + 0x000503, + 0x000505, + 0x000507, + 0x000509, + 0x00050B, + 0x00050D, + 0x00050F, + 0x000511, + 0x000513, + 0x000515, + 0x000517, + 0x000519, + 0x00051B, + 0x00051D, + 0x00051F, + 0x000521, + 0x000523, + 0x000525, + 0x000527, + 0x000529, + 0x00052B, + 0x00052D, + 0x0010C6, + 0x001E01, + 0x001E03, + 0x001E05, + 0x001E07, + 0x001E09, + 0x001E0B, + 0x001E0D, + 0x001E0F, + 0x001E11, + 0x001E13, + 0x001E15, + 0x001E17, + 0x001E19, + 0x001E1B, + 0x001E1D, + 0x001E1F, + 0x001E21, + 0x001E23, + 0x001E25, + 0x001E27, + 0x001E29, + 0x001E2B, + 0x001E2D, + 0x001E2F, + 0x001E31, + 0x001E33, + 0x001E35, + 0x001E37, + 0x001E39, + 0x001E3B, + 0x001E3D, + 0x001E3F, + 0x001E41, + 0x001E43, + 0x001E45, + 0x001E47, + 0x001E49, + 0x001E4B, + 0x001E4D, + 0x001E4F, + 0x001E51, + 0x001E53, + 0x001E55, + 0x001E57, + 0x001E59, + 0x001E5B, + 0x001E5D, + 0x001E5F, + 0x001E61, + 0x001E63, + 0x001E65, + 0x001E67, + 0x001E69, + 0x001E6B, + 0x001E6D, + 0x001E6F, + 0x001E71, + 0x001E73, + 0x001E75, + 0x001E77, + 0x001E79, + 0x001E7B, + 0x001E7D, + 0x001E7F, + 0x001E81, + 0x001E83, + 0x001E85, + 0x001E87, + 0x001E89, + 0x001E8B, + 0x001E8D, + 0x001E8F, + 0x001E91, + 0x001E93, + 0x001E9F, + 0x001EA1, + 0x001EA3, + 0x001EA5, + 0x001EA7, + 0x001EA9, + 0x001EAB, + 0x001EAD, + 0x001EAF, + 0x001EB1, + 0x001EB3, + 0x001EB5, + 0x001EB7, + 0x001EB9, + 0x001EBB, + 0x001EBD, + 0x001EBF, + 0x001EC1, + 0x001EC3, + 0x001EC5, + 0x001EC7, + 0x001EC9, + 0x001ECB, + 0x001ECD, + 0x001ECF, + 0x001ED1, + 0x001ED3, + 0x001ED5, + 0x001ED7, + 0x001ED9, + 0x001EDB, + 0x001EDD, + 0x001EDF, + 0x001EE1, + 0x001EE3, + 0x001EE5, + 0x001EE7, + 0x001EE9, + 0x001EEB, + 0x001EED, + 0x001EEF, + 0x001EF1, + 0x001EF3, + 0x001EF5, + 0x001EF7, + 0x001EF9, + 0x001EFB, + 0x001EFD, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x002125, + 0x002127, + 0x002129, + 0x002C61, + 0x002C68, + 0x002C6A, + 0x002C6C, + 0x002C71, + 0x002C81, + 0x002C83, + 0x002C85, + 0x002C87, + 0x002C89, + 0x002C8B, + 0x002C8D, + 0x002C8F, + 0x002C91, + 0x002C93, + 0x002C95, + 0x002C97, + 0x002C99, + 0x002C9B, + 0x002C9D, + 0x002C9F, + 0x002CA1, + 0x002CA3, + 0x002CA5, + 0x002CA7, + 0x002CA9, + 0x002CAB, + 0x002CAD, + 0x002CAF, + 0x002CB1, + 0x002CB3, + 0x002CB5, + 0x002CB7, + 0x002CB9, + 0x002CBB, + 0x002CBD, + 0x002CBF, + 0x002CC1, + 0x002CC3, + 0x002CC5, + 0x002CC7, + 0x002CC9, + 0x002CCB, + 0x002CCD, + 0x002CCF, + 0x002CD1, + 0x002CD3, + 0x002CD5, + 0x002CD7, + 0x002CD9, + 0x002CDB, + 0x002CDD, + 0x002CDF, + 0x002CE1, + 0x002CEC, + 0x00A641, + 0x00A643, + 0x00A645, + 0x00A647, + 0x00A649, + 0x00A64B, + 0x00A64D, + 0x00A64F, + 0x00A651, + 0x00A653, + 0x00A655, + 0x00A657, + 0x00A659, + 0x00A65B, + 0x00A65D, + 0x00A65F, + 0x00A661, + 0x00A663, + 0x00A665, + 0x00A667, + 0x00A669, + 0x00A66B, + 0x00A681, + 0x00A683, + 0x00A685, + 0x00A687, + 0x00A689, + 0x00A68B, + 0x00A68D, + 0x00A68F, + 0x00A691, + 0x00A693, + 0x00A695, + 0x00A697, + 0x00A699, + 0x00A723, + 0x00A725, + 0x00A727, + 0x00A729, + 0x00A72B, + 0x00A72D, + 0x00A733, + 0x00A735, + 0x00A737, + 0x00A739, + 0x00A73B, + 0x00A73D, + 0x00A73F, + 0x00A741, + 0x00A743, + 0x00A745, + 0x00A747, + 0x00A749, + 0x00A74B, + 0x00A74D, + 0x00A74F, + 0x00A751, + 0x00A753, + 0x00A755, + 0x00A757, + 0x00A759, + 0x00A75B, + 0x00A75D, + 0x00A75F, + 0x00A761, + 0x00A763, + 0x00A765, + 0x00A767, + 0x00A769, + 0x00A76B, + 0x00A76D, + 0x00A77A, + 0x00A77C, + 0x00A77F, + 0x00A781, + 0x00A783, + 0x00A785, + 0x00A78C, + 0x00A791, + 0x00A797, + 0x00A799, + 0x00A79B, + 0x00A79D, + 0x00A79F, + 0x00A7A1, + 0x00A7A3, + 0x00A7A5, + 0x00A7A7, + 0x00A7A9, + 0x00A7AF, + 0x00A7B5, + 0x00A7B7, + 0x00A7B9, + 0x00A7BB, + 0x00A7BD, + 0x00A7BF, + 0x00A7C1, + 0x00A7C3, + 0x00A7C8, + 0x00A7D7, + 0x01057B, + 0x01058B, + 0x010593, + 0x01D49D, + 0x01D4AD, + 0x01D506, + 0x01D515, + 0x01D53A, + 0x01D53F, + 0x01D545 + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x0000BF], + [0x0000DF, 0x0000FF], + [0x000137, 0x000138], + [0x000148, 0x000149], + [0x00017E, 0x000180], + [0x00018C, 0x00018D], + [0x000199, 0x00019B], + [0x0001AA, 0x0001AB], + [0x0001B9, 0x0001BB], + [0x0001BD, 0x0001C3], + [0x0001C5, 0x0001C6], + [0x0001C8, 0x0001C9], + [0x0001CB, 0x0001CC], + [0x0001DC, 0x0001DD], + [0x0001EF, 0x0001F0], + [0x0001F2, 0x0001F3], + [0x000233, 0x000239], + [0x00023F, 0x000240], + [0x00024F, 0x00036F], + [0x000373, 0x000375], + [0x000377, 0x00037E], + [0x000380, 0x000385], + [0x0003AC, 0x0003CE], + [0x0003D0, 0x0003D1], + [0x0003D5, 0x0003D7], + [0x0003EF, 0x0003F3], + [0x0003F5, 0x0003F6], + [0x0003FB, 0x0003FC], + [0x000430, 0x00045F], + [0x000481, 0x000489], + [0x0004CE, 0x0004CF], + [0x00052F, 0x000530], + [0x000557, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x00139F], + [0x0013F6, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001DFF], + [0x001E95, 0x001E9D], + [0x001EFF, 0x001F07], + [0x001F10, 0x001F17], + [0x001F1E, 0x001F27], + [0x001F30, 0x001F37], + [0x001F40, 0x001F47], + [0x001F4E, 0x001F58], + [0x001F60, 0x001F67], + [0x001F70, 0x001FB7], + [0x001FBC, 0x001FC7], + [0x001FCC, 0x001FD7], + [0x001FDC, 0x001FE7], + [0x001FED, 0x001FF7], + [0x001FFC, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x00210A], + [0x00210E, 0x00210F], + [0x002113, 0x002114], + [0x002116, 0x002118], + [0x00211E, 0x002123], + [0x00212E, 0x00212F], + [0x002134, 0x00213D], + [0x002140, 0x002144], + [0x002146, 0x00215F], + [0x002170, 0x002182], + [0x002184, 0x0024B5], + [0x0024D0, 0x002BFF], + [0x002C30, 0x002C5F], + [0x002C65, 0x002C66], + [0x002C73, 0x002C74], + [0x002C76, 0x002C7D], + [0x002CE3, 0x002CEA], + [0x002CEE, 0x002CF1], + [0x002CF3, 0x00A63F], + [0x00A66D, 0x00A67F], + [0x00A69B, 0x00A721], + [0x00A72F, 0x00A731], + [0x00A76F, 0x00A778], + [0x00A787, 0x00A78A], + [0x00A78E, 0x00A78F], + [0x00A793, 0x00A795], + [0x00A7CA, 0x00A7CF], + [0x00A7D1, 0x00A7D5], + [0x00A7D9, 0x00A7F4], + [0x00A7F6, 0x00DBFF], + [0x00E000, 0x00FF20], + [0x00FF3B, 0x0103FF], + [0x010428, 0x0104AF], + [0x0104D4, 0x01056F], + [0x010596, 0x010C7F], + [0x010CB3, 0x01189F], + [0x0118C0, 0x016E3F], + [0x016E60, 0x01D3FF], + [0x01D41A, 0x01D433], + [0x01D44E, 0x01D467], + [0x01D482, 0x01D49B], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D4B6, 0x01D4CF], + [0x01D4EA, 0x01D503], + [0x01D50B, 0x01D50C], + [0x01D51D, 0x01D537], + [0x01D547, 0x01D549], + [0x01D551, 0x01D56B], + [0x01D586, 0x01D59F], + [0x01D5BA, 0x01D5D3], + [0x01D5EE, 0x01D607], + [0x01D622, 0x01D63B], + [0x01D656, 0x01D66F], + [0x01D68A, 0x01D6A7], + [0x01D6C1, 0x01D6E1], + [0x01D6FB, 0x01D71B], + [0x01D735, 0x01D755], + [0x01D76F, 0x01D78F], + [0x01D7A9, 0x01D7C9], + [0x01D7CB, 0x01E8FF], + [0x01E922, 0x01F12F], + [0x01F14A, 0x01F14F], + [0x01F16A, 0x01F16F], + [0x01F18A, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Uppercase}+$/u, + nonMatchSymbols, + "\\P{Uppercase}" +); +testPropertyEscapes( + /^\P{Upper}+$/u, + nonMatchSymbols, + "\\P{Upper}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Variation_Selector.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Variation_Selector.js new file mode 100644 index 0000000000..fe375ad3e4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/Variation_Selector.js @@ -0,0 +1,61 @@ +// Copyright 2022 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 for `Variation_Selector` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00180F + ], + ranges: [ + [0x00180B, 0x00180D], + [0x00FE00, 0x00FE0F], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\p{Variation_Selector}+$/u, + matchSymbols, + "\\p{Variation_Selector}" +); +testPropertyEscapes( + /^\p{VS}+$/u, + matchSymbols, + "\\p{VS}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x00180E + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00180A], + [0x001810, 0x00DBFF], + [0x00E000, 0x00FDFF], + [0x00FE10, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{Variation_Selector}+$/u, + nonMatchSymbols, + "\\P{Variation_Selector}" +); +testPropertyEscapes( + /^\P{VS}+$/u, + nonMatchSymbols, + "\\P{VS}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/White_Space.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/White_Space.js new file mode 100644 index 0000000000..7399f4c148 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/White_Space.js @@ -0,0 +1,72 @@ +// Copyright 2022 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 for `White_Space` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x000020, + 0x000085, + 0x0000A0, + 0x001680, + 0x00202F, + 0x00205F, + 0x003000 + ], + ranges: [ + [0x000009, 0x00000D], + [0x002000, 0x00200A], + [0x002028, 0x002029] + ] +}); +testPropertyEscapes( + /^\p{White_Space}+$/u, + matchSymbols, + "\\p{White_Space}" +); +testPropertyEscapes( + /^\p{space}+$/u, + matchSymbols, + "\\p{space}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000008], + [0x00000E, 0x00001F], + [0x000021, 0x000084], + [0x000086, 0x00009F], + [0x0000A1, 0x00167F], + [0x001681, 0x001FFF], + [0x00200B, 0x002027], + [0x00202A, 0x00202E], + [0x002030, 0x00205E], + [0x002060, 0x002FFF], + [0x003001, 0x00DBFF], + [0x00E000, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{White_Space}+$/u, + nonMatchSymbols, + "\\P{White_Space}" +); +testPropertyEscapes( + /^\P{space}+$/u, + nonMatchSymbols, + "\\P{space}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/XID_Continue.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/XID_Continue.js new file mode 100644 index 0000000000..829bc94b9b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/XID_Continue.js @@ -0,0 +1,1603 @@ +// Copyright 2022 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 for `XID_Continue` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x00005F, + 0x0000AA, + 0x0000B5, + 0x0000B7, + 0x0000BA, + 0x0002EC, + 0x0002EE, + 0x00037F, + 0x00038C, + 0x000559, + 0x0005BF, + 0x0005C7, + 0x0006FF, + 0x0007FA, + 0x0007FD, + 0x0009B2, + 0x0009D7, + 0x0009FC, + 0x0009FE, + 0x000A3C, + 0x000A51, + 0x000A5E, + 0x000AD0, + 0x000B71, + 0x000B9C, + 0x000BD0, + 0x000BD7, + 0x000C5D, + 0x000DBD, + 0x000DCA, + 0x000DD6, + 0x000E84, + 0x000EA5, + 0x000EC6, + 0x000F00, + 0x000F35, + 0x000F37, + 0x000F39, + 0x000FC6, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x0017D7, + 0x001AA7, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001FBE, + 0x002054, + 0x002071, + 0x00207F, + 0x0020E1, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x00214E, + 0x002D27, + 0x002D2D, + 0x002D6F, + 0x00A7D3, + 0x00A82C, + 0x00A8FB, + 0x00FB3E, + 0x00FE71, + 0x00FE73, + 0x00FE77, + 0x00FE79, + 0x00FE7B, + 0x00FE7D, + 0x00FF3F, + 0x0101FD, + 0x0102E0, + 0x010808, + 0x01083C, + 0x010A3F, + 0x010F27, + 0x0110C2, + 0x011176, + 0x0111DC, + 0x011288, + 0x011350, + 0x011357, + 0x0114C7, + 0x011644, + 0x011909, + 0x011A47, + 0x011A9D, + 0x011D3A, + 0x011FB0, + 0x01B132, + 0x01B155, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01DA75, + 0x01DA84, + 0x01E08F, + 0x01E14E, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x000030, 0x000039], + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002C1], + [0x0002C6, 0x0002D1], + [0x0002E0, 0x0002E4], + [0x000300, 0x000374], + [0x000376, 0x000377], + [0x00037B, 0x00037D], + [0x000386, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003F5], + [0x0003F7, 0x000481], + [0x000483, 0x000487], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000560, 0x000588], + [0x000591, 0x0005BD], + [0x0005C1, 0x0005C2], + [0x0005C4, 0x0005C5], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F2], + [0x000610, 0x00061A], + [0x000620, 0x000669], + [0x00066E, 0x0006D3], + [0x0006D5, 0x0006DC], + [0x0006DF, 0x0006E8], + [0x0006EA, 0x0006FC], + [0x000710, 0x00074A], + [0x00074D, 0x0007B1], + [0x0007C0, 0x0007F5], + [0x000800, 0x00082D], + [0x000840, 0x00085B], + [0x000860, 0x00086A], + [0x000870, 0x000887], + [0x000889, 0x00088E], + [0x000898, 0x0008E1], + [0x0008E3, 0x000963], + [0x000966, 0x00096F], + [0x000971, 0x000983], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009BC, 0x0009C4], + [0x0009C7, 0x0009C8], + [0x0009CB, 0x0009CE], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E3], + [0x0009E6, 0x0009F1], + [0x000A01, 0x000A03], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A3E, 0x000A42], + [0x000A47, 0x000A48], + [0x000A4B, 0x000A4D], + [0x000A59, 0x000A5C], + [0x000A66, 0x000A75], + [0x000A81, 0x000A83], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000ABC, 0x000AC5], + [0x000AC7, 0x000AC9], + [0x000ACB, 0x000ACD], + [0x000AE0, 0x000AE3], + [0x000AE6, 0x000AEF], + [0x000AF9, 0x000AFF], + [0x000B01, 0x000B03], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B3C, 0x000B44], + [0x000B47, 0x000B48], + [0x000B4B, 0x000B4D], + [0x000B55, 0x000B57], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B63], + [0x000B66, 0x000B6F], + [0x000B82, 0x000B83], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000BBE, 0x000BC2], + [0x000BC6, 0x000BC8], + [0x000BCA, 0x000BCD], + [0x000BE6, 0x000BEF], + [0x000C00, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C3C, 0x000C44], + [0x000C46, 0x000C48], + [0x000C4A, 0x000C4D], + [0x000C55, 0x000C56], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C63], + [0x000C66, 0x000C6F], + [0x000C80, 0x000C83], + [0x000C85, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CBC, 0x000CC4], + [0x000CC6, 0x000CC8], + [0x000CCA, 0x000CCD], + [0x000CD5, 0x000CD6], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE3], + [0x000CE6, 0x000CEF], + [0x000CF1, 0x000CF3], + [0x000D00, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D44], + [0x000D46, 0x000D48], + [0x000D4A, 0x000D4E], + [0x000D54, 0x000D57], + [0x000D5F, 0x000D63], + [0x000D66, 0x000D6F], + [0x000D7A, 0x000D7F], + [0x000D81, 0x000D83], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000DCF, 0x000DD4], + [0x000DD8, 0x000DDF], + [0x000DE6, 0x000DEF], + [0x000DF2, 0x000DF3], + [0x000E01, 0x000E3A], + [0x000E40, 0x000E4E], + [0x000E50, 0x000E59], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EBD], + [0x000EC0, 0x000EC4], + [0x000EC8, 0x000ECE], + [0x000ED0, 0x000ED9], + [0x000EDC, 0x000EDF], + [0x000F18, 0x000F19], + [0x000F20, 0x000F29], + [0x000F3E, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F71, 0x000F84], + [0x000F86, 0x000F97], + [0x000F99, 0x000FBC], + [0x001000, 0x001049], + [0x001050, 0x00109D], + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FC, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x00135D, 0x00135F], + [0x001369, 0x001371], + [0x001380, 0x00138F], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001401, 0x00166C], + [0x00166F, 0x00167F], + [0x001681, 0x00169A], + [0x0016A0, 0x0016EA], + [0x0016EE, 0x0016F8], + [0x001700, 0x001715], + [0x00171F, 0x001734], + [0x001740, 0x001753], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001772, 0x001773], + [0x001780, 0x0017D3], + [0x0017DC, 0x0017DD], + [0x0017E0, 0x0017E9], + [0x00180B, 0x00180D], + [0x00180F, 0x001819], + [0x001820, 0x001878], + [0x001880, 0x0018AA], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001920, 0x00192B], + [0x001930, 0x00193B], + [0x001946, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x0019D0, 0x0019DA], + [0x001A00, 0x001A1B], + [0x001A20, 0x001A5E], + [0x001A60, 0x001A7C], + [0x001A7F, 0x001A89], + [0x001A90, 0x001A99], + [0x001AB0, 0x001ABD], + [0x001ABF, 0x001ACE], + [0x001B00, 0x001B4C], + [0x001B50, 0x001B59], + [0x001B6B, 0x001B73], + [0x001B80, 0x001BF3], + [0x001C00, 0x001C37], + [0x001C40, 0x001C49], + [0x001C4D, 0x001C7D], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001CD0, 0x001CD2], + [0x001CD4, 0x001CFA], + [0x001D00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FCC], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FE0, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFC], + [0x00203F, 0x002040], + [0x002090, 0x00209C], + [0x0020D0, 0x0020DC], + [0x0020E5, 0x0020F0], + [0x00210A, 0x002113], + [0x002118, 0x00211D], + [0x00212A, 0x002139], + [0x00213C, 0x00213F], + [0x002145, 0x002149], + [0x002160, 0x002188], + [0x002C00, 0x002CE4], + [0x002CEB, 0x002CF3], + [0x002D00, 0x002D25], + [0x002D30, 0x002D67], + [0x002D7F, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x002DE0, 0x002DFF], + [0x003005, 0x003007], + [0x003021, 0x00302F], + [0x003031, 0x003035], + [0x003038, 0x00303C], + [0x003041, 0x003096], + [0x003099, 0x00309A], + [0x00309D, 0x00309F], + [0x0030A1, 0x0030FA], + [0x0030FC, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x0031A0, 0x0031BF], + [0x0031F0, 0x0031FF], + [0x003400, 0x004DBF], + [0x004E00, 0x00A48C], + [0x00A4D0, 0x00A4FD], + [0x00A500, 0x00A60C], + [0x00A610, 0x00A62B], + [0x00A640, 0x00A66F], + [0x00A674, 0x00A67D], + [0x00A67F, 0x00A6F1], + [0x00A717, 0x00A71F], + [0x00A722, 0x00A788], + [0x00A78B, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A827], + [0x00A840, 0x00A873], + [0x00A880, 0x00A8C5], + [0x00A8D0, 0x00A8D9], + [0x00A8E0, 0x00A8F7], + [0x00A8FD, 0x00A92D], + [0x00A930, 0x00A953], + [0x00A960, 0x00A97C], + [0x00A980, 0x00A9C0], + [0x00A9CF, 0x00A9D9], + [0x00A9E0, 0x00A9FE], + [0x00AA00, 0x00AA36], + [0x00AA40, 0x00AA4D], + [0x00AA50, 0x00AA59], + [0x00AA60, 0x00AA76], + [0x00AA7A, 0x00AAC2], + [0x00AADB, 0x00AADD], + [0x00AAE0, 0x00AAEF], + [0x00AAF2, 0x00AAF6], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB70, 0x00ABEA], + [0x00ABEC, 0x00ABED], + [0x00ABF0, 0x00ABF9], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1D, 0x00FB28], + [0x00FB2A, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBB1], + [0x00FBD3, 0x00FC5D], + [0x00FC64, 0x00FD3D], + [0x00FD50, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDF9], + [0x00FE00, 0x00FE0F], + [0x00FE20, 0x00FE2F], + [0x00FE33, 0x00FE34], + [0x00FE4D, 0x00FE4F], + [0x00FE7F, 0x00FEFC], + [0x00FF10, 0x00FF19], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x00FF66, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010140, 0x010174], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x010300, 0x01031F], + [0x01032D, 0x01034A], + [0x010350, 0x01037A], + [0x010380, 0x01039D], + [0x0103A0, 0x0103C3], + [0x0103C8, 0x0103CF], + [0x0103D1, 0x0103D5], + [0x010400, 0x01049D], + [0x0104A0, 0x0104A9], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010860, 0x010876], + [0x010880, 0x01089E], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x010900, 0x010915], + [0x010920, 0x010939], + [0x010980, 0x0109B7], + [0x0109BE, 0x0109BF], + [0x010A00, 0x010A03], + [0x010A05, 0x010A06], + [0x010A0C, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A38, 0x010A3A], + [0x010A60, 0x010A7C], + [0x010A80, 0x010A9C], + [0x010AC0, 0x010AC7], + [0x010AC9, 0x010AE6], + [0x010B00, 0x010B35], + [0x010B40, 0x010B55], + [0x010B60, 0x010B72], + [0x010B80, 0x010B91], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010D00, 0x010D27], + [0x010D30, 0x010D39], + [0x010E80, 0x010EA9], + [0x010EAB, 0x010EAC], + [0x010EB0, 0x010EB1], + [0x010EFD, 0x010F1C], + [0x010F30, 0x010F50], + [0x010F70, 0x010F85], + [0x010FB0, 0x010FC4], + [0x010FE0, 0x010FF6], + [0x011000, 0x011046], + [0x011066, 0x011075], + [0x01107F, 0x0110BA], + [0x0110D0, 0x0110E8], + [0x0110F0, 0x0110F9], + [0x011100, 0x011134], + [0x011136, 0x01113F], + [0x011144, 0x011147], + [0x011150, 0x011173], + [0x011180, 0x0111C4], + [0x0111C9, 0x0111CC], + [0x0111CE, 0x0111DA], + [0x011200, 0x011211], + [0x011213, 0x011237], + [0x01123E, 0x011241], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A8], + [0x0112B0, 0x0112EA], + [0x0112F0, 0x0112F9], + [0x011300, 0x011303], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01133B, 0x011344], + [0x011347, 0x011348], + [0x01134B, 0x01134D], + [0x01135D, 0x011363], + [0x011366, 0x01136C], + [0x011370, 0x011374], + [0x011400, 0x01144A], + [0x011450, 0x011459], + [0x01145E, 0x011461], + [0x011480, 0x0114C5], + [0x0114D0, 0x0114D9], + [0x011580, 0x0115B5], + [0x0115B8, 0x0115C0], + [0x0115D8, 0x0115DD], + [0x011600, 0x011640], + [0x011650, 0x011659], + [0x011680, 0x0116B8], + [0x0116C0, 0x0116C9], + [0x011700, 0x01171A], + [0x01171D, 0x01172B], + [0x011730, 0x011739], + [0x011740, 0x011746], + [0x011800, 0x01183A], + [0x0118A0, 0x0118E9], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x011935], + [0x011937, 0x011938], + [0x01193B, 0x011943], + [0x011950, 0x011959], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D7], + [0x0119DA, 0x0119E1], + [0x0119E3, 0x0119E4], + [0x011A00, 0x011A3E], + [0x011A50, 0x011A99], + [0x011AB0, 0x011AF8], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C36], + [0x011C38, 0x011C40], + [0x011C50, 0x011C59], + [0x011C72, 0x011C8F], + [0x011C92, 0x011CA7], + [0x011CA9, 0x011CB6], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D36], + [0x011D3C, 0x011D3D], + [0x011D3F, 0x011D47], + [0x011D50, 0x011D59], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D8E], + [0x011D90, 0x011D91], + [0x011D93, 0x011D98], + [0x011DA0, 0x011DA9], + [0x011EE0, 0x011EF6], + [0x011F00, 0x011F10], + [0x011F12, 0x011F3A], + [0x011F3E, 0x011F42], + [0x011F50, 0x011F59], + [0x012000, 0x012399], + [0x012400, 0x01246E], + [0x012480, 0x012543], + [0x012F90, 0x012FF0], + [0x013000, 0x01342F], + [0x013440, 0x013455], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A60, 0x016A69], + [0x016A70, 0x016ABE], + [0x016AC0, 0x016AC9], + [0x016AD0, 0x016AED], + [0x016AF0, 0x016AF4], + [0x016B00, 0x016B36], + [0x016B40, 0x016B43], + [0x016B50, 0x016B59], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E7F], + [0x016F00, 0x016F4A], + [0x016F4F, 0x016F87], + [0x016F8F, 0x016F9F], + [0x016FE0, 0x016FE1], + [0x016FE3, 0x016FE4], + [0x016FF0, 0x016FF1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01BC9D, 0x01BC9E], + [0x01CF00, 0x01CF2D], + [0x01CF30, 0x01CF46], + [0x01D165, 0x01D169], + [0x01D16D, 0x01D172], + [0x01D17B, 0x01D182], + [0x01D185, 0x01D18B], + [0x01D1AA, 0x01D1AD], + [0x01D242, 0x01D244], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7CB], + [0x01D7CE, 0x01D7FF], + [0x01DA00, 0x01DA36], + [0x01DA3B, 0x01DA6C], + [0x01DA9B, 0x01DA9F], + [0x01DAA1, 0x01DAAF], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E000, 0x01E006], + [0x01E008, 0x01E018], + [0x01E01B, 0x01E021], + [0x01E023, 0x01E024], + [0x01E026, 0x01E02A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E130, 0x01E13D], + [0x01E140, 0x01E149], + [0x01E290, 0x01E2AE], + [0x01E2C0, 0x01E2F9], + [0x01E4D0, 0x01E4F9], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E8D0, 0x01E8D6], + [0x01E900, 0x01E94B], + [0x01E950, 0x01E959], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x01FBF0, 0x01FBF9], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF], + [0x0E0100, 0x0E01EF] + ] +}); +testPropertyEscapes( + /^\p{XID_Continue}+$/u, + matchSymbols, + "\\p{XID_Continue}" +); +testPropertyEscapes( + /^\p{XIDC}+$/u, + matchSymbols, + "\\p{XIDC}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x000060, + 0x0000B6, + 0x0000D7, + 0x0000F7, + 0x0002ED, + 0x000375, + 0x00037E, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x0003F6, + 0x000482, + 0x000530, + 0x0005BE, + 0x0005C0, + 0x0005C3, + 0x0005C6, + 0x0006D4, + 0x0006E9, + 0x000888, + 0x0008E2, + 0x000970, + 0x000984, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x0009FD, + 0x000A04, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A3D, + 0x000A5D, + 0x000A84, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000AC6, + 0x000ACA, + 0x000B00, + 0x000B04, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B70, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000BC9, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C45, + 0x000C49, + 0x000C57, + 0x000C84, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CC5, + 0x000CC9, + 0x000CDF, + 0x000CF0, + 0x000D0D, + 0x000D11, + 0x000D45, + 0x000D49, + 0x000D80, + 0x000D84, + 0x000DB2, + 0x000DBC, + 0x000DD5, + 0x000DD7, + 0x000E4F, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EC5, + 0x000EC7, + 0x000ECF, + 0x000F36, + 0x000F38, + 0x000F48, + 0x000F85, + 0x000F98, + 0x0010C6, + 0x0010FB, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x001680, + 0x00176D, + 0x001771, + 0x00180E, + 0x00191F, + 0x001A5F, + 0x001ABE, + 0x001CD3, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x002DDF, + 0x003030, + 0x0030A0, + 0x0030FB, + 0x003130, + 0x00A67E, + 0x00A7D2, + 0x00A7D4, + 0x00A8FC, + 0x00A9FF, + 0x00AB27, + 0x00AB2F, + 0x00AB5B, + 0x00ABEB, + 0x00FB29, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE72, + 0x00FE78, + 0x00FE7A, + 0x00FE7C, + 0x00FE7E, + 0x00FF40, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x0103D0, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x0108F3, + 0x010A04, + 0x010A14, + 0x010A18, + 0x010AC8, + 0x010EAA, + 0x011135, + 0x0111CD, + 0x0111DB, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011304, + 0x011329, + 0x011331, + 0x011334, + 0x01133A, + 0x0114C6, + 0x011914, + 0x011917, + 0x011936, + 0x0119E2, + 0x011C09, + 0x011C37, + 0x011CA8, + 0x011D07, + 0x011D0A, + 0x011D3B, + 0x011D3E, + 0x011D66, + 0x011D69, + 0x011D8F, + 0x011D92, + 0x011F11, + 0x016A5F, + 0x016ABF, + 0x016FE2, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3, + 0x01DAA0, + 0x01E007, + 0x01E022, + 0x01E025, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x00002F], + [0x00003A, 0x000040], + [0x00005B, 0x00005E], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B4], + [0x0000B8, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002C2, 0x0002C5], + [0x0002D2, 0x0002DF], + [0x0002E5, 0x0002EB], + [0x0002EF, 0x0002FF], + [0x000378, 0x00037A], + [0x000380, 0x000385], + [0x000488, 0x000489], + [0x000557, 0x000558], + [0x00055A, 0x00055F], + [0x000589, 0x000590], + [0x0005C8, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F3, 0x00060F], + [0x00061B, 0x00061F], + [0x00066A, 0x00066D], + [0x0006DD, 0x0006DE], + [0x0006FD, 0x0006FE], + [0x000700, 0x00070F], + [0x00074B, 0x00074C], + [0x0007B2, 0x0007BF], + [0x0007F6, 0x0007F9], + [0x0007FB, 0x0007FC], + [0x0007FE, 0x0007FF], + [0x00082E, 0x00083F], + [0x00085C, 0x00085F], + [0x00086B, 0x00086F], + [0x00088F, 0x000897], + [0x000964, 0x000965], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BB], + [0x0009C5, 0x0009C6], + [0x0009C9, 0x0009CA], + [0x0009CF, 0x0009D6], + [0x0009D8, 0x0009DB], + [0x0009E4, 0x0009E5], + [0x0009F2, 0x0009FB], + [0x0009FF, 0x000A00], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A3B], + [0x000A43, 0x000A46], + [0x000A49, 0x000A4A], + [0x000A4E, 0x000A50], + [0x000A52, 0x000A58], + [0x000A5F, 0x000A65], + [0x000A76, 0x000A80], + [0x000ABA, 0x000ABB], + [0x000ACE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE4, 0x000AE5], + [0x000AF0, 0x000AF8], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3B], + [0x000B45, 0x000B46], + [0x000B49, 0x000B4A], + [0x000B4E, 0x000B54], + [0x000B58, 0x000B5B], + [0x000B64, 0x000B65], + [0x000B72, 0x000B81], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BBD], + [0x000BC3, 0x000BC5], + [0x000BCE, 0x000BCF], + [0x000BD1, 0x000BD6], + [0x000BD8, 0x000BE5], + [0x000BF0, 0x000BFF], + [0x000C3A, 0x000C3B], + [0x000C4E, 0x000C54], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C64, 0x000C65], + [0x000C70, 0x000C7F], + [0x000CBA, 0x000CBB], + [0x000CCE, 0x000CD4], + [0x000CD7, 0x000CDC], + [0x000CE4, 0x000CE5], + [0x000CF4, 0x000CFF], + [0x000D4F, 0x000D53], + [0x000D58, 0x000D5E], + [0x000D64, 0x000D65], + [0x000D70, 0x000D79], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000DC9], + [0x000DCB, 0x000DCE], + [0x000DE0, 0x000DE5], + [0x000DF0, 0x000DF1], + [0x000DF4, 0x000E00], + [0x000E3B, 0x000E3F], + [0x000E5A, 0x000E80], + [0x000EBE, 0x000EBF], + [0x000EDA, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F01, 0x000F17], + [0x000F1A, 0x000F1F], + [0x000F2A, 0x000F34], + [0x000F3A, 0x000F3D], + [0x000F6D, 0x000F70], + [0x000FBD, 0x000FC5], + [0x000FC7, 0x000FFF], + [0x00104A, 0x00104F], + [0x00109E, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00135C], + [0x001360, 0x001368], + [0x001372, 0x00137F], + [0x001390, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x001400], + [0x00166D, 0x00166E], + [0x00169B, 0x00169F], + [0x0016EB, 0x0016ED], + [0x0016F9, 0x0016FF], + [0x001716, 0x00171E], + [0x001735, 0x00173F], + [0x001754, 0x00175F], + [0x001774, 0x00177F], + [0x0017D4, 0x0017D6], + [0x0017D8, 0x0017DB], + [0x0017DE, 0x0017DF], + [0x0017EA, 0x00180A], + [0x00181A, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00192C, 0x00192F], + [0x00193C, 0x001945], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019CF], + [0x0019DB, 0x0019FF], + [0x001A1C, 0x001A1F], + [0x001A7D, 0x001A7E], + [0x001A8A, 0x001A8F], + [0x001A9A, 0x001AA6], + [0x001AA8, 0x001AAF], + [0x001ACF, 0x001AFF], + [0x001B4D, 0x001B4F], + [0x001B5A, 0x001B6A], + [0x001B74, 0x001B7F], + [0x001BF4, 0x001BFF], + [0x001C38, 0x001C3F], + [0x001C4A, 0x001C4C], + [0x001C7E, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001CCF], + [0x001CFB, 0x001CFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FDC, 0x001FDF], + [0x001FED, 0x001FF1], + [0x001FFD, 0x00203E], + [0x002041, 0x002053], + [0x002055, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x0020CF], + [0x0020DD, 0x0020E0], + [0x0020E2, 0x0020E4], + [0x0020F1, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002117], + [0x00211E, 0x002123], + [0x00213A, 0x00213B], + [0x002140, 0x002144], + [0x00214A, 0x00214D], + [0x00214F, 0x00215F], + [0x002189, 0x002BFF], + [0x002CE5, 0x002CEA], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D70, 0x002D7E], + [0x002D97, 0x002D9F], + [0x002E00, 0x003004], + [0x003008, 0x003020], + [0x003036, 0x003037], + [0x00303D, 0x003040], + [0x003097, 0x003098], + [0x00309B, 0x00309C], + [0x003100, 0x003104], + [0x00318F, 0x00319F], + [0x0031C0, 0x0031EF], + [0x003200, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A48D, 0x00A4CF], + [0x00A4FE, 0x00A4FF], + [0x00A60D, 0x00A60F], + [0x00A62C, 0x00A63F], + [0x00A670, 0x00A673], + [0x00A6F2, 0x00A716], + [0x00A720, 0x00A721], + [0x00A789, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A828, 0x00A82B], + [0x00A82D, 0x00A83F], + [0x00A874, 0x00A87F], + [0x00A8C6, 0x00A8CF], + [0x00A8DA, 0x00A8DF], + [0x00A8F8, 0x00A8FA], + [0x00A92E, 0x00A92F], + [0x00A954, 0x00A95F], + [0x00A97D, 0x00A97F], + [0x00A9C1, 0x00A9CE], + [0x00A9DA, 0x00A9DF], + [0x00AA37, 0x00AA3F], + [0x00AA4E, 0x00AA4F], + [0x00AA5A, 0x00AA5F], + [0x00AA77, 0x00AA79], + [0x00AAC3, 0x00AADA], + [0x00AADE, 0x00AADF], + [0x00AAF0, 0x00AAF1], + [0x00AAF7, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6A, 0x00AB6F], + [0x00ABEE, 0x00ABEF], + [0x00ABFA, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBB2, 0x00FBD2], + [0x00FC5E, 0x00FC63], + [0x00FD3E, 0x00FD4F], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDEF], + [0x00FDFA, 0x00FDFF], + [0x00FE10, 0x00FE1F], + [0x00FE30, 0x00FE32], + [0x00FE35, 0x00FE4C], + [0x00FE50, 0x00FE70], + [0x00FE74, 0x00FE76], + [0x00FEFD, 0x00FF0F], + [0x00FF1A, 0x00FF20], + [0x00FF3B, 0x00FF3E], + [0x00FF5B, 0x00FF65], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x01013F], + [0x010175, 0x0101FC], + [0x0101FE, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102DF], + [0x0102E1, 0x0102FF], + [0x010320, 0x01032C], + [0x01034B, 0x01034F], + [0x01037B, 0x01037F], + [0x01039E, 0x01039F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x0103FF], + [0x01049E, 0x01049F], + [0x0104AA, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056F], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x010856, 0x01085F], + [0x010877, 0x01087F], + [0x01089F, 0x0108DF], + [0x0108F6, 0x0108FF], + [0x010916, 0x01091F], + [0x01093A, 0x01097F], + [0x0109B8, 0x0109BD], + [0x0109C0, 0x0109FF], + [0x010A07, 0x010A0B], + [0x010A36, 0x010A37], + [0x010A3B, 0x010A3E], + [0x010A40, 0x010A5F], + [0x010A7D, 0x010A7F], + [0x010A9D, 0x010ABF], + [0x010AE7, 0x010AFF], + [0x010B36, 0x010B3F], + [0x010B56, 0x010B5F], + [0x010B73, 0x010B7F], + [0x010B92, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CFF], + [0x010D28, 0x010D2F], + [0x010D3A, 0x010E7F], + [0x010EAD, 0x010EAF], + [0x010EB2, 0x010EFC], + [0x010F1D, 0x010F26], + [0x010F28, 0x010F2F], + [0x010F51, 0x010F6F], + [0x010F86, 0x010FAF], + [0x010FC5, 0x010FDF], + [0x010FF7, 0x010FFF], + [0x011047, 0x011065], + [0x011076, 0x01107E], + [0x0110BB, 0x0110C1], + [0x0110C3, 0x0110CF], + [0x0110E9, 0x0110EF], + [0x0110FA, 0x0110FF], + [0x011140, 0x011143], + [0x011148, 0x01114F], + [0x011174, 0x011175], + [0x011177, 0x01117F], + [0x0111C5, 0x0111C8], + [0x0111DD, 0x0111FF], + [0x011238, 0x01123D], + [0x011242, 0x01127F], + [0x0112A9, 0x0112AF], + [0x0112EB, 0x0112EF], + [0x0112FA, 0x0112FF], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x011345, 0x011346], + [0x011349, 0x01134A], + [0x01134E, 0x01134F], + [0x011351, 0x011356], + [0x011358, 0x01135C], + [0x011364, 0x011365], + [0x01136D, 0x01136F], + [0x011375, 0x0113FF], + [0x01144B, 0x01144F], + [0x01145A, 0x01145D], + [0x011462, 0x01147F], + [0x0114C8, 0x0114CF], + [0x0114DA, 0x01157F], + [0x0115B6, 0x0115B7], + [0x0115C1, 0x0115D7], + [0x0115DE, 0x0115FF], + [0x011641, 0x011643], + [0x011645, 0x01164F], + [0x01165A, 0x01167F], + [0x0116B9, 0x0116BF], + [0x0116CA, 0x0116FF], + [0x01171B, 0x01171C], + [0x01172C, 0x01172F], + [0x01173A, 0x01173F], + [0x011747, 0x0117FF], + [0x01183B, 0x01189F], + [0x0118EA, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011939, 0x01193A], + [0x011944, 0x01194F], + [0x01195A, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D8, 0x0119D9], + [0x0119E5, 0x0119FF], + [0x011A3F, 0x011A46], + [0x011A48, 0x011A4F], + [0x011A9A, 0x011A9C], + [0x011A9E, 0x011AAF], + [0x011AF9, 0x011BFF], + [0x011C41, 0x011C4F], + [0x011C5A, 0x011C71], + [0x011C90, 0x011C91], + [0x011CB7, 0x011CFF], + [0x011D37, 0x011D39], + [0x011D48, 0x011D4F], + [0x011D5A, 0x011D5F], + [0x011D99, 0x011D9F], + [0x011DAA, 0x011EDF], + [0x011EF7, 0x011EFF], + [0x011F3B, 0x011F3D], + [0x011F43, 0x011F4F], + [0x011F5A, 0x011FAF], + [0x011FB1, 0x011FFF], + [0x01239A, 0x0123FF], + [0x01246F, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF1, 0x012FFF], + [0x013430, 0x01343F], + [0x013456, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A6A, 0x016A6F], + [0x016ACA, 0x016ACF], + [0x016AEE, 0x016AEF], + [0x016AF5, 0x016AFF], + [0x016B37, 0x016B3F], + [0x016B44, 0x016B4F], + [0x016B5A, 0x016B62], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E80, 0x016EFF], + [0x016F4B, 0x016F4E], + [0x016F88, 0x016F8E], + [0x016FA0, 0x016FDF], + [0x016FE5, 0x016FEF], + [0x016FF2, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01BC9C], + [0x01BC9F, 0x01CEFF], + [0x01CF2E, 0x01CF2F], + [0x01CF47, 0x01D164], + [0x01D16A, 0x01D16C], + [0x01D173, 0x01D17A], + [0x01D183, 0x01D184], + [0x01D18C, 0x01D1A9], + [0x01D1AE, 0x01D241], + [0x01D245, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01D7CD], + [0x01D800, 0x01D9FF], + [0x01DA37, 0x01DA3A], + [0x01DA6D, 0x01DA74], + [0x01DA76, 0x01DA83], + [0x01DA85, 0x01DA9A], + [0x01DAB0, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01DFFF], + [0x01E019, 0x01E01A], + [0x01E02B, 0x01E02F], + [0x01E06E, 0x01E08E], + [0x01E090, 0x01E0FF], + [0x01E12D, 0x01E12F], + [0x01E13E, 0x01E13F], + [0x01E14A, 0x01E14D], + [0x01E14F, 0x01E28F], + [0x01E2AF, 0x01E2BF], + [0x01E2FA, 0x01E4CF], + [0x01E4FA, 0x01E7DF], + [0x01E8C5, 0x01E8CF], + [0x01E8D7, 0x01E8FF], + [0x01E94C, 0x01E94F], + [0x01E95A, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01FBEF], + [0x01FBFA, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x0E00FF], + [0x0E01F0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{XID_Continue}+$/u, + nonMatchSymbols, + "\\P{XID_Continue}" +); +testPropertyEscapes( + /^\P{XIDC}+$/u, + nonMatchSymbols, + "\\P{XIDC}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/XID_Start.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/XID_Start.js new file mode 100644 index 0000000000..4838b9906b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/XID_Start.js @@ -0,0 +1,1385 @@ +// Copyright 2022 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 for `XID_Start` +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes] +includes: [regExpUtils.js] +---*/ + +const matchSymbols = buildString({ + loneCodePoints: [ + 0x0000AA, + 0x0000B5, + 0x0000BA, + 0x0002EC, + 0x0002EE, + 0x00037F, + 0x000386, + 0x00038C, + 0x000559, + 0x0006D5, + 0x0006FF, + 0x000710, + 0x0007B1, + 0x0007FA, + 0x00081A, + 0x000824, + 0x000828, + 0x00093D, + 0x000950, + 0x0009B2, + 0x0009BD, + 0x0009CE, + 0x0009FC, + 0x000A5E, + 0x000ABD, + 0x000AD0, + 0x000AF9, + 0x000B3D, + 0x000B71, + 0x000B83, + 0x000B9C, + 0x000BD0, + 0x000C3D, + 0x000C5D, + 0x000C80, + 0x000CBD, + 0x000D3D, + 0x000D4E, + 0x000DBD, + 0x000E32, + 0x000E84, + 0x000EA5, + 0x000EB2, + 0x000EBD, + 0x000EC6, + 0x000F00, + 0x00103F, + 0x001061, + 0x00108E, + 0x0010C7, + 0x0010CD, + 0x001258, + 0x0012C0, + 0x0017D7, + 0x0017DC, + 0x0018AA, + 0x001AA7, + 0x001CFA, + 0x001F59, + 0x001F5B, + 0x001F5D, + 0x001FBE, + 0x002071, + 0x00207F, + 0x002102, + 0x002107, + 0x002115, + 0x002124, + 0x002126, + 0x002128, + 0x00214E, + 0x002D27, + 0x002D2D, + 0x002D6F, + 0x00A7D3, + 0x00A8FB, + 0x00A9CF, + 0x00AA7A, + 0x00AAB1, + 0x00AAC0, + 0x00AAC2, + 0x00FB1D, + 0x00FB3E, + 0x00FE71, + 0x00FE73, + 0x00FE77, + 0x00FE79, + 0x00FE7B, + 0x00FE7D, + 0x010808, + 0x01083C, + 0x010A00, + 0x010F27, + 0x011075, + 0x011144, + 0x011147, + 0x011176, + 0x0111DA, + 0x0111DC, + 0x011288, + 0x01133D, + 0x011350, + 0x0114C7, + 0x011644, + 0x0116B8, + 0x011909, + 0x01193F, + 0x011941, + 0x0119E1, + 0x0119E3, + 0x011A00, + 0x011A3A, + 0x011A50, + 0x011A9D, + 0x011C40, + 0x011D46, + 0x011D98, + 0x011F02, + 0x011FB0, + 0x016F50, + 0x016FE3, + 0x01B132, + 0x01B155, + 0x01D4A2, + 0x01D4BB, + 0x01D546, + 0x01E14E, + 0x01E94B, + 0x01EE24, + 0x01EE27, + 0x01EE39, + 0x01EE3B, + 0x01EE42, + 0x01EE47, + 0x01EE49, + 0x01EE4B, + 0x01EE54, + 0x01EE57, + 0x01EE59, + 0x01EE5B, + 0x01EE5D, + 0x01EE5F, + 0x01EE64, + 0x01EE7E + ], + ranges: [ + [0x000041, 0x00005A], + [0x000061, 0x00007A], + [0x0000C0, 0x0000D6], + [0x0000D8, 0x0000F6], + [0x0000F8, 0x0002C1], + [0x0002C6, 0x0002D1], + [0x0002E0, 0x0002E4], + [0x000370, 0x000374], + [0x000376, 0x000377], + [0x00037B, 0x00037D], + [0x000388, 0x00038A], + [0x00038E, 0x0003A1], + [0x0003A3, 0x0003F5], + [0x0003F7, 0x000481], + [0x00048A, 0x00052F], + [0x000531, 0x000556], + [0x000560, 0x000588], + [0x0005D0, 0x0005EA], + [0x0005EF, 0x0005F2], + [0x000620, 0x00064A], + [0x00066E, 0x00066F], + [0x000671, 0x0006D3], + [0x0006E5, 0x0006E6], + [0x0006EE, 0x0006EF], + [0x0006FA, 0x0006FC], + [0x000712, 0x00072F], + [0x00074D, 0x0007A5], + [0x0007CA, 0x0007EA], + [0x0007F4, 0x0007F5], + [0x000800, 0x000815], + [0x000840, 0x000858], + [0x000860, 0x00086A], + [0x000870, 0x000887], + [0x000889, 0x00088E], + [0x0008A0, 0x0008C9], + [0x000904, 0x000939], + [0x000958, 0x000961], + [0x000971, 0x000980], + [0x000985, 0x00098C], + [0x00098F, 0x000990], + [0x000993, 0x0009A8], + [0x0009AA, 0x0009B0], + [0x0009B6, 0x0009B9], + [0x0009DC, 0x0009DD], + [0x0009DF, 0x0009E1], + [0x0009F0, 0x0009F1], + [0x000A05, 0x000A0A], + [0x000A0F, 0x000A10], + [0x000A13, 0x000A28], + [0x000A2A, 0x000A30], + [0x000A32, 0x000A33], + [0x000A35, 0x000A36], + [0x000A38, 0x000A39], + [0x000A59, 0x000A5C], + [0x000A72, 0x000A74], + [0x000A85, 0x000A8D], + [0x000A8F, 0x000A91], + [0x000A93, 0x000AA8], + [0x000AAA, 0x000AB0], + [0x000AB2, 0x000AB3], + [0x000AB5, 0x000AB9], + [0x000AE0, 0x000AE1], + [0x000B05, 0x000B0C], + [0x000B0F, 0x000B10], + [0x000B13, 0x000B28], + [0x000B2A, 0x000B30], + [0x000B32, 0x000B33], + [0x000B35, 0x000B39], + [0x000B5C, 0x000B5D], + [0x000B5F, 0x000B61], + [0x000B85, 0x000B8A], + [0x000B8E, 0x000B90], + [0x000B92, 0x000B95], + [0x000B99, 0x000B9A], + [0x000B9E, 0x000B9F], + [0x000BA3, 0x000BA4], + [0x000BA8, 0x000BAA], + [0x000BAE, 0x000BB9], + [0x000C05, 0x000C0C], + [0x000C0E, 0x000C10], + [0x000C12, 0x000C28], + [0x000C2A, 0x000C39], + [0x000C58, 0x000C5A], + [0x000C60, 0x000C61], + [0x000C85, 0x000C8C], + [0x000C8E, 0x000C90], + [0x000C92, 0x000CA8], + [0x000CAA, 0x000CB3], + [0x000CB5, 0x000CB9], + [0x000CDD, 0x000CDE], + [0x000CE0, 0x000CE1], + [0x000CF1, 0x000CF2], + [0x000D04, 0x000D0C], + [0x000D0E, 0x000D10], + [0x000D12, 0x000D3A], + [0x000D54, 0x000D56], + [0x000D5F, 0x000D61], + [0x000D7A, 0x000D7F], + [0x000D85, 0x000D96], + [0x000D9A, 0x000DB1], + [0x000DB3, 0x000DBB], + [0x000DC0, 0x000DC6], + [0x000E01, 0x000E30], + [0x000E40, 0x000E46], + [0x000E81, 0x000E82], + [0x000E86, 0x000E8A], + [0x000E8C, 0x000EA3], + [0x000EA7, 0x000EB0], + [0x000EC0, 0x000EC4], + [0x000EDC, 0x000EDF], + [0x000F40, 0x000F47], + [0x000F49, 0x000F6C], + [0x000F88, 0x000F8C], + [0x001000, 0x00102A], + [0x001050, 0x001055], + [0x00105A, 0x00105D], + [0x001065, 0x001066], + [0x00106E, 0x001070], + [0x001075, 0x001081], + [0x0010A0, 0x0010C5], + [0x0010D0, 0x0010FA], + [0x0010FC, 0x001248], + [0x00124A, 0x00124D], + [0x001250, 0x001256], + [0x00125A, 0x00125D], + [0x001260, 0x001288], + [0x00128A, 0x00128D], + [0x001290, 0x0012B0], + [0x0012B2, 0x0012B5], + [0x0012B8, 0x0012BE], + [0x0012C2, 0x0012C5], + [0x0012C8, 0x0012D6], + [0x0012D8, 0x001310], + [0x001312, 0x001315], + [0x001318, 0x00135A], + [0x001380, 0x00138F], + [0x0013A0, 0x0013F5], + [0x0013F8, 0x0013FD], + [0x001401, 0x00166C], + [0x00166F, 0x00167F], + [0x001681, 0x00169A], + [0x0016A0, 0x0016EA], + [0x0016EE, 0x0016F8], + [0x001700, 0x001711], + [0x00171F, 0x001731], + [0x001740, 0x001751], + [0x001760, 0x00176C], + [0x00176E, 0x001770], + [0x001780, 0x0017B3], + [0x001820, 0x001878], + [0x001880, 0x0018A8], + [0x0018B0, 0x0018F5], + [0x001900, 0x00191E], + [0x001950, 0x00196D], + [0x001970, 0x001974], + [0x001980, 0x0019AB], + [0x0019B0, 0x0019C9], + [0x001A00, 0x001A16], + [0x001A20, 0x001A54], + [0x001B05, 0x001B33], + [0x001B45, 0x001B4C], + [0x001B83, 0x001BA0], + [0x001BAE, 0x001BAF], + [0x001BBA, 0x001BE5], + [0x001C00, 0x001C23], + [0x001C4D, 0x001C4F], + [0x001C5A, 0x001C7D], + [0x001C80, 0x001C88], + [0x001C90, 0x001CBA], + [0x001CBD, 0x001CBF], + [0x001CE9, 0x001CEC], + [0x001CEE, 0x001CF3], + [0x001CF5, 0x001CF6], + [0x001D00, 0x001DBF], + [0x001E00, 0x001F15], + [0x001F18, 0x001F1D], + [0x001F20, 0x001F45], + [0x001F48, 0x001F4D], + [0x001F50, 0x001F57], + [0x001F5F, 0x001F7D], + [0x001F80, 0x001FB4], + [0x001FB6, 0x001FBC], + [0x001FC2, 0x001FC4], + [0x001FC6, 0x001FCC], + [0x001FD0, 0x001FD3], + [0x001FD6, 0x001FDB], + [0x001FE0, 0x001FEC], + [0x001FF2, 0x001FF4], + [0x001FF6, 0x001FFC], + [0x002090, 0x00209C], + [0x00210A, 0x002113], + [0x002118, 0x00211D], + [0x00212A, 0x002139], + [0x00213C, 0x00213F], + [0x002145, 0x002149], + [0x002160, 0x002188], + [0x002C00, 0x002CE4], + [0x002CEB, 0x002CEE], + [0x002CF2, 0x002CF3], + [0x002D00, 0x002D25], + [0x002D30, 0x002D67], + [0x002D80, 0x002D96], + [0x002DA0, 0x002DA6], + [0x002DA8, 0x002DAE], + [0x002DB0, 0x002DB6], + [0x002DB8, 0x002DBE], + [0x002DC0, 0x002DC6], + [0x002DC8, 0x002DCE], + [0x002DD0, 0x002DD6], + [0x002DD8, 0x002DDE], + [0x003005, 0x003007], + [0x003021, 0x003029], + [0x003031, 0x003035], + [0x003038, 0x00303C], + [0x003041, 0x003096], + [0x00309D, 0x00309F], + [0x0030A1, 0x0030FA], + [0x0030FC, 0x0030FF], + [0x003105, 0x00312F], + [0x003131, 0x00318E], + [0x0031A0, 0x0031BF], + [0x0031F0, 0x0031FF], + [0x003400, 0x004DBF], + [0x004E00, 0x00A48C], + [0x00A4D0, 0x00A4FD], + [0x00A500, 0x00A60C], + [0x00A610, 0x00A61F], + [0x00A62A, 0x00A62B], + [0x00A640, 0x00A66E], + [0x00A67F, 0x00A69D], + [0x00A6A0, 0x00A6EF], + [0x00A717, 0x00A71F], + [0x00A722, 0x00A788], + [0x00A78B, 0x00A7CA], + [0x00A7D0, 0x00A7D1], + [0x00A7D5, 0x00A7D9], + [0x00A7F2, 0x00A801], + [0x00A803, 0x00A805], + [0x00A807, 0x00A80A], + [0x00A80C, 0x00A822], + [0x00A840, 0x00A873], + [0x00A882, 0x00A8B3], + [0x00A8F2, 0x00A8F7], + [0x00A8FD, 0x00A8FE], + [0x00A90A, 0x00A925], + [0x00A930, 0x00A946], + [0x00A960, 0x00A97C], + [0x00A984, 0x00A9B2], + [0x00A9E0, 0x00A9E4], + [0x00A9E6, 0x00A9EF], + [0x00A9FA, 0x00A9FE], + [0x00AA00, 0x00AA28], + [0x00AA40, 0x00AA42], + [0x00AA44, 0x00AA4B], + [0x00AA60, 0x00AA76], + [0x00AA7E, 0x00AAAF], + [0x00AAB5, 0x00AAB6], + [0x00AAB9, 0x00AABD], + [0x00AADB, 0x00AADD], + [0x00AAE0, 0x00AAEA], + [0x00AAF2, 0x00AAF4], + [0x00AB01, 0x00AB06], + [0x00AB09, 0x00AB0E], + [0x00AB11, 0x00AB16], + [0x00AB20, 0x00AB26], + [0x00AB28, 0x00AB2E], + [0x00AB30, 0x00AB5A], + [0x00AB5C, 0x00AB69], + [0x00AB70, 0x00ABE2], + [0x00AC00, 0x00D7A3], + [0x00D7B0, 0x00D7C6], + [0x00D7CB, 0x00D7FB], + [0x00F900, 0x00FA6D], + [0x00FA70, 0x00FAD9], + [0x00FB00, 0x00FB06], + [0x00FB13, 0x00FB17], + [0x00FB1F, 0x00FB28], + [0x00FB2A, 0x00FB36], + [0x00FB38, 0x00FB3C], + [0x00FB40, 0x00FB41], + [0x00FB43, 0x00FB44], + [0x00FB46, 0x00FBB1], + [0x00FBD3, 0x00FC5D], + [0x00FC64, 0x00FD3D], + [0x00FD50, 0x00FD8F], + [0x00FD92, 0x00FDC7], + [0x00FDF0, 0x00FDF9], + [0x00FE7F, 0x00FEFC], + [0x00FF21, 0x00FF3A], + [0x00FF41, 0x00FF5A], + [0x00FF66, 0x00FF9D], + [0x00FFA0, 0x00FFBE], + [0x00FFC2, 0x00FFC7], + [0x00FFCA, 0x00FFCF], + [0x00FFD2, 0x00FFD7], + [0x00FFDA, 0x00FFDC], + [0x010000, 0x01000B], + [0x01000D, 0x010026], + [0x010028, 0x01003A], + [0x01003C, 0x01003D], + [0x01003F, 0x01004D], + [0x010050, 0x01005D], + [0x010080, 0x0100FA], + [0x010140, 0x010174], + [0x010280, 0x01029C], + [0x0102A0, 0x0102D0], + [0x010300, 0x01031F], + [0x01032D, 0x01034A], + [0x010350, 0x010375], + [0x010380, 0x01039D], + [0x0103A0, 0x0103C3], + [0x0103C8, 0x0103CF], + [0x0103D1, 0x0103D5], + [0x010400, 0x01049D], + [0x0104B0, 0x0104D3], + [0x0104D8, 0x0104FB], + [0x010500, 0x010527], + [0x010530, 0x010563], + [0x010570, 0x01057A], + [0x01057C, 0x01058A], + [0x01058C, 0x010592], + [0x010594, 0x010595], + [0x010597, 0x0105A1], + [0x0105A3, 0x0105B1], + [0x0105B3, 0x0105B9], + [0x0105BB, 0x0105BC], + [0x010600, 0x010736], + [0x010740, 0x010755], + [0x010760, 0x010767], + [0x010780, 0x010785], + [0x010787, 0x0107B0], + [0x0107B2, 0x0107BA], + [0x010800, 0x010805], + [0x01080A, 0x010835], + [0x010837, 0x010838], + [0x01083F, 0x010855], + [0x010860, 0x010876], + [0x010880, 0x01089E], + [0x0108E0, 0x0108F2], + [0x0108F4, 0x0108F5], + [0x010900, 0x010915], + [0x010920, 0x010939], + [0x010980, 0x0109B7], + [0x0109BE, 0x0109BF], + [0x010A10, 0x010A13], + [0x010A15, 0x010A17], + [0x010A19, 0x010A35], + [0x010A60, 0x010A7C], + [0x010A80, 0x010A9C], + [0x010AC0, 0x010AC7], + [0x010AC9, 0x010AE4], + [0x010B00, 0x010B35], + [0x010B40, 0x010B55], + [0x010B60, 0x010B72], + [0x010B80, 0x010B91], + [0x010C00, 0x010C48], + [0x010C80, 0x010CB2], + [0x010CC0, 0x010CF2], + [0x010D00, 0x010D23], + [0x010E80, 0x010EA9], + [0x010EB0, 0x010EB1], + [0x010F00, 0x010F1C], + [0x010F30, 0x010F45], + [0x010F70, 0x010F81], + [0x010FB0, 0x010FC4], + [0x010FE0, 0x010FF6], + [0x011003, 0x011037], + [0x011071, 0x011072], + [0x011083, 0x0110AF], + [0x0110D0, 0x0110E8], + [0x011103, 0x011126], + [0x011150, 0x011172], + [0x011183, 0x0111B2], + [0x0111C1, 0x0111C4], + [0x011200, 0x011211], + [0x011213, 0x01122B], + [0x01123F, 0x011240], + [0x011280, 0x011286], + [0x01128A, 0x01128D], + [0x01128F, 0x01129D], + [0x01129F, 0x0112A8], + [0x0112B0, 0x0112DE], + [0x011305, 0x01130C], + [0x01130F, 0x011310], + [0x011313, 0x011328], + [0x01132A, 0x011330], + [0x011332, 0x011333], + [0x011335, 0x011339], + [0x01135D, 0x011361], + [0x011400, 0x011434], + [0x011447, 0x01144A], + [0x01145F, 0x011461], + [0x011480, 0x0114AF], + [0x0114C4, 0x0114C5], + [0x011580, 0x0115AE], + [0x0115D8, 0x0115DB], + [0x011600, 0x01162F], + [0x011680, 0x0116AA], + [0x011700, 0x01171A], + [0x011740, 0x011746], + [0x011800, 0x01182B], + [0x0118A0, 0x0118DF], + [0x0118FF, 0x011906], + [0x01190C, 0x011913], + [0x011915, 0x011916], + [0x011918, 0x01192F], + [0x0119A0, 0x0119A7], + [0x0119AA, 0x0119D0], + [0x011A0B, 0x011A32], + [0x011A5C, 0x011A89], + [0x011AB0, 0x011AF8], + [0x011C00, 0x011C08], + [0x011C0A, 0x011C2E], + [0x011C72, 0x011C8F], + [0x011D00, 0x011D06], + [0x011D08, 0x011D09], + [0x011D0B, 0x011D30], + [0x011D60, 0x011D65], + [0x011D67, 0x011D68], + [0x011D6A, 0x011D89], + [0x011EE0, 0x011EF2], + [0x011F04, 0x011F10], + [0x011F12, 0x011F33], + [0x012000, 0x012399], + [0x012400, 0x01246E], + [0x012480, 0x012543], + [0x012F90, 0x012FF0], + [0x013000, 0x01342F], + [0x013441, 0x013446], + [0x014400, 0x014646], + [0x016800, 0x016A38], + [0x016A40, 0x016A5E], + [0x016A70, 0x016ABE], + [0x016AD0, 0x016AED], + [0x016B00, 0x016B2F], + [0x016B40, 0x016B43], + [0x016B63, 0x016B77], + [0x016B7D, 0x016B8F], + [0x016E40, 0x016E7F], + [0x016F00, 0x016F4A], + [0x016F93, 0x016F9F], + [0x016FE0, 0x016FE1], + [0x017000, 0x0187F7], + [0x018800, 0x018CD5], + [0x018D00, 0x018D08], + [0x01AFF0, 0x01AFF3], + [0x01AFF5, 0x01AFFB], + [0x01AFFD, 0x01AFFE], + [0x01B000, 0x01B122], + [0x01B150, 0x01B152], + [0x01B164, 0x01B167], + [0x01B170, 0x01B2FB], + [0x01BC00, 0x01BC6A], + [0x01BC70, 0x01BC7C], + [0x01BC80, 0x01BC88], + [0x01BC90, 0x01BC99], + [0x01D400, 0x01D454], + [0x01D456, 0x01D49C], + [0x01D49E, 0x01D49F], + [0x01D4A5, 0x01D4A6], + [0x01D4A9, 0x01D4AC], + [0x01D4AE, 0x01D4B9], + [0x01D4BD, 0x01D4C3], + [0x01D4C5, 0x01D505], + [0x01D507, 0x01D50A], + [0x01D50D, 0x01D514], + [0x01D516, 0x01D51C], + [0x01D51E, 0x01D539], + [0x01D53B, 0x01D53E], + [0x01D540, 0x01D544], + [0x01D54A, 0x01D550], + [0x01D552, 0x01D6A5], + [0x01D6A8, 0x01D6C0], + [0x01D6C2, 0x01D6DA], + [0x01D6DC, 0x01D6FA], + [0x01D6FC, 0x01D714], + [0x01D716, 0x01D734], + [0x01D736, 0x01D74E], + [0x01D750, 0x01D76E], + [0x01D770, 0x01D788], + [0x01D78A, 0x01D7A8], + [0x01D7AA, 0x01D7C2], + [0x01D7C4, 0x01D7CB], + [0x01DF00, 0x01DF1E], + [0x01DF25, 0x01DF2A], + [0x01E030, 0x01E06D], + [0x01E100, 0x01E12C], + [0x01E137, 0x01E13D], + [0x01E290, 0x01E2AD], + [0x01E2C0, 0x01E2EB], + [0x01E4D0, 0x01E4EB], + [0x01E7E0, 0x01E7E6], + [0x01E7E8, 0x01E7EB], + [0x01E7ED, 0x01E7EE], + [0x01E7F0, 0x01E7FE], + [0x01E800, 0x01E8C4], + [0x01E900, 0x01E943], + [0x01EE00, 0x01EE03], + [0x01EE05, 0x01EE1F], + [0x01EE21, 0x01EE22], + [0x01EE29, 0x01EE32], + [0x01EE34, 0x01EE37], + [0x01EE4D, 0x01EE4F], + [0x01EE51, 0x01EE52], + [0x01EE61, 0x01EE62], + [0x01EE67, 0x01EE6A], + [0x01EE6C, 0x01EE72], + [0x01EE74, 0x01EE77], + [0x01EE79, 0x01EE7C], + [0x01EE80, 0x01EE89], + [0x01EE8B, 0x01EE9B], + [0x01EEA1, 0x01EEA3], + [0x01EEA5, 0x01EEA9], + [0x01EEAB, 0x01EEBB], + [0x020000, 0x02A6DF], + [0x02A700, 0x02B739], + [0x02B740, 0x02B81D], + [0x02B820, 0x02CEA1], + [0x02CEB0, 0x02EBE0], + [0x02F800, 0x02FA1D], + [0x030000, 0x03134A], + [0x031350, 0x0323AF] + ] +}); +testPropertyEscapes( + /^\p{XID_Start}+$/u, + matchSymbols, + "\\p{XID_Start}" +); +testPropertyEscapes( + /^\p{XIDS}+$/u, + matchSymbols, + "\\p{XIDS}" +); + +const nonMatchSymbols = buildString({ + loneCodePoints: [ + 0x0000D7, + 0x0000F7, + 0x0002ED, + 0x000375, + 0x00037E, + 0x000387, + 0x00038B, + 0x00038D, + 0x0003A2, + 0x0003F6, + 0x000530, + 0x000670, + 0x0006D4, + 0x000711, + 0x000888, + 0x0009A9, + 0x0009B1, + 0x0009DE, + 0x000A29, + 0x000A31, + 0x000A34, + 0x000A37, + 0x000A5D, + 0x000A8E, + 0x000A92, + 0x000AA9, + 0x000AB1, + 0x000AB4, + 0x000B29, + 0x000B31, + 0x000B34, + 0x000B5E, + 0x000B84, + 0x000B91, + 0x000B9B, + 0x000B9D, + 0x000C0D, + 0x000C11, + 0x000C29, + 0x000C8D, + 0x000C91, + 0x000CA9, + 0x000CB4, + 0x000CDF, + 0x000D0D, + 0x000D11, + 0x000DB2, + 0x000DBC, + 0x000E31, + 0x000E83, + 0x000E85, + 0x000E8B, + 0x000EA4, + 0x000EA6, + 0x000EB1, + 0x000EC5, + 0x000F48, + 0x0010C6, + 0x0010FB, + 0x001249, + 0x001257, + 0x001259, + 0x001289, + 0x0012B1, + 0x0012BF, + 0x0012C1, + 0x0012D7, + 0x001311, + 0x001680, + 0x00176D, + 0x0018A9, + 0x001CED, + 0x001CF4, + 0x001F58, + 0x001F5A, + 0x001F5C, + 0x001F5E, + 0x001FB5, + 0x001FBD, + 0x001FC5, + 0x001FF5, + 0x002114, + 0x002125, + 0x002127, + 0x002129, + 0x002D26, + 0x002DA7, + 0x002DAF, + 0x002DB7, + 0x002DBF, + 0x002DC7, + 0x002DCF, + 0x002DD7, + 0x0030A0, + 0x0030FB, + 0x003130, + 0x00A7D2, + 0x00A7D4, + 0x00A802, + 0x00A806, + 0x00A80B, + 0x00A8FC, + 0x00A9E5, + 0x00A9FF, + 0x00AA43, + 0x00AAB0, + 0x00AAC1, + 0x00AB27, + 0x00AB2F, + 0x00AB5B, + 0x00FB1E, + 0x00FB29, + 0x00FB37, + 0x00FB3D, + 0x00FB3F, + 0x00FB42, + 0x00FB45, + 0x00FE72, + 0x00FE78, + 0x00FE7A, + 0x00FE7C, + 0x00FE7E, + 0x01000C, + 0x010027, + 0x01003B, + 0x01003E, + 0x0103D0, + 0x01057B, + 0x01058B, + 0x010593, + 0x010596, + 0x0105A2, + 0x0105B2, + 0x0105BA, + 0x010786, + 0x0107B1, + 0x010809, + 0x010836, + 0x0108F3, + 0x010A14, + 0x010A18, + 0x010AC8, + 0x0111DB, + 0x011212, + 0x011287, + 0x011289, + 0x01128E, + 0x01129E, + 0x011329, + 0x011331, + 0x011334, + 0x0114C6, + 0x011914, + 0x011917, + 0x011940, + 0x0119E2, + 0x011C09, + 0x011D07, + 0x011D0A, + 0x011D66, + 0x011D69, + 0x011F03, + 0x011F11, + 0x016FE2, + 0x01AFF4, + 0x01AFFC, + 0x01AFFF, + 0x01D455, + 0x01D49D, + 0x01D4AD, + 0x01D4BA, + 0x01D4BC, + 0x01D4C4, + 0x01D506, + 0x01D515, + 0x01D51D, + 0x01D53A, + 0x01D53F, + 0x01D545, + 0x01D551, + 0x01D6C1, + 0x01D6DB, + 0x01D6FB, + 0x01D715, + 0x01D735, + 0x01D74F, + 0x01D76F, + 0x01D789, + 0x01D7A9, + 0x01D7C3, + 0x01E7E7, + 0x01E7EC, + 0x01E7EF, + 0x01E7FF, + 0x01EE04, + 0x01EE20, + 0x01EE23, + 0x01EE28, + 0x01EE33, + 0x01EE38, + 0x01EE3A, + 0x01EE48, + 0x01EE4A, + 0x01EE4C, + 0x01EE50, + 0x01EE53, + 0x01EE58, + 0x01EE5A, + 0x01EE5C, + 0x01EE5E, + 0x01EE60, + 0x01EE63, + 0x01EE6B, + 0x01EE73, + 0x01EE78, + 0x01EE7D, + 0x01EE7F, + 0x01EE8A, + 0x01EEA4, + 0x01EEAA + ], + ranges: [ + [0x00DC00, 0x00DFFF], + [0x000000, 0x000040], + [0x00005B, 0x000060], + [0x00007B, 0x0000A9], + [0x0000AB, 0x0000B4], + [0x0000B6, 0x0000B9], + [0x0000BB, 0x0000BF], + [0x0002C2, 0x0002C5], + [0x0002D2, 0x0002DF], + [0x0002E5, 0x0002EB], + [0x0002EF, 0x00036F], + [0x000378, 0x00037A], + [0x000380, 0x000385], + [0x000482, 0x000489], + [0x000557, 0x000558], + [0x00055A, 0x00055F], + [0x000589, 0x0005CF], + [0x0005EB, 0x0005EE], + [0x0005F3, 0x00061F], + [0x00064B, 0x00066D], + [0x0006D6, 0x0006E4], + [0x0006E7, 0x0006ED], + [0x0006F0, 0x0006F9], + [0x0006FD, 0x0006FE], + [0x000700, 0x00070F], + [0x000730, 0x00074C], + [0x0007A6, 0x0007B0], + [0x0007B2, 0x0007C9], + [0x0007EB, 0x0007F3], + [0x0007F6, 0x0007F9], + [0x0007FB, 0x0007FF], + [0x000816, 0x000819], + [0x00081B, 0x000823], + [0x000825, 0x000827], + [0x000829, 0x00083F], + [0x000859, 0x00085F], + [0x00086B, 0x00086F], + [0x00088F, 0x00089F], + [0x0008CA, 0x000903], + [0x00093A, 0x00093C], + [0x00093E, 0x00094F], + [0x000951, 0x000957], + [0x000962, 0x000970], + [0x000981, 0x000984], + [0x00098D, 0x00098E], + [0x000991, 0x000992], + [0x0009B3, 0x0009B5], + [0x0009BA, 0x0009BC], + [0x0009BE, 0x0009CD], + [0x0009CF, 0x0009DB], + [0x0009E2, 0x0009EF], + [0x0009F2, 0x0009FB], + [0x0009FD, 0x000A04], + [0x000A0B, 0x000A0E], + [0x000A11, 0x000A12], + [0x000A3A, 0x000A58], + [0x000A5F, 0x000A71], + [0x000A75, 0x000A84], + [0x000ABA, 0x000ABC], + [0x000ABE, 0x000ACF], + [0x000AD1, 0x000ADF], + [0x000AE2, 0x000AF8], + [0x000AFA, 0x000B04], + [0x000B0D, 0x000B0E], + [0x000B11, 0x000B12], + [0x000B3A, 0x000B3C], + [0x000B3E, 0x000B5B], + [0x000B62, 0x000B70], + [0x000B72, 0x000B82], + [0x000B8B, 0x000B8D], + [0x000B96, 0x000B98], + [0x000BA0, 0x000BA2], + [0x000BA5, 0x000BA7], + [0x000BAB, 0x000BAD], + [0x000BBA, 0x000BCF], + [0x000BD1, 0x000C04], + [0x000C3A, 0x000C3C], + [0x000C3E, 0x000C57], + [0x000C5B, 0x000C5C], + [0x000C5E, 0x000C5F], + [0x000C62, 0x000C7F], + [0x000C81, 0x000C84], + [0x000CBA, 0x000CBC], + [0x000CBE, 0x000CDC], + [0x000CE2, 0x000CF0], + [0x000CF3, 0x000D03], + [0x000D3B, 0x000D3C], + [0x000D3E, 0x000D4D], + [0x000D4F, 0x000D53], + [0x000D57, 0x000D5E], + [0x000D62, 0x000D79], + [0x000D80, 0x000D84], + [0x000D97, 0x000D99], + [0x000DBE, 0x000DBF], + [0x000DC7, 0x000E00], + [0x000E33, 0x000E3F], + [0x000E47, 0x000E80], + [0x000EB3, 0x000EBC], + [0x000EBE, 0x000EBF], + [0x000EC7, 0x000EDB], + [0x000EE0, 0x000EFF], + [0x000F01, 0x000F3F], + [0x000F6D, 0x000F87], + [0x000F8D, 0x000FFF], + [0x00102B, 0x00103E], + [0x001040, 0x00104F], + [0x001056, 0x001059], + [0x00105E, 0x001060], + [0x001062, 0x001064], + [0x001067, 0x00106D], + [0x001071, 0x001074], + [0x001082, 0x00108D], + [0x00108F, 0x00109F], + [0x0010C8, 0x0010CC], + [0x0010CE, 0x0010CF], + [0x00124E, 0x00124F], + [0x00125E, 0x00125F], + [0x00128E, 0x00128F], + [0x0012B6, 0x0012B7], + [0x0012C6, 0x0012C7], + [0x001316, 0x001317], + [0x00135B, 0x00137F], + [0x001390, 0x00139F], + [0x0013F6, 0x0013F7], + [0x0013FE, 0x001400], + [0x00166D, 0x00166E], + [0x00169B, 0x00169F], + [0x0016EB, 0x0016ED], + [0x0016F9, 0x0016FF], + [0x001712, 0x00171E], + [0x001732, 0x00173F], + [0x001752, 0x00175F], + [0x001771, 0x00177F], + [0x0017B4, 0x0017D6], + [0x0017D8, 0x0017DB], + [0x0017DD, 0x00181F], + [0x001879, 0x00187F], + [0x0018AB, 0x0018AF], + [0x0018F6, 0x0018FF], + [0x00191F, 0x00194F], + [0x00196E, 0x00196F], + [0x001975, 0x00197F], + [0x0019AC, 0x0019AF], + [0x0019CA, 0x0019FF], + [0x001A17, 0x001A1F], + [0x001A55, 0x001AA6], + [0x001AA8, 0x001B04], + [0x001B34, 0x001B44], + [0x001B4D, 0x001B82], + [0x001BA1, 0x001BAD], + [0x001BB0, 0x001BB9], + [0x001BE6, 0x001BFF], + [0x001C24, 0x001C4C], + [0x001C50, 0x001C59], + [0x001C7E, 0x001C7F], + [0x001C89, 0x001C8F], + [0x001CBB, 0x001CBC], + [0x001CC0, 0x001CE8], + [0x001CF7, 0x001CF9], + [0x001CFB, 0x001CFF], + [0x001DC0, 0x001DFF], + [0x001F16, 0x001F17], + [0x001F1E, 0x001F1F], + [0x001F46, 0x001F47], + [0x001F4E, 0x001F4F], + [0x001F7E, 0x001F7F], + [0x001FBF, 0x001FC1], + [0x001FCD, 0x001FCF], + [0x001FD4, 0x001FD5], + [0x001FDC, 0x001FDF], + [0x001FED, 0x001FF1], + [0x001FFD, 0x002070], + [0x002072, 0x00207E], + [0x002080, 0x00208F], + [0x00209D, 0x002101], + [0x002103, 0x002106], + [0x002108, 0x002109], + [0x002116, 0x002117], + [0x00211E, 0x002123], + [0x00213A, 0x00213B], + [0x002140, 0x002144], + [0x00214A, 0x00214D], + [0x00214F, 0x00215F], + [0x002189, 0x002BFF], + [0x002CE5, 0x002CEA], + [0x002CEF, 0x002CF1], + [0x002CF4, 0x002CFF], + [0x002D28, 0x002D2C], + [0x002D2E, 0x002D2F], + [0x002D68, 0x002D6E], + [0x002D70, 0x002D7F], + [0x002D97, 0x002D9F], + [0x002DDF, 0x003004], + [0x003008, 0x003020], + [0x00302A, 0x003030], + [0x003036, 0x003037], + [0x00303D, 0x003040], + [0x003097, 0x00309C], + [0x003100, 0x003104], + [0x00318F, 0x00319F], + [0x0031C0, 0x0031EF], + [0x003200, 0x0033FF], + [0x004DC0, 0x004DFF], + [0x00A48D, 0x00A4CF], + [0x00A4FE, 0x00A4FF], + [0x00A60D, 0x00A60F], + [0x00A620, 0x00A629], + [0x00A62C, 0x00A63F], + [0x00A66F, 0x00A67E], + [0x00A69E, 0x00A69F], + [0x00A6F0, 0x00A716], + [0x00A720, 0x00A721], + [0x00A789, 0x00A78A], + [0x00A7CB, 0x00A7CF], + [0x00A7DA, 0x00A7F1], + [0x00A823, 0x00A83F], + [0x00A874, 0x00A881], + [0x00A8B4, 0x00A8F1], + [0x00A8F8, 0x00A8FA], + [0x00A8FF, 0x00A909], + [0x00A926, 0x00A92F], + [0x00A947, 0x00A95F], + [0x00A97D, 0x00A983], + [0x00A9B3, 0x00A9CE], + [0x00A9D0, 0x00A9DF], + [0x00A9F0, 0x00A9F9], + [0x00AA29, 0x00AA3F], + [0x00AA4C, 0x00AA5F], + [0x00AA77, 0x00AA79], + [0x00AA7B, 0x00AA7D], + [0x00AAB2, 0x00AAB4], + [0x00AAB7, 0x00AAB8], + [0x00AABE, 0x00AABF], + [0x00AAC3, 0x00AADA], + [0x00AADE, 0x00AADF], + [0x00AAEB, 0x00AAF1], + [0x00AAF5, 0x00AB00], + [0x00AB07, 0x00AB08], + [0x00AB0F, 0x00AB10], + [0x00AB17, 0x00AB1F], + [0x00AB6A, 0x00AB6F], + [0x00ABE3, 0x00ABFF], + [0x00D7A4, 0x00D7AF], + [0x00D7C7, 0x00D7CA], + [0x00D7FC, 0x00DBFF], + [0x00E000, 0x00F8FF], + [0x00FA6E, 0x00FA6F], + [0x00FADA, 0x00FAFF], + [0x00FB07, 0x00FB12], + [0x00FB18, 0x00FB1C], + [0x00FBB2, 0x00FBD2], + [0x00FC5E, 0x00FC63], + [0x00FD3E, 0x00FD4F], + [0x00FD90, 0x00FD91], + [0x00FDC8, 0x00FDEF], + [0x00FDFA, 0x00FE70], + [0x00FE74, 0x00FE76], + [0x00FEFD, 0x00FF20], + [0x00FF3B, 0x00FF40], + [0x00FF5B, 0x00FF65], + [0x00FF9E, 0x00FF9F], + [0x00FFBF, 0x00FFC1], + [0x00FFC8, 0x00FFC9], + [0x00FFD0, 0x00FFD1], + [0x00FFD8, 0x00FFD9], + [0x00FFDD, 0x00FFFF], + [0x01004E, 0x01004F], + [0x01005E, 0x01007F], + [0x0100FB, 0x01013F], + [0x010175, 0x01027F], + [0x01029D, 0x01029F], + [0x0102D1, 0x0102FF], + [0x010320, 0x01032C], + [0x01034B, 0x01034F], + [0x010376, 0x01037F], + [0x01039E, 0x01039F], + [0x0103C4, 0x0103C7], + [0x0103D6, 0x0103FF], + [0x01049E, 0x0104AF], + [0x0104D4, 0x0104D7], + [0x0104FC, 0x0104FF], + [0x010528, 0x01052F], + [0x010564, 0x01056F], + [0x0105BD, 0x0105FF], + [0x010737, 0x01073F], + [0x010756, 0x01075F], + [0x010768, 0x01077F], + [0x0107BB, 0x0107FF], + [0x010806, 0x010807], + [0x010839, 0x01083B], + [0x01083D, 0x01083E], + [0x010856, 0x01085F], + [0x010877, 0x01087F], + [0x01089F, 0x0108DF], + [0x0108F6, 0x0108FF], + [0x010916, 0x01091F], + [0x01093A, 0x01097F], + [0x0109B8, 0x0109BD], + [0x0109C0, 0x0109FF], + [0x010A01, 0x010A0F], + [0x010A36, 0x010A5F], + [0x010A7D, 0x010A7F], + [0x010A9D, 0x010ABF], + [0x010AE5, 0x010AFF], + [0x010B36, 0x010B3F], + [0x010B56, 0x010B5F], + [0x010B73, 0x010B7F], + [0x010B92, 0x010BFF], + [0x010C49, 0x010C7F], + [0x010CB3, 0x010CBF], + [0x010CF3, 0x010CFF], + [0x010D24, 0x010E7F], + [0x010EAA, 0x010EAF], + [0x010EB2, 0x010EFF], + [0x010F1D, 0x010F26], + [0x010F28, 0x010F2F], + [0x010F46, 0x010F6F], + [0x010F82, 0x010FAF], + [0x010FC5, 0x010FDF], + [0x010FF7, 0x011002], + [0x011038, 0x011070], + [0x011073, 0x011074], + [0x011076, 0x011082], + [0x0110B0, 0x0110CF], + [0x0110E9, 0x011102], + [0x011127, 0x011143], + [0x011145, 0x011146], + [0x011148, 0x01114F], + [0x011173, 0x011175], + [0x011177, 0x011182], + [0x0111B3, 0x0111C0], + [0x0111C5, 0x0111D9], + [0x0111DD, 0x0111FF], + [0x01122C, 0x01123E], + [0x011241, 0x01127F], + [0x0112A9, 0x0112AF], + [0x0112DF, 0x011304], + [0x01130D, 0x01130E], + [0x011311, 0x011312], + [0x01133A, 0x01133C], + [0x01133E, 0x01134F], + [0x011351, 0x01135C], + [0x011362, 0x0113FF], + [0x011435, 0x011446], + [0x01144B, 0x01145E], + [0x011462, 0x01147F], + [0x0114B0, 0x0114C3], + [0x0114C8, 0x01157F], + [0x0115AF, 0x0115D7], + [0x0115DC, 0x0115FF], + [0x011630, 0x011643], + [0x011645, 0x01167F], + [0x0116AB, 0x0116B7], + [0x0116B9, 0x0116FF], + [0x01171B, 0x01173F], + [0x011747, 0x0117FF], + [0x01182C, 0x01189F], + [0x0118E0, 0x0118FE], + [0x011907, 0x011908], + [0x01190A, 0x01190B], + [0x011930, 0x01193E], + [0x011942, 0x01199F], + [0x0119A8, 0x0119A9], + [0x0119D1, 0x0119E0], + [0x0119E4, 0x0119FF], + [0x011A01, 0x011A0A], + [0x011A33, 0x011A39], + [0x011A3B, 0x011A4F], + [0x011A51, 0x011A5B], + [0x011A8A, 0x011A9C], + [0x011A9E, 0x011AAF], + [0x011AF9, 0x011BFF], + [0x011C2F, 0x011C3F], + [0x011C41, 0x011C71], + [0x011C90, 0x011CFF], + [0x011D31, 0x011D45], + [0x011D47, 0x011D5F], + [0x011D8A, 0x011D97], + [0x011D99, 0x011EDF], + [0x011EF3, 0x011F01], + [0x011F34, 0x011FAF], + [0x011FB1, 0x011FFF], + [0x01239A, 0x0123FF], + [0x01246F, 0x01247F], + [0x012544, 0x012F8F], + [0x012FF1, 0x012FFF], + [0x013430, 0x013440], + [0x013447, 0x0143FF], + [0x014647, 0x0167FF], + [0x016A39, 0x016A3F], + [0x016A5F, 0x016A6F], + [0x016ABF, 0x016ACF], + [0x016AEE, 0x016AFF], + [0x016B30, 0x016B3F], + [0x016B44, 0x016B62], + [0x016B78, 0x016B7C], + [0x016B90, 0x016E3F], + [0x016E80, 0x016EFF], + [0x016F4B, 0x016F4F], + [0x016F51, 0x016F92], + [0x016FA0, 0x016FDF], + [0x016FE4, 0x016FFF], + [0x0187F8, 0x0187FF], + [0x018CD6, 0x018CFF], + [0x018D09, 0x01AFEF], + [0x01B123, 0x01B131], + [0x01B133, 0x01B14F], + [0x01B153, 0x01B154], + [0x01B156, 0x01B163], + [0x01B168, 0x01B16F], + [0x01B2FC, 0x01BBFF], + [0x01BC6B, 0x01BC6F], + [0x01BC7D, 0x01BC7F], + [0x01BC89, 0x01BC8F], + [0x01BC9A, 0x01D3FF], + [0x01D4A0, 0x01D4A1], + [0x01D4A3, 0x01D4A4], + [0x01D4A7, 0x01D4A8], + [0x01D50B, 0x01D50C], + [0x01D547, 0x01D549], + [0x01D6A6, 0x01D6A7], + [0x01D7CC, 0x01DEFF], + [0x01DF1F, 0x01DF24], + [0x01DF2B, 0x01E02F], + [0x01E06E, 0x01E0FF], + [0x01E12D, 0x01E136], + [0x01E13E, 0x01E14D], + [0x01E14F, 0x01E28F], + [0x01E2AE, 0x01E2BF], + [0x01E2EC, 0x01E4CF], + [0x01E4EC, 0x01E7DF], + [0x01E8C5, 0x01E8FF], + [0x01E944, 0x01E94A], + [0x01E94C, 0x01EDFF], + [0x01EE25, 0x01EE26], + [0x01EE3C, 0x01EE41], + [0x01EE43, 0x01EE46], + [0x01EE55, 0x01EE56], + [0x01EE65, 0x01EE66], + [0x01EE9C, 0x01EEA0], + [0x01EEBC, 0x01FFFF], + [0x02A6E0, 0x02A6FF], + [0x02B73A, 0x02B73F], + [0x02B81E, 0x02B81F], + [0x02CEA2, 0x02CEAF], + [0x02EBE1, 0x02F7FF], + [0x02FA1E, 0x02FFFF], + [0x03134B, 0x03134F], + [0x0323B0, 0x10FFFF] + ] +}); +testPropertyEscapes( + /^\P{XID_Start}+$/u, + nonMatchSymbols, + "\\P{XID_Start}" +); +testPropertyEscapes( + /^\P{XIDS}+$/u, + nonMatchSymbols, + "\\P{XIDS}" +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/browser.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/shell.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/shell.js new file mode 100644 index 0000000000..591d3924c3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/shell.js @@ -0,0 +1,115 @@ +// GENERATED, DO NOT EDIT +// file: regExpUtils.js +// Copyright (C) 2017 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: | + Collection of functions used to assert the correctness of RegExp objects. +defines: [buildString, testPropertyEscapes, testPropertyOfStrings, testExtendedCharacterClass, matchValidator] +---*/ + +function buildString(args) { + // Use member expressions rather than destructuring `args` for improved + // compatibility with engines that only implement assignment patterns + // partially or not at all. + const loneCodePoints = args.loneCodePoints; + const ranges = args.ranges; + const CHUNK_SIZE = 10000; + let result = Reflect.apply(String.fromCodePoint, null, loneCodePoints); + for (let i = 0; i < ranges.length; i++) { + const range = ranges[i]; + const start = range[0]; + const end = range[1]; + const codePoints = []; + for (let length = 0, codePoint = start; codePoint <= end; codePoint++) { + codePoints[length++] = codePoint; + if (length === CHUNK_SIZE) { + result += Reflect.apply(String.fromCodePoint, null, codePoints); + codePoints.length = length = 0; + } + } + result += Reflect.apply(String.fromCodePoint, null, codePoints); + } + return result; +} + +function printCodePoint(codePoint) { + const hex = codePoint + .toString(16) + .toUpperCase() + .padStart(6, "0"); + return `U+${hex}`; +} + +function printStringCodePoints(string) { + const buf = []; + for (const symbol of string) { + const formatted = printCodePoint(symbol.codePointAt(0)); + buf.push(formatted); + } + return buf.join(' '); +} + +function testPropertyEscapes(regExp, string, expression) { + if (!regExp.test(string)) { + for (const symbol of string) { + const formatted = printCodePoint(symbol.codePointAt(0)); + assert( + regExp.test(symbol), + `\`${ expression }\` should match ${ formatted } (\`${ symbol }\`)` + ); + } + } +} + +function testPropertyOfStrings(args) { + // Use member expressions rather than destructuring `args` for improved + // compatibility with engines that only implement assignment patterns + // partially or not at all. + const regExp = args.regExp; + const expression = args.expression; + const matchStrings = args.matchStrings; + const nonMatchStrings = args.nonMatchStrings; + const allStrings = matchStrings.join(''); + if (!regExp.test(allStrings)) { + for (const string of matchStrings) { + assert( + regExp.test(string), + `\`${ expression }\` should match ${ string } (${ printStringCodePoints(string) })` + ); + } + } + + if (!nonMatchStrings) return; + + const allNonMatchStrings = nonMatchStrings.join(''); + if (regExp.test(allNonMatchStrings)) { + for (const string of nonMatchStrings) { + assert( + !regExp.test(string), + `\`${ expression }\` should not match ${ string } (${ printStringCodePoints(string) })` + ); + } + } +} + +// The exact same logic can be used to test extended character classes +// as enabled through the RegExp `v` flag. This is useful to test not +// just standalone properties of strings, but also string literals, and +// set operations. +const testExtendedCharacterClass = testPropertyOfStrings; + +// Returns a function that validates a RegExp match result. +// +// Example: +// +// var validate = matchValidator(['b'], 1, 'abc'); +// validate(/b/.exec('abc')); +// +function matchValidator(expectedEntries, expectedIndex, expectedInput) { + return function(match) { + assert.compareArray(match, expectedEntries, 'Match entries'); + assert.sameValue(match.index, expectedIndex, 'Match index'); + assert.sameValue(match.input, expectedInput, 'Match input'); + } +} diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js new file mode 100644 index 0000000000..5f6c0cf750 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-CharacterClass.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `Basic_Emoji` (property of strings) with `[^\p{…}]` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/[^\p{Basic_Emoji}]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js new file mode 100644 index 0000000000..7e2b398be8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-P.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `Basic_Emoji` (property of strings) with `\P{…}` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\P{Basic_Emoji}/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js new file mode 100644 index 0000000000..59ad6d64d5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji-negative-u.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 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 for `Basic_Emoji` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-patterns-static-semantics-early-errors +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\p{Basic_Emoji}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js new file mode 100644 index 0000000000..bb50230273 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Basic_Emoji.js @@ -0,0 +1,1421 @@ +// Copyright 2022 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 for `Basic_Emoji` (property of strings) +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{Basic_Emoji}+$/v, + expression: "\\p{Basic_Emoji}", + matchStrings: [ + "\u231A", + "\u231B", + "\u23E9", + "\u23EA", + "\u23EB", + "\u23EC", + "\u23F0", + "\u23F3", + "\u25FD", + "\u25FE", + "\u2614", + "\u2615", + "\u2648", + "\u2649", + "\u264A", + "\u264B", + "\u264C", + "\u264D", + "\u264E", + "\u264F", + "\u2650", + "\u2651", + "\u2652", + "\u2653", + "\u267F", + "\u2693", + "\u26A1", + "\u26AA", + "\u26AB", + "\u26BD", + "\u26BE", + "\u26C4", + "\u26C5", + "\u26CE", + "\u26D4", + "\u26EA", + "\u26F2", + "\u26F3", + "\u26F5", + "\u26FA", + "\u26FD", + "\u2705", + "\u270A", + "\u270B", + "\u2728", + "\u274C", + "\u274E", + "\u2753", + "\u2754", + "\u2755", + "\u2757", + "\u2795", + "\u2796", + "\u2797", + "\u27B0", + "\u27BF", + "\u2B1B", + "\u2B1C", + "\u2B50", + "\u2B55", + "\u{1F004}", + "\u{1F0CF}", + "\u{1F18E}", + "\u{1F191}", + "\u{1F192}", + "\u{1F193}", + "\u{1F194}", + "\u{1F195}", + "\u{1F196}", + "\u{1F197}", + "\u{1F198}", + "\u{1F199}", + "\u{1F19A}", + "\u{1F201}", + "\u{1F21A}", + "\u{1F22F}", + "\u{1F232}", + "\u{1F233}", + "\u{1F234}", + "\u{1F235}", + "\u{1F236}", + "\u{1F238}", + "\u{1F239}", + "\u{1F23A}", + "\u{1F250}", + "\u{1F251}", + "\u{1F300}", + "\u{1F301}", + "\u{1F302}", + "\u{1F303}", + "\u{1F304}", + "\u{1F305}", + "\u{1F306}", + "\u{1F307}", + "\u{1F308}", + "\u{1F309}", + "\u{1F30A}", + "\u{1F30B}", + "\u{1F30C}", + "\u{1F30D}", + "\u{1F30E}", + "\u{1F30F}", + "\u{1F310}", + "\u{1F311}", + "\u{1F312}", + "\u{1F313}", + "\u{1F314}", + "\u{1F315}", + "\u{1F316}", + "\u{1F317}", + "\u{1F318}", + "\u{1F319}", + "\u{1F31A}", + "\u{1F31B}", + "\u{1F31C}", + "\u{1F31D}", + "\u{1F31E}", + "\u{1F31F}", + "\u{1F320}", + "\u{1F32D}", + "\u{1F32E}", + "\u{1F32F}", + "\u{1F330}", + "\u{1F331}", + "\u{1F332}", + "\u{1F333}", + "\u{1F334}", + "\u{1F335}", + "\u{1F337}", + "\u{1F338}", + "\u{1F339}", + "\u{1F33A}", + "\u{1F33B}", + "\u{1F33C}", + "\u{1F33D}", + "\u{1F33E}", + "\u{1F33F}", + "\u{1F340}", + "\u{1F341}", + "\u{1F342}", + "\u{1F343}", + "\u{1F344}", + "\u{1F345}", + "\u{1F346}", + "\u{1F347}", + "\u{1F348}", + "\u{1F349}", + "\u{1F34A}", + "\u{1F34B}", + "\u{1F34C}", + "\u{1F34D}", + "\u{1F34E}", + "\u{1F34F}", + "\u{1F350}", + "\u{1F351}", + "\u{1F352}", + "\u{1F353}", + "\u{1F354}", + "\u{1F355}", + "\u{1F356}", + "\u{1F357}", + "\u{1F358}", + "\u{1F359}", + "\u{1F35A}", + "\u{1F35B}", + "\u{1F35C}", + "\u{1F35D}", + "\u{1F35E}", + "\u{1F35F}", + "\u{1F360}", + "\u{1F361}", + "\u{1F362}", + "\u{1F363}", + "\u{1F364}", + "\u{1F365}", + "\u{1F366}", + "\u{1F367}", + "\u{1F368}", + "\u{1F369}", + "\u{1F36A}", + "\u{1F36B}", + "\u{1F36C}", + "\u{1F36D}", + "\u{1F36E}", + "\u{1F36F}", + "\u{1F370}", + "\u{1F371}", + "\u{1F372}", + "\u{1F373}", + "\u{1F374}", + "\u{1F375}", + "\u{1F376}", + "\u{1F377}", + "\u{1F378}", + "\u{1F379}", + "\u{1F37A}", + "\u{1F37B}", + "\u{1F37C}", + "\u{1F37E}", + "\u{1F37F}", + "\u{1F380}", + "\u{1F381}", + "\u{1F382}", + "\u{1F383}", + "\u{1F384}", + "\u{1F385}", + "\u{1F386}", + "\u{1F387}", + "\u{1F388}", + "\u{1F389}", + "\u{1F38A}", + "\u{1F38B}", + "\u{1F38C}", + "\u{1F38D}", + "\u{1F38E}", + "\u{1F38F}", + "\u{1F390}", + "\u{1F391}", + "\u{1F392}", + "\u{1F393}", + "\u{1F3A0}", + "\u{1F3A1}", + "\u{1F3A2}", + "\u{1F3A3}", + "\u{1F3A4}", + "\u{1F3A5}", + "\u{1F3A6}", + "\u{1F3A7}", + "\u{1F3A8}", + "\u{1F3A9}", + "\u{1F3AA}", + "\u{1F3AB}", + "\u{1F3AC}", + "\u{1F3AD}", + "\u{1F3AE}", + "\u{1F3AF}", + "\u{1F3B0}", + "\u{1F3B1}", + "\u{1F3B2}", + "\u{1F3B3}", + "\u{1F3B4}", + "\u{1F3B5}", + "\u{1F3B6}", + "\u{1F3B7}", + "\u{1F3B8}", + "\u{1F3B9}", + "\u{1F3BA}", + "\u{1F3BB}", + "\u{1F3BC}", + "\u{1F3BD}", + "\u{1F3BE}", + "\u{1F3BF}", + "\u{1F3C0}", + "\u{1F3C1}", + "\u{1F3C2}", + "\u{1F3C3}", + "\u{1F3C4}", + "\u{1F3C5}", + "\u{1F3C6}", + "\u{1F3C7}", + "\u{1F3C8}", + "\u{1F3C9}", + "\u{1F3CA}", + "\u{1F3CF}", + "\u{1F3D0}", + "\u{1F3D1}", + "\u{1F3D2}", + "\u{1F3D3}", + "\u{1F3E0}", + "\u{1F3E1}", + "\u{1F3E2}", + "\u{1F3E3}", + "\u{1F3E4}", + "\u{1F3E5}", + "\u{1F3E6}", + "\u{1F3E7}", + "\u{1F3E8}", + "\u{1F3E9}", + "\u{1F3EA}", + "\u{1F3EB}", + "\u{1F3EC}", + "\u{1F3ED}", + "\u{1F3EE}", + "\u{1F3EF}", + "\u{1F3F0}", + "\u{1F3F4}", + "\u{1F3F8}", + "\u{1F3F9}", + "\u{1F3FA}", + "\u{1F3FB}", + "\u{1F3FC}", + "\u{1F3FD}", + "\u{1F3FE}", + "\u{1F3FF}", + "\u{1F400}", + "\u{1F401}", + "\u{1F402}", + "\u{1F403}", + "\u{1F404}", + "\u{1F405}", + "\u{1F406}", + "\u{1F407}", + "\u{1F408}", + "\u{1F409}", + "\u{1F40A}", + "\u{1F40B}", + "\u{1F40C}", + "\u{1F40D}", + "\u{1F40E}", + "\u{1F40F}", + "\u{1F410}", + "\u{1F411}", + "\u{1F412}", + "\u{1F413}", + "\u{1F414}", + "\u{1F415}", + "\u{1F416}", + "\u{1F417}", + "\u{1F418}", + "\u{1F419}", + "\u{1F41A}", + "\u{1F41B}", + "\u{1F41C}", + "\u{1F41D}", + "\u{1F41E}", + "\u{1F41F}", + "\u{1F420}", + "\u{1F421}", + "\u{1F422}", + "\u{1F423}", + "\u{1F424}", + "\u{1F425}", + "\u{1F426}", + "\u{1F427}", + "\u{1F428}", + "\u{1F429}", + "\u{1F42A}", + "\u{1F42B}", + "\u{1F42C}", + "\u{1F42D}", + "\u{1F42E}", + "\u{1F42F}", + "\u{1F430}", + "\u{1F431}", + "\u{1F432}", + "\u{1F433}", + "\u{1F434}", + "\u{1F435}", + "\u{1F436}", + "\u{1F437}", + "\u{1F438}", + "\u{1F439}", + "\u{1F43A}", + "\u{1F43B}", + "\u{1F43C}", + "\u{1F43D}", + "\u{1F43E}", + "\u{1F440}", + "\u{1F442}", + "\u{1F443}", + "\u{1F444}", + "\u{1F445}", + "\u{1F446}", + "\u{1F447}", + "\u{1F448}", + "\u{1F449}", + "\u{1F44A}", + "\u{1F44B}", + "\u{1F44C}", + "\u{1F44D}", + "\u{1F44E}", + "\u{1F44F}", + "\u{1F450}", + "\u{1F451}", + "\u{1F452}", + "\u{1F453}", + "\u{1F454}", + "\u{1F455}", + "\u{1F456}", + "\u{1F457}", + "\u{1F458}", + "\u{1F459}", + "\u{1F45A}", + "\u{1F45B}", + "\u{1F45C}", + "\u{1F45D}", + "\u{1F45E}", + "\u{1F45F}", + "\u{1F460}", + "\u{1F461}", + "\u{1F462}", + "\u{1F463}", + "\u{1F464}", + "\u{1F465}", + "\u{1F466}", + "\u{1F467}", + "\u{1F468}", + "\u{1F469}", + "\u{1F46A}", + "\u{1F46B}", + "\u{1F46C}", + "\u{1F46D}", + "\u{1F46E}", + "\u{1F46F}", + "\u{1F470}", + "\u{1F471}", + "\u{1F472}", + "\u{1F473}", + "\u{1F474}", + "\u{1F475}", + "\u{1F476}", + "\u{1F477}", + "\u{1F478}", + "\u{1F479}", + "\u{1F47A}", + "\u{1F47B}", + "\u{1F47C}", + "\u{1F47D}", + "\u{1F47E}", + "\u{1F47F}", + "\u{1F480}", + "\u{1F481}", + "\u{1F482}", + "\u{1F483}", + "\u{1F484}", + "\u{1F485}", + "\u{1F486}", + "\u{1F487}", + "\u{1F488}", + "\u{1F489}", + "\u{1F48A}", + "\u{1F48B}", + "\u{1F48C}", + "\u{1F48D}", + "\u{1F48E}", + "\u{1F48F}", + "\u{1F490}", + "\u{1F491}", + "\u{1F492}", + "\u{1F493}", + "\u{1F494}", + "\u{1F495}", + "\u{1F496}", + "\u{1F497}", + "\u{1F498}", + "\u{1F499}", + "\u{1F49A}", + "\u{1F49B}", + "\u{1F49C}", + "\u{1F49D}", + "\u{1F49E}", + "\u{1F49F}", + "\u{1F4A0}", + "\u{1F4A1}", + "\u{1F4A2}", + "\u{1F4A3}", + "\u{1F4A4}", + "\u{1F4A5}", + "\u{1F4A6}", + "\u{1F4A7}", + "\u{1F4A8}", + "\u{1F4A9}", + "\u{1F4AA}", + "\u{1F4AB}", + "\u{1F4AC}", + "\u{1F4AD}", + "\u{1F4AE}", + "\u{1F4AF}", + "\u{1F4B0}", + "\u{1F4B1}", + "\u{1F4B2}", + "\u{1F4B3}", + "\u{1F4B4}", + "\u{1F4B5}", + "\u{1F4B6}", + "\u{1F4B7}", + "\u{1F4B8}", + "\u{1F4B9}", + "\u{1F4BA}", + "\u{1F4BB}", + "\u{1F4BC}", + "\u{1F4BD}", + "\u{1F4BE}", + "\u{1F4BF}", + "\u{1F4C0}", + "\u{1F4C1}", + "\u{1F4C2}", + "\u{1F4C3}", + "\u{1F4C4}", + "\u{1F4C5}", + "\u{1F4C6}", + "\u{1F4C7}", + "\u{1F4C8}", + "\u{1F4C9}", + "\u{1F4CA}", + "\u{1F4CB}", + "\u{1F4CC}", + "\u{1F4CD}", + "\u{1F4CE}", + "\u{1F4CF}", + "\u{1F4D0}", + "\u{1F4D1}", + "\u{1F4D2}", + "\u{1F4D3}", + "\u{1F4D4}", + "\u{1F4D5}", + "\u{1F4D6}", + "\u{1F4D7}", + "\u{1F4D8}", + "\u{1F4D9}", + "\u{1F4DA}", + "\u{1F4DB}", + "\u{1F4DC}", + "\u{1F4DD}", + "\u{1F4DE}", + "\u{1F4DF}", + "\u{1F4E0}", + "\u{1F4E1}", + "\u{1F4E2}", + "\u{1F4E3}", + "\u{1F4E4}", + "\u{1F4E5}", + "\u{1F4E6}", + "\u{1F4E7}", + "\u{1F4E8}", + "\u{1F4E9}", + "\u{1F4EA}", + "\u{1F4EB}", + "\u{1F4EC}", + "\u{1F4ED}", + "\u{1F4EE}", + "\u{1F4EF}", + "\u{1F4F0}", + "\u{1F4F1}", + "\u{1F4F2}", + "\u{1F4F3}", + "\u{1F4F4}", + "\u{1F4F5}", + "\u{1F4F6}", + "\u{1F4F7}", + "\u{1F4F8}", + "\u{1F4F9}", + "\u{1F4FA}", + "\u{1F4FB}", + "\u{1F4FC}", + "\u{1F4FF}", + "\u{1F500}", + "\u{1F501}", + "\u{1F502}", + "\u{1F503}", + "\u{1F504}", + "\u{1F505}", + "\u{1F506}", + "\u{1F507}", + "\u{1F508}", + "\u{1F509}", + "\u{1F50A}", + "\u{1F50B}", + "\u{1F50C}", + "\u{1F50D}", + "\u{1F50E}", + "\u{1F50F}", + "\u{1F510}", + "\u{1F511}", + "\u{1F512}", + "\u{1F513}", + "\u{1F514}", + "\u{1F515}", + "\u{1F516}", + "\u{1F517}", + "\u{1F518}", + "\u{1F519}", + "\u{1F51A}", + "\u{1F51B}", + "\u{1F51C}", + "\u{1F51D}", + "\u{1F51E}", + "\u{1F51F}", + "\u{1F520}", + "\u{1F521}", + "\u{1F522}", + "\u{1F523}", + "\u{1F524}", + "\u{1F525}", + "\u{1F526}", + "\u{1F527}", + "\u{1F528}", + "\u{1F529}", + "\u{1F52A}", + "\u{1F52B}", + "\u{1F52C}", + "\u{1F52D}", + "\u{1F52E}", + "\u{1F52F}", + "\u{1F530}", + "\u{1F531}", + "\u{1F532}", + "\u{1F533}", + "\u{1F534}", + "\u{1F535}", + "\u{1F536}", + "\u{1F537}", + "\u{1F538}", + "\u{1F539}", + "\u{1F53A}", + "\u{1F53B}", + "\u{1F53C}", + "\u{1F53D}", + "\u{1F54B}", + "\u{1F54C}", + "\u{1F54D}", + "\u{1F54E}", + "\u{1F550}", + "\u{1F551}", + "\u{1F552}", + "\u{1F553}", + "\u{1F554}", + "\u{1F555}", + "\u{1F556}", + "\u{1F557}", + "\u{1F558}", + "\u{1F559}", + "\u{1F55A}", + "\u{1F55B}", + "\u{1F55C}", + "\u{1F55D}", + "\u{1F55E}", + "\u{1F55F}", + "\u{1F560}", + "\u{1F561}", + "\u{1F562}", + "\u{1F563}", + "\u{1F564}", + "\u{1F565}", + "\u{1F566}", + "\u{1F567}", + "\u{1F57A}", + "\u{1F595}", + "\u{1F596}", + "\u{1F5A4}", + "\u{1F5FB}", + "\u{1F5FC}", + "\u{1F5FD}", + "\u{1F5FE}", + "\u{1F5FF}", + "\u{1F600}", + "\u{1F601}", + "\u{1F602}", + "\u{1F603}", + "\u{1F604}", + "\u{1F605}", + "\u{1F606}", + "\u{1F607}", + "\u{1F608}", + "\u{1F609}", + "\u{1F60A}", + "\u{1F60B}", + "\u{1F60C}", + "\u{1F60D}", + "\u{1F60E}", + "\u{1F60F}", + "\u{1F610}", + "\u{1F611}", + "\u{1F612}", + "\u{1F613}", + "\u{1F614}", + "\u{1F615}", + "\u{1F616}", + "\u{1F617}", + "\u{1F618}", + "\u{1F619}", + "\u{1F61A}", + "\u{1F61B}", + "\u{1F61C}", + "\u{1F61D}", + "\u{1F61E}", + "\u{1F61F}", + "\u{1F620}", + "\u{1F621}", + "\u{1F622}", + "\u{1F623}", + "\u{1F624}", + "\u{1F625}", + "\u{1F626}", + "\u{1F627}", + "\u{1F628}", + "\u{1F629}", + "\u{1F62A}", + "\u{1F62B}", + "\u{1F62C}", + "\u{1F62D}", + "\u{1F62E}", + "\u{1F62F}", + "\u{1F630}", + "\u{1F631}", + "\u{1F632}", + "\u{1F633}", + "\u{1F634}", + "\u{1F635}", + "\u{1F636}", + "\u{1F637}", + "\u{1F638}", + "\u{1F639}", + "\u{1F63A}", + "\u{1F63B}", + "\u{1F63C}", + "\u{1F63D}", + "\u{1F63E}", + "\u{1F63F}", + "\u{1F640}", + "\u{1F641}", + "\u{1F642}", + "\u{1F643}", + "\u{1F644}", + "\u{1F645}", + "\u{1F646}", + "\u{1F647}", + "\u{1F648}", + "\u{1F649}", + "\u{1F64A}", + "\u{1F64B}", + "\u{1F64C}", + "\u{1F64D}", + "\u{1F64E}", + "\u{1F64F}", + "\u{1F680}", + "\u{1F681}", + "\u{1F682}", + "\u{1F683}", + "\u{1F684}", + "\u{1F685}", + "\u{1F686}", + "\u{1F687}", + "\u{1F688}", + "\u{1F689}", + "\u{1F68A}", + "\u{1F68B}", + "\u{1F68C}", + "\u{1F68D}", + "\u{1F68E}", + "\u{1F68F}", + "\u{1F690}", + "\u{1F691}", + "\u{1F692}", + "\u{1F693}", + "\u{1F694}", + "\u{1F695}", + "\u{1F696}", + "\u{1F697}", + "\u{1F698}", + "\u{1F699}", + "\u{1F69A}", + "\u{1F69B}", + "\u{1F69C}", + "\u{1F69D}", + "\u{1F69E}", + "\u{1F69F}", + "\u{1F6A0}", + "\u{1F6A1}", + "\u{1F6A2}", + "\u{1F6A3}", + "\u{1F6A4}", + "\u{1F6A5}", + "\u{1F6A6}", + "\u{1F6A7}", + "\u{1F6A8}", + "\u{1F6A9}", + "\u{1F6AA}", + "\u{1F6AB}", + "\u{1F6AC}", + "\u{1F6AD}", + "\u{1F6AE}", + "\u{1F6AF}", + "\u{1F6B0}", + "\u{1F6B1}", + "\u{1F6B2}", + "\u{1F6B3}", + "\u{1F6B4}", + "\u{1F6B5}", + "\u{1F6B6}", + "\u{1F6B7}", + "\u{1F6B8}", + "\u{1F6B9}", + "\u{1F6BA}", + "\u{1F6BB}", + "\u{1F6BC}", + "\u{1F6BD}", + "\u{1F6BE}", + "\u{1F6BF}", + "\u{1F6C0}", + "\u{1F6C1}", + "\u{1F6C2}", + "\u{1F6C3}", + "\u{1F6C4}", + "\u{1F6C5}", + "\u{1F6CC}", + "\u{1F6D0}", + "\u{1F6D1}", + "\u{1F6D2}", + "\u{1F6D5}", + "\u{1F6D6}", + "\u{1F6D7}", + "\u{1F6DC}", + "\u{1F6DD}", + "\u{1F6DE}", + "\u{1F6DF}", + "\u{1F6EB}", + "\u{1F6EC}", + "\u{1F6F4}", + "\u{1F6F5}", + "\u{1F6F6}", + "\u{1F6F7}", + "\u{1F6F8}", + "\u{1F6F9}", + "\u{1F6FA}", + "\u{1F6FB}", + "\u{1F6FC}", + "\u{1F7E0}", + "\u{1F7E1}", + "\u{1F7E2}", + "\u{1F7E3}", + "\u{1F7E4}", + "\u{1F7E5}", + "\u{1F7E6}", + "\u{1F7E7}", + "\u{1F7E8}", + "\u{1F7E9}", + "\u{1F7EA}", + "\u{1F7EB}", + "\u{1F7F0}", + "\u{1F90C}", + "\u{1F90D}", + "\u{1F90E}", + "\u{1F90F}", + "\u{1F910}", + "\u{1F911}", + "\u{1F912}", + "\u{1F913}", + "\u{1F914}", + "\u{1F915}", + "\u{1F916}", + "\u{1F917}", + "\u{1F918}", + "\u{1F919}", + "\u{1F91A}", + "\u{1F91B}", + "\u{1F91C}", + "\u{1F91D}", + "\u{1F91E}", + "\u{1F91F}", + "\u{1F920}", + "\u{1F921}", + "\u{1F922}", + "\u{1F923}", + "\u{1F924}", + "\u{1F925}", + "\u{1F926}", + "\u{1F927}", + "\u{1F928}", + "\u{1F929}", + "\u{1F92A}", + "\u{1F92B}", + "\u{1F92C}", + "\u{1F92D}", + "\u{1F92E}", + "\u{1F92F}", + "\u{1F930}", + "\u{1F931}", + "\u{1F932}", + "\u{1F933}", + "\u{1F934}", + "\u{1F935}", + "\u{1F936}", + "\u{1F937}", + "\u{1F938}", + "\u{1F939}", + "\u{1F93A}", + "\u{1F93C}", + "\u{1F93D}", + "\u{1F93E}", + "\u{1F93F}", + "\u{1F940}", + "\u{1F941}", + "\u{1F942}", + "\u{1F943}", + "\u{1F944}", + "\u{1F945}", + "\u{1F947}", + "\u{1F948}", + "\u{1F949}", + "\u{1F94A}", + "\u{1F94B}", + "\u{1F94C}", + "\u{1F94D}", + "\u{1F94E}", + "\u{1F94F}", + "\u{1F950}", + "\u{1F951}", + "\u{1F952}", + "\u{1F953}", + "\u{1F954}", + "\u{1F955}", + "\u{1F956}", + "\u{1F957}", + "\u{1F958}", + "\u{1F959}", + "\u{1F95A}", + "\u{1F95B}", + "\u{1F95C}", + "\u{1F95D}", + "\u{1F95E}", + "\u{1F95F}", + "\u{1F960}", + "\u{1F961}", + "\u{1F962}", + "\u{1F963}", + "\u{1F964}", + "\u{1F965}", + "\u{1F966}", + "\u{1F967}", + "\u{1F968}", + "\u{1F969}", + "\u{1F96A}", + "\u{1F96B}", + "\u{1F96C}", + "\u{1F96D}", + "\u{1F96E}", + "\u{1F96F}", + "\u{1F970}", + "\u{1F971}", + "\u{1F972}", + "\u{1F973}", + "\u{1F974}", + "\u{1F975}", + "\u{1F976}", + "\u{1F977}", + "\u{1F978}", + "\u{1F979}", + "\u{1F97A}", + "\u{1F97B}", + "\u{1F97C}", + "\u{1F97D}", + "\u{1F97E}", + "\u{1F97F}", + "\u{1F980}", + "\u{1F981}", + "\u{1F982}", + "\u{1F983}", + "\u{1F984}", + "\u{1F985}", + "\u{1F986}", + "\u{1F987}", + "\u{1F988}", + "\u{1F989}", + "\u{1F98A}", + "\u{1F98B}", + "\u{1F98C}", + "\u{1F98D}", + "\u{1F98E}", + "\u{1F98F}", + "\u{1F990}", + "\u{1F991}", + "\u{1F992}", + "\u{1F993}", + "\u{1F994}", + "\u{1F995}", + "\u{1F996}", + "\u{1F997}", + "\u{1F998}", + "\u{1F999}", + "\u{1F99A}", + "\u{1F99B}", + "\u{1F99C}", + "\u{1F99D}", + "\u{1F99E}", + "\u{1F99F}", + "\u{1F9A0}", + "\u{1F9A1}", + "\u{1F9A2}", + "\u{1F9A3}", + "\u{1F9A4}", + "\u{1F9A5}", + "\u{1F9A6}", + "\u{1F9A7}", + "\u{1F9A8}", + "\u{1F9A9}", + "\u{1F9AA}", + "\u{1F9AB}", + "\u{1F9AC}", + "\u{1F9AD}", + "\u{1F9AE}", + "\u{1F9AF}", + "\u{1F9B0}", + "\u{1F9B1}", + "\u{1F9B2}", + "\u{1F9B3}", + "\u{1F9B4}", + "\u{1F9B5}", + "\u{1F9B6}", + "\u{1F9B7}", + "\u{1F9B8}", + "\u{1F9B9}", + "\u{1F9BA}", + "\u{1F9BB}", + "\u{1F9BC}", + "\u{1F9BD}", + "\u{1F9BE}", + "\u{1F9BF}", + "\u{1F9C0}", + "\u{1F9C1}", + "\u{1F9C2}", + "\u{1F9C3}", + "\u{1F9C4}", + "\u{1F9C5}", + "\u{1F9C6}", + "\u{1F9C7}", + "\u{1F9C8}", + "\u{1F9C9}", + "\u{1F9CA}", + "\u{1F9CB}", + "\u{1F9CC}", + "\u{1F9CD}", + "\u{1F9CE}", + "\u{1F9CF}", + "\u{1F9D0}", + "\u{1F9D1}", + "\u{1F9D2}", + "\u{1F9D3}", + "\u{1F9D4}", + "\u{1F9D5}", + "\u{1F9D6}", + "\u{1F9D7}", + "\u{1F9D8}", + "\u{1F9D9}", + "\u{1F9DA}", + "\u{1F9DB}", + "\u{1F9DC}", + "\u{1F9DD}", + "\u{1F9DE}", + "\u{1F9DF}", + "\u{1F9E0}", + "\u{1F9E1}", + "\u{1F9E2}", + "\u{1F9E3}", + "\u{1F9E4}", + "\u{1F9E5}", + "\u{1F9E6}", + "\u{1F9E7}", + "\u{1F9E8}", + "\u{1F9E9}", + "\u{1F9EA}", + "\u{1F9EB}", + "\u{1F9EC}", + "\u{1F9ED}", + "\u{1F9EE}", + "\u{1F9EF}", + "\u{1F9F0}", + "\u{1F9F1}", + "\u{1F9F2}", + "\u{1F9F3}", + "\u{1F9F4}", + "\u{1F9F5}", + "\u{1F9F6}", + "\u{1F9F7}", + "\u{1F9F8}", + "\u{1F9F9}", + "\u{1F9FA}", + "\u{1F9FB}", + "\u{1F9FC}", + "\u{1F9FD}", + "\u{1F9FE}", + "\u{1F9FF}", + "\u{1FA70}", + "\u{1FA71}", + "\u{1FA72}", + "\u{1FA73}", + "\u{1FA74}", + "\u{1FA75}", + "\u{1FA76}", + "\u{1FA77}", + "\u{1FA78}", + "\u{1FA79}", + "\u{1FA7A}", + "\u{1FA7B}", + "\u{1FA7C}", + "\u{1FA80}", + "\u{1FA81}", + "\u{1FA82}", + "\u{1FA83}", + "\u{1FA84}", + "\u{1FA85}", + "\u{1FA86}", + "\u{1FA87}", + "\u{1FA88}", + "\u{1FA90}", + "\u{1FA91}", + "\u{1FA92}", + "\u{1FA93}", + "\u{1FA94}", + "\u{1FA95}", + "\u{1FA96}", + "\u{1FA97}", + "\u{1FA98}", + "\u{1FA99}", + "\u{1FA9A}", + "\u{1FA9B}", + "\u{1FA9C}", + "\u{1FA9D}", + "\u{1FA9E}", + "\u{1FA9F}", + "\u{1FAA0}", + "\u{1FAA1}", + "\u{1FAA2}", + "\u{1FAA3}", + "\u{1FAA4}", + "\u{1FAA5}", + "\u{1FAA6}", + "\u{1FAA7}", + "\u{1FAA8}", + "\u{1FAA9}", + "\u{1FAAA}", + "\u{1FAAB}", + "\u{1FAAC}", + "\u{1FAAD}", + "\u{1FAAE}", + "\u{1FAAF}", + "\u{1FAB0}", + "\u{1FAB1}", + "\u{1FAB2}", + "\u{1FAB3}", + "\u{1FAB4}", + "\u{1FAB5}", + "\u{1FAB6}", + "\u{1FAB7}", + "\u{1FAB8}", + "\u{1FAB9}", + "\u{1FABA}", + "\u{1FABB}", + "\u{1FABC}", + "\u{1FABD}", + "\u{1FABF}", + "\u{1FAC0}", + "\u{1FAC1}", + "\u{1FAC2}", + "\u{1FAC3}", + "\u{1FAC4}", + "\u{1FAC5}", + "\u{1FACE}", + "\u{1FACF}", + "\u{1FAD0}", + "\u{1FAD1}", + "\u{1FAD2}", + "\u{1FAD3}", + "\u{1FAD4}", + "\u{1FAD5}", + "\u{1FAD6}", + "\u{1FAD7}", + "\u{1FAD8}", + "\u{1FAD9}", + "\u{1FADA}", + "\u{1FADB}", + "\u{1FAE0}", + "\u{1FAE1}", + "\u{1FAE2}", + "\u{1FAE3}", + "\u{1FAE4}", + "\u{1FAE5}", + "\u{1FAE6}", + "\u{1FAE7}", + "\u{1FAE8}", + "\u{1FAF0}", + "\u{1FAF1}", + "\u{1FAF2}", + "\u{1FAF3}", + "\u{1FAF4}", + "\u{1FAF5}", + "\u{1FAF6}", + "\u{1FAF7}", + "\u{1FAF8}", + "\xA9\uFE0F", + "\xAE\uFE0F", + "\u203C\uFE0F", + "\u2049\uFE0F", + "\u2122\uFE0F", + "\u2139\uFE0F", + "\u2194\uFE0F", + "\u2195\uFE0F", + "\u2196\uFE0F", + "\u2197\uFE0F", + "\u2198\uFE0F", + "\u2199\uFE0F", + "\u21A9\uFE0F", + "\u21AA\uFE0F", + "\u2328\uFE0F", + "\u23CF\uFE0F", + "\u23ED\uFE0F", + "\u23EE\uFE0F", + "\u23EF\uFE0F", + "\u23F1\uFE0F", + "\u23F2\uFE0F", + "\u23F8\uFE0F", + "\u23F9\uFE0F", + "\u23FA\uFE0F", + "\u24C2\uFE0F", + "\u25AA\uFE0F", + "\u25AB\uFE0F", + "\u25B6\uFE0F", + "\u25C0\uFE0F", + "\u25FB\uFE0F", + "\u25FC\uFE0F", + "\u2600\uFE0F", + "\u2601\uFE0F", + "\u2602\uFE0F", + "\u2603\uFE0F", + "\u2604\uFE0F", + "\u260E\uFE0F", + "\u2611\uFE0F", + "\u2618\uFE0F", + "\u261D\uFE0F", + "\u2620\uFE0F", + "\u2622\uFE0F", + "\u2623\uFE0F", + "\u2626\uFE0F", + "\u262A\uFE0F", + "\u262E\uFE0F", + "\u262F\uFE0F", + "\u2638\uFE0F", + "\u2639\uFE0F", + "\u263A\uFE0F", + "\u2640\uFE0F", + "\u2642\uFE0F", + "\u265F\uFE0F", + "\u2660\uFE0F", + "\u2663\uFE0F", + "\u2665\uFE0F", + "\u2666\uFE0F", + "\u2668\uFE0F", + "\u267B\uFE0F", + "\u267E\uFE0F", + "\u2692\uFE0F", + "\u2694\uFE0F", + "\u2695\uFE0F", + "\u2696\uFE0F", + "\u2697\uFE0F", + "\u2699\uFE0F", + "\u269B\uFE0F", + "\u269C\uFE0F", + "\u26A0\uFE0F", + "\u26A7\uFE0F", + "\u26B0\uFE0F", + "\u26B1\uFE0F", + "\u26C8\uFE0F", + "\u26CF\uFE0F", + "\u26D1\uFE0F", + "\u26D3\uFE0F", + "\u26E9\uFE0F", + "\u26F0\uFE0F", + "\u26F1\uFE0F", + "\u26F4\uFE0F", + "\u26F7\uFE0F", + "\u26F8\uFE0F", + "\u26F9\uFE0F", + "\u2702\uFE0F", + "\u2708\uFE0F", + "\u2709\uFE0F", + "\u270C\uFE0F", + "\u270D\uFE0F", + "\u270F\uFE0F", + "\u2712\uFE0F", + "\u2714\uFE0F", + "\u2716\uFE0F", + "\u271D\uFE0F", + "\u2721\uFE0F", + "\u2733\uFE0F", + "\u2734\uFE0F", + "\u2744\uFE0F", + "\u2747\uFE0F", + "\u2763\uFE0F", + "\u2764\uFE0F", + "\u27A1\uFE0F", + "\u2934\uFE0F", + "\u2935\uFE0F", + "\u2B05\uFE0F", + "\u2B06\uFE0F", + "\u2B07\uFE0F", + "\u3030\uFE0F", + "\u303D\uFE0F", + "\u3297\uFE0F", + "\u3299\uFE0F", + "\u{1F170}\uFE0F", + "\u{1F171}\uFE0F", + "\u{1F17E}\uFE0F", + "\u{1F17F}\uFE0F", + "\u{1F202}\uFE0F", + "\u{1F237}\uFE0F", + "\u{1F321}\uFE0F", + "\u{1F324}\uFE0F", + "\u{1F325}\uFE0F", + "\u{1F326}\uFE0F", + "\u{1F327}\uFE0F", + "\u{1F328}\uFE0F", + "\u{1F329}\uFE0F", + "\u{1F32A}\uFE0F", + "\u{1F32B}\uFE0F", + "\u{1F32C}\uFE0F", + "\u{1F336}\uFE0F", + "\u{1F37D}\uFE0F", + "\u{1F396}\uFE0F", + "\u{1F397}\uFE0F", + "\u{1F399}\uFE0F", + "\u{1F39A}\uFE0F", + "\u{1F39B}\uFE0F", + "\u{1F39E}\uFE0F", + "\u{1F39F}\uFE0F", + "\u{1F3CB}\uFE0F", + "\u{1F3CC}\uFE0F", + "\u{1F3CD}\uFE0F", + "\u{1F3CE}\uFE0F", + "\u{1F3D4}\uFE0F", + "\u{1F3D5}\uFE0F", + "\u{1F3D6}\uFE0F", + "\u{1F3D7}\uFE0F", + "\u{1F3D8}\uFE0F", + "\u{1F3D9}\uFE0F", + "\u{1F3DA}\uFE0F", + "\u{1F3DB}\uFE0F", + "\u{1F3DC}\uFE0F", + "\u{1F3DD}\uFE0F", + "\u{1F3DE}\uFE0F", + "\u{1F3DF}\uFE0F", + "\u{1F3F3}\uFE0F", + "\u{1F3F5}\uFE0F", + "\u{1F3F7}\uFE0F", + "\u{1F43F}\uFE0F", + "\u{1F441}\uFE0F", + "\u{1F4FD}\uFE0F", + "\u{1F549}\uFE0F", + "\u{1F54A}\uFE0F", + "\u{1F56F}\uFE0F", + "\u{1F570}\uFE0F", + "\u{1F573}\uFE0F", + "\u{1F574}\uFE0F", + "\u{1F575}\uFE0F", + "\u{1F576}\uFE0F", + "\u{1F577}\uFE0F", + "\u{1F578}\uFE0F", + "\u{1F579}\uFE0F", + "\u{1F587}\uFE0F", + "\u{1F58A}\uFE0F", + "\u{1F58B}\uFE0F", + "\u{1F58C}\uFE0F", + "\u{1F58D}\uFE0F", + "\u{1F590}\uFE0F", + "\u{1F5A5}\uFE0F", + "\u{1F5A8}\uFE0F", + "\u{1F5B1}\uFE0F", + "\u{1F5B2}\uFE0F", + "\u{1F5BC}\uFE0F", + "\u{1F5C2}\uFE0F", + "\u{1F5C3}\uFE0F", + "\u{1F5C4}\uFE0F", + "\u{1F5D1}\uFE0F", + "\u{1F5D2}\uFE0F", + "\u{1F5D3}\uFE0F", + "\u{1F5DC}\uFE0F", + "\u{1F5DD}\uFE0F", + "\u{1F5DE}\uFE0F", + "\u{1F5E1}\uFE0F", + "\u{1F5E3}\uFE0F", + "\u{1F5E8}\uFE0F", + "\u{1F5EF}\uFE0F", + "\u{1F5F3}\uFE0F", + "\u{1F5FA}\uFE0F", + "\u{1F6CB}\uFE0F", + "\u{1F6CD}\uFE0F", + "\u{1F6CE}\uFE0F", + "\u{1F6CF}\uFE0F", + "\u{1F6E0}\uFE0F", + "\u{1F6E1}\uFE0F", + "\u{1F6E2}\uFE0F", + "\u{1F6E3}\uFE0F", + "\u{1F6E4}\uFE0F", + "\u{1F6E5}\uFE0F", + "\u{1F6E9}\uFE0F", + "\u{1F6F0}\uFE0F", + "\u{1F6F3}\uFE0F" + ], + nonMatchStrings: [ + "\uFE0F", + "\xA9", + "\uFE0F", + "\xAE", + "\uFE0F", + "\u203C", + "\uFE0F", + "\u2049", + "\uFE0F", + "\u2122" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js new file mode 100644 index 0000000000..b0d8ace463 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-CharacterClass.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) with `[^\p{…}]` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/[^\p{Emoji_Keycap_Sequence}]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js new file mode 100644 index 0000000000..deb6d9fab6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-P.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `Emoji_Keycap_Sequence` (property of strings) with `\P{…}` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\P{Emoji_Keycap_Sequence}/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js new file mode 100644 index 0000000000..9183b91957 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence-negative-u.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 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 for `Emoji_Keycap_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-patterns-static-semantics-early-errors +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\p{Emoji_Keycap_Sequence}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js new file mode 100644 index 0000000000..767195f2db --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/Emoji_Keycap_Sequence.js @@ -0,0 +1,52 @@ +// Copyright 2022 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 for `Emoji_Keycap_Sequence` (property of strings) +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{Emoji_Keycap_Sequence}+$/v, + expression: "\\p{Emoji_Keycap_Sequence}", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "\uFE0F\u20E3", + "#\uFE0F", + "#\u20E3", + "\uFE0F\u20E3", + "*\uFE0F", + "*\u20E3", + "\uFE0F\u20E3", + "0\uFE0F", + "0\u20E3", + "\uFE0F\u20E3", + "1\uFE0F", + "1\u20E3", + "\uFE0F\u20E3", + "2\uFE0F", + "2\u20E3" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js new file mode 100644 index 0000000000..19971720a2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-CharacterClass.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji` (property of strings) with `[^\p{…}]` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/[^\p{RGI_Emoji}]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js new file mode 100644 index 0000000000..3b0cc4f75b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-P.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji` (property of strings) with `\P{…}` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\P{RGI_Emoji}/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js new file mode 100644 index 0000000000..cefe64486c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji-negative-u.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 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 for `RGI_Emoji` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-patterns-static-semantics-early-errors +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\p{RGI_Emoji}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js new file mode 100644 index 0000000000..636a279a5c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji.js @@ -0,0 +1,3704 @@ +// Copyright 2022 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 for `RGI_Emoji` (property of strings) +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji}+$/v, + expression: "\\p{RGI_Emoji}", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\xA9\uFE0F", + "\xAE\uFE0F", + "\u203C\uFE0F", + "\u2049\uFE0F", + "\u2122\uFE0F", + "\u2139\uFE0F", + "\u2194\uFE0F", + "\u2195\uFE0F", + "\u2196\uFE0F", + "\u2197\uFE0F", + "\u2198\uFE0F", + "\u2199\uFE0F", + "\u21A9\uFE0F", + "\u21AA\uFE0F", + "\u231A", + "\u231B", + "\u2328\uFE0F", + "\u23CF\uFE0F", + "\u23E9", + "\u23EA", + "\u23EB", + "\u23EC", + "\u23ED\uFE0F", + "\u23EE\uFE0F", + "\u23EF\uFE0F", + "\u23F0", + "\u23F1\uFE0F", + "\u23F2\uFE0F", + "\u23F3", + "\u23F8\uFE0F", + "\u23F9\uFE0F", + "\u23FA\uFE0F", + "\u24C2\uFE0F", + "\u25AA\uFE0F", + "\u25AB\uFE0F", + "\u25B6\uFE0F", + "\u25C0\uFE0F", + "\u25FB\uFE0F", + "\u25FC\uFE0F", + "\u25FD", + "\u25FE", + "\u2600\uFE0F", + "\u2601\uFE0F", + "\u2602\uFE0F", + "\u2603\uFE0F", + "\u2604\uFE0F", + "\u260E\uFE0F", + "\u2611\uFE0F", + "\u2614", + "\u2615", + "\u2618\uFE0F", + "\u261D\u{1F3FB}", + "\u261D\u{1F3FC}", + "\u261D\u{1F3FD}", + "\u261D\u{1F3FE}", + "\u261D\u{1F3FF}", + "\u261D\uFE0F", + "\u2620\uFE0F", + "\u2622\uFE0F", + "\u2623\uFE0F", + "\u2626\uFE0F", + "\u262A\uFE0F", + "\u262E\uFE0F", + "\u262F\uFE0F", + "\u2638\uFE0F", + "\u2639\uFE0F", + "\u263A\uFE0F", + "\u2640\uFE0F", + "\u2642\uFE0F", + "\u2648", + "\u2649", + "\u264A", + "\u264B", + "\u264C", + "\u264D", + "\u264E", + "\u264F", + "\u2650", + "\u2651", + "\u2652", + "\u2653", + "\u265F\uFE0F", + "\u2660\uFE0F", + "\u2663\uFE0F", + "\u2665\uFE0F", + "\u2666\uFE0F", + "\u2668\uFE0F", + "\u267B\uFE0F", + "\u267E\uFE0F", + "\u267F", + "\u2692\uFE0F", + "\u2693", + "\u2694\uFE0F", + "\u2695\uFE0F", + "\u2696\uFE0F", + "\u2697\uFE0F", + "\u2699\uFE0F", + "\u269B\uFE0F", + "\u269C\uFE0F", + "\u26A0\uFE0F", + "\u26A1", + "\u26A7\uFE0F", + "\u26AA", + "\u26AB", + "\u26B0\uFE0F", + "\u26B1\uFE0F", + "\u26BD", + "\u26BE", + "\u26C4", + "\u26C5", + "\u26C8\uFE0F", + "\u26CE", + "\u26CF\uFE0F", + "\u26D1\uFE0F", + "\u26D3\uFE0F", + "\u26D4", + "\u26E9\uFE0F", + "\u26EA", + "\u26F0\uFE0F", + "\u26F1\uFE0F", + "\u26F2", + "\u26F3", + "\u26F4\uFE0F", + "\u26F5", + "\u26F7\uFE0F", + "\u26F8\uFE0F", + "\u26F9\u{1F3FB}", + "\u26F9\u{1F3FB}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FB}\u200D\u2642\uFE0F", + "\u26F9\u{1F3FC}", + "\u26F9\u{1F3FC}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FC}\u200D\u2642\uFE0F", + "\u26F9\u{1F3FD}", + "\u26F9\u{1F3FD}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FD}\u200D\u2642\uFE0F", + "\u26F9\u{1F3FE}", + "\u26F9\u{1F3FE}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FE}\u200D\u2642\uFE0F", + "\u26F9\u{1F3FF}", + "\u26F9\u{1F3FF}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FF}\u200D\u2642\uFE0F", + "\u26F9\uFE0F", + "\u26F9\uFE0F\u200D\u2640\uFE0F", + "\u26F9\uFE0F\u200D\u2642\uFE0F", + "\u26FA", + "\u26FD", + "\u2702\uFE0F", + "\u2705", + "\u2708\uFE0F", + "\u2709\uFE0F", + "\u270A", + "\u270A\u{1F3FB}", + "\u270A\u{1F3FC}", + "\u270A\u{1F3FD}", + "\u270A\u{1F3FE}", + "\u270A\u{1F3FF}", + "\u270B", + "\u270B\u{1F3FB}", + "\u270B\u{1F3FC}", + "\u270B\u{1F3FD}", + "\u270B\u{1F3FE}", + "\u270B\u{1F3FF}", + "\u270C\u{1F3FB}", + "\u270C\u{1F3FC}", + "\u270C\u{1F3FD}", + "\u270C\u{1F3FE}", + "\u270C\u{1F3FF}", + "\u270C\uFE0F", + "\u270D\u{1F3FB}", + "\u270D\u{1F3FC}", + "\u270D\u{1F3FD}", + "\u270D\u{1F3FE}", + "\u270D\u{1F3FF}", + "\u270D\uFE0F", + "\u270F\uFE0F", + "\u2712\uFE0F", + "\u2714\uFE0F", + "\u2716\uFE0F", + "\u271D\uFE0F", + "\u2721\uFE0F", + "\u2728", + "\u2733\uFE0F", + "\u2734\uFE0F", + "\u2744\uFE0F", + "\u2747\uFE0F", + "\u274C", + "\u274E", + "\u2753", + "\u2754", + "\u2755", + "\u2757", + "\u2763\uFE0F", + "\u2764\uFE0F", + "\u2764\uFE0F\u200D\u{1F525}", + "\u2764\uFE0F\u200D\u{1FA79}", + "\u2795", + "\u2796", + "\u2797", + "\u27A1\uFE0F", + "\u27B0", + "\u27BF", + "\u2934\uFE0F", + "\u2935\uFE0F", + "\u2B05\uFE0F", + "\u2B06\uFE0F", + "\u2B07\uFE0F", + "\u2B1B", + "\u2B1C", + "\u2B50", + "\u2B55", + "\u3030\uFE0F", + "\u303D\uFE0F", + "\u3297\uFE0F", + "\u3299\uFE0F", + "\u{1F004}", + "\u{1F0CF}", + "\u{1F170}\uFE0F", + "\u{1F171}\uFE0F", + "\u{1F17E}\uFE0F", + "\u{1F17F}\uFE0F", + "\u{1F18E}", + "\u{1F191}", + "\u{1F192}", + "\u{1F193}", + "\u{1F194}", + "\u{1F195}", + "\u{1F196}", + "\u{1F197}", + "\u{1F198}", + "\u{1F199}", + "\u{1F19A}", + "\u{1F1E6}\u{1F1E8}", + "\u{1F1E6}\u{1F1E9}", + "\u{1F1E6}\u{1F1EA}", + "\u{1F1E6}\u{1F1EB}", + "\u{1F1E6}\u{1F1EC}", + "\u{1F1E6}\u{1F1EE}", + "\u{1F1E6}\u{1F1F1}", + "\u{1F1E6}\u{1F1F2}", + "\u{1F1E6}\u{1F1F4}", + "\u{1F1E6}\u{1F1F6}", + "\u{1F1E6}\u{1F1F7}", + "\u{1F1E6}\u{1F1F8}", + "\u{1F1E6}\u{1F1F9}", + "\u{1F1E6}\u{1F1FA}", + "\u{1F1E6}\u{1F1FC}", + "\u{1F1E6}\u{1F1FD}", + "\u{1F1E6}\u{1F1FF}", + "\u{1F1E7}\u{1F1E6}", + "\u{1F1E7}\u{1F1E7}", + "\u{1F1E7}\u{1F1E9}", + "\u{1F1E7}\u{1F1EA}", + "\u{1F1E7}\u{1F1EB}", + "\u{1F1E7}\u{1F1EC}", + "\u{1F1E7}\u{1F1ED}", + "\u{1F1E7}\u{1F1EE}", + "\u{1F1E7}\u{1F1EF}", + "\u{1F1E7}\u{1F1F1}", + "\u{1F1E7}\u{1F1F2}", + "\u{1F1E7}\u{1F1F3}", + "\u{1F1E7}\u{1F1F4}", + "\u{1F1E7}\u{1F1F6}", + "\u{1F1E7}\u{1F1F7}", + "\u{1F1E7}\u{1F1F8}", + "\u{1F1E7}\u{1F1F9}", + "\u{1F1E7}\u{1F1FB}", + "\u{1F1E7}\u{1F1FC}", + "\u{1F1E7}\u{1F1FE}", + "\u{1F1E7}\u{1F1FF}", + "\u{1F1E8}\u{1F1E6}", + "\u{1F1E8}\u{1F1E8}", + "\u{1F1E8}\u{1F1E9}", + "\u{1F1E8}\u{1F1EB}", + "\u{1F1E8}\u{1F1EC}", + "\u{1F1E8}\u{1F1ED}", + "\u{1F1E8}\u{1F1EE}", + "\u{1F1E8}\u{1F1F0}", + "\u{1F1E8}\u{1F1F1}", + "\u{1F1E8}\u{1F1F2}", + "\u{1F1E8}\u{1F1F3}", + "\u{1F1E8}\u{1F1F4}", + "\u{1F1E8}\u{1F1F5}", + "\u{1F1E8}\u{1F1F7}", + "\u{1F1E8}\u{1F1FA}", + "\u{1F1E8}\u{1F1FB}", + "\u{1F1E8}\u{1F1FC}", + "\u{1F1E8}\u{1F1FD}", + "\u{1F1E8}\u{1F1FE}", + "\u{1F1E8}\u{1F1FF}", + "\u{1F1E9}\u{1F1EA}", + "\u{1F1E9}\u{1F1EC}", + "\u{1F1E9}\u{1F1EF}", + "\u{1F1E9}\u{1F1F0}", + "\u{1F1E9}\u{1F1F2}", + "\u{1F1E9}\u{1F1F4}", + "\u{1F1E9}\u{1F1FF}", + "\u{1F1EA}\u{1F1E6}", + "\u{1F1EA}\u{1F1E8}", + "\u{1F1EA}\u{1F1EA}", + "\u{1F1EA}\u{1F1EC}", + "\u{1F1EA}\u{1F1ED}", + "\u{1F1EA}\u{1F1F7}", + "\u{1F1EA}\u{1F1F8}", + "\u{1F1EA}\u{1F1F9}", + "\u{1F1EA}\u{1F1FA}", + "\u{1F1EB}\u{1F1EE}", + "\u{1F1EB}\u{1F1EF}", + "\u{1F1EB}\u{1F1F0}", + "\u{1F1EB}\u{1F1F2}", + "\u{1F1EB}\u{1F1F4}", + "\u{1F1EB}\u{1F1F7}", + "\u{1F1EC}\u{1F1E6}", + "\u{1F1EC}\u{1F1E7}", + "\u{1F1EC}\u{1F1E9}", + "\u{1F1EC}\u{1F1EA}", + "\u{1F1EC}\u{1F1EB}", + "\u{1F1EC}\u{1F1EC}", + "\u{1F1EC}\u{1F1ED}", + "\u{1F1EC}\u{1F1EE}", + "\u{1F1EC}\u{1F1F1}", + "\u{1F1EC}\u{1F1F2}", + "\u{1F1EC}\u{1F1F3}", + "\u{1F1EC}\u{1F1F5}", + "\u{1F1EC}\u{1F1F6}", + "\u{1F1EC}\u{1F1F7}", + "\u{1F1EC}\u{1F1F8}", + "\u{1F1EC}\u{1F1F9}", + "\u{1F1EC}\u{1F1FA}", + "\u{1F1EC}\u{1F1FC}", + "\u{1F1EC}\u{1F1FE}", + "\u{1F1ED}\u{1F1F0}", + "\u{1F1ED}\u{1F1F2}", + "\u{1F1ED}\u{1F1F3}", + "\u{1F1ED}\u{1F1F7}", + "\u{1F1ED}\u{1F1F9}", + "\u{1F1ED}\u{1F1FA}", + "\u{1F1EE}\u{1F1E8}", + "\u{1F1EE}\u{1F1E9}", + "\u{1F1EE}\u{1F1EA}", + "\u{1F1EE}\u{1F1F1}", + "\u{1F1EE}\u{1F1F2}", + "\u{1F1EE}\u{1F1F3}", + "\u{1F1EE}\u{1F1F4}", + "\u{1F1EE}\u{1F1F6}", + "\u{1F1EE}\u{1F1F7}", + "\u{1F1EE}\u{1F1F8}", + "\u{1F1EE}\u{1F1F9}", + "\u{1F1EF}\u{1F1EA}", + "\u{1F1EF}\u{1F1F2}", + "\u{1F1EF}\u{1F1F4}", + "\u{1F1EF}\u{1F1F5}", + "\u{1F1F0}\u{1F1EA}", + "\u{1F1F0}\u{1F1EC}", + "\u{1F1F0}\u{1F1ED}", + "\u{1F1F0}\u{1F1EE}", + "\u{1F1F0}\u{1F1F2}", + "\u{1F1F0}\u{1F1F3}", + "\u{1F1F0}\u{1F1F5}", + "\u{1F1F0}\u{1F1F7}", + "\u{1F1F0}\u{1F1FC}", + "\u{1F1F0}\u{1F1FE}", + "\u{1F1F0}\u{1F1FF}", + "\u{1F1F1}\u{1F1E6}", + "\u{1F1F1}\u{1F1E7}", + "\u{1F1F1}\u{1F1E8}", + "\u{1F1F1}\u{1F1EE}", + "\u{1F1F1}\u{1F1F0}", + "\u{1F1F1}\u{1F1F7}", + "\u{1F1F1}\u{1F1F8}", + "\u{1F1F1}\u{1F1F9}", + "\u{1F1F1}\u{1F1FA}", + "\u{1F1F1}\u{1F1FB}", + "\u{1F1F1}\u{1F1FE}", + "\u{1F1F2}\u{1F1E6}", + "\u{1F1F2}\u{1F1E8}", + "\u{1F1F2}\u{1F1E9}", + "\u{1F1F2}\u{1F1EA}", + "\u{1F1F2}\u{1F1EB}", + "\u{1F1F2}\u{1F1EC}", + "\u{1F1F2}\u{1F1ED}", + "\u{1F1F2}\u{1F1F0}", + "\u{1F1F2}\u{1F1F1}", + "\u{1F1F2}\u{1F1F2}", + "\u{1F1F2}\u{1F1F3}", + "\u{1F1F2}\u{1F1F4}", + "\u{1F1F2}\u{1F1F5}", + "\u{1F1F2}\u{1F1F6}", + "\u{1F1F2}\u{1F1F7}", + "\u{1F1F2}\u{1F1F8}", + "\u{1F1F2}\u{1F1F9}", + "\u{1F1F2}\u{1F1FA}", + "\u{1F1F2}\u{1F1FB}", + "\u{1F1F2}\u{1F1FC}", + "\u{1F1F2}\u{1F1FD}", + "\u{1F1F2}\u{1F1FE}", + "\u{1F1F2}\u{1F1FF}", + "\u{1F1F3}\u{1F1E6}", + "\u{1F1F3}\u{1F1E8}", + "\u{1F1F3}\u{1F1EA}", + "\u{1F1F3}\u{1F1EB}", + "\u{1F1F3}\u{1F1EC}", + "\u{1F1F3}\u{1F1EE}", + "\u{1F1F3}\u{1F1F1}", + "\u{1F1F3}\u{1F1F4}", + "\u{1F1F3}\u{1F1F5}", + "\u{1F1F3}\u{1F1F7}", + "\u{1F1F3}\u{1F1FA}", + "\u{1F1F3}\u{1F1FF}", + "\u{1F1F4}\u{1F1F2}", + "\u{1F1F5}\u{1F1E6}", + "\u{1F1F5}\u{1F1EA}", + "\u{1F1F5}\u{1F1EB}", + "\u{1F1F5}\u{1F1EC}", + "\u{1F1F5}\u{1F1ED}", + "\u{1F1F5}\u{1F1F0}", + "\u{1F1F5}\u{1F1F1}", + "\u{1F1F5}\u{1F1F2}", + "\u{1F1F5}\u{1F1F3}", + "\u{1F1F5}\u{1F1F7}", + "\u{1F1F5}\u{1F1F8}", + "\u{1F1F5}\u{1F1F9}", + "\u{1F1F5}\u{1F1FC}", + "\u{1F1F5}\u{1F1FE}", + "\u{1F1F6}\u{1F1E6}", + "\u{1F1F7}\u{1F1EA}", + "\u{1F1F7}\u{1F1F4}", + "\u{1F1F7}\u{1F1F8}", + "\u{1F1F7}\u{1F1FA}", + "\u{1F1F7}\u{1F1FC}", + "\u{1F1F8}\u{1F1E6}", + "\u{1F1F8}\u{1F1E7}", + "\u{1F1F8}\u{1F1E8}", + "\u{1F1F8}\u{1F1E9}", + "\u{1F1F8}\u{1F1EA}", + "\u{1F1F8}\u{1F1EC}", + "\u{1F1F8}\u{1F1ED}", + "\u{1F1F8}\u{1F1EE}", + "\u{1F1F8}\u{1F1EF}", + "\u{1F1F8}\u{1F1F0}", + "\u{1F1F8}\u{1F1F1}", + "\u{1F1F8}\u{1F1F2}", + "\u{1F1F8}\u{1F1F3}", + "\u{1F1F8}\u{1F1F4}", + "\u{1F1F8}\u{1F1F7}", + "\u{1F1F8}\u{1F1F8}", + "\u{1F1F8}\u{1F1F9}", + "\u{1F1F8}\u{1F1FB}", + "\u{1F1F8}\u{1F1FD}", + "\u{1F1F8}\u{1F1FE}", + "\u{1F1F8}\u{1F1FF}", + "\u{1F1F9}\u{1F1E6}", + "\u{1F1F9}\u{1F1E8}", + "\u{1F1F9}\u{1F1E9}", + "\u{1F1F9}\u{1F1EB}", + "\u{1F1F9}\u{1F1EC}", + "\u{1F1F9}\u{1F1ED}", + "\u{1F1F9}\u{1F1EF}", + "\u{1F1F9}\u{1F1F0}", + "\u{1F1F9}\u{1F1F1}", + "\u{1F1F9}\u{1F1F2}", + "\u{1F1F9}\u{1F1F3}", + "\u{1F1F9}\u{1F1F4}", + "\u{1F1F9}\u{1F1F7}", + "\u{1F1F9}\u{1F1F9}", + "\u{1F1F9}\u{1F1FB}", + "\u{1F1F9}\u{1F1FC}", + "\u{1F1F9}\u{1F1FF}", + "\u{1F1FA}\u{1F1E6}", + "\u{1F1FA}\u{1F1EC}", + "\u{1F1FA}\u{1F1F2}", + "\u{1F1FA}\u{1F1F3}", + "\u{1F1FA}\u{1F1F8}", + "\u{1F1FA}\u{1F1FE}", + "\u{1F1FA}\u{1F1FF}", + "\u{1F1FB}\u{1F1E6}", + "\u{1F1FB}\u{1F1E8}", + "\u{1F1FB}\u{1F1EA}", + "\u{1F1FB}\u{1F1EC}", + "\u{1F1FB}\u{1F1EE}", + "\u{1F1FB}\u{1F1F3}", + "\u{1F1FB}\u{1F1FA}", + "\u{1F1FC}\u{1F1EB}", + "\u{1F1FC}\u{1F1F8}", + "\u{1F1FD}\u{1F1F0}", + "\u{1F1FE}\u{1F1EA}", + "\u{1F1FE}\u{1F1F9}", + "\u{1F1FF}\u{1F1E6}", + "\u{1F1FF}\u{1F1F2}", + "\u{1F1FF}\u{1F1FC}", + "\u{1F201}", + "\u{1F202}\uFE0F", + "\u{1F21A}", + "\u{1F22F}", + "\u{1F232}", + "\u{1F233}", + "\u{1F234}", + "\u{1F235}", + "\u{1F236}", + "\u{1F237}\uFE0F", + "\u{1F238}", + "\u{1F239}", + "\u{1F23A}", + "\u{1F250}", + "\u{1F251}", + "\u{1F300}", + "\u{1F301}", + "\u{1F302}", + "\u{1F303}", + "\u{1F304}", + "\u{1F305}", + "\u{1F306}", + "\u{1F307}", + "\u{1F308}", + "\u{1F309}", + "\u{1F30A}", + "\u{1F30B}", + "\u{1F30C}", + "\u{1F30D}", + "\u{1F30E}", + "\u{1F30F}", + "\u{1F310}", + "\u{1F311}", + "\u{1F312}", + "\u{1F313}", + "\u{1F314}", + "\u{1F315}", + "\u{1F316}", + "\u{1F317}", + "\u{1F318}", + "\u{1F319}", + "\u{1F31A}", + "\u{1F31B}", + "\u{1F31C}", + "\u{1F31D}", + "\u{1F31E}", + "\u{1F31F}", + "\u{1F320}", + "\u{1F321}\uFE0F", + "\u{1F324}\uFE0F", + "\u{1F325}\uFE0F", + "\u{1F326}\uFE0F", + "\u{1F327}\uFE0F", + "\u{1F328}\uFE0F", + "\u{1F329}\uFE0F", + "\u{1F32A}\uFE0F", + "\u{1F32B}\uFE0F", + "\u{1F32C}\uFE0F", + "\u{1F32D}", + "\u{1F32E}", + "\u{1F32F}", + "\u{1F330}", + "\u{1F331}", + "\u{1F332}", + "\u{1F333}", + "\u{1F334}", + "\u{1F335}", + "\u{1F336}\uFE0F", + "\u{1F337}", + "\u{1F338}", + "\u{1F339}", + "\u{1F33A}", + "\u{1F33B}", + "\u{1F33C}", + "\u{1F33D}", + "\u{1F33E}", + "\u{1F33F}", + "\u{1F340}", + "\u{1F341}", + "\u{1F342}", + "\u{1F343}", + "\u{1F344}", + "\u{1F345}", + "\u{1F346}", + "\u{1F347}", + "\u{1F348}", + "\u{1F349}", + "\u{1F34A}", + "\u{1F34B}", + "\u{1F34C}", + "\u{1F34D}", + "\u{1F34E}", + "\u{1F34F}", + "\u{1F350}", + "\u{1F351}", + "\u{1F352}", + "\u{1F353}", + "\u{1F354}", + "\u{1F355}", + "\u{1F356}", + "\u{1F357}", + "\u{1F358}", + "\u{1F359}", + "\u{1F35A}", + "\u{1F35B}", + "\u{1F35C}", + "\u{1F35D}", + "\u{1F35E}", + "\u{1F35F}", + "\u{1F360}", + "\u{1F361}", + "\u{1F362}", + "\u{1F363}", + "\u{1F364}", + "\u{1F365}", + "\u{1F366}", + "\u{1F367}", + "\u{1F368}", + "\u{1F369}", + "\u{1F36A}", + "\u{1F36B}", + "\u{1F36C}", + "\u{1F36D}", + "\u{1F36E}", + "\u{1F36F}", + "\u{1F370}", + "\u{1F371}", + "\u{1F372}", + "\u{1F373}", + "\u{1F374}", + "\u{1F375}", + "\u{1F376}", + "\u{1F377}", + "\u{1F378}", + "\u{1F379}", + "\u{1F37A}", + "\u{1F37B}", + "\u{1F37C}", + "\u{1F37D}\uFE0F", + "\u{1F37E}", + "\u{1F37F}", + "\u{1F380}", + "\u{1F381}", + "\u{1F382}", + "\u{1F383}", + "\u{1F384}", + "\u{1F385}", + "\u{1F385}\u{1F3FB}", + "\u{1F385}\u{1F3FC}", + "\u{1F385}\u{1F3FD}", + "\u{1F385}\u{1F3FE}", + "\u{1F385}\u{1F3FF}", + "\u{1F386}", + "\u{1F387}", + "\u{1F388}", + "\u{1F389}", + "\u{1F38A}", + "\u{1F38B}", + "\u{1F38C}", + "\u{1F38D}", + "\u{1F38E}", + "\u{1F38F}", + "\u{1F390}", + "\u{1F391}", + "\u{1F392}", + "\u{1F393}", + "\u{1F396}\uFE0F", + "\u{1F397}\uFE0F", + "\u{1F399}\uFE0F", + "\u{1F39A}\uFE0F", + "\u{1F39B}\uFE0F", + "\u{1F39E}\uFE0F", + "\u{1F39F}\uFE0F", + "\u{1F3A0}", + "\u{1F3A1}", + "\u{1F3A2}", + "\u{1F3A3}", + "\u{1F3A4}", + "\u{1F3A5}", + "\u{1F3A6}", + "\u{1F3A7}", + "\u{1F3A8}", + "\u{1F3A9}", + "\u{1F3AA}", + "\u{1F3AB}", + "\u{1F3AC}", + "\u{1F3AD}", + "\u{1F3AE}", + "\u{1F3AF}", + "\u{1F3B0}", + "\u{1F3B1}", + "\u{1F3B2}", + "\u{1F3B3}", + "\u{1F3B4}", + "\u{1F3B5}", + "\u{1F3B6}", + "\u{1F3B7}", + "\u{1F3B8}", + "\u{1F3B9}", + "\u{1F3BA}", + "\u{1F3BB}", + "\u{1F3BC}", + "\u{1F3BD}", + "\u{1F3BE}", + "\u{1F3BF}", + "\u{1F3C0}", + "\u{1F3C1}", + "\u{1F3C2}", + "\u{1F3C2}\u{1F3FB}", + "\u{1F3C2}\u{1F3FC}", + "\u{1F3C2}\u{1F3FD}", + "\u{1F3C2}\u{1F3FE}", + "\u{1F3C2}\u{1F3FF}", + "\u{1F3C3}", + "\u{1F3C3}\u200D\u2640\uFE0F", + "\u{1F3C3}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FB}", + "\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FC}", + "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FD}", + "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FE}", + "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FF}", + "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3C4}", + "\u{1F3C4}\u200D\u2640\uFE0F", + "\u{1F3C4}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FB}", + "\u{1F3C4}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FC}", + "\u{1F3C4}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FD}", + "\u{1F3C4}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FE}", + "\u{1F3C4}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FF}", + "\u{1F3C4}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3C5}", + "\u{1F3C6}", + "\u{1F3C7}", + "\u{1F3C7}\u{1F3FB}", + "\u{1F3C7}\u{1F3FC}", + "\u{1F3C7}\u{1F3FD}", + "\u{1F3C7}\u{1F3FE}", + "\u{1F3C7}\u{1F3FF}", + "\u{1F3C8}", + "\u{1F3C9}", + "\u{1F3CA}", + "\u{1F3CA}\u200D\u2640\uFE0F", + "\u{1F3CA}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FB}", + "\u{1F3CA}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FC}", + "\u{1F3CA}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FD}", + "\u{1F3CA}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FE}", + "\u{1F3CA}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FF}", + "\u{1F3CA}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FB}", + "\u{1F3CB}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FC}", + "\u{1F3CB}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FD}", + "\u{1F3CB}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FE}", + "\u{1F3CB}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FF}", + "\u{1F3CB}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3CB}\uFE0F", + "\u{1F3CB}\uFE0F\u200D\u2640\uFE0F", + "\u{1F3CB}\uFE0F\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FB}", + "\u{1F3CC}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FC}", + "\u{1F3CC}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FD}", + "\u{1F3CC}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FE}", + "\u{1F3CC}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FF}", + "\u{1F3CC}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3CC}\uFE0F", + "\u{1F3CC}\uFE0F\u200D\u2640\uFE0F", + "\u{1F3CC}\uFE0F\u200D\u2642\uFE0F", + "\u{1F3CD}\uFE0F", + "\u{1F3CE}\uFE0F", + "\u{1F3CF}", + "\u{1F3D0}", + "\u{1F3D1}", + "\u{1F3D2}", + "\u{1F3D3}", + "\u{1F3D4}\uFE0F", + "\u{1F3D5}\uFE0F", + "\u{1F3D6}\uFE0F", + "\u{1F3D7}\uFE0F", + "\u{1F3D8}\uFE0F", + "\u{1F3D9}\uFE0F", + "\u{1F3DA}\uFE0F", + "\u{1F3DB}\uFE0F", + "\u{1F3DC}\uFE0F", + "\u{1F3DD}\uFE0F", + "\u{1F3DE}\uFE0F", + "\u{1F3DF}\uFE0F", + "\u{1F3E0}", + "\u{1F3E1}", + "\u{1F3E2}", + "\u{1F3E3}", + "\u{1F3E4}", + "\u{1F3E5}", + "\u{1F3E6}", + "\u{1F3E7}", + "\u{1F3E8}", + "\u{1F3E9}", + "\u{1F3EA}", + "\u{1F3EB}", + "\u{1F3EC}", + "\u{1F3ED}", + "\u{1F3EE}", + "\u{1F3EF}", + "\u{1F3F0}", + "\u{1F3F3}\uFE0F", + "\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F", + "\u{1F3F3}\uFE0F\u200D\u{1F308}", + "\u{1F3F4}", + "\u{1F3F4}\u200D\u2620\uFE0F", + "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}", + "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}", + "\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}", + "\u{1F3F5}\uFE0F", + "\u{1F3F7}\uFE0F", + "\u{1F3F8}", + "\u{1F3F9}", + "\u{1F3FA}", + "\u{1F3FB}", + "\u{1F3FC}", + "\u{1F3FD}", + "\u{1F3FE}", + "\u{1F3FF}", + "\u{1F400}", + "\u{1F401}", + "\u{1F402}", + "\u{1F403}", + "\u{1F404}", + "\u{1F405}", + "\u{1F406}", + "\u{1F407}", + "\u{1F408}", + "\u{1F408}\u200D\u2B1B", + "\u{1F409}", + "\u{1F40A}", + "\u{1F40B}", + "\u{1F40C}", + "\u{1F40D}", + "\u{1F40E}", + "\u{1F40F}", + "\u{1F410}", + "\u{1F411}", + "\u{1F412}", + "\u{1F413}", + "\u{1F414}", + "\u{1F415}", + "\u{1F415}\u200D\u{1F9BA}", + "\u{1F416}", + "\u{1F417}", + "\u{1F418}", + "\u{1F419}", + "\u{1F41A}", + "\u{1F41B}", + "\u{1F41C}", + "\u{1F41D}", + "\u{1F41E}", + "\u{1F41F}", + "\u{1F420}", + "\u{1F421}", + "\u{1F422}", + "\u{1F423}", + "\u{1F424}", + "\u{1F425}", + "\u{1F426}", + "\u{1F426}\u200D\u2B1B", + "\u{1F427}", + "\u{1F428}", + "\u{1F429}", + "\u{1F42A}", + "\u{1F42B}", + "\u{1F42C}", + "\u{1F42D}", + "\u{1F42E}", + "\u{1F42F}", + "\u{1F430}", + "\u{1F431}", + "\u{1F432}", + "\u{1F433}", + "\u{1F434}", + "\u{1F435}", + "\u{1F436}", + "\u{1F437}", + "\u{1F438}", + "\u{1F439}", + "\u{1F43A}", + "\u{1F43B}", + "\u{1F43B}\u200D\u2744\uFE0F", + "\u{1F43C}", + "\u{1F43D}", + "\u{1F43E}", + "\u{1F43F}\uFE0F", + "\u{1F440}", + "\u{1F441}\uFE0F", + "\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F", + "\u{1F442}", + "\u{1F442}\u{1F3FB}", + "\u{1F442}\u{1F3FC}", + "\u{1F442}\u{1F3FD}", + "\u{1F442}\u{1F3FE}", + "\u{1F442}\u{1F3FF}", + "\u{1F443}", + "\u{1F443}\u{1F3FB}", + "\u{1F443}\u{1F3FC}", + "\u{1F443}\u{1F3FD}", + "\u{1F443}\u{1F3FE}", + "\u{1F443}\u{1F3FF}", + "\u{1F444}", + "\u{1F445}", + "\u{1F446}", + "\u{1F446}\u{1F3FB}", + "\u{1F446}\u{1F3FC}", + "\u{1F446}\u{1F3FD}", + "\u{1F446}\u{1F3FE}", + "\u{1F446}\u{1F3FF}", + "\u{1F447}", + "\u{1F447}\u{1F3FB}", + "\u{1F447}\u{1F3FC}", + "\u{1F447}\u{1F3FD}", + "\u{1F447}\u{1F3FE}", + "\u{1F447}\u{1F3FF}", + "\u{1F448}", + "\u{1F448}\u{1F3FB}", + "\u{1F448}\u{1F3FC}", + "\u{1F448}\u{1F3FD}", + "\u{1F448}\u{1F3FE}", + "\u{1F448}\u{1F3FF}", + "\u{1F449}", + "\u{1F449}\u{1F3FB}", + "\u{1F449}\u{1F3FC}", + "\u{1F449}\u{1F3FD}", + "\u{1F449}\u{1F3FE}", + "\u{1F449}\u{1F3FF}", + "\u{1F44A}", + "\u{1F44A}\u{1F3FB}", + "\u{1F44A}\u{1F3FC}", + "\u{1F44A}\u{1F3FD}", + "\u{1F44A}\u{1F3FE}", + "\u{1F44A}\u{1F3FF}", + "\u{1F44B}", + "\u{1F44B}\u{1F3FB}", + "\u{1F44B}\u{1F3FC}", + "\u{1F44B}\u{1F3FD}", + "\u{1F44B}\u{1F3FE}", + "\u{1F44B}\u{1F3FF}", + "\u{1F44C}", + "\u{1F44C}\u{1F3FB}", + "\u{1F44C}\u{1F3FC}", + "\u{1F44C}\u{1F3FD}", + "\u{1F44C}\u{1F3FE}", + "\u{1F44C}\u{1F3FF}", + "\u{1F44D}", + "\u{1F44D}\u{1F3FB}", + "\u{1F44D}\u{1F3FC}", + "\u{1F44D}\u{1F3FD}", + "\u{1F44D}\u{1F3FE}", + "\u{1F44D}\u{1F3FF}", + "\u{1F44E}", + "\u{1F44E}\u{1F3FB}", + "\u{1F44E}\u{1F3FC}", + "\u{1F44E}\u{1F3FD}", + "\u{1F44E}\u{1F3FE}", + "\u{1F44E}\u{1F3FF}", + "\u{1F44F}", + "\u{1F44F}\u{1F3FB}", + "\u{1F44F}\u{1F3FC}", + "\u{1F44F}\u{1F3FD}", + "\u{1F44F}\u{1F3FE}", + "\u{1F44F}\u{1F3FF}", + "\u{1F450}", + "\u{1F450}\u{1F3FB}", + "\u{1F450}\u{1F3FC}", + "\u{1F450}\u{1F3FD}", + "\u{1F450}\u{1F3FE}", + "\u{1F450}\u{1F3FF}", + "\u{1F451}", + "\u{1F452}", + "\u{1F453}", + "\u{1F454}", + "\u{1F455}", + "\u{1F456}", + "\u{1F457}", + "\u{1F458}", + "\u{1F459}", + "\u{1F45A}", + "\u{1F45B}", + "\u{1F45C}", + "\u{1F45D}", + "\u{1F45E}", + "\u{1F45F}", + "\u{1F460}", + "\u{1F461}", + "\u{1F462}", + "\u{1F463}", + "\u{1F464}", + "\u{1F465}", + "\u{1F466}", + "\u{1F466}\u{1F3FB}", + "\u{1F466}\u{1F3FC}", + "\u{1F466}\u{1F3FD}", + "\u{1F466}\u{1F3FE}", + "\u{1F466}\u{1F3FF}", + "\u{1F467}", + "\u{1F467}\u{1F3FB}", + "\u{1F467}\u{1F3FC}", + "\u{1F467}\u{1F3FD}", + "\u{1F467}\u{1F3FE}", + "\u{1F467}\u{1F3FF}", + "\u{1F468}", + "\u{1F468}\u200D\u2695\uFE0F", + "\u{1F468}\u200D\u2696\uFE0F", + "\u{1F468}\u200D\u2708\uFE0F", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u{1F33E}", + "\u{1F468}\u200D\u{1F373}", + "\u{1F468}\u200D\u{1F37C}", + "\u{1F468}\u200D\u{1F393}", + "\u{1F468}\u200D\u{1F3A4}", + "\u{1F468}\u200D\u{1F3A8}", + "\u{1F468}\u200D\u{1F3EB}", + "\u{1F468}\u200D\u{1F3ED}", + "\u{1F468}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F4BB}", + "\u{1F468}\u200D\u{1F4BC}", + "\u{1F468}\u200D\u{1F527}", + "\u{1F468}\u200D\u{1F52C}", + "\u{1F468}\u200D\u{1F680}", + "\u{1F468}\u200D\u{1F692}", + "\u{1F468}\u200D\u{1F9AF}", + "\u{1F468}\u200D\u{1F9B0}", + "\u{1F468}\u200D\u{1F9B1}", + "\u{1F468}\u200D\u{1F9B2}", + "\u{1F468}\u200D\u{1F9B3}", + "\u{1F468}\u200D\u{1F9BC}", + "\u{1F468}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FB}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FB}\u200D\u{1F373}", + "\u{1F468}\u{1F3FB}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FB}\u200D\u{1F393}", + "\u{1F468}\u{1F3FB}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FB}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FB}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FB}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FB}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FB}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FB}\u200D\u{1F527}", + "\u{1F468}\u{1F3FB}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FB}\u200D\u{1F680}", + "\u{1F468}\u{1F3FB}\u200D\u{1F692}", + "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FC}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FC}\u200D\u{1F373}", + "\u{1F468}\u{1F3FC}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FC}\u200D\u{1F393}", + "\u{1F468}\u{1F3FC}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FC}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FC}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FC}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FC}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FC}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FC}\u200D\u{1F527}", + "\u{1F468}\u{1F3FC}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FC}\u200D\u{1F680}", + "\u{1F468}\u{1F3FC}\u200D\u{1F692}", + "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FD}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FD}\u200D\u{1F373}", + "\u{1F468}\u{1F3FD}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FD}\u200D\u{1F393}", + "\u{1F468}\u{1F3FD}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FD}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FD}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FD}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FD}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FD}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FD}\u200D\u{1F527}", + "\u{1F468}\u{1F3FD}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FD}\u200D\u{1F680}", + "\u{1F468}\u{1F3FD}\u200D\u{1F692}", + "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FE}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FE}\u200D\u{1F373}", + "\u{1F468}\u{1F3FE}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FE}\u200D\u{1F393}", + "\u{1F468}\u{1F3FE}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FE}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FE}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FE}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FE}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FE}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FE}\u200D\u{1F527}", + "\u{1F468}\u{1F3FE}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FE}\u200D\u{1F680}", + "\u{1F468}\u{1F3FE}\u200D\u{1F692}", + "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FF}\u200D\u{1F373}", + "\u{1F468}\u{1F3FF}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FF}\u200D\u{1F393}", + "\u{1F468}\u{1F3FF}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FF}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FF}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FF}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FF}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FF}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FF}\u200D\u{1F527}", + "\u{1F468}\u{1F3FF}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FF}\u200D\u{1F680}", + "\u{1F468}\u{1F3FF}\u200D\u{1F692}", + "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F469}", + "\u{1F469}\u200D\u2695\uFE0F", + "\u{1F469}\u200D\u2696\uFE0F", + "\u{1F469}\u200D\u2708\uFE0F", + "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}", + "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}", + "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}", + "\u{1F469}\u200D\u{1F33E}", + "\u{1F469}\u200D\u{1F373}", + "\u{1F469}\u200D\u{1F37C}", + "\u{1F469}\u200D\u{1F393}", + "\u{1F469}\u200D\u{1F3A4}", + "\u{1F469}\u200D\u{1F3A8}", + "\u{1F469}\u200D\u{1F3EB}", + "\u{1F469}\u200D\u{1F3ED}", + "\u{1F469}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F467}", + "\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F469}\u200D\u{1F4BB}", + "\u{1F469}\u200D\u{1F4BC}", + "\u{1F469}\u200D\u{1F527}", + "\u{1F469}\u200D\u{1F52C}", + "\u{1F469}\u200D\u{1F680}", + "\u{1F469}\u200D\u{1F692}", + "\u{1F469}\u200D\u{1F9AF}", + "\u{1F469}\u200D\u{1F9B0}", + "\u{1F469}\u200D\u{1F9B1}", + "\u{1F469}\u200D\u{1F9B2}", + "\u{1F469}\u200D\u{1F9B3}", + "\u{1F469}\u200D\u{1F9BC}", + "\u{1F469}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FB}\u200D\u{1F373}", + "\u{1F469}\u{1F3FB}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FB}\u200D\u{1F393}", + "\u{1F469}\u{1F3FB}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FB}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FB}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FB}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FB}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FB}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F527}", + "\u{1F469}\u{1F3FB}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FB}\u200D\u{1F680}", + "\u{1F469}\u{1F3FB}\u200D\u{1F692}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FC}\u200D\u{1F373}", + "\u{1F469}\u{1F3FC}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FC}\u200D\u{1F393}", + "\u{1F469}\u{1F3FC}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FC}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FC}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FC}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FC}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FC}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FC}\u200D\u{1F527}", + "\u{1F469}\u{1F3FC}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FC}\u200D\u{1F680}", + "\u{1F469}\u{1F3FC}\u200D\u{1F692}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FD}\u200D\u{1F373}", + "\u{1F469}\u{1F3FD}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FD}\u200D\u{1F393}", + "\u{1F469}\u{1F3FD}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FD}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FD}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FD}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FD}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FD}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F527}", + "\u{1F469}\u{1F3FD}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FD}\u200D\u{1F680}", + "\u{1F469}\u{1F3FD}\u200D\u{1F692}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FE}\u200D\u{1F373}", + "\u{1F469}\u{1F3FE}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FE}\u200D\u{1F393}", + "\u{1F469}\u{1F3FE}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FE}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FE}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FE}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FE}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FE}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F527}", + "\u{1F469}\u{1F3FE}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FE}\u200D\u{1F680}", + "\u{1F469}\u{1F3FE}\u200D\u{1F692}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FF}\u200D\u{1F373}", + "\u{1F469}\u{1F3FF}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FF}\u200D\u{1F393}", + "\u{1F469}\u{1F3FF}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FF}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FF}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FF}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FF}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FF}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F527}", + "\u{1F469}\u{1F3FF}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FF}\u200D\u{1F680}", + "\u{1F469}\u{1F3FF}\u200D\u{1F692}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F46A}", + "\u{1F46B}", + "\u{1F46B}\u{1F3FB}", + "\u{1F46B}\u{1F3FC}", + "\u{1F46B}\u{1F3FD}", + "\u{1F46B}\u{1F3FE}", + "\u{1F46B}\u{1F3FF}", + "\u{1F46C}", + "\u{1F46C}\u{1F3FB}", + "\u{1F46C}\u{1F3FC}", + "\u{1F46C}\u{1F3FD}", + "\u{1F46C}\u{1F3FE}", + "\u{1F46C}\u{1F3FF}", + "\u{1F46D}", + "\u{1F46D}\u{1F3FB}", + "\u{1F46D}\u{1F3FC}", + "\u{1F46D}\u{1F3FD}", + "\u{1F46D}\u{1F3FE}", + "\u{1F46D}\u{1F3FF}", + "\u{1F46E}", + "\u{1F46E}\u200D\u2640\uFE0F", + "\u{1F46E}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FB}", + "\u{1F46E}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FC}", + "\u{1F46E}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FD}", + "\u{1F46E}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FE}", + "\u{1F46E}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FF}", + "\u{1F46E}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F46F}", + "\u{1F46F}\u200D\u2640\uFE0F", + "\u{1F46F}\u200D\u2642\uFE0F", + "\u{1F470}", + "\u{1F470}\u200D\u2640\uFE0F", + "\u{1F470}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FB}", + "\u{1F470}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FC}", + "\u{1F470}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FD}", + "\u{1F470}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FE}", + "\u{1F470}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FF}", + "\u{1F470}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F471}", + "\u{1F471}\u200D\u2640\uFE0F", + "\u{1F471}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FB}", + "\u{1F471}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FC}", + "\u{1F471}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FD}", + "\u{1F471}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FE}", + "\u{1F471}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FF}", + "\u{1F471}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F472}", + "\u{1F472}\u{1F3FB}", + "\u{1F472}\u{1F3FC}", + "\u{1F472}\u{1F3FD}", + "\u{1F472}\u{1F3FE}", + "\u{1F472}\u{1F3FF}", + "\u{1F473}", + "\u{1F473}\u200D\u2640\uFE0F", + "\u{1F473}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FB}", + "\u{1F473}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FC}", + "\u{1F473}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FD}", + "\u{1F473}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FE}", + "\u{1F473}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FF}", + "\u{1F473}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F474}", + "\u{1F474}\u{1F3FB}", + "\u{1F474}\u{1F3FC}", + "\u{1F474}\u{1F3FD}", + "\u{1F474}\u{1F3FE}", + "\u{1F474}\u{1F3FF}", + "\u{1F475}", + "\u{1F475}\u{1F3FB}", + "\u{1F475}\u{1F3FC}", + "\u{1F475}\u{1F3FD}", + "\u{1F475}\u{1F3FE}", + "\u{1F475}\u{1F3FF}", + "\u{1F476}", + "\u{1F476}\u{1F3FB}", + "\u{1F476}\u{1F3FC}", + "\u{1F476}\u{1F3FD}", + "\u{1F476}\u{1F3FE}", + "\u{1F476}\u{1F3FF}", + "\u{1F477}", + "\u{1F477}\u200D\u2640\uFE0F", + "\u{1F477}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FB}", + "\u{1F477}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FC}", + "\u{1F477}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FD}", + "\u{1F477}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FE}", + "\u{1F477}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FF}", + "\u{1F477}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F478}", + "\u{1F478}\u{1F3FB}", + "\u{1F478}\u{1F3FC}", + "\u{1F478}\u{1F3FD}", + "\u{1F478}\u{1F3FE}", + "\u{1F478}\u{1F3FF}", + "\u{1F479}", + "\u{1F47A}", + "\u{1F47B}", + "\u{1F47C}", + "\u{1F47C}\u{1F3FB}", + "\u{1F47C}\u{1F3FC}", + "\u{1F47C}\u{1F3FD}", + "\u{1F47C}\u{1F3FE}", + "\u{1F47C}\u{1F3FF}", + "\u{1F47D}", + "\u{1F47E}", + "\u{1F47F}", + "\u{1F480}", + "\u{1F481}", + "\u{1F481}\u200D\u2640\uFE0F", + "\u{1F481}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FB}", + "\u{1F481}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FC}", + "\u{1F481}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FD}", + "\u{1F481}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FE}", + "\u{1F481}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FF}", + "\u{1F481}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F482}", + "\u{1F482}\u200D\u2640\uFE0F", + "\u{1F482}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FB}", + "\u{1F482}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FC}", + "\u{1F482}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FD}", + "\u{1F482}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FE}", + "\u{1F482}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FF}", + "\u{1F482}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F483}", + "\u{1F483}\u{1F3FB}", + "\u{1F483}\u{1F3FC}", + "\u{1F483}\u{1F3FD}", + "\u{1F483}\u{1F3FE}", + "\u{1F483}\u{1F3FF}", + "\u{1F484}", + "\u{1F485}", + "\u{1F485}\u{1F3FB}", + "\u{1F485}\u{1F3FC}", + "\u{1F485}\u{1F3FD}", + "\u{1F485}\u{1F3FE}", + "\u{1F485}\u{1F3FF}", + "\u{1F486}", + "\u{1F486}\u200D\u2640\uFE0F", + "\u{1F486}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FB}", + "\u{1F486}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FC}", + "\u{1F486}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FD}", + "\u{1F486}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FE}", + "\u{1F486}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FF}", + "\u{1F486}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F487}", + "\u{1F487}\u200D\u2640\uFE0F", + "\u{1F487}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FB}", + "\u{1F487}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FC}", + "\u{1F487}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FD}", + "\u{1F487}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FE}", + "\u{1F487}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FF}", + "\u{1F487}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F488}", + "\u{1F489}", + "\u{1F48A}", + "\u{1F48B}", + "\u{1F48C}", + "\u{1F48D}", + "\u{1F48E}", + "\u{1F48F}", + "\u{1F48F}\u{1F3FB}", + "\u{1F48F}\u{1F3FC}", + "\u{1F48F}\u{1F3FD}", + "\u{1F48F}\u{1F3FE}", + "\u{1F48F}\u{1F3FF}", + "\u{1F490}", + "\u{1F491}", + "\u{1F491}\u{1F3FB}", + "\u{1F491}\u{1F3FC}", + "\u{1F491}\u{1F3FD}", + "\u{1F491}\u{1F3FE}", + "\u{1F491}\u{1F3FF}", + "\u{1F492}", + "\u{1F493}", + "\u{1F494}", + "\u{1F495}", + "\u{1F496}", + "\u{1F497}", + "\u{1F498}", + "\u{1F499}", + "\u{1F49A}", + "\u{1F49B}", + "\u{1F49C}", + "\u{1F49D}", + "\u{1F49E}", + "\u{1F49F}", + "\u{1F4A0}", + "\u{1F4A1}", + "\u{1F4A2}", + "\u{1F4A3}", + "\u{1F4A4}", + "\u{1F4A5}", + "\u{1F4A6}", + "\u{1F4A7}", + "\u{1F4A8}", + "\u{1F4A9}", + "\u{1F4AA}", + "\u{1F4AA}\u{1F3FB}", + "\u{1F4AA}\u{1F3FC}", + "\u{1F4AA}\u{1F3FD}", + "\u{1F4AA}\u{1F3FE}", + "\u{1F4AA}\u{1F3FF}", + "\u{1F4AB}", + "\u{1F4AC}", + "\u{1F4AD}", + "\u{1F4AE}", + "\u{1F4AF}", + "\u{1F4B0}", + "\u{1F4B1}", + "\u{1F4B2}", + "\u{1F4B3}", + "\u{1F4B4}", + "\u{1F4B5}", + "\u{1F4B6}", + "\u{1F4B7}", + "\u{1F4B8}", + "\u{1F4B9}", + "\u{1F4BA}", + "\u{1F4BB}", + "\u{1F4BC}", + "\u{1F4BD}", + "\u{1F4BE}", + "\u{1F4BF}", + "\u{1F4C0}", + "\u{1F4C1}", + "\u{1F4C2}", + "\u{1F4C3}", + "\u{1F4C4}", + "\u{1F4C5}", + "\u{1F4C6}", + "\u{1F4C7}", + "\u{1F4C8}", + "\u{1F4C9}", + "\u{1F4CA}", + "\u{1F4CB}", + "\u{1F4CC}", + "\u{1F4CD}", + "\u{1F4CE}", + "\u{1F4CF}", + "\u{1F4D0}", + "\u{1F4D1}", + "\u{1F4D2}", + "\u{1F4D3}", + "\u{1F4D4}", + "\u{1F4D5}", + "\u{1F4D6}", + "\u{1F4D7}", + "\u{1F4D8}", + "\u{1F4D9}", + "\u{1F4DA}", + "\u{1F4DB}", + "\u{1F4DC}", + "\u{1F4DD}", + "\u{1F4DE}", + "\u{1F4DF}", + "\u{1F4E0}", + "\u{1F4E1}", + "\u{1F4E2}", + "\u{1F4E3}", + "\u{1F4E4}", + "\u{1F4E5}", + "\u{1F4E6}", + "\u{1F4E7}", + "\u{1F4E8}", + "\u{1F4E9}", + "\u{1F4EA}", + "\u{1F4EB}", + "\u{1F4EC}", + "\u{1F4ED}", + "\u{1F4EE}", + "\u{1F4EF}", + "\u{1F4F0}", + "\u{1F4F1}", + "\u{1F4F2}", + "\u{1F4F3}", + "\u{1F4F4}", + "\u{1F4F5}", + "\u{1F4F6}", + "\u{1F4F7}", + "\u{1F4F8}", + "\u{1F4F9}", + "\u{1F4FA}", + "\u{1F4FB}", + "\u{1F4FC}", + "\u{1F4FD}\uFE0F", + "\u{1F4FF}", + "\u{1F500}", + "\u{1F501}", + "\u{1F502}", + "\u{1F503}", + "\u{1F504}", + "\u{1F505}", + "\u{1F506}", + "\u{1F507}", + "\u{1F508}", + "\u{1F509}", + "\u{1F50A}", + "\u{1F50B}", + "\u{1F50C}", + "\u{1F50D}", + "\u{1F50E}", + "\u{1F50F}", + "\u{1F510}", + "\u{1F511}", + "\u{1F512}", + "\u{1F513}", + "\u{1F514}", + "\u{1F515}", + "\u{1F516}", + "\u{1F517}", + "\u{1F518}", + "\u{1F519}", + "\u{1F51A}", + "\u{1F51B}", + "\u{1F51C}", + "\u{1F51D}", + "\u{1F51E}", + "\u{1F51F}", + "\u{1F520}", + "\u{1F521}", + "\u{1F522}", + "\u{1F523}", + "\u{1F524}", + "\u{1F525}", + "\u{1F526}", + "\u{1F527}", + "\u{1F528}", + "\u{1F529}", + "\u{1F52A}", + "\u{1F52B}", + "\u{1F52C}", + "\u{1F52D}", + "\u{1F52E}", + "\u{1F52F}", + "\u{1F530}", + "\u{1F531}", + "\u{1F532}", + "\u{1F533}", + "\u{1F534}", + "\u{1F535}", + "\u{1F536}", + "\u{1F537}", + "\u{1F538}", + "\u{1F539}", + "\u{1F53A}", + "\u{1F53B}", + "\u{1F53C}", + "\u{1F53D}", + "\u{1F549}\uFE0F", + "\u{1F54A}\uFE0F", + "\u{1F54B}", + "\u{1F54C}", + "\u{1F54D}", + "\u{1F54E}", + "\u{1F550}", + "\u{1F551}", + "\u{1F552}", + "\u{1F553}", + "\u{1F554}", + "\u{1F555}", + "\u{1F556}", + "\u{1F557}", + "\u{1F558}", + "\u{1F559}", + "\u{1F55A}", + "\u{1F55B}", + "\u{1F55C}", + "\u{1F55D}", + "\u{1F55E}", + "\u{1F55F}", + "\u{1F560}", + "\u{1F561}", + "\u{1F562}", + "\u{1F563}", + "\u{1F564}", + "\u{1F565}", + "\u{1F566}", + "\u{1F567}", + "\u{1F56F}\uFE0F", + "\u{1F570}\uFE0F", + "\u{1F573}\uFE0F", + "\u{1F574}\u{1F3FB}", + "\u{1F574}\u{1F3FC}", + "\u{1F574}\u{1F3FD}", + "\u{1F574}\u{1F3FE}", + "\u{1F574}\u{1F3FF}", + "\u{1F574}\uFE0F", + "\u{1F575}\u{1F3FB}", + "\u{1F575}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F575}\u{1F3FC}", + "\u{1F575}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F575}\u{1F3FD}", + "\u{1F575}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F575}\u{1F3FE}", + "\u{1F575}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F575}\u{1F3FF}", + "\u{1F575}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F575}\uFE0F", + "\u{1F575}\uFE0F\u200D\u2640\uFE0F", + "\u{1F575}\uFE0F\u200D\u2642\uFE0F", + "\u{1F576}\uFE0F", + "\u{1F577}\uFE0F", + "\u{1F578}\uFE0F", + "\u{1F579}\uFE0F", + "\u{1F57A}", + "\u{1F57A}\u{1F3FB}", + "\u{1F57A}\u{1F3FC}", + "\u{1F57A}\u{1F3FD}", + "\u{1F57A}\u{1F3FE}", + "\u{1F57A}\u{1F3FF}", + "\u{1F587}\uFE0F", + "\u{1F58A}\uFE0F", + "\u{1F58B}\uFE0F", + "\u{1F58C}\uFE0F", + "\u{1F58D}\uFE0F", + "\u{1F590}\u{1F3FB}", + "\u{1F590}\u{1F3FC}", + "\u{1F590}\u{1F3FD}", + "\u{1F590}\u{1F3FE}", + "\u{1F590}\u{1F3FF}", + "\u{1F590}\uFE0F", + "\u{1F595}", + "\u{1F595}\u{1F3FB}", + "\u{1F595}\u{1F3FC}", + "\u{1F595}\u{1F3FD}", + "\u{1F595}\u{1F3FE}", + "\u{1F595}\u{1F3FF}", + "\u{1F596}", + "\u{1F596}\u{1F3FB}", + "\u{1F596}\u{1F3FC}", + "\u{1F596}\u{1F3FD}", + "\u{1F596}\u{1F3FE}", + "\u{1F596}\u{1F3FF}", + "\u{1F5A4}", + "\u{1F5A5}\uFE0F", + "\u{1F5A8}\uFE0F", + "\u{1F5B1}\uFE0F", + "\u{1F5B2}\uFE0F", + "\u{1F5BC}\uFE0F", + "\u{1F5C2}\uFE0F", + "\u{1F5C3}\uFE0F", + "\u{1F5C4}\uFE0F", + "\u{1F5D1}\uFE0F", + "\u{1F5D2}\uFE0F", + "\u{1F5D3}\uFE0F", + "\u{1F5DC}\uFE0F", + "\u{1F5DD}\uFE0F", + "\u{1F5DE}\uFE0F", + "\u{1F5E1}\uFE0F", + "\u{1F5E3}\uFE0F", + "\u{1F5E8}\uFE0F", + "\u{1F5EF}\uFE0F", + "\u{1F5F3}\uFE0F", + "\u{1F5FA}\uFE0F", + "\u{1F5FB}", + "\u{1F5FC}", + "\u{1F5FD}", + "\u{1F5FE}", + "\u{1F5FF}", + "\u{1F600}", + "\u{1F601}", + "\u{1F602}", + "\u{1F603}", + "\u{1F604}", + "\u{1F605}", + "\u{1F606}", + "\u{1F607}", + "\u{1F608}", + "\u{1F609}", + "\u{1F60A}", + "\u{1F60B}", + "\u{1F60C}", + "\u{1F60D}", + "\u{1F60E}", + "\u{1F60F}", + "\u{1F610}", + "\u{1F611}", + "\u{1F612}", + "\u{1F613}", + "\u{1F614}", + "\u{1F615}", + "\u{1F616}", + "\u{1F617}", + "\u{1F618}", + "\u{1F619}", + "\u{1F61A}", + "\u{1F61B}", + "\u{1F61C}", + "\u{1F61D}", + "\u{1F61E}", + "\u{1F61F}", + "\u{1F620}", + "\u{1F621}", + "\u{1F622}", + "\u{1F623}", + "\u{1F624}", + "\u{1F625}", + "\u{1F626}", + "\u{1F627}", + "\u{1F628}", + "\u{1F629}", + "\u{1F62A}", + "\u{1F62B}", + "\u{1F62C}", + "\u{1F62D}", + "\u{1F62E}", + "\u{1F62E}\u200D\u{1F4A8}", + "\u{1F62F}", + "\u{1F630}", + "\u{1F631}", + "\u{1F632}", + "\u{1F633}", + "\u{1F634}", + "\u{1F635}", + "\u{1F635}\u200D\u{1F4AB}", + "\u{1F636}", + "\u{1F636}\u200D\u{1F32B}\uFE0F", + "\u{1F637}", + "\u{1F638}", + "\u{1F639}", + "\u{1F63A}", + "\u{1F63B}", + "\u{1F63C}", + "\u{1F63D}", + "\u{1F63E}", + "\u{1F63F}", + "\u{1F640}", + "\u{1F641}", + "\u{1F642}", + "\u{1F643}", + "\u{1F644}", + "\u{1F645}", + "\u{1F645}\u200D\u2640\uFE0F", + "\u{1F645}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FB}", + "\u{1F645}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FC}", + "\u{1F645}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FD}", + "\u{1F645}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FE}", + "\u{1F645}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FF}", + "\u{1F645}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F646}", + "\u{1F646}\u200D\u2640\uFE0F", + "\u{1F646}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FB}", + "\u{1F646}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FC}", + "\u{1F646}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FD}", + "\u{1F646}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FE}", + "\u{1F646}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FF}", + "\u{1F646}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F647}", + "\u{1F647}\u200D\u2640\uFE0F", + "\u{1F647}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FB}", + "\u{1F647}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FC}", + "\u{1F647}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FD}", + "\u{1F647}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FE}", + "\u{1F647}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FF}", + "\u{1F647}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F648}", + "\u{1F649}", + "\u{1F64A}", + "\u{1F64B}", + "\u{1F64B}\u200D\u2640\uFE0F", + "\u{1F64B}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FB}", + "\u{1F64B}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FC}", + "\u{1F64B}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FD}", + "\u{1F64B}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FE}", + "\u{1F64B}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FF}", + "\u{1F64B}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F64C}", + "\u{1F64C}\u{1F3FB}", + "\u{1F64C}\u{1F3FC}", + "\u{1F64C}\u{1F3FD}", + "\u{1F64C}\u{1F3FE}", + "\u{1F64C}\u{1F3FF}", + "\u{1F64D}", + "\u{1F64D}\u200D\u2640\uFE0F", + "\u{1F64D}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FB}", + "\u{1F64D}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FC}", + "\u{1F64D}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FD}", + "\u{1F64D}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FE}", + "\u{1F64D}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FF}", + "\u{1F64D}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F64E}", + "\u{1F64E}\u200D\u2640\uFE0F", + "\u{1F64E}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FB}", + "\u{1F64E}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FC}", + "\u{1F64E}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FD}", + "\u{1F64E}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FE}", + "\u{1F64E}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FF}", + "\u{1F64E}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F64F}", + "\u{1F64F}\u{1F3FB}", + "\u{1F64F}\u{1F3FC}", + "\u{1F64F}\u{1F3FD}", + "\u{1F64F}\u{1F3FE}", + "\u{1F64F}\u{1F3FF}", + "\u{1F680}", + "\u{1F681}", + "\u{1F682}", + "\u{1F683}", + "\u{1F684}", + "\u{1F685}", + "\u{1F686}", + "\u{1F687}", + "\u{1F688}", + "\u{1F689}", + "\u{1F68A}", + "\u{1F68B}", + "\u{1F68C}", + "\u{1F68D}", + "\u{1F68E}", + "\u{1F68F}", + "\u{1F690}", + "\u{1F691}", + "\u{1F692}", + "\u{1F693}", + "\u{1F694}", + "\u{1F695}", + "\u{1F696}", + "\u{1F697}", + "\u{1F698}", + "\u{1F699}", + "\u{1F69A}", + "\u{1F69B}", + "\u{1F69C}", + "\u{1F69D}", + "\u{1F69E}", + "\u{1F69F}", + "\u{1F6A0}", + "\u{1F6A1}", + "\u{1F6A2}", + "\u{1F6A3}", + "\u{1F6A3}\u200D\u2640\uFE0F", + "\u{1F6A3}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FB}", + "\u{1F6A3}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FC}", + "\u{1F6A3}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FD}", + "\u{1F6A3}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FE}", + "\u{1F6A3}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FF}", + "\u{1F6A3}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6A4}", + "\u{1F6A5}", + "\u{1F6A6}", + "\u{1F6A7}", + "\u{1F6A8}", + "\u{1F6A9}", + "\u{1F6AA}", + "\u{1F6AB}", + "\u{1F6AC}", + "\u{1F6AD}", + "\u{1F6AE}", + "\u{1F6AF}", + "\u{1F6B0}", + "\u{1F6B1}", + "\u{1F6B2}", + "\u{1F6B3}", + "\u{1F6B4}", + "\u{1F6B4}\u200D\u2640\uFE0F", + "\u{1F6B4}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FB}", + "\u{1F6B4}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FC}", + "\u{1F6B4}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FD}", + "\u{1F6B4}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FE}", + "\u{1F6B4}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FF}", + "\u{1F6B4}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6B5}", + "\u{1F6B5}\u200D\u2640\uFE0F", + "\u{1F6B5}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FB}", + "\u{1F6B5}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FC}", + "\u{1F6B5}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FD}", + "\u{1F6B5}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FE}", + "\u{1F6B5}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FF}", + "\u{1F6B5}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6B6}", + "\u{1F6B6}\u200D\u2640\uFE0F", + "\u{1F6B6}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FB}", + "\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FC}", + "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FD}", + "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FE}", + "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FF}", + "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6B7}", + "\u{1F6B8}", + "\u{1F6B9}", + "\u{1F6BA}", + "\u{1F6BB}", + "\u{1F6BC}", + "\u{1F6BD}", + "\u{1F6BE}", + "\u{1F6BF}", + "\u{1F6C0}", + "\u{1F6C0}\u{1F3FB}", + "\u{1F6C0}\u{1F3FC}", + "\u{1F6C0}\u{1F3FD}", + "\u{1F6C0}\u{1F3FE}", + "\u{1F6C0}\u{1F3FF}", + "\u{1F6C1}", + "\u{1F6C2}", + "\u{1F6C3}", + "\u{1F6C4}", + "\u{1F6C5}", + "\u{1F6CB}\uFE0F", + "\u{1F6CC}", + "\u{1F6CC}\u{1F3FB}", + "\u{1F6CC}\u{1F3FC}", + "\u{1F6CC}\u{1F3FD}", + "\u{1F6CC}\u{1F3FE}", + "\u{1F6CC}\u{1F3FF}", + "\u{1F6CD}\uFE0F", + "\u{1F6CE}\uFE0F", + "\u{1F6CF}\uFE0F", + "\u{1F6D0}", + "\u{1F6D1}", + "\u{1F6D2}", + "\u{1F6D5}", + "\u{1F6D6}", + "\u{1F6D7}", + "\u{1F6DC}", + "\u{1F6DD}", + "\u{1F6DE}", + "\u{1F6DF}", + "\u{1F6E0}\uFE0F", + "\u{1F6E1}\uFE0F", + "\u{1F6E2}\uFE0F", + "\u{1F6E3}\uFE0F", + "\u{1F6E4}\uFE0F", + "\u{1F6E5}\uFE0F", + "\u{1F6E9}\uFE0F", + "\u{1F6EB}", + "\u{1F6EC}", + "\u{1F6F0}\uFE0F", + "\u{1F6F3}\uFE0F", + "\u{1F6F4}", + "\u{1F6F5}", + "\u{1F6F6}", + "\u{1F6F7}", + "\u{1F6F8}", + "\u{1F6F9}", + "\u{1F6FA}", + "\u{1F6FB}", + "\u{1F6FC}", + "\u{1F7E0}", + "\u{1F7E1}", + "\u{1F7E2}", + "\u{1F7E3}", + "\u{1F7E4}", + "\u{1F7E5}", + "\u{1F7E6}", + "\u{1F7E7}", + "\u{1F7E8}", + "\u{1F7E9}", + "\u{1F7EA}", + "\u{1F7EB}", + "\u{1F7F0}", + "\u{1F90C}", + "\u{1F90C}\u{1F3FB}", + "\u{1F90C}\u{1F3FC}", + "\u{1F90C}\u{1F3FD}", + "\u{1F90C}\u{1F3FE}", + "\u{1F90C}\u{1F3FF}", + "\u{1F90D}", + "\u{1F90E}", + "\u{1F90F}", + "\u{1F90F}\u{1F3FB}", + "\u{1F90F}\u{1F3FC}", + "\u{1F90F}\u{1F3FD}", + "\u{1F90F}\u{1F3FE}", + "\u{1F90F}\u{1F3FF}", + "\u{1F910}", + "\u{1F911}", + "\u{1F912}", + "\u{1F913}", + "\u{1F914}", + "\u{1F915}", + "\u{1F916}", + "\u{1F917}", + "\u{1F918}", + "\u{1F918}\u{1F3FB}", + "\u{1F918}\u{1F3FC}", + "\u{1F918}\u{1F3FD}", + "\u{1F918}\u{1F3FE}", + "\u{1F918}\u{1F3FF}", + "\u{1F919}", + "\u{1F919}\u{1F3FB}", + "\u{1F919}\u{1F3FC}", + "\u{1F919}\u{1F3FD}", + "\u{1F919}\u{1F3FE}", + "\u{1F919}\u{1F3FF}", + "\u{1F91A}", + "\u{1F91A}\u{1F3FB}", + "\u{1F91A}\u{1F3FC}", + "\u{1F91A}\u{1F3FD}", + "\u{1F91A}\u{1F3FE}", + "\u{1F91A}\u{1F3FF}", + "\u{1F91B}", + "\u{1F91B}\u{1F3FB}", + "\u{1F91B}\u{1F3FC}", + "\u{1F91B}\u{1F3FD}", + "\u{1F91B}\u{1F3FE}", + "\u{1F91B}\u{1F3FF}", + "\u{1F91C}", + "\u{1F91C}\u{1F3FB}", + "\u{1F91C}\u{1F3FC}", + "\u{1F91C}\u{1F3FD}", + "\u{1F91C}\u{1F3FE}", + "\u{1F91C}\u{1F3FF}", + "\u{1F91D}", + "\u{1F91D}\u{1F3FB}", + "\u{1F91D}\u{1F3FC}", + "\u{1F91D}\u{1F3FD}", + "\u{1F91D}\u{1F3FE}", + "\u{1F91D}\u{1F3FF}", + "\u{1F91E}", + "\u{1F91E}\u{1F3FB}", + "\u{1F91E}\u{1F3FC}", + "\u{1F91E}\u{1F3FD}", + "\u{1F91E}\u{1F3FE}", + "\u{1F91E}\u{1F3FF}", + "\u{1F91F}", + "\u{1F91F}\u{1F3FB}", + "\u{1F91F}\u{1F3FC}", + "\u{1F91F}\u{1F3FD}", + "\u{1F91F}\u{1F3FE}", + "\u{1F91F}\u{1F3FF}", + "\u{1F920}", + "\u{1F921}", + "\u{1F922}", + "\u{1F923}", + "\u{1F924}", + "\u{1F925}", + "\u{1F926}", + "\u{1F926}\u200D\u2640\uFE0F", + "\u{1F926}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FB}", + "\u{1F926}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FC}", + "\u{1F926}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FD}", + "\u{1F926}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FE}", + "\u{1F926}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FF}", + "\u{1F926}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F927}", + "\u{1F928}", + "\u{1F929}", + "\u{1F92A}", + "\u{1F92B}", + "\u{1F92C}", + "\u{1F92D}", + "\u{1F92E}", + "\u{1F92F}", + "\u{1F930}", + "\u{1F930}\u{1F3FB}", + "\u{1F930}\u{1F3FC}", + "\u{1F930}\u{1F3FD}", + "\u{1F930}\u{1F3FE}", + "\u{1F930}\u{1F3FF}", + "\u{1F931}", + "\u{1F931}\u{1F3FB}", + "\u{1F931}\u{1F3FC}", + "\u{1F931}\u{1F3FD}", + "\u{1F931}\u{1F3FE}", + "\u{1F931}\u{1F3FF}", + "\u{1F932}", + "\u{1F932}\u{1F3FB}", + "\u{1F932}\u{1F3FC}", + "\u{1F932}\u{1F3FD}", + "\u{1F932}\u{1F3FE}", + "\u{1F932}\u{1F3FF}", + "\u{1F933}", + "\u{1F933}\u{1F3FB}", + "\u{1F933}\u{1F3FC}", + "\u{1F933}\u{1F3FD}", + "\u{1F933}\u{1F3FE}", + "\u{1F933}\u{1F3FF}", + "\u{1F934}", + "\u{1F934}\u{1F3FB}", + "\u{1F934}\u{1F3FC}", + "\u{1F934}\u{1F3FD}", + "\u{1F934}\u{1F3FE}", + "\u{1F934}\u{1F3FF}", + "\u{1F935}", + "\u{1F935}\u200D\u2640\uFE0F", + "\u{1F935}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FB}", + "\u{1F935}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FC}", + "\u{1F935}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FD}", + "\u{1F935}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FE}", + "\u{1F935}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FF}", + "\u{1F935}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F936}", + "\u{1F936}\u{1F3FB}", + "\u{1F936}\u{1F3FC}", + "\u{1F936}\u{1F3FD}", + "\u{1F936}\u{1F3FE}", + "\u{1F936}\u{1F3FF}", + "\u{1F937}", + "\u{1F937}\u200D\u2640\uFE0F", + "\u{1F937}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FB}", + "\u{1F937}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FC}", + "\u{1F937}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FD}", + "\u{1F937}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FE}", + "\u{1F937}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FF}", + "\u{1F937}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F938}", + "\u{1F938}\u200D\u2640\uFE0F", + "\u{1F938}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FB}", + "\u{1F938}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FC}", + "\u{1F938}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FD}", + "\u{1F938}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FE}", + "\u{1F938}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FF}", + "\u{1F938}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F939}", + "\u{1F939}\u200D\u2640\uFE0F", + "\u{1F939}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FB}", + "\u{1F939}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FC}", + "\u{1F939}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FD}", + "\u{1F939}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FE}", + "\u{1F939}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FF}", + "\u{1F939}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F93A}", + "\u{1F93C}", + "\u{1F93C}\u200D\u2640\uFE0F", + "\u{1F93C}\u200D\u2642\uFE0F", + "\u{1F93D}", + "\u{1F93D}\u200D\u2640\uFE0F", + "\u{1F93D}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FB}", + "\u{1F93D}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FC}", + "\u{1F93D}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FD}", + "\u{1F93D}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FE}", + "\u{1F93D}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FF}", + "\u{1F93D}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F93E}", + "\u{1F93E}\u200D\u2640\uFE0F", + "\u{1F93E}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FB}", + "\u{1F93E}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FC}", + "\u{1F93E}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FD}", + "\u{1F93E}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FE}", + "\u{1F93E}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FF}", + "\u{1F93E}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F93F}", + "\u{1F940}", + "\u{1F941}", + "\u{1F942}", + "\u{1F943}", + "\u{1F944}", + "\u{1F945}", + "\u{1F947}", + "\u{1F948}", + "\u{1F949}", + "\u{1F94A}", + "\u{1F94B}", + "\u{1F94C}", + "\u{1F94D}", + "\u{1F94E}", + "\u{1F94F}", + "\u{1F950}", + "\u{1F951}", + "\u{1F952}", + "\u{1F953}", + "\u{1F954}", + "\u{1F955}", + "\u{1F956}", + "\u{1F957}", + "\u{1F958}", + "\u{1F959}", + "\u{1F95A}", + "\u{1F95B}", + "\u{1F95C}", + "\u{1F95D}", + "\u{1F95E}", + "\u{1F95F}", + "\u{1F960}", + "\u{1F961}", + "\u{1F962}", + "\u{1F963}", + "\u{1F964}", + "\u{1F965}", + "\u{1F966}", + "\u{1F967}", + "\u{1F968}", + "\u{1F969}", + "\u{1F96A}", + "\u{1F96B}", + "\u{1F96C}", + "\u{1F96D}", + "\u{1F96E}", + "\u{1F96F}", + "\u{1F970}", + "\u{1F971}", + "\u{1F972}", + "\u{1F973}", + "\u{1F974}", + "\u{1F975}", + "\u{1F976}", + "\u{1F977}", + "\u{1F977}\u{1F3FB}", + "\u{1F977}\u{1F3FC}", + "\u{1F977}\u{1F3FD}", + "\u{1F977}\u{1F3FE}", + "\u{1F977}\u{1F3FF}", + "\u{1F978}", + "\u{1F979}", + "\u{1F97A}", + "\u{1F97B}", + "\u{1F97C}", + "\u{1F97D}", + "\u{1F97E}", + "\u{1F97F}", + "\u{1F980}", + "\u{1F981}", + "\u{1F982}", + "\u{1F983}", + "\u{1F984}", + "\u{1F985}", + "\u{1F986}", + "\u{1F987}", + "\u{1F988}", + "\u{1F989}", + "\u{1F98A}", + "\u{1F98B}", + "\u{1F98C}", + "\u{1F98D}", + "\u{1F98E}", + "\u{1F98F}", + "\u{1F990}", + "\u{1F991}", + "\u{1F992}", + "\u{1F993}", + "\u{1F994}", + "\u{1F995}", + "\u{1F996}", + "\u{1F997}", + "\u{1F998}", + "\u{1F999}", + "\u{1F99A}", + "\u{1F99B}", + "\u{1F99C}", + "\u{1F99D}", + "\u{1F99E}", + "\u{1F99F}", + "\u{1F9A0}", + "\u{1F9A1}", + "\u{1F9A2}", + "\u{1F9A3}", + "\u{1F9A4}", + "\u{1F9A5}", + "\u{1F9A6}", + "\u{1F9A7}", + "\u{1F9A8}", + "\u{1F9A9}", + "\u{1F9AA}", + "\u{1F9AB}", + "\u{1F9AC}", + "\u{1F9AD}", + "\u{1F9AE}", + "\u{1F9AF}", + "\u{1F9B0}", + "\u{1F9B1}", + "\u{1F9B2}", + "\u{1F9B3}", + "\u{1F9B4}", + "\u{1F9B5}", + "\u{1F9B5}\u{1F3FB}", + "\u{1F9B5}\u{1F3FC}", + "\u{1F9B5}\u{1F3FD}", + "\u{1F9B5}\u{1F3FE}", + "\u{1F9B5}\u{1F3FF}", + "\u{1F9B6}", + "\u{1F9B6}\u{1F3FB}", + "\u{1F9B6}\u{1F3FC}", + "\u{1F9B6}\u{1F3FD}", + "\u{1F9B6}\u{1F3FE}", + "\u{1F9B6}\u{1F3FF}", + "\u{1F9B7}", + "\u{1F9B8}", + "\u{1F9B8}\u200D\u2640\uFE0F", + "\u{1F9B8}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FB}", + "\u{1F9B8}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FC}", + "\u{1F9B8}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FD}", + "\u{1F9B8}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FE}", + "\u{1F9B8}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FF}", + "\u{1F9B8}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9B9}", + "\u{1F9B9}\u200D\u2640\uFE0F", + "\u{1F9B9}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FB}", + "\u{1F9B9}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FC}", + "\u{1F9B9}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FD}", + "\u{1F9B9}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FE}", + "\u{1F9B9}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FF}", + "\u{1F9B9}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9BA}", + "\u{1F9BB}", + "\u{1F9BB}\u{1F3FB}", + "\u{1F9BB}\u{1F3FC}", + "\u{1F9BB}\u{1F3FD}", + "\u{1F9BB}\u{1F3FE}", + "\u{1F9BB}\u{1F3FF}", + "\u{1F9BC}", + "\u{1F9BD}", + "\u{1F9BE}", + "\u{1F9BF}", + "\u{1F9C0}", + "\u{1F9C1}", + "\u{1F9C2}", + "\u{1F9C3}", + "\u{1F9C4}", + "\u{1F9C5}", + "\u{1F9C6}", + "\u{1F9C7}", + "\u{1F9C8}", + "\u{1F9C9}", + "\u{1F9CA}", + "\u{1F9CB}", + "\u{1F9CC}", + "\u{1F9CD}", + "\u{1F9CD}\u200D\u2640\uFE0F", + "\u{1F9CD}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FB}", + "\u{1F9CD}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FC}", + "\u{1F9CD}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FD}", + "\u{1F9CD}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FE}", + "\u{1F9CD}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FF}", + "\u{1F9CD}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9CE}", + "\u{1F9CE}\u200D\u2640\uFE0F", + "\u{1F9CE}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FB}", + "\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FC}", + "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FD}", + "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FE}", + "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FF}", + "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9CF}", + "\u{1F9CF}\u200D\u2640\uFE0F", + "\u{1F9CF}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FB}", + "\u{1F9CF}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FC}", + "\u{1F9CF}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FD}", + "\u{1F9CF}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FE}", + "\u{1F9CF}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FF}", + "\u{1F9CF}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D0}", + "\u{1F9D1}", + "\u{1F9D1}\u200D\u2695\uFE0F", + "\u{1F9D1}\u200D\u2696\uFE0F", + "\u{1F9D1}\u200D\u2708\uFE0F", + "\u{1F9D1}\u200D\u{1F33E}", + "\u{1F9D1}\u200D\u{1F373}", + "\u{1F9D1}\u200D\u{1F37C}", + "\u{1F9D1}\u200D\u{1F384}", + "\u{1F9D1}\u200D\u{1F393}", + "\u{1F9D1}\u200D\u{1F3A4}", + "\u{1F9D1}\u200D\u{1F3A8}", + "\u{1F9D1}\u200D\u{1F3EB}", + "\u{1F9D1}\u200D\u{1F3ED}", + "\u{1F9D1}\u200D\u{1F4BB}", + "\u{1F9D1}\u200D\u{1F4BC}", + "\u{1F9D1}\u200D\u{1F527}", + "\u{1F9D1}\u200D\u{1F52C}", + "\u{1F9D1}\u200D\u{1F680}", + "\u{1F9D1}\u200D\u{1F692}", + "\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}", + "\u{1F9D1}\u200D\u{1F9AF}", + "\u{1F9D1}\u200D\u{1F9B0}", + "\u{1F9D1}\u200D\u{1F9B1}", + "\u{1F9D1}\u200D\u{1F9B2}", + "\u{1F9D1}\u200D\u{1F9B3}", + "\u{1F9D1}\u200D\u{1F9BC}", + "\u{1F9D1}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FB}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FC}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FD}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FE}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FF}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F9D2}", + "\u{1F9D2}\u{1F3FB}", + "\u{1F9D2}\u{1F3FC}", + "\u{1F9D2}\u{1F3FD}", + "\u{1F9D2}\u{1F3FE}", + "\u{1F9D2}\u{1F3FF}", + "\u{1F9D3}", + "\u{1F9D3}\u{1F3FB}", + "\u{1F9D3}\u{1F3FC}", + "\u{1F9D3}\u{1F3FD}", + "\u{1F9D3}\u{1F3FE}", + "\u{1F9D3}\u{1F3FF}", + "\u{1F9D4}", + "\u{1F9D4}\u200D\u2640\uFE0F", + "\u{1F9D4}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FB}", + "\u{1F9D4}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FC}", + "\u{1F9D4}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FD}", + "\u{1F9D4}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FE}", + "\u{1F9D4}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FF}", + "\u{1F9D4}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D5}", + "\u{1F9D5}\u{1F3FB}", + "\u{1F9D5}\u{1F3FC}", + "\u{1F9D5}\u{1F3FD}", + "\u{1F9D5}\u{1F3FE}", + "\u{1F9D5}\u{1F3FF}", + "\u{1F9D6}", + "\u{1F9D6}\u200D\u2640\uFE0F", + "\u{1F9D6}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FB}", + "\u{1F9D6}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FC}", + "\u{1F9D6}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FD}", + "\u{1F9D6}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FE}", + "\u{1F9D6}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FF}", + "\u{1F9D6}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D7}", + "\u{1F9D7}\u200D\u2640\uFE0F", + "\u{1F9D7}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FB}", + "\u{1F9D7}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FC}", + "\u{1F9D7}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FD}", + "\u{1F9D7}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FE}", + "\u{1F9D7}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FF}", + "\u{1F9D7}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D8}", + "\u{1F9D8}\u200D\u2640\uFE0F", + "\u{1F9D8}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FB}", + "\u{1F9D8}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FC}", + "\u{1F9D8}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FD}", + "\u{1F9D8}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FE}", + "\u{1F9D8}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FF}", + "\u{1F9D8}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D9}", + "\u{1F9D9}\u200D\u2640\uFE0F", + "\u{1F9D9}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FB}", + "\u{1F9D9}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FC}", + "\u{1F9D9}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FD}", + "\u{1F9D9}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FE}", + "\u{1F9D9}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FF}", + "\u{1F9D9}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DA}", + "\u{1F9DA}\u200D\u2640\uFE0F", + "\u{1F9DA}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FB}", + "\u{1F9DA}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FC}", + "\u{1F9DA}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FD}", + "\u{1F9DA}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FE}", + "\u{1F9DA}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FF}", + "\u{1F9DA}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DB}", + "\u{1F9DB}\u200D\u2640\uFE0F", + "\u{1F9DB}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FB}", + "\u{1F9DB}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FC}", + "\u{1F9DB}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FD}", + "\u{1F9DB}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FE}", + "\u{1F9DB}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FF}", + "\u{1F9DB}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DC}", + "\u{1F9DC}\u200D\u2640\uFE0F", + "\u{1F9DC}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FB}", + "\u{1F9DC}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FC}", + "\u{1F9DC}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FD}", + "\u{1F9DC}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FE}", + "\u{1F9DC}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FF}", + "\u{1F9DC}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DD}", + "\u{1F9DD}\u200D\u2640\uFE0F", + "\u{1F9DD}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FB}", + "\u{1F9DD}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FC}", + "\u{1F9DD}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FD}", + "\u{1F9DD}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FE}", + "\u{1F9DD}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FF}", + "\u{1F9DD}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DE}", + "\u{1F9DE}\u200D\u2640\uFE0F", + "\u{1F9DE}\u200D\u2642\uFE0F", + "\u{1F9DF}", + "\u{1F9DF}\u200D\u2640\uFE0F", + "\u{1F9DF}\u200D\u2642\uFE0F", + "\u{1F9E0}", + "\u{1F9E1}", + "\u{1F9E2}", + "\u{1F9E3}", + "\u{1F9E4}", + "\u{1F9E5}", + "\u{1F9E6}", + "\u{1F9E7}", + "\u{1F9E8}", + "\u{1F9E9}", + "\u{1F9EA}", + "\u{1F9EB}", + "\u{1F9EC}", + "\u{1F9ED}", + "\u{1F9EE}", + "\u{1F9EF}", + "\u{1F9F0}", + "\u{1F9F1}", + "\u{1F9F2}", + "\u{1F9F3}", + "\u{1F9F4}", + "\u{1F9F5}", + "\u{1F9F6}", + "\u{1F9F7}", + "\u{1F9F8}", + "\u{1F9F9}", + "\u{1F9FA}", + "\u{1F9FB}", + "\u{1F9FC}", + "\u{1F9FD}", + "\u{1F9FE}", + "\u{1F9FF}", + "\u{1FA70}", + "\u{1FA71}", + "\u{1FA72}", + "\u{1FA73}", + "\u{1FA74}", + "\u{1FA75}", + "\u{1FA76}", + "\u{1FA77}", + "\u{1FA78}", + "\u{1FA79}", + "\u{1FA7A}", + "\u{1FA7B}", + "\u{1FA7C}", + "\u{1FA80}", + "\u{1FA81}", + "\u{1FA82}", + "\u{1FA83}", + "\u{1FA84}", + "\u{1FA85}", + "\u{1FA86}", + "\u{1FA87}", + "\u{1FA88}", + "\u{1FA90}", + "\u{1FA91}", + "\u{1FA92}", + "\u{1FA93}", + "\u{1FA94}", + "\u{1FA95}", + "\u{1FA96}", + "\u{1FA97}", + "\u{1FA98}", + "\u{1FA99}", + "\u{1FA9A}", + "\u{1FA9B}", + "\u{1FA9C}", + "\u{1FA9D}", + "\u{1FA9E}", + "\u{1FA9F}", + "\u{1FAA0}", + "\u{1FAA1}", + "\u{1FAA2}", + "\u{1FAA3}", + "\u{1FAA4}", + "\u{1FAA5}", + "\u{1FAA6}", + "\u{1FAA7}", + "\u{1FAA8}", + "\u{1FAA9}", + "\u{1FAAA}", + "\u{1FAAB}", + "\u{1FAAC}", + "\u{1FAAD}", + "\u{1FAAE}", + "\u{1FAAF}", + "\u{1FAB0}", + "\u{1FAB1}", + "\u{1FAB2}", + "\u{1FAB3}", + "\u{1FAB4}", + "\u{1FAB5}", + "\u{1FAB6}", + "\u{1FAB7}", + "\u{1FAB8}", + "\u{1FAB9}", + "\u{1FABA}", + "\u{1FABB}", + "\u{1FABC}", + "\u{1FABD}", + "\u{1FABF}", + "\u{1FAC0}", + "\u{1FAC1}", + "\u{1FAC2}", + "\u{1FAC3}", + "\u{1FAC3}\u{1F3FB}", + "\u{1FAC3}\u{1F3FC}", + "\u{1FAC3}\u{1F3FD}", + "\u{1FAC3}\u{1F3FE}", + "\u{1FAC3}\u{1F3FF}", + "\u{1FAC4}", + "\u{1FAC4}\u{1F3FB}", + "\u{1FAC4}\u{1F3FC}", + "\u{1FAC4}\u{1F3FD}", + "\u{1FAC4}\u{1F3FE}", + "\u{1FAC4}\u{1F3FF}", + "\u{1FAC5}", + "\u{1FAC5}\u{1F3FB}", + "\u{1FAC5}\u{1F3FC}", + "\u{1FAC5}\u{1F3FD}", + "\u{1FAC5}\u{1F3FE}", + "\u{1FAC5}\u{1F3FF}", + "\u{1FACE}", + "\u{1FACF}", + "\u{1FAD0}", + "\u{1FAD1}", + "\u{1FAD2}", + "\u{1FAD3}", + "\u{1FAD4}", + "\u{1FAD5}", + "\u{1FAD6}", + "\u{1FAD7}", + "\u{1FAD8}", + "\u{1FAD9}", + "\u{1FADA}", + "\u{1FADB}", + "\u{1FAE0}", + "\u{1FAE1}", + "\u{1FAE2}", + "\u{1FAE3}", + "\u{1FAE4}", + "\u{1FAE5}", + "\u{1FAE6}", + "\u{1FAE7}", + "\u{1FAE8}", + "\u{1FAF0}", + "\u{1FAF0}\u{1F3FB}", + "\u{1FAF0}\u{1F3FC}", + "\u{1FAF0}\u{1F3FD}", + "\u{1FAF0}\u{1F3FE}", + "\u{1FAF0}\u{1F3FF}", + "\u{1FAF1}", + "\u{1FAF1}\u{1F3FB}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FC}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FD}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FE}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FF}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF2}", + "\u{1FAF2}\u{1F3FB}", + "\u{1FAF2}\u{1F3FC}", + "\u{1FAF2}\u{1F3FD}", + "\u{1FAF2}\u{1F3FE}", + "\u{1FAF2}\u{1F3FF}", + "\u{1FAF3}", + "\u{1FAF3}\u{1F3FB}", + "\u{1FAF3}\u{1F3FC}", + "\u{1FAF3}\u{1F3FD}", + "\u{1FAF3}\u{1F3FE}", + "\u{1FAF3}\u{1F3FF}", + "\u{1FAF4}", + "\u{1FAF4}\u{1F3FB}", + "\u{1FAF4}\u{1F3FC}", + "\u{1FAF4}\u{1F3FD}", + "\u{1FAF4}\u{1F3FE}", + "\u{1FAF4}\u{1F3FF}", + "\u{1FAF5}", + "\u{1FAF5}\u{1F3FB}", + "\u{1FAF5}\u{1F3FC}", + "\u{1FAF5}\u{1F3FD}", + "\u{1FAF5}\u{1F3FE}", + "\u{1FAF5}\u{1F3FF}", + "\u{1FAF6}", + "\u{1FAF6}\u{1F3FB}", + "\u{1FAF6}\u{1F3FC}", + "\u{1FAF6}\u{1F3FD}", + "\u{1FAF6}\u{1F3FE}", + "\u{1FAF6}\u{1F3FF}", + "\u{1FAF7}", + "\u{1FAF7}\u{1F3FB}", + "\u{1FAF7}\u{1F3FC}", + "\u{1FAF7}\u{1F3FD}", + "\u{1FAF7}\u{1F3FE}", + "\u{1FAF7}\u{1F3FF}", + "\u{1FAF8}", + "\u{1FAF8}\u{1F3FB}", + "\u{1FAF8}\u{1F3FC}", + "\u{1FAF8}\u{1F3FD}", + "\u{1FAF8}\u{1F3FE}", + "\u{1FAF8}\u{1F3FF}" + ], + nonMatchStrings: [ + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js new file mode 100644 index 0000000000..bebfe18a60 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-CharacterClass.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) with `[^\p{…}]` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/[^\p{RGI_Emoji_Flag_Sequence}]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js new file mode 100644 index 0000000000..7cfcba16d1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-P.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji_Flag_Sequence` (property of strings) with `\P{…}` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\P{RGI_Emoji_Flag_Sequence}/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js new file mode 100644 index 0000000000..fe92444da3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence-negative-u.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 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 for `RGI_Emoji_Flag_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-patterns-static-semantics-early-errors +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\p{RGI_Emoji_Flag_Sequence}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js new file mode 100644 index 0000000000..f8d4627cbb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Flag_Sequence.js @@ -0,0 +1,293 @@ +// Copyright 2022 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 for `RGI_Emoji_Flag_Sequence` (property of strings) +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji_Flag_Sequence}+$/v, + expression: "\\p{RGI_Emoji_Flag_Sequence}", + matchStrings: [ + "\u{1F1E6}\u{1F1E8}", + "\u{1F1E6}\u{1F1E9}", + "\u{1F1E6}\u{1F1EA}", + "\u{1F1E6}\u{1F1EB}", + "\u{1F1E6}\u{1F1EC}", + "\u{1F1E6}\u{1F1EE}", + "\u{1F1E6}\u{1F1F1}", + "\u{1F1E6}\u{1F1F2}", + "\u{1F1E6}\u{1F1F4}", + "\u{1F1E6}\u{1F1F6}", + "\u{1F1E6}\u{1F1F7}", + "\u{1F1E6}\u{1F1F8}", + "\u{1F1E6}\u{1F1F9}", + "\u{1F1E6}\u{1F1FA}", + "\u{1F1E6}\u{1F1FC}", + "\u{1F1E6}\u{1F1FD}", + "\u{1F1E6}\u{1F1FF}", + "\u{1F1E7}\u{1F1E6}", + "\u{1F1E7}\u{1F1E7}", + "\u{1F1E7}\u{1F1E9}", + "\u{1F1E7}\u{1F1EA}", + "\u{1F1E7}\u{1F1EB}", + "\u{1F1E7}\u{1F1EC}", + "\u{1F1E7}\u{1F1ED}", + "\u{1F1E7}\u{1F1EE}", + "\u{1F1E7}\u{1F1EF}", + "\u{1F1E7}\u{1F1F1}", + "\u{1F1E7}\u{1F1F2}", + "\u{1F1E7}\u{1F1F3}", + "\u{1F1E7}\u{1F1F4}", + "\u{1F1E7}\u{1F1F6}", + "\u{1F1E7}\u{1F1F7}", + "\u{1F1E7}\u{1F1F8}", + "\u{1F1E7}\u{1F1F9}", + "\u{1F1E7}\u{1F1FB}", + "\u{1F1E7}\u{1F1FC}", + "\u{1F1E7}\u{1F1FE}", + "\u{1F1E7}\u{1F1FF}", + "\u{1F1E8}\u{1F1E6}", + "\u{1F1E8}\u{1F1E8}", + "\u{1F1E8}\u{1F1E9}", + "\u{1F1E8}\u{1F1EB}", + "\u{1F1E8}\u{1F1EC}", + "\u{1F1E8}\u{1F1ED}", + "\u{1F1E8}\u{1F1EE}", + "\u{1F1E8}\u{1F1F0}", + "\u{1F1E8}\u{1F1F1}", + "\u{1F1E8}\u{1F1F2}", + "\u{1F1E8}\u{1F1F3}", + "\u{1F1E8}\u{1F1F4}", + "\u{1F1E8}\u{1F1F5}", + "\u{1F1E8}\u{1F1F7}", + "\u{1F1E8}\u{1F1FA}", + "\u{1F1E8}\u{1F1FB}", + "\u{1F1E8}\u{1F1FC}", + "\u{1F1E8}\u{1F1FD}", + "\u{1F1E8}\u{1F1FE}", + "\u{1F1E8}\u{1F1FF}", + "\u{1F1E9}\u{1F1EA}", + "\u{1F1E9}\u{1F1EC}", + "\u{1F1E9}\u{1F1EF}", + "\u{1F1E9}\u{1F1F0}", + "\u{1F1E9}\u{1F1F2}", + "\u{1F1E9}\u{1F1F4}", + "\u{1F1E9}\u{1F1FF}", + "\u{1F1EA}\u{1F1E6}", + "\u{1F1EA}\u{1F1E8}", + "\u{1F1EA}\u{1F1EA}", + "\u{1F1EA}\u{1F1EC}", + "\u{1F1EA}\u{1F1ED}", + "\u{1F1EA}\u{1F1F7}", + "\u{1F1EA}\u{1F1F8}", + "\u{1F1EA}\u{1F1F9}", + "\u{1F1EA}\u{1F1FA}", + "\u{1F1EB}\u{1F1EE}", + "\u{1F1EB}\u{1F1EF}", + "\u{1F1EB}\u{1F1F0}", + "\u{1F1EB}\u{1F1F2}", + "\u{1F1EB}\u{1F1F4}", + "\u{1F1EB}\u{1F1F7}", + "\u{1F1EC}\u{1F1E6}", + "\u{1F1EC}\u{1F1E7}", + "\u{1F1EC}\u{1F1E9}", + "\u{1F1EC}\u{1F1EA}", + "\u{1F1EC}\u{1F1EB}", + "\u{1F1EC}\u{1F1EC}", + "\u{1F1EC}\u{1F1ED}", + "\u{1F1EC}\u{1F1EE}", + "\u{1F1EC}\u{1F1F1}", + "\u{1F1EC}\u{1F1F2}", + "\u{1F1EC}\u{1F1F3}", + "\u{1F1EC}\u{1F1F5}", + "\u{1F1EC}\u{1F1F6}", + "\u{1F1EC}\u{1F1F7}", + "\u{1F1EC}\u{1F1F8}", + "\u{1F1EC}\u{1F1F9}", + "\u{1F1EC}\u{1F1FA}", + "\u{1F1EC}\u{1F1FC}", + "\u{1F1EC}\u{1F1FE}", + "\u{1F1ED}\u{1F1F0}", + "\u{1F1ED}\u{1F1F2}", + "\u{1F1ED}\u{1F1F3}", + "\u{1F1ED}\u{1F1F7}", + "\u{1F1ED}\u{1F1F9}", + "\u{1F1ED}\u{1F1FA}", + "\u{1F1EE}\u{1F1E8}", + "\u{1F1EE}\u{1F1E9}", + "\u{1F1EE}\u{1F1EA}", + "\u{1F1EE}\u{1F1F1}", + "\u{1F1EE}\u{1F1F2}", + "\u{1F1EE}\u{1F1F3}", + "\u{1F1EE}\u{1F1F4}", + "\u{1F1EE}\u{1F1F6}", + "\u{1F1EE}\u{1F1F7}", + "\u{1F1EE}\u{1F1F8}", + "\u{1F1EE}\u{1F1F9}", + "\u{1F1EF}\u{1F1EA}", + "\u{1F1EF}\u{1F1F2}", + "\u{1F1EF}\u{1F1F4}", + "\u{1F1EF}\u{1F1F5}", + "\u{1F1F0}\u{1F1EA}", + "\u{1F1F0}\u{1F1EC}", + "\u{1F1F0}\u{1F1ED}", + "\u{1F1F0}\u{1F1EE}", + "\u{1F1F0}\u{1F1F2}", + "\u{1F1F0}\u{1F1F3}", + "\u{1F1F0}\u{1F1F5}", + "\u{1F1F0}\u{1F1F7}", + "\u{1F1F0}\u{1F1FC}", + "\u{1F1F0}\u{1F1FE}", + "\u{1F1F0}\u{1F1FF}", + "\u{1F1F1}\u{1F1E6}", + "\u{1F1F1}\u{1F1E7}", + "\u{1F1F1}\u{1F1E8}", + "\u{1F1F1}\u{1F1EE}", + "\u{1F1F1}\u{1F1F0}", + "\u{1F1F1}\u{1F1F7}", + "\u{1F1F1}\u{1F1F8}", + "\u{1F1F1}\u{1F1F9}", + "\u{1F1F1}\u{1F1FA}", + "\u{1F1F1}\u{1F1FB}", + "\u{1F1F1}\u{1F1FE}", + "\u{1F1F2}\u{1F1E6}", + "\u{1F1F2}\u{1F1E8}", + "\u{1F1F2}\u{1F1E9}", + "\u{1F1F2}\u{1F1EA}", + "\u{1F1F2}\u{1F1EB}", + "\u{1F1F2}\u{1F1EC}", + "\u{1F1F2}\u{1F1ED}", + "\u{1F1F2}\u{1F1F0}", + "\u{1F1F2}\u{1F1F1}", + "\u{1F1F2}\u{1F1F2}", + "\u{1F1F2}\u{1F1F3}", + "\u{1F1F2}\u{1F1F4}", + "\u{1F1F2}\u{1F1F5}", + "\u{1F1F2}\u{1F1F6}", + "\u{1F1F2}\u{1F1F7}", + "\u{1F1F2}\u{1F1F8}", + "\u{1F1F2}\u{1F1F9}", + "\u{1F1F2}\u{1F1FA}", + "\u{1F1F2}\u{1F1FB}", + "\u{1F1F2}\u{1F1FC}", + "\u{1F1F2}\u{1F1FD}", + "\u{1F1F2}\u{1F1FE}", + "\u{1F1F2}\u{1F1FF}", + "\u{1F1F3}\u{1F1E6}", + "\u{1F1F3}\u{1F1E8}", + "\u{1F1F3}\u{1F1EA}", + "\u{1F1F3}\u{1F1EB}", + "\u{1F1F3}\u{1F1EC}", + "\u{1F1F3}\u{1F1EE}", + "\u{1F1F3}\u{1F1F1}", + "\u{1F1F3}\u{1F1F4}", + "\u{1F1F3}\u{1F1F5}", + "\u{1F1F3}\u{1F1F7}", + "\u{1F1F3}\u{1F1FA}", + "\u{1F1F3}\u{1F1FF}", + "\u{1F1F4}\u{1F1F2}", + "\u{1F1F5}\u{1F1E6}", + "\u{1F1F5}\u{1F1EA}", + "\u{1F1F5}\u{1F1EB}", + "\u{1F1F5}\u{1F1EC}", + "\u{1F1F5}\u{1F1ED}", + "\u{1F1F5}\u{1F1F0}", + "\u{1F1F5}\u{1F1F1}", + "\u{1F1F5}\u{1F1F2}", + "\u{1F1F5}\u{1F1F3}", + "\u{1F1F5}\u{1F1F7}", + "\u{1F1F5}\u{1F1F8}", + "\u{1F1F5}\u{1F1F9}", + "\u{1F1F5}\u{1F1FC}", + "\u{1F1F5}\u{1F1FE}", + "\u{1F1F6}\u{1F1E6}", + "\u{1F1F7}\u{1F1EA}", + "\u{1F1F7}\u{1F1F4}", + "\u{1F1F7}\u{1F1F8}", + "\u{1F1F7}\u{1F1FA}", + "\u{1F1F7}\u{1F1FC}", + "\u{1F1F8}\u{1F1E6}", + "\u{1F1F8}\u{1F1E7}", + "\u{1F1F8}\u{1F1E8}", + "\u{1F1F8}\u{1F1E9}", + "\u{1F1F8}\u{1F1EA}", + "\u{1F1F8}\u{1F1EC}", + "\u{1F1F8}\u{1F1ED}", + "\u{1F1F8}\u{1F1EE}", + "\u{1F1F8}\u{1F1EF}", + "\u{1F1F8}\u{1F1F0}", + "\u{1F1F8}\u{1F1F1}", + "\u{1F1F8}\u{1F1F2}", + "\u{1F1F8}\u{1F1F3}", + "\u{1F1F8}\u{1F1F4}", + "\u{1F1F8}\u{1F1F7}", + "\u{1F1F8}\u{1F1F8}", + "\u{1F1F8}\u{1F1F9}", + "\u{1F1F8}\u{1F1FB}", + "\u{1F1F8}\u{1F1FD}", + "\u{1F1F8}\u{1F1FE}", + "\u{1F1F8}\u{1F1FF}", + "\u{1F1F9}\u{1F1E6}", + "\u{1F1F9}\u{1F1E8}", + "\u{1F1F9}\u{1F1E9}", + "\u{1F1F9}\u{1F1EB}", + "\u{1F1F9}\u{1F1EC}", + "\u{1F1F9}\u{1F1ED}", + "\u{1F1F9}\u{1F1EF}", + "\u{1F1F9}\u{1F1F0}", + "\u{1F1F9}\u{1F1F1}", + "\u{1F1F9}\u{1F1F2}", + "\u{1F1F9}\u{1F1F3}", + "\u{1F1F9}\u{1F1F4}", + "\u{1F1F9}\u{1F1F7}", + "\u{1F1F9}\u{1F1F9}", + "\u{1F1F9}\u{1F1FB}", + "\u{1F1F9}\u{1F1FC}", + "\u{1F1F9}\u{1F1FF}", + "\u{1F1FA}\u{1F1E6}", + "\u{1F1FA}\u{1F1EC}", + "\u{1F1FA}\u{1F1F2}", + "\u{1F1FA}\u{1F1F3}", + "\u{1F1FA}\u{1F1F8}", + "\u{1F1FA}\u{1F1FE}", + "\u{1F1FA}\u{1F1FF}", + "\u{1F1FB}\u{1F1E6}", + "\u{1F1FB}\u{1F1E8}", + "\u{1F1FB}\u{1F1EA}", + "\u{1F1FB}\u{1F1EC}", + "\u{1F1FB}\u{1F1EE}", + "\u{1F1FB}\u{1F1F3}", + "\u{1F1FB}\u{1F1FA}", + "\u{1F1FC}\u{1F1EB}", + "\u{1F1FC}\u{1F1F8}", + "\u{1F1FD}\u{1F1F0}", + "\u{1F1FE}\u{1F1EA}", + "\u{1F1FE}\u{1F1F9}", + "\u{1F1FF}\u{1F1E6}", + "\u{1F1FF}\u{1F1F2}", + "\u{1F1FF}\u{1F1FC}" + ], + nonMatchStrings: [ + "\u{1F1E8}", + "\u{1F1E6}", + "\u{1F1E9}", + "\u{1F1E6}", + "\u{1F1EA}", + "\u{1F1E6}", + "\u{1F1EB}", + "\u{1F1E6}", + "\u{1F1EC}", + "\u{1F1E6}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js new file mode 100644 index 0000000000..2497daa7db --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-CharacterClass.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) with `[^\p{…}]` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/[^\p{RGI_Emoji_Modifier_Sequence}]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js new file mode 100644 index 0000000000..dff6d97a2c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-P.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji_Modifier_Sequence` (property of strings) with `\P{…}` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\P{RGI_Emoji_Modifier_Sequence}/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js new file mode 100644 index 0000000000..d62b1d7afd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence-negative-u.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 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 for `RGI_Emoji_Modifier_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-patterns-static-semantics-early-errors +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\p{RGI_Emoji_Modifier_Sequence}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js new file mode 100644 index 0000000000..f76417e920 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Modifier_Sequence.js @@ -0,0 +1,690 @@ +// Copyright 2022 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 for `RGI_Emoji_Modifier_Sequence` (property of strings) +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji_Modifier_Sequence}+$/v, + expression: "\\p{RGI_Emoji_Modifier_Sequence}", + matchStrings: [ + "\u261D\u{1F3FB}", + "\u261D\u{1F3FC}", + "\u261D\u{1F3FD}", + "\u261D\u{1F3FE}", + "\u261D\u{1F3FF}", + "\u26F9\u{1F3FB}", + "\u26F9\u{1F3FC}", + "\u26F9\u{1F3FD}", + "\u26F9\u{1F3FE}", + "\u26F9\u{1F3FF}", + "\u270A\u{1F3FB}", + "\u270A\u{1F3FC}", + "\u270A\u{1F3FD}", + "\u270A\u{1F3FE}", + "\u270A\u{1F3FF}", + "\u270B\u{1F3FB}", + "\u270B\u{1F3FC}", + "\u270B\u{1F3FD}", + "\u270B\u{1F3FE}", + "\u270B\u{1F3FF}", + "\u270C\u{1F3FB}", + "\u270C\u{1F3FC}", + "\u270C\u{1F3FD}", + "\u270C\u{1F3FE}", + "\u270C\u{1F3FF}", + "\u270D\u{1F3FB}", + "\u270D\u{1F3FC}", + "\u270D\u{1F3FD}", + "\u270D\u{1F3FE}", + "\u270D\u{1F3FF}", + "\u{1F385}\u{1F3FB}", + "\u{1F385}\u{1F3FC}", + "\u{1F385}\u{1F3FD}", + "\u{1F385}\u{1F3FE}", + "\u{1F385}\u{1F3FF}", + "\u{1F3C2}\u{1F3FB}", + "\u{1F3C2}\u{1F3FC}", + "\u{1F3C2}\u{1F3FD}", + "\u{1F3C2}\u{1F3FE}", + "\u{1F3C2}\u{1F3FF}", + "\u{1F3C3}\u{1F3FB}", + "\u{1F3C3}\u{1F3FC}", + "\u{1F3C3}\u{1F3FD}", + "\u{1F3C3}\u{1F3FE}", + "\u{1F3C3}\u{1F3FF}", + "\u{1F3C4}\u{1F3FB}", + "\u{1F3C4}\u{1F3FC}", + "\u{1F3C4}\u{1F3FD}", + "\u{1F3C4}\u{1F3FE}", + "\u{1F3C4}\u{1F3FF}", + "\u{1F3C7}\u{1F3FB}", + "\u{1F3C7}\u{1F3FC}", + "\u{1F3C7}\u{1F3FD}", + "\u{1F3C7}\u{1F3FE}", + "\u{1F3C7}\u{1F3FF}", + "\u{1F3CA}\u{1F3FB}", + "\u{1F3CA}\u{1F3FC}", + "\u{1F3CA}\u{1F3FD}", + "\u{1F3CA}\u{1F3FE}", + "\u{1F3CA}\u{1F3FF}", + "\u{1F3CB}\u{1F3FB}", + "\u{1F3CB}\u{1F3FC}", + "\u{1F3CB}\u{1F3FD}", + "\u{1F3CB}\u{1F3FE}", + "\u{1F3CB}\u{1F3FF}", + "\u{1F3CC}\u{1F3FB}", + "\u{1F3CC}\u{1F3FC}", + "\u{1F3CC}\u{1F3FD}", + "\u{1F3CC}\u{1F3FE}", + "\u{1F3CC}\u{1F3FF}", + "\u{1F442}\u{1F3FB}", + "\u{1F442}\u{1F3FC}", + "\u{1F442}\u{1F3FD}", + "\u{1F442}\u{1F3FE}", + "\u{1F442}\u{1F3FF}", + "\u{1F443}\u{1F3FB}", + "\u{1F443}\u{1F3FC}", + "\u{1F443}\u{1F3FD}", + "\u{1F443}\u{1F3FE}", + "\u{1F443}\u{1F3FF}", + "\u{1F446}\u{1F3FB}", + "\u{1F446}\u{1F3FC}", + "\u{1F446}\u{1F3FD}", + "\u{1F446}\u{1F3FE}", + "\u{1F446}\u{1F3FF}", + "\u{1F447}\u{1F3FB}", + "\u{1F447}\u{1F3FC}", + "\u{1F447}\u{1F3FD}", + "\u{1F447}\u{1F3FE}", + "\u{1F447}\u{1F3FF}", + "\u{1F448}\u{1F3FB}", + "\u{1F448}\u{1F3FC}", + "\u{1F448}\u{1F3FD}", + "\u{1F448}\u{1F3FE}", + "\u{1F448}\u{1F3FF}", + "\u{1F449}\u{1F3FB}", + "\u{1F449}\u{1F3FC}", + "\u{1F449}\u{1F3FD}", + "\u{1F449}\u{1F3FE}", + "\u{1F449}\u{1F3FF}", + "\u{1F44A}\u{1F3FB}", + "\u{1F44A}\u{1F3FC}", + "\u{1F44A}\u{1F3FD}", + "\u{1F44A}\u{1F3FE}", + "\u{1F44A}\u{1F3FF}", + "\u{1F44B}\u{1F3FB}", + "\u{1F44B}\u{1F3FC}", + "\u{1F44B}\u{1F3FD}", + "\u{1F44B}\u{1F3FE}", + "\u{1F44B}\u{1F3FF}", + "\u{1F44C}\u{1F3FB}", + "\u{1F44C}\u{1F3FC}", + "\u{1F44C}\u{1F3FD}", + "\u{1F44C}\u{1F3FE}", + "\u{1F44C}\u{1F3FF}", + "\u{1F44D}\u{1F3FB}", + "\u{1F44D}\u{1F3FC}", + "\u{1F44D}\u{1F3FD}", + "\u{1F44D}\u{1F3FE}", + "\u{1F44D}\u{1F3FF}", + "\u{1F44E}\u{1F3FB}", + "\u{1F44E}\u{1F3FC}", + "\u{1F44E}\u{1F3FD}", + "\u{1F44E}\u{1F3FE}", + "\u{1F44E}\u{1F3FF}", + "\u{1F44F}\u{1F3FB}", + "\u{1F44F}\u{1F3FC}", + "\u{1F44F}\u{1F3FD}", + "\u{1F44F}\u{1F3FE}", + "\u{1F44F}\u{1F3FF}", + "\u{1F450}\u{1F3FB}", + "\u{1F450}\u{1F3FC}", + "\u{1F450}\u{1F3FD}", + "\u{1F450}\u{1F3FE}", + "\u{1F450}\u{1F3FF}", + "\u{1F466}\u{1F3FB}", + "\u{1F466}\u{1F3FC}", + "\u{1F466}\u{1F3FD}", + "\u{1F466}\u{1F3FE}", + "\u{1F466}\u{1F3FF}", + "\u{1F467}\u{1F3FB}", + "\u{1F467}\u{1F3FC}", + "\u{1F467}\u{1F3FD}", + "\u{1F467}\u{1F3FE}", + "\u{1F467}\u{1F3FF}", + "\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}", + "\u{1F46B}\u{1F3FB}", + "\u{1F46B}\u{1F3FC}", + "\u{1F46B}\u{1F3FD}", + "\u{1F46B}\u{1F3FE}", + "\u{1F46B}\u{1F3FF}", + "\u{1F46C}\u{1F3FB}", + "\u{1F46C}\u{1F3FC}", + "\u{1F46C}\u{1F3FD}", + "\u{1F46C}\u{1F3FE}", + "\u{1F46C}\u{1F3FF}", + "\u{1F46D}\u{1F3FB}", + "\u{1F46D}\u{1F3FC}", + "\u{1F46D}\u{1F3FD}", + "\u{1F46D}\u{1F3FE}", + "\u{1F46D}\u{1F3FF}", + "\u{1F46E}\u{1F3FB}", + "\u{1F46E}\u{1F3FC}", + "\u{1F46E}\u{1F3FD}", + "\u{1F46E}\u{1F3FE}", + "\u{1F46E}\u{1F3FF}", + "\u{1F470}\u{1F3FB}", + "\u{1F470}\u{1F3FC}", + "\u{1F470}\u{1F3FD}", + "\u{1F470}\u{1F3FE}", + "\u{1F470}\u{1F3FF}", + "\u{1F471}\u{1F3FB}", + "\u{1F471}\u{1F3FC}", + "\u{1F471}\u{1F3FD}", + "\u{1F471}\u{1F3FE}", + "\u{1F471}\u{1F3FF}", + "\u{1F472}\u{1F3FB}", + "\u{1F472}\u{1F3FC}", + "\u{1F472}\u{1F3FD}", + "\u{1F472}\u{1F3FE}", + "\u{1F472}\u{1F3FF}", + "\u{1F473}\u{1F3FB}", + "\u{1F473}\u{1F3FC}", + "\u{1F473}\u{1F3FD}", + "\u{1F473}\u{1F3FE}", + "\u{1F473}\u{1F3FF}", + "\u{1F474}\u{1F3FB}", + "\u{1F474}\u{1F3FC}", + "\u{1F474}\u{1F3FD}", + "\u{1F474}\u{1F3FE}", + "\u{1F474}\u{1F3FF}", + "\u{1F475}\u{1F3FB}", + "\u{1F475}\u{1F3FC}", + "\u{1F475}\u{1F3FD}", + "\u{1F475}\u{1F3FE}", + "\u{1F475}\u{1F3FF}", + "\u{1F476}\u{1F3FB}", + "\u{1F476}\u{1F3FC}", + "\u{1F476}\u{1F3FD}", + "\u{1F476}\u{1F3FE}", + "\u{1F476}\u{1F3FF}", + "\u{1F477}\u{1F3FB}", + "\u{1F477}\u{1F3FC}", + "\u{1F477}\u{1F3FD}", + "\u{1F477}\u{1F3FE}", + "\u{1F477}\u{1F3FF}", + "\u{1F478}\u{1F3FB}", + "\u{1F478}\u{1F3FC}", + "\u{1F478}\u{1F3FD}", + "\u{1F478}\u{1F3FE}", + "\u{1F478}\u{1F3FF}", + "\u{1F47C}\u{1F3FB}", + "\u{1F47C}\u{1F3FC}", + "\u{1F47C}\u{1F3FD}", + "\u{1F47C}\u{1F3FE}", + "\u{1F47C}\u{1F3FF}", + "\u{1F481}\u{1F3FB}", + "\u{1F481}\u{1F3FC}", + "\u{1F481}\u{1F3FD}", + "\u{1F481}\u{1F3FE}", + "\u{1F481}\u{1F3FF}", + "\u{1F482}\u{1F3FB}", + "\u{1F482}\u{1F3FC}", + "\u{1F482}\u{1F3FD}", + "\u{1F482}\u{1F3FE}", + "\u{1F482}\u{1F3FF}", + "\u{1F483}\u{1F3FB}", + "\u{1F483}\u{1F3FC}", + "\u{1F483}\u{1F3FD}", + "\u{1F483}\u{1F3FE}", + "\u{1F483}\u{1F3FF}", + "\u{1F485}\u{1F3FB}", + "\u{1F485}\u{1F3FC}", + "\u{1F485}\u{1F3FD}", + "\u{1F485}\u{1F3FE}", + "\u{1F485}\u{1F3FF}", + "\u{1F486}\u{1F3FB}", + "\u{1F486}\u{1F3FC}", + "\u{1F486}\u{1F3FD}", + "\u{1F486}\u{1F3FE}", + "\u{1F486}\u{1F3FF}", + "\u{1F487}\u{1F3FB}", + "\u{1F487}\u{1F3FC}", + "\u{1F487}\u{1F3FD}", + "\u{1F487}\u{1F3FE}", + "\u{1F487}\u{1F3FF}", + "\u{1F48F}\u{1F3FB}", + "\u{1F48F}\u{1F3FC}", + "\u{1F48F}\u{1F3FD}", + "\u{1F48F}\u{1F3FE}", + "\u{1F48F}\u{1F3FF}", + "\u{1F491}\u{1F3FB}", + "\u{1F491}\u{1F3FC}", + "\u{1F491}\u{1F3FD}", + "\u{1F491}\u{1F3FE}", + "\u{1F491}\u{1F3FF}", + "\u{1F4AA}\u{1F3FB}", + "\u{1F4AA}\u{1F3FC}", + "\u{1F4AA}\u{1F3FD}", + "\u{1F4AA}\u{1F3FE}", + "\u{1F4AA}\u{1F3FF}", + "\u{1F574}\u{1F3FB}", + "\u{1F574}\u{1F3FC}", + "\u{1F574}\u{1F3FD}", + "\u{1F574}\u{1F3FE}", + "\u{1F574}\u{1F3FF}", + "\u{1F575}\u{1F3FB}", + "\u{1F575}\u{1F3FC}", + "\u{1F575}\u{1F3FD}", + "\u{1F575}\u{1F3FE}", + "\u{1F575}\u{1F3FF}", + "\u{1F57A}\u{1F3FB}", + "\u{1F57A}\u{1F3FC}", + "\u{1F57A}\u{1F3FD}", + "\u{1F57A}\u{1F3FE}", + "\u{1F57A}\u{1F3FF}", + "\u{1F590}\u{1F3FB}", + "\u{1F590}\u{1F3FC}", + "\u{1F590}\u{1F3FD}", + "\u{1F590}\u{1F3FE}", + "\u{1F590}\u{1F3FF}", + "\u{1F595}\u{1F3FB}", + "\u{1F595}\u{1F3FC}", + "\u{1F595}\u{1F3FD}", + "\u{1F595}\u{1F3FE}", + "\u{1F595}\u{1F3FF}", + "\u{1F596}\u{1F3FB}", + "\u{1F596}\u{1F3FC}", + "\u{1F596}\u{1F3FD}", + "\u{1F596}\u{1F3FE}", + "\u{1F596}\u{1F3FF}", + "\u{1F645}\u{1F3FB}", + "\u{1F645}\u{1F3FC}", + "\u{1F645}\u{1F3FD}", + "\u{1F645}\u{1F3FE}", + "\u{1F645}\u{1F3FF}", + "\u{1F646}\u{1F3FB}", + "\u{1F646}\u{1F3FC}", + "\u{1F646}\u{1F3FD}", + "\u{1F646}\u{1F3FE}", + "\u{1F646}\u{1F3FF}", + "\u{1F647}\u{1F3FB}", + "\u{1F647}\u{1F3FC}", + "\u{1F647}\u{1F3FD}", + "\u{1F647}\u{1F3FE}", + "\u{1F647}\u{1F3FF}", + "\u{1F64B}\u{1F3FB}", + "\u{1F64B}\u{1F3FC}", + "\u{1F64B}\u{1F3FD}", + "\u{1F64B}\u{1F3FE}", + "\u{1F64B}\u{1F3FF}", + "\u{1F64C}\u{1F3FB}", + "\u{1F64C}\u{1F3FC}", + "\u{1F64C}\u{1F3FD}", + "\u{1F64C}\u{1F3FE}", + "\u{1F64C}\u{1F3FF}", + "\u{1F64D}\u{1F3FB}", + "\u{1F64D}\u{1F3FC}", + "\u{1F64D}\u{1F3FD}", + "\u{1F64D}\u{1F3FE}", + "\u{1F64D}\u{1F3FF}", + "\u{1F64E}\u{1F3FB}", + "\u{1F64E}\u{1F3FC}", + "\u{1F64E}\u{1F3FD}", + "\u{1F64E}\u{1F3FE}", + "\u{1F64E}\u{1F3FF}", + "\u{1F64F}\u{1F3FB}", + "\u{1F64F}\u{1F3FC}", + "\u{1F64F}\u{1F3FD}", + "\u{1F64F}\u{1F3FE}", + "\u{1F64F}\u{1F3FF}", + "\u{1F6A3}\u{1F3FB}", + "\u{1F6A3}\u{1F3FC}", + "\u{1F6A3}\u{1F3FD}", + "\u{1F6A3}\u{1F3FE}", + "\u{1F6A3}\u{1F3FF}", + "\u{1F6B4}\u{1F3FB}", + "\u{1F6B4}\u{1F3FC}", + "\u{1F6B4}\u{1F3FD}", + "\u{1F6B4}\u{1F3FE}", + "\u{1F6B4}\u{1F3FF}", + "\u{1F6B5}\u{1F3FB}", + "\u{1F6B5}\u{1F3FC}", + "\u{1F6B5}\u{1F3FD}", + "\u{1F6B5}\u{1F3FE}", + "\u{1F6B5}\u{1F3FF}", + "\u{1F6B6}\u{1F3FB}", + "\u{1F6B6}\u{1F3FC}", + "\u{1F6B6}\u{1F3FD}", + "\u{1F6B6}\u{1F3FE}", + "\u{1F6B6}\u{1F3FF}", + "\u{1F6C0}\u{1F3FB}", + "\u{1F6C0}\u{1F3FC}", + "\u{1F6C0}\u{1F3FD}", + "\u{1F6C0}\u{1F3FE}", + "\u{1F6C0}\u{1F3FF}", + "\u{1F6CC}\u{1F3FB}", + "\u{1F6CC}\u{1F3FC}", + "\u{1F6CC}\u{1F3FD}", + "\u{1F6CC}\u{1F3FE}", + "\u{1F6CC}\u{1F3FF}", + "\u{1F90C}\u{1F3FB}", + "\u{1F90C}\u{1F3FC}", + "\u{1F90C}\u{1F3FD}", + "\u{1F90C}\u{1F3FE}", + "\u{1F90C}\u{1F3FF}", + "\u{1F90F}\u{1F3FB}", + "\u{1F90F}\u{1F3FC}", + "\u{1F90F}\u{1F3FD}", + "\u{1F90F}\u{1F3FE}", + "\u{1F90F}\u{1F3FF}", + "\u{1F918}\u{1F3FB}", + "\u{1F918}\u{1F3FC}", + "\u{1F918}\u{1F3FD}", + "\u{1F918}\u{1F3FE}", + "\u{1F918}\u{1F3FF}", + "\u{1F919}\u{1F3FB}", + "\u{1F919}\u{1F3FC}", + "\u{1F919}\u{1F3FD}", + "\u{1F919}\u{1F3FE}", + "\u{1F919}\u{1F3FF}", + "\u{1F91A}\u{1F3FB}", + "\u{1F91A}\u{1F3FC}", + "\u{1F91A}\u{1F3FD}", + "\u{1F91A}\u{1F3FE}", + "\u{1F91A}\u{1F3FF}", + "\u{1F91B}\u{1F3FB}", + "\u{1F91B}\u{1F3FC}", + "\u{1F91B}\u{1F3FD}", + "\u{1F91B}\u{1F3FE}", + "\u{1F91B}\u{1F3FF}", + "\u{1F91C}\u{1F3FB}", + "\u{1F91C}\u{1F3FC}", + "\u{1F91C}\u{1F3FD}", + "\u{1F91C}\u{1F3FE}", + "\u{1F91C}\u{1F3FF}", + "\u{1F91D}\u{1F3FB}", + "\u{1F91D}\u{1F3FC}", + "\u{1F91D}\u{1F3FD}", + "\u{1F91D}\u{1F3FE}", + "\u{1F91D}\u{1F3FF}", + "\u{1F91E}\u{1F3FB}", + "\u{1F91E}\u{1F3FC}", + "\u{1F91E}\u{1F3FD}", + "\u{1F91E}\u{1F3FE}", + "\u{1F91E}\u{1F3FF}", + "\u{1F91F}\u{1F3FB}", + "\u{1F91F}\u{1F3FC}", + "\u{1F91F}\u{1F3FD}", + "\u{1F91F}\u{1F3FE}", + "\u{1F91F}\u{1F3FF}", + "\u{1F926}\u{1F3FB}", + "\u{1F926}\u{1F3FC}", + "\u{1F926}\u{1F3FD}", + "\u{1F926}\u{1F3FE}", + "\u{1F926}\u{1F3FF}", + "\u{1F930}\u{1F3FB}", + "\u{1F930}\u{1F3FC}", + "\u{1F930}\u{1F3FD}", + "\u{1F930}\u{1F3FE}", + "\u{1F930}\u{1F3FF}", + "\u{1F931}\u{1F3FB}", + "\u{1F931}\u{1F3FC}", + "\u{1F931}\u{1F3FD}", + "\u{1F931}\u{1F3FE}", + "\u{1F931}\u{1F3FF}", + "\u{1F932}\u{1F3FB}", + "\u{1F932}\u{1F3FC}", + "\u{1F932}\u{1F3FD}", + "\u{1F932}\u{1F3FE}", + "\u{1F932}\u{1F3FF}", + "\u{1F933}\u{1F3FB}", + "\u{1F933}\u{1F3FC}", + "\u{1F933}\u{1F3FD}", + "\u{1F933}\u{1F3FE}", + "\u{1F933}\u{1F3FF}", + "\u{1F934}\u{1F3FB}", + "\u{1F934}\u{1F3FC}", + "\u{1F934}\u{1F3FD}", + "\u{1F934}\u{1F3FE}", + "\u{1F934}\u{1F3FF}", + "\u{1F935}\u{1F3FB}", + "\u{1F935}\u{1F3FC}", + "\u{1F935}\u{1F3FD}", + "\u{1F935}\u{1F3FE}", + "\u{1F935}\u{1F3FF}", + "\u{1F936}\u{1F3FB}", + "\u{1F936}\u{1F3FC}", + "\u{1F936}\u{1F3FD}", + "\u{1F936}\u{1F3FE}", + "\u{1F936}\u{1F3FF}", + "\u{1F937}\u{1F3FB}", + "\u{1F937}\u{1F3FC}", + "\u{1F937}\u{1F3FD}", + "\u{1F937}\u{1F3FE}", + "\u{1F937}\u{1F3FF}", + "\u{1F938}\u{1F3FB}", + "\u{1F938}\u{1F3FC}", + "\u{1F938}\u{1F3FD}", + "\u{1F938}\u{1F3FE}", + "\u{1F938}\u{1F3FF}", + "\u{1F939}\u{1F3FB}", + "\u{1F939}\u{1F3FC}", + "\u{1F939}\u{1F3FD}", + "\u{1F939}\u{1F3FE}", + "\u{1F939}\u{1F3FF}", + "\u{1F93D}\u{1F3FB}", + "\u{1F93D}\u{1F3FC}", + "\u{1F93D}\u{1F3FD}", + "\u{1F93D}\u{1F3FE}", + "\u{1F93D}\u{1F3FF}", + "\u{1F93E}\u{1F3FB}", + "\u{1F93E}\u{1F3FC}", + "\u{1F93E}\u{1F3FD}", + "\u{1F93E}\u{1F3FE}", + "\u{1F93E}\u{1F3FF}", + "\u{1F977}\u{1F3FB}", + "\u{1F977}\u{1F3FC}", + "\u{1F977}\u{1F3FD}", + "\u{1F977}\u{1F3FE}", + "\u{1F977}\u{1F3FF}", + "\u{1F9B5}\u{1F3FB}", + "\u{1F9B5}\u{1F3FC}", + "\u{1F9B5}\u{1F3FD}", + "\u{1F9B5}\u{1F3FE}", + "\u{1F9B5}\u{1F3FF}", + "\u{1F9B6}\u{1F3FB}", + "\u{1F9B6}\u{1F3FC}", + "\u{1F9B6}\u{1F3FD}", + "\u{1F9B6}\u{1F3FE}", + "\u{1F9B6}\u{1F3FF}", + "\u{1F9B8}\u{1F3FB}", + "\u{1F9B8}\u{1F3FC}", + "\u{1F9B8}\u{1F3FD}", + "\u{1F9B8}\u{1F3FE}", + "\u{1F9B8}\u{1F3FF}", + "\u{1F9B9}\u{1F3FB}", + "\u{1F9B9}\u{1F3FC}", + "\u{1F9B9}\u{1F3FD}", + "\u{1F9B9}\u{1F3FE}", + "\u{1F9B9}\u{1F3FF}", + "\u{1F9BB}\u{1F3FB}", + "\u{1F9BB}\u{1F3FC}", + "\u{1F9BB}\u{1F3FD}", + "\u{1F9BB}\u{1F3FE}", + "\u{1F9BB}\u{1F3FF}", + "\u{1F9CD}\u{1F3FB}", + "\u{1F9CD}\u{1F3FC}", + "\u{1F9CD}\u{1F3FD}", + "\u{1F9CD}\u{1F3FE}", + "\u{1F9CD}\u{1F3FF}", + "\u{1F9CE}\u{1F3FB}", + "\u{1F9CE}\u{1F3FC}", + "\u{1F9CE}\u{1F3FD}", + "\u{1F9CE}\u{1F3FE}", + "\u{1F9CE}\u{1F3FF}", + "\u{1F9CF}\u{1F3FB}", + "\u{1F9CF}\u{1F3FC}", + "\u{1F9CF}\u{1F3FD}", + "\u{1F9CF}\u{1F3FE}", + "\u{1F9CF}\u{1F3FF}", + "\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FF}", + "\u{1F9D2}\u{1F3FB}", + "\u{1F9D2}\u{1F3FC}", + "\u{1F9D2}\u{1F3FD}", + "\u{1F9D2}\u{1F3FE}", + "\u{1F9D2}\u{1F3FF}", + "\u{1F9D3}\u{1F3FB}", + "\u{1F9D3}\u{1F3FC}", + "\u{1F9D3}\u{1F3FD}", + "\u{1F9D3}\u{1F3FE}", + "\u{1F9D3}\u{1F3FF}", + "\u{1F9D4}\u{1F3FB}", + "\u{1F9D4}\u{1F3FC}", + "\u{1F9D4}\u{1F3FD}", + "\u{1F9D4}\u{1F3FE}", + "\u{1F9D4}\u{1F3FF}", + "\u{1F9D5}\u{1F3FB}", + "\u{1F9D5}\u{1F3FC}", + "\u{1F9D5}\u{1F3FD}", + "\u{1F9D5}\u{1F3FE}", + "\u{1F9D5}\u{1F3FF}", + "\u{1F9D6}\u{1F3FB}", + "\u{1F9D6}\u{1F3FC}", + "\u{1F9D6}\u{1F3FD}", + "\u{1F9D6}\u{1F3FE}", + "\u{1F9D6}\u{1F3FF}", + "\u{1F9D7}\u{1F3FB}", + "\u{1F9D7}\u{1F3FC}", + "\u{1F9D7}\u{1F3FD}", + "\u{1F9D7}\u{1F3FE}", + "\u{1F9D7}\u{1F3FF}", + "\u{1F9D8}\u{1F3FB}", + "\u{1F9D8}\u{1F3FC}", + "\u{1F9D8}\u{1F3FD}", + "\u{1F9D8}\u{1F3FE}", + "\u{1F9D8}\u{1F3FF}", + "\u{1F9D9}\u{1F3FB}", + "\u{1F9D9}\u{1F3FC}", + "\u{1F9D9}\u{1F3FD}", + "\u{1F9D9}\u{1F3FE}", + "\u{1F9D9}\u{1F3FF}", + "\u{1F9DA}\u{1F3FB}", + "\u{1F9DA}\u{1F3FC}", + "\u{1F9DA}\u{1F3FD}", + "\u{1F9DA}\u{1F3FE}", + "\u{1F9DA}\u{1F3FF}", + "\u{1F9DB}\u{1F3FB}", + "\u{1F9DB}\u{1F3FC}", + "\u{1F9DB}\u{1F3FD}", + "\u{1F9DB}\u{1F3FE}", + "\u{1F9DB}\u{1F3FF}", + "\u{1F9DC}\u{1F3FB}", + "\u{1F9DC}\u{1F3FC}", + "\u{1F9DC}\u{1F3FD}", + "\u{1F9DC}\u{1F3FE}", + "\u{1F9DC}\u{1F3FF}", + "\u{1F9DD}\u{1F3FB}", + "\u{1F9DD}\u{1F3FC}", + "\u{1F9DD}\u{1F3FD}", + "\u{1F9DD}\u{1F3FE}", + "\u{1F9DD}\u{1F3FF}", + "\u{1FAC3}\u{1F3FB}", + "\u{1FAC3}\u{1F3FC}", + "\u{1FAC3}\u{1F3FD}", + "\u{1FAC3}\u{1F3FE}", + "\u{1FAC3}\u{1F3FF}", + "\u{1FAC4}\u{1F3FB}", + "\u{1FAC4}\u{1F3FC}", + "\u{1FAC4}\u{1F3FD}", + "\u{1FAC4}\u{1F3FE}", + "\u{1FAC4}\u{1F3FF}", + "\u{1FAC5}\u{1F3FB}", + "\u{1FAC5}\u{1F3FC}", + "\u{1FAC5}\u{1F3FD}", + "\u{1FAC5}\u{1F3FE}", + "\u{1FAC5}\u{1F3FF}", + "\u{1FAF0}\u{1F3FB}", + "\u{1FAF0}\u{1F3FC}", + "\u{1FAF0}\u{1F3FD}", + "\u{1FAF0}\u{1F3FE}", + "\u{1FAF0}\u{1F3FF}", + "\u{1FAF1}\u{1F3FB}", + "\u{1FAF1}\u{1F3FC}", + "\u{1FAF1}\u{1F3FD}", + "\u{1FAF1}\u{1F3FE}", + "\u{1FAF1}\u{1F3FF}", + "\u{1FAF2}\u{1F3FB}", + "\u{1FAF2}\u{1F3FC}", + "\u{1FAF2}\u{1F3FD}", + "\u{1FAF2}\u{1F3FE}", + "\u{1FAF2}\u{1F3FF}", + "\u{1FAF3}\u{1F3FB}", + "\u{1FAF3}\u{1F3FC}", + "\u{1FAF3}\u{1F3FD}", + "\u{1FAF3}\u{1F3FE}", + "\u{1FAF3}\u{1F3FF}", + "\u{1FAF4}\u{1F3FB}", + "\u{1FAF4}\u{1F3FC}", + "\u{1FAF4}\u{1F3FD}", + "\u{1FAF4}\u{1F3FE}", + "\u{1FAF4}\u{1F3FF}", + "\u{1FAF5}\u{1F3FB}", + "\u{1FAF5}\u{1F3FC}", + "\u{1FAF5}\u{1F3FD}", + "\u{1FAF5}\u{1F3FE}", + "\u{1FAF5}\u{1F3FF}", + "\u{1FAF6}\u{1F3FB}", + "\u{1FAF6}\u{1F3FC}", + "\u{1FAF6}\u{1F3FD}", + "\u{1FAF6}\u{1F3FE}", + "\u{1FAF6}\u{1F3FF}", + "\u{1FAF7}\u{1F3FB}", + "\u{1FAF7}\u{1F3FC}", + "\u{1FAF7}\u{1F3FD}", + "\u{1FAF7}\u{1F3FE}", + "\u{1FAF7}\u{1F3FF}", + "\u{1FAF8}\u{1F3FB}", + "\u{1FAF8}\u{1F3FC}", + "\u{1FAF8}\u{1F3FD}", + "\u{1FAF8}\u{1F3FE}", + "\u{1FAF8}\u{1F3FF}" + ], + nonMatchStrings: [ + "\u{1F3FB}", + "\u261D", + "\u{1F3FC}", + "\u261D", + "\u{1F3FD}", + "\u261D", + "\u{1F3FE}", + "\u261D", + "\u{1F3FF}", + "\u261D" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js new file mode 100644 index 0000000000..3b5cdb4261 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-CharacterClass.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) with `[^\p{…}]` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/[^\p{RGI_Emoji_Tag_Sequence}]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js new file mode 100644 index 0000000000..24036db8b6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-P.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji_Tag_Sequence` (property of strings) with `\P{…}` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\P{RGI_Emoji_Tag_Sequence}/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js new file mode 100644 index 0000000000..f2cd29d623 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence-negative-u.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 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 for `RGI_Emoji_Tag_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-patterns-static-semantics-early-errors +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\p{RGI_Emoji_Tag_Sequence}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js new file mode 100644 index 0000000000..9f8bb40df4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_Tag_Sequence.js @@ -0,0 +1,37 @@ +// Copyright 2022 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 for `RGI_Emoji_Tag_Sequence` (property of strings) +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji_Tag_Sequence}+$/v, + expression: "\\p{RGI_Emoji_Tag_Sequence}", + matchStrings: [ + "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}", + "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}", + "\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}" + ], + nonMatchStrings: [ + "\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}", + "\u{1F3F4}\u{E0067}\u{E0062}\u{E0065}\u{E006E}\u{E0067}", + "\u{1F3F4}\u{E0062}\u{E0065}\u{E006E}\u{E0067}\u{E007F}", + "\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}", + "\u{1F3F4}\u{E0067}\u{E0062}\u{E0073}\u{E0063}\u{E0074}", + "\u{1F3F4}\u{E0062}\u{E0073}\u{E0063}\u{E0074}\u{E007F}", + "\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}", + "\u{1F3F4}\u{E0067}\u{E0062}\u{E0077}\u{E006C}\u{E0073}", + "\u{1F3F4}\u{E0062}\u{E0077}\u{E006C}\u{E0073}\u{E007F}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js new file mode 100644 index 0000000000..fc0eed2a6c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-CharacterClass.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) with `[^\p{…}]` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/[^\p{RGI_Emoji_ZWJ_Sequence}]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js new file mode 100644 index 0000000000..cec5c0c57a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-P.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Negating Unicode property escapes for `RGI_Emoji_ZWJ_Sequence` (property of strings) with `\P{…}` throws an early error. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-isvalidregularexpressionliteral +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\P{RGI_Emoji_ZWJ_Sequence}/v; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js new file mode 100644 index 0000000000..c5109d1262 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence-negative-u.js @@ -0,0 +1,21 @@ +// |reftest| error:SyntaxError +// Copyright 2022 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 for `RGI_Emoji_ZWJ_Sequence` (property of strings) with the `u` flag throws an early error. Properties of strings are only supported through the `v` flag. +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-patterns-static-semantics-early-errors +features: [regexp-unicode-property-escapes, regexp-v-flag] +negative: + phase: parse + type: SyntaxError +---*/ + +$DONOTEVALUATE(); + +/\p{RGI_Emoji_ZWJ_Sequence}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js new file mode 100644 index 0000000000..beef3e3c5c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/RGI_Emoji_ZWJ_Sequence.js @@ -0,0 +1,1390 @@ +// Copyright 2022 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 for `RGI_Emoji_ZWJ_Sequence` (property of strings) +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v15.0.0 +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji_ZWJ_Sequence}+$/v, + expression: "\\p{RGI_Emoji_ZWJ_Sequence}", + matchStrings: [ + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F468}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F468}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F468}", + "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F469}", + "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F469}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}", + "\u{1F469}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F467}", + "\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F466}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F466}", + "\u{1F469}\u200D\u{1F469}\u200D\u{1F467}\u200D\u{1F467}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F469}\u{1F3FE}", + "\u{1F9D1}\u200D\u{1F91D}\u200D\u{1F9D1}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F384}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1F468}\u200D\u2695\uFE0F", + "\u{1F468}\u200D\u2696\uFE0F", + "\u{1F468}\u200D\u2708\uFE0F", + "\u{1F468}\u200D\u{1F33E}", + "\u{1F468}\u200D\u{1F373}", + "\u{1F468}\u200D\u{1F37C}", + "\u{1F468}\u200D\u{1F393}", + "\u{1F468}\u200D\u{1F3A4}", + "\u{1F468}\u200D\u{1F3A8}", + "\u{1F468}\u200D\u{1F3EB}", + "\u{1F468}\u200D\u{1F3ED}", + "\u{1F468}\u200D\u{1F4BB}", + "\u{1F468}\u200D\u{1F4BC}", + "\u{1F468}\u200D\u{1F527}", + "\u{1F468}\u200D\u{1F52C}", + "\u{1F468}\u200D\u{1F680}", + "\u{1F468}\u200D\u{1F692}", + "\u{1F468}\u200D\u{1F9AF}", + "\u{1F468}\u200D\u{1F9BC}", + "\u{1F468}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FB}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FB}\u200D\u{1F373}", + "\u{1F468}\u{1F3FB}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FB}\u200D\u{1F393}", + "\u{1F468}\u{1F3FB}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FB}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FB}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FB}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FB}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FB}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FB}\u200D\u{1F527}", + "\u{1F468}\u{1F3FB}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FB}\u200D\u{1F680}", + "\u{1F468}\u{1F3FB}\u200D\u{1F692}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FC}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FC}\u200D\u{1F373}", + "\u{1F468}\u{1F3FC}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FC}\u200D\u{1F393}", + "\u{1F468}\u{1F3FC}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FC}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FC}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FC}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FC}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FC}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FC}\u200D\u{1F527}", + "\u{1F468}\u{1F3FC}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FC}\u200D\u{1F680}", + "\u{1F468}\u{1F3FC}\u200D\u{1F692}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FD}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FD}\u200D\u{1F373}", + "\u{1F468}\u{1F3FD}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FD}\u200D\u{1F393}", + "\u{1F468}\u{1F3FD}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FD}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FD}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FD}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FD}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FD}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FD}\u200D\u{1F527}", + "\u{1F468}\u{1F3FD}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FD}\u200D\u{1F680}", + "\u{1F468}\u{1F3FD}\u200D\u{1F692}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FE}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FE}\u200D\u{1F373}", + "\u{1F468}\u{1F3FE}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FE}\u200D\u{1F393}", + "\u{1F468}\u{1F3FE}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FE}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FE}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FE}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FE}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FE}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FE}\u200D\u{1F527}", + "\u{1F468}\u{1F3FE}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FE}\u200D\u{1F680}", + "\u{1F468}\u{1F3FE}\u200D\u{1F692}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F468}\u{1F3FF}\u200D\u2695\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u2696\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u2708\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u{1F33E}", + "\u{1F468}\u{1F3FF}\u200D\u{1F373}", + "\u{1F468}\u{1F3FF}\u200D\u{1F37C}", + "\u{1F468}\u{1F3FF}\u200D\u{1F393}", + "\u{1F468}\u{1F3FF}\u200D\u{1F3A4}", + "\u{1F468}\u{1F3FF}\u200D\u{1F3A8}", + "\u{1F468}\u{1F3FF}\u200D\u{1F3EB}", + "\u{1F468}\u{1F3FF}\u200D\u{1F3ED}", + "\u{1F468}\u{1F3FF}\u200D\u{1F4BB}", + "\u{1F468}\u{1F3FF}\u200D\u{1F4BC}", + "\u{1F468}\u{1F3FF}\u200D\u{1F527}", + "\u{1F468}\u{1F3FF}\u200D\u{1F52C}", + "\u{1F468}\u{1F3FF}\u200D\u{1F680}", + "\u{1F468}\u{1F3FF}\u200D\u{1F692}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F469}\u200D\u2695\uFE0F", + "\u{1F469}\u200D\u2696\uFE0F", + "\u{1F469}\u200D\u2708\uFE0F", + "\u{1F469}\u200D\u{1F33E}", + "\u{1F469}\u200D\u{1F373}", + "\u{1F469}\u200D\u{1F37C}", + "\u{1F469}\u200D\u{1F393}", + "\u{1F469}\u200D\u{1F3A4}", + "\u{1F469}\u200D\u{1F3A8}", + "\u{1F469}\u200D\u{1F3EB}", + "\u{1F469}\u200D\u{1F3ED}", + "\u{1F469}\u200D\u{1F4BB}", + "\u{1F469}\u200D\u{1F4BC}", + "\u{1F469}\u200D\u{1F527}", + "\u{1F469}\u200D\u{1F52C}", + "\u{1F469}\u200D\u{1F680}", + "\u{1F469}\u200D\u{1F692}", + "\u{1F469}\u200D\u{1F9AF}", + "\u{1F469}\u200D\u{1F9BC}", + "\u{1F469}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FB}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FB}\u200D\u{1F373}", + "\u{1F469}\u{1F3FB}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FB}\u200D\u{1F393}", + "\u{1F469}\u{1F3FB}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FB}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FB}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FB}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FB}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FB}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F527}", + "\u{1F469}\u{1F3FB}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FB}\u200D\u{1F680}", + "\u{1F469}\u{1F3FB}\u200D\u{1F692}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FC}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FC}\u200D\u{1F373}", + "\u{1F469}\u{1F3FC}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FC}\u200D\u{1F393}", + "\u{1F469}\u{1F3FC}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FC}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FC}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FC}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FC}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FC}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FC}\u200D\u{1F527}", + "\u{1F469}\u{1F3FC}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FC}\u200D\u{1F680}", + "\u{1F469}\u{1F3FC}\u200D\u{1F692}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FD}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FD}\u200D\u{1F373}", + "\u{1F469}\u{1F3FD}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FD}\u200D\u{1F393}", + "\u{1F469}\u{1F3FD}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FD}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FD}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FD}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FD}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FD}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F527}", + "\u{1F469}\u{1F3FD}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FD}\u200D\u{1F680}", + "\u{1F469}\u{1F3FD}\u200D\u{1F692}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FE}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FE}\u200D\u{1F373}", + "\u{1F469}\u{1F3FE}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FE}\u200D\u{1F393}", + "\u{1F469}\u{1F3FE}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FE}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FE}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FE}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FE}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FE}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F527}", + "\u{1F469}\u{1F3FE}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FE}\u200D\u{1F680}", + "\u{1F469}\u{1F3FE}\u200D\u{1F692}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F469}\u{1F3FF}\u200D\u2695\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u2696\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u2708\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u{1F33E}", + "\u{1F469}\u{1F3FF}\u200D\u{1F373}", + "\u{1F469}\u{1F3FF}\u200D\u{1F37C}", + "\u{1F469}\u{1F3FF}\u200D\u{1F393}", + "\u{1F469}\u{1F3FF}\u200D\u{1F3A4}", + "\u{1F469}\u{1F3FF}\u200D\u{1F3A8}", + "\u{1F469}\u{1F3FF}\u200D\u{1F3EB}", + "\u{1F469}\u{1F3FF}\u200D\u{1F3ED}", + "\u{1F469}\u{1F3FF}\u200D\u{1F4BB}", + "\u{1F469}\u{1F3FF}\u200D\u{1F4BC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F527}", + "\u{1F469}\u{1F3FF}\u200D\u{1F52C}", + "\u{1F469}\u{1F3FF}\u200D\u{1F680}", + "\u{1F469}\u{1F3FF}\u200D\u{1F692}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}", + "\u{1F9D1}\u200D\u2695\uFE0F", + "\u{1F9D1}\u200D\u2696\uFE0F", + "\u{1F9D1}\u200D\u2708\uFE0F", + "\u{1F9D1}\u200D\u{1F33E}", + "\u{1F9D1}\u200D\u{1F373}", + "\u{1F9D1}\u200D\u{1F37C}", + "\u{1F9D1}\u200D\u{1F393}", + "\u{1F9D1}\u200D\u{1F3A4}", + "\u{1F9D1}\u200D\u{1F3A8}", + "\u{1F9D1}\u200D\u{1F3EB}", + "\u{1F9D1}\u200D\u{1F3ED}", + "\u{1F9D1}\u200D\u{1F4BB}", + "\u{1F9D1}\u200D\u{1F4BC}", + "\u{1F9D1}\u200D\u{1F527}", + "\u{1F9D1}\u200D\u{1F52C}", + "\u{1F9D1}\u200D\u{1F680}", + "\u{1F9D1}\u200D\u{1F692}", + "\u{1F9D1}\u200D\u{1F9AF}", + "\u{1F9D1}\u200D\u{1F9BC}", + "\u{1F9D1}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FB}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FC}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FD}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FE}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}", + "\u{1F9D1}\u{1F3FF}\u200D\u2695\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u2696\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u2708\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F33E}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F373}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F37C}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F393}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F3A4}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F3A8}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F3EB}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F3ED}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F4BB}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F4BC}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F527}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F52C}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F680}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F692}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}", + "\u26F9\u{1F3FB}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FB}\u200D\u2642\uFE0F", + "\u26F9\u{1F3FC}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FC}\u200D\u2642\uFE0F", + "\u26F9\u{1F3FD}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FD}\u200D\u2642\uFE0F", + "\u26F9\u{1F3FE}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FE}\u200D\u2642\uFE0F", + "\u26F9\u{1F3FF}\u200D\u2640\uFE0F", + "\u26F9\u{1F3FF}\u200D\u2642\uFE0F", + "\u26F9\uFE0F\u200D\u2640\uFE0F", + "\u26F9\uFE0F\u200D\u2642\uFE0F", + "\u{1F3C3}\u200D\u2640\uFE0F", + "\u{1F3C3}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3C4}\u200D\u2640\uFE0F", + "\u{1F3C4}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3C4}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3C4}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3CA}\u200D\u2640\uFE0F", + "\u{1F3CA}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3CA}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3CA}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3CB}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3CB}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3CB}\uFE0F\u200D\u2640\uFE0F", + "\u{1F3CB}\uFE0F\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F3CC}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F3CC}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F3CC}\uFE0F\u200D\u2640\uFE0F", + "\u{1F3CC}\uFE0F\u200D\u2642\uFE0F", + "\u{1F46E}\u200D\u2640\uFE0F", + "\u{1F46E}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F46E}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F46E}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F46F}\u200D\u2640\uFE0F", + "\u{1F46F}\u200D\u2642\uFE0F", + "\u{1F470}\u200D\u2640\uFE0F", + "\u{1F470}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F470}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F470}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F471}\u200D\u2640\uFE0F", + "\u{1F471}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F471}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F471}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F473}\u200D\u2640\uFE0F", + "\u{1F473}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F473}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F473}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F477}\u200D\u2640\uFE0F", + "\u{1F477}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F477}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F477}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F481}\u200D\u2640\uFE0F", + "\u{1F481}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F481}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F481}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F482}\u200D\u2640\uFE0F", + "\u{1F482}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F482}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F482}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F486}\u200D\u2640\uFE0F", + "\u{1F486}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F486}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F486}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F487}\u200D\u2640\uFE0F", + "\u{1F487}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F487}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F487}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F575}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F575}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F575}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F575}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F575}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F575}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F575}\uFE0F\u200D\u2640\uFE0F", + "\u{1F575}\uFE0F\u200D\u2642\uFE0F", + "\u{1F645}\u200D\u2640\uFE0F", + "\u{1F645}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F645}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F645}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F646}\u200D\u2640\uFE0F", + "\u{1F646}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F646}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F646}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F647}\u200D\u2640\uFE0F", + "\u{1F647}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F647}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F647}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F64B}\u200D\u2640\uFE0F", + "\u{1F64B}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F64B}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F64B}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F64D}\u200D\u2640\uFE0F", + "\u{1F64D}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F64D}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F64D}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F64E}\u200D\u2640\uFE0F", + "\u{1F64E}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F64E}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F64E}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6A3}\u200D\u2640\uFE0F", + "\u{1F6A3}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6A3}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6A3}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6B4}\u200D\u2640\uFE0F", + "\u{1F6B4}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6B4}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6B4}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6B5}\u200D\u2640\uFE0F", + "\u{1F6B5}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6B5}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6B5}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F6B6}\u200D\u2640\uFE0F", + "\u{1F6B6}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F926}\u200D\u2640\uFE0F", + "\u{1F926}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F926}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F926}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F935}\u200D\u2640\uFE0F", + "\u{1F935}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F935}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F935}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F937}\u200D\u2640\uFE0F", + "\u{1F937}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F937}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F937}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F938}\u200D\u2640\uFE0F", + "\u{1F938}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F938}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F938}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F939}\u200D\u2640\uFE0F", + "\u{1F939}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F939}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F939}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F93C}\u200D\u2640\uFE0F", + "\u{1F93C}\u200D\u2642\uFE0F", + "\u{1F93D}\u200D\u2640\uFE0F", + "\u{1F93D}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F93D}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F93D}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F93E}\u200D\u2640\uFE0F", + "\u{1F93E}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F93E}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F93E}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9B8}\u200D\u2640\uFE0F", + "\u{1F9B8}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9B8}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9B8}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9B9}\u200D\u2640\uFE0F", + "\u{1F9B9}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9B9}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9B9}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9CD}\u200D\u2640\uFE0F", + "\u{1F9CD}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9CD}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9CD}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9CE}\u200D\u2640\uFE0F", + "\u{1F9CE}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9CF}\u200D\u2640\uFE0F", + "\u{1F9CF}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9CF}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9CF}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D4}\u200D\u2640\uFE0F", + "\u{1F9D4}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D6}\u200D\u2640\uFE0F", + "\u{1F9D6}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D6}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D6}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D7}\u200D\u2640\uFE0F", + "\u{1F9D7}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D7}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D7}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D8}\u200D\u2640\uFE0F", + "\u{1F9D8}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D8}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D8}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9D9}\u200D\u2640\uFE0F", + "\u{1F9D9}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D9}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D9}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DA}\u200D\u2640\uFE0F", + "\u{1F9DA}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9DA}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9DA}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DB}\u200D\u2640\uFE0F", + "\u{1F9DB}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9DB}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9DB}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DC}\u200D\u2640\uFE0F", + "\u{1F9DC}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9DC}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9DC}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DD}\u200D\u2640\uFE0F", + "\u{1F9DD}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9DD}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9DD}\u{1F3FF}\u200D\u2642\uFE0F", + "\u{1F9DE}\u200D\u2640\uFE0F", + "\u{1F9DE}\u200D\u2642\uFE0F", + "\u{1F9DF}\u200D\u2640\uFE0F", + "\u{1F9DF}\u200D\u2642\uFE0F", + "\u{1F468}\u200D\u{1F9B0}", + "\u{1F468}\u200D\u{1F9B1}", + "\u{1F468}\u200D\u{1F9B2}", + "\u{1F468}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FB}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FC}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FD}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FE}\u200D\u{1F9B3}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9B0}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9B1}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9B2}", + "\u{1F468}\u{1F3FF}\u200D\u{1F9B3}", + "\u{1F469}\u200D\u{1F9B0}", + "\u{1F469}\u200D\u{1F9B1}", + "\u{1F469}\u200D\u{1F9B2}", + "\u{1F469}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FB}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FC}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FD}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FE}\u200D\u{1F9B3}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9B0}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9B1}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9B2}", + "\u{1F469}\u{1F3FF}\u200D\u{1F9B3}", + "\u{1F9D1}\u200D\u{1F9B0}", + "\u{1F9D1}\u200D\u{1F9B1}", + "\u{1F9D1}\u200D\u{1F9B2}", + "\u{1F9D1}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9B3}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B0}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B1}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B2}", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9B3}", + "\u2764\uFE0F\u200D\u{1F525}", + "\u2764\uFE0F\u200D\u{1FA79}", + "\u{1F3F3}\uFE0F\u200D\u26A7\uFE0F", + "\u{1F3F3}\uFE0F\u200D\u{1F308}", + "\u{1F3F4}\u200D\u2620\uFE0F", + "\u{1F408}\u200D\u2B1B", + "\u{1F415}\u200D\u{1F9BA}", + "\u{1F426}\u200D\u2B1B", + "\u{1F43B}\u200D\u2744\uFE0F", + "\u{1F441}\uFE0F\u200D\u{1F5E8}\uFE0F", + "\u{1F62E}\u200D\u{1F4A8}", + "\u{1F635}\u200D\u{1F4AB}", + "\u{1F636}\u200D\u{1F32B}\uFE0F", + "\u{1F9D1}\u200D\u{1F384}" + ], + nonMatchStrings: [ + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}", + "\u{1F468}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/browser.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/shell.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/generated/strings/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated.js new file mode 100644 index 0000000000..8ab448df23 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{InAdlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit.js new file mode 100644 index 0000000000..b139524bc5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Block-implicit.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{InAdlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated.js new file mode 100644 index 0000000000..8ab448df23 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{InAdlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit.js new file mode 100644 index 0000000000..b139524bc5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-implicit.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{InAdlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated.js new file mode 100644 index 0000000000..6b31a3c0df --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{InScript=Adlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script.js new file mode 100644 index 0000000000..dcf2113476 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-In-prefix-Script.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{InScript=Adlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated.js new file mode 100644 index 0000000000..cc3ccecaed --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{IsScript=Adlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script.js new file mode 100644 index 0000000000..008b8bd4ee --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-Is-prefix-Script.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{IsScript=Adlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated.js new file mode 100644 index 0000000000..28967cae69 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{^General_Category=Letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation.js new file mode 100644 index 0000000000..ed8e89df8c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-circumflex-negation.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{^General_Category=Letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-empty-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-empty-negated.js new file mode 100644 index 0000000000..0909592d23 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-empty-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/[\p{}]/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-empty.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-empty.js new file mode 100644 index 0000000000..3120c8940e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-empty.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/[\P{}]/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-invalid-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-invalid-negated.js new file mode 100644 index 0000000000..9f4ccd404f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-invalid-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/[\P{invalid}]/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-invalid.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-invalid.js new file mode 100644 index 0000000000..f531b70649 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-invalid.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/[\p{invalid}]/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated.js new file mode 100644 index 0000000000..5e089d4761 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated.js new file mode 100644 index 0000000000..6c650ab77c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\PL/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value.js new file mode 100644 index 0000000000..5d037c8628 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces-value.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\pL/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces.js new file mode 100644 index 0000000000..561b9f7e1b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-no-braces.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated.js new file mode 100644 index 0000000000..3b1fee83e0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{=Letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only.js new file mode 100644 index 0000000000..88c9c3aec2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-and-value-only.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{=Letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-negated.js new file mode 100644 index 0000000000..4d5e6a666f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{General_Category:Letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated.js new file mode 100644 index 0000000000..065dd2941a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-only-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{=}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-only.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-only.js new file mode 100644 index 0000000000..e23fd43900 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator-only.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{=}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator.js new file mode 100644 index 0000000000..8f56f2542c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-separator.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{General_Category:Letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated.js new file mode 100644 index 0000000000..e6fc977f8e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unclosed-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unclosed.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unclosed.js new file mode 100644 index 0000000000..cacdb6c7bf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unclosed.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unopened-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unopened-negated.js new file mode 100644 index 0000000000..33b071dbe8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unopened-negated.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unopened.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unopened.js new file mode 100644 index 0000000000..a7a2afb492 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/grammar-extension-unopened.js @@ -0,0 +1,22 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-01-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-01-negated.js new file mode 100644 index 0000000000..0fd0bb3770 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-01-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ General_Category=Uppercase_Letter }/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-01.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-01.js new file mode 100644 index 0000000000..5962132504 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-01.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ General_Category=Uppercase_Letter }/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-02-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-02-negated.js new file mode 100644 index 0000000000..4bc3ad10bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-02-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ Lowercase }/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-02.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-02.js new file mode 100644 index 0000000000..d7979fe1a5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-02.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ Lowercase }/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-03-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-03-negated.js new file mode 100644 index 0000000000..6981de9cb1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-03-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ANY}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-03.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-03.js new file mode 100644 index 0000000000..55d551e70f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-03.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ANY}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-04-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-04-negated.js new file mode 100644 index 0000000000..bcb22bc1d2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-04-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ASSIGNED}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-04.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-04.js new file mode 100644 index 0000000000..a217494e04 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-04.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ASSIGNED}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-05-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-05-negated.js new file mode 100644 index 0000000000..c13df11cfa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-05-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Ascii}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-05.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-05.js new file mode 100644 index 0000000000..55ff24397e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-05.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Ascii}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-06-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-06-negated.js new file mode 100644 index 0000000000..bb30a870d6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-06-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{General_Category = Uppercase_Letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-06.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-06.js new file mode 100644 index 0000000000..baf7361a6d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-06.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{General_Category = Uppercase_Letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-07-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-07-negated.js new file mode 100644 index 0000000000..2f3ac150de --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-07-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{_-_lOwEr_C-A_S-E_-_}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-07.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-07.js new file mode 100644 index 0000000000..f149cdefd7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-07.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{_-_lOwEr_C-A_S-E_-_}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-08-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-08-negated.js new file mode 100644 index 0000000000..571558b88f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-08-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{any}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-08.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-08.js new file mode 100644 index 0000000000..c799535a8a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-08.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{any}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-09-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-09-negated.js new file mode 100644 index 0000000000..72829c262b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-09-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{ascii}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-09.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-09.js new file mode 100644 index 0000000000..a3403243ea --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-09.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{ascii}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-10-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-10-negated.js new file mode 100644 index 0000000000..6d0451789b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-10-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{assigned}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-10.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-10.js new file mode 100644 index 0000000000..0789f4f774 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-10.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{assigned}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-11-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-11-negated.js new file mode 100644 index 0000000000..5ca93c9627 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-11-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{gC=uppercase_letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-11.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-11.js new file mode 100644 index 0000000000..dd8db3de99 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-11.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{gC=uppercase_letter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-12-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-12-negated.js new file mode 100644 index 0000000000..800f90a70f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-12-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{gc=uppercaseletter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-12.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-12.js new file mode 100644 index 0000000000..45ca136b9d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-12.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{gc=uppercaseletter}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-13-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-13-negated.js new file mode 100644 index 0000000000..e2e2ddcad2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-13-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{lowercase}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-13.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-13.js new file mode 100644 index 0000000000..ffec23980b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-13.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{lowercase}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-14-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-14-negated.js new file mode 100644 index 0000000000..e2e2ddcad2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-14-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{lowercase}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-14.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-14.js new file mode 100644 index 0000000000..ffec23980b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/loose-matching-14.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{lowercase}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated.js new file mode 100644 index 0000000000..71d88e250f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals-negated.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{General_Category=}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals.js new file mode 100644 index 0000000000..5fc26a981a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-equals.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{General_Category=}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated.js new file mode 100644 index 0000000000..acf816c2c6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category-negated.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{General_Category}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category.js new file mode 100644 index 0000000000..fb5143ecd9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-General_Category.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{General_Category}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated.js new file mode 100644 index 0000000000..0f52ab07b8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals-negated.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Script=}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals.js new file mode 100644 index 0000000000..9614a7f5e7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-equals.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Script=}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated.js new file mode 100644 index 0000000000..9888ae8f99 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script-negated.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Script}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script.js new file mode 100644 index 0000000000..a68249040a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Script}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated.js new file mode 100644 index 0000000000..06a9bdc448 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals-negated.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Script_Extensions=}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals.js new file mode 100644 index 0000000000..6456cc6af4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-equals.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Script_Extensions=}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated.js new file mode 100644 index 0000000000..68d76f139c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions-negated.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Script_Extensions}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions.js new file mode 100644 index 0000000000..994aa6d308 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-binary-property-without-value-Script_Extensions.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Script_Extensions}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-binary-property-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-binary-property-negated.js new file mode 100644 index 0000000000..eafa369663 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-binary-property-negated.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{UnknownBinaryProperty}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-binary-property.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-binary-property.js new file mode 100644 index 0000000000..da1e017aa0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-binary-property.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{UnknownBinaryProperty}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-and-value-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-and-value-negated.js new file mode 100644 index 0000000000..828fbcd236 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-and-value-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Line_Breakz=WAT}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-and-value.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-and-value.js new file mode 100644 index 0000000000..299186715c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-and-value.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Line_Breakz=WAT}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated.js new file mode 100644 index 0000000000..ad5a450868 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-existing-value-negated.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Line_Breakz=Alphabetic}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-existing-value.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-existing-value.js new file mode 100644 index 0000000000..3c15bb1002 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-existing-value.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Line_Breakz=Alphabetic}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated.js new file mode 100644 index 0000000000..a04bb578f2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-General_Category-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\\P{General_Category=WAT}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated.js new file mode 100644 index 0000000000..d5b5fcd371 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\\P{Script=FooBarBazInvalid}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script.js new file mode 100644 index 0000000000..7e84a9d711 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\\p{Script=FooBarBazInvalid}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated.js new file mode 100644 index 0000000000..af3d4e6439 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\\P{Script_Extensions=H_e_h}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions.js new file mode 100644 index 0000000000..a1e1a5d8d5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-Script_Extensions.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\\p{Script_Extensions=H_e_h}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-general-category.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-general-category.js new file mode 100644 index 0000000000..bf78af52f5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/non-existent-property-value-general-category.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\\p{General_Category=WAT}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/shell.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated.js new file mode 100644 index 0000000000..a774724470 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Composition_Exclusion}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion.js new file mode 100644 index 0000000000..ed01765fd3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Composition_Exclusion.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Composition_Exclusion}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated.js new file mode 100644 index 0000000000..103fbd35de --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Expands_On_NFC}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC.js new file mode 100644 index 0000000000..3f4f1f0bce --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFC.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Expands_On_NFC}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated.js new file mode 100644 index 0000000000..6b6c5c6285 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Expands_On_NFD}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD.js new file mode 100644 index 0000000000..a5b0c12895 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFD.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Expands_On_NFD}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated.js new file mode 100644 index 0000000000..5b09ad7ed4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Expands_On_NFKC}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC.js new file mode 100644 index 0000000000..1bb2b25b23 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKC.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Expands_On_NFKC}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated.js new file mode 100644 index 0000000000..51222095c4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Expands_On_NFKD}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD.js new file mode 100644 index 0000000000..57bcc73f79 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Expands_On_NFKD.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Expands_On_NFKD}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated.js new file mode 100644 index 0000000000..9bf81d7cee --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{FC_NFKC_Closure}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure.js new file mode 100644 index 0000000000..4bca8d9ba5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-FC_NFKC_Closure.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{FC_NFKC_Closure}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated.js new file mode 100644 index 0000000000..8a07b645f3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Full_Composition_Exclusion}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion.js new file mode 100644 index 0000000000..6f609a5bff --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Full_Composition_Exclusion.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Full_Composition_Exclusion}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated.js new file mode 100644 index 0000000000..6b64ce8ced --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Grapheme_Link}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link.js new file mode 100644 index 0000000000..338961643e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Grapheme_Link.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Grapheme_Link}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated.js new file mode 100644 index 0000000000..0f5976b2c2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Hyphen}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen.js new file mode 100644 index 0000000000..b2e4e1e1e8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Hyphen.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Hyphen}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated.js new file mode 100644 index 0000000000..e5d8507899 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Other_Alphabetic}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic.js new file mode 100644 index 0000000000..4f9eaed6e8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Alphabetic.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Other_Alphabetic}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated.js new file mode 100644 index 0000000000..2dccaf3785 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Other_Default_Ignorable_Code_Point}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point.js new file mode 100644 index 0000000000..86897448f1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Default_Ignorable_Code_Point.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Other_Default_Ignorable_Code_Point}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated.js new file mode 100644 index 0000000000..70a1b13be3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Other_Grapheme_Extend}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend.js new file mode 100644 index 0000000000..d1e95b7ef7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Grapheme_Extend.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Other_Grapheme_Extend}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated.js new file mode 100644 index 0000000000..842fdbd71b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Other_ID_Continue}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue.js new file mode 100644 index 0000000000..60aadfa0d7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Continue.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Other_ID_Continue}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated.js new file mode 100644 index 0000000000..5ed7b1de63 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Other_ID_Start}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start.js new file mode 100644 index 0000000000..735e931eb5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_ID_Start.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Other_ID_Start}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated.js new file mode 100644 index 0000000000..894a3a1712 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Other_Lowercase}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase.js new file mode 100644 index 0000000000..612026b404 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Lowercase.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Other_Lowercase}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated.js new file mode 100644 index 0000000000..a5d8abf5a2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Other_Math}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math.js new file mode 100644 index 0000000000..ae05560fd9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Math.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Other_Math}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated.js new file mode 100644 index 0000000000..e201bcdb18 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Other_Uppercase}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase.js new file mode 100644 index 0000000000..fd0d742924 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Other_Uppercase.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Other_Uppercase}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated.js new file mode 100644 index 0000000000..fcabc64b75 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Prepended_Concatenation_Mark}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark.js new file mode 100644 index 0000000000..42282d6854 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-binary-property-Prepended_Concatenation_Mark.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Prepended_Concatenation_Mark}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated.js new file mode 100644 index 0000000000..fbd2eaf307 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Block=Adlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value.js new file mode 100644 index 0000000000..60d924a8e7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Block-with-value.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Block=Adlam}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated.js new file mode 100644 index 0000000000..aea0c316d0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{FC_NFKC_Closure}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure.js new file mode 100644 index 0000000000..e09437ed21 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-FC_NFKC_Closure.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{FC_NFKC_Closure}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated.js new file mode 100644 index 0000000000..f28b28f567 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Line_Break=Alphabetic}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated.js new file mode 100644 index 0000000000..f28b28f567 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value-negated.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\P{Line_Break=Alphabetic}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value.js new file mode 100644 index 0000000000..39a9c89535 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break-with-value.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Line_Break=Alphabetic}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break.js b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break.js new file mode 100644 index 0000000000..16879d8ad0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/property-escapes/unsupported-property-Line_Break.js @@ -0,0 +1,19 @@ +// |reftest| error:SyntaxError +// 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] +---*/ + +$DONOTEVALUATE(); + +/\p{Line_Break}/u; diff --git a/js/src/tests/test262/built-ins/RegExp/proto-from-ctor-realm.js b/js/src/tests/test262/built-ins/RegExp/proto-from-ctor-realm.js new file mode 100644 index 0000000000..2b38b40f95 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/proto-from-ctor-realm.js @@ -0,0 +1,32 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-boolean-constructor-boolean-value +description: Default [[Prototype]] value derived from realm of the newTarget +info: | + [...] + 2. If NewTarget is not undefined, let newTarget be NewTarget. + [...] + 7. Let O be ? RegExpAlloc(newTarget). + [...] + + 9.1.14 GetPrototypeFromConstructor + + [...] + 3. Let proto be ? Get(constructor, "prototype"). + 4. If Type(proto) is not Object, then + a. Let realm be ? GetFunctionRealm(constructor). + b. Let proto be realm's intrinsic object named intrinsicDefaultProto. + [...] +features: [cross-realm, Reflect] +---*/ + +var other = $262.createRealm().global; +var C = new other.Function(); +C.prototype = null; + +var o = Reflect.construct(RegExp, [], C); + +assert.sameValue(Object.getPrototypeOf(o), other.RegExp.prototype); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/15.10.6.js b/js/src/tests/test262/built-ins/RegExp/prototype/15.10.6.js new file mode 100644 index 0000000000..80dbe9887a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/15.10.6.js @@ -0,0 +1,13 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.6 +description: RegExp.prototype is itself a not RegExp +---*/ + + var s = Object.prototype.toString.call(RegExp.prototype); + +assert.sameValue(s, '[object Object]', 's'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A1.js b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A1.js new file mode 100644 index 0000000000..04d04f3210 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A1.js @@ -0,0 +1,11 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp has property prototype +es5id: 15.10.5.1_A1 +description: Checking RegExp.prototype property +---*/ +assert.sameValue(RegExp.hasOwnProperty('prototype'), true, 'RegExp.hasOwnProperty(\'prototype\') must return true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A2.js b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A2.js new file mode 100644 index 0000000000..3ae4b9d1bd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A2.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype property has the attribute DontEnum +es5id: 15.10.5.1_A2 +description: Checking if enumerating the RegExp.prototype property fails +---*/ +assert.sameValue(RegExp.hasOwnProperty('prototype'), true, 'RegExp.hasOwnProperty(\'prototype\') must return true'); + +assert.sameValue( + RegExp.propertyIsEnumerable('prototype'), + false, + 'RegExp.propertyIsEnumerable(\'prototype\') must return false' +); + +var count=0; +for (var p in RegExp){ + if (p==="prototype") { + count++; + } +} + +assert.sameValue(count, 0, 'The value of count is expected to be 0'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A3.js b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A3.js new file mode 100644 index 0000000000..d88e80882e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A3.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype property has the attribute DontDelete +es5id: 15.10.5.1_A3 +description: Checking if deleting the RegExp.prototype property fails +includes: [propertyHelper.js] +---*/ +assert.sameValue(RegExp.hasOwnProperty('prototype'), true); + +verifyNotConfigurable(RegExp, "prototype"); + +try { + assert.sameValue(delete RegExp.prototype, false); +} catch (e) { + if (e instanceof Test262Error) { + throw e; + } + assert(e instanceof TypeError); +} + +if (RegExp.hasOwnProperty('prototype') !== true) { + throw new Test262Error('#2: delete RegExp.prototype; RegExp.hasOwnProperty(\'prototype\') === true'); +} + +// TODO: Convert to verifyProperty() format. +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A4.js b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A4.js new file mode 100644 index 0000000000..f55d12ffb5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.5.1_A4.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype property has the attribute ReadOnly +es5id: 15.10.5.1_A4 +description: Checking if varying the RegExp.prototype property fails +includes: [propertyHelper.js] +---*/ +assert.sameValue(RegExp.hasOwnProperty('prototype'), true, 'RegExp.hasOwnProperty(\'prototype\') must return true'); + +var __obj = RegExp.prototype; + +verifyNotWritable(RegExp, "prototype", null, function(){return "shifted";}); + +assert.sameValue(RegExp.prototype, __obj, 'The value of RegExp.prototype is expected to equal the value of __obj'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6.1_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6.1_A1_T1.js new file mode 100644 index 0000000000..00da30eab9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6.1_A1_T1.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The initial value of RegExp.prototype.constructor is the built-in RegExp + constructor +es5id: 15.10.6.1_A1_T1 +description: Compare RegExp.prototype.constructor with RegExp +---*/ +assert.sameValue( + RegExp.prototype.constructor, + RegExp, + 'The value of RegExp.prototype.constructor is expected to equal the value of RegExp' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6.1_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6.1_A1_T2.js new file mode 100644 index 0000000000..01dada3d9e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6.1_A1_T2.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The initial value of RegExp.prototype.constructor is the built-in RegExp + constructor +es5id: 15.10.6.1_A1_T2 +description: > + Compare instance.constructor !== RegExp, where instance is new + RegExp.prototype.constructor +---*/ + +var __FACTORY = RegExp.prototype.constructor; + +var __instance = new __FACTORY; + +assert.sameValue( + __instance instanceof RegExp, + true, + 'The result of evaluating (__instance instanceof RegExp) is expected to be true' +); + +assert.sameValue( + __instance.constructor, + RegExp, + 'The value of __instance.constructor is expected to equal the value of RegExp' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6_A1_T1.js new file mode 100644 index 0000000000..c7c472c997 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6_A1_T1.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The value of the internal [[Prototype]] property of the RegExp prototype + object is the Object prototype +es5id: 15.10.6_A1_T1 +description: Checking Object.prototype.isPrototypeOf(RegExp.prototype) +---*/ +assert.sameValue( + Object.prototype.isPrototypeOf(RegExp.prototype), + true, + 'Object.prototype.isPrototypeOf(RegExp.prototype) must return true' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6_A1_T2.js new file mode 100644 index 0000000000..9de66ca246 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/S15.10.6_A1_T2.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The value of the internal [[Prototype]] property of the RegExp prototype + object is the Object prototype +es5id: 15.10.6_A1_T2 +description: > + Add new property to Object.prototype and check it of + RegExp.prototype +---*/ + +Object.prototype.indicator = 1; + +assert.sameValue(RegExp.prototype.indicator, 1, 'The value of RegExp.prototype.indicator is expected to be 1'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-coerce-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-coerce-lastindex.js new file mode 100644 index 0000000000..1de99223f4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-coerce-lastindex.js @@ -0,0 +1,35 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Type coercion of `lastIndex` property value +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 8. Else, let lastIndex be ? ToLength(? Get(R, "lastIndex")). +features: [Symbol.match] +---*/ + +var r = /./y; +var result; + +r.lastIndex = '1.9'; + +result = r[Symbol.match]('abc'); + +assert.notSameValue(result, null); +assert.sameValue(result.length, 1); +assert.sameValue(result[0], 'b'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-g-set-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-g-set-lastindex-err.js new file mode 100644 index 0000000000..d4954c4915 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-g-set-lastindex-err.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error thrown while setting `lastIndex` after a match failure +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 3. Let length be the number of code units in S. + [...] + 11. Let matchSucceeded be false. + 12. Repeat, while matchSucceeded is false + a. If lastIndex > length, then + i. If global is true or sticky is true, then + 1. Perform ? Set(R, "lastIndex", 0, true). + ii. Return null. +features: [Symbol.match] +---*/ + +var r = /a/g; +Object.defineProperty(r, 'lastIndex', { writable: false }); + +assert.throws(TypeError, function() { + r[Symbol.match]('b'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-g-set-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-g-set-lastindex.js new file mode 100644 index 0000000000..efdcc6c304 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-g-set-lastindex.js @@ -0,0 +1,40 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Setting `lastIndex` to `0` after a match failure +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 3. Let length be the number of code units in S. + [...] + 11. Let matchSucceeded be false. + 12. Repeat, while matchSucceeded is false + a. If lastIndex > length, then + i. If global is true or sticky is true, then + 1. Perform ? Set(R, "lastIndex", 0, true). + ii. Return null. +features: [Symbol.match] +---*/ + +var r = /a/g; +r.lastIndex = 3; + +r[Symbol.match]('b'); + +assert.sameValue(r.lastIndex, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-return-val.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-return-val.js new file mode 100644 index 0000000000..4271bcb800 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-return-val.js @@ -0,0 +1,38 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Return value after a match failure +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 3. Let length be the number of code units in S. + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 14. Let matchSucceeded be false. + 15. Repeat, while matchSucceeded is false + a. If lastIndex > length, then + i. Let setStatus be Set(R, "lastIndex", 0, true). + ii. ReturnIfAbrupt(setStatus). + iii. Return null. +features: [Symbol.match] +---*/ + +var r = /a/; + +assert.sameValue(r[Symbol.match]('b'), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-return-val.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-return-val.js new file mode 100644 index 0000000000..09a52e14bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-return-val.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Return value after a "sticky" match failure +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 14. Let matchSucceeded be false. + 15. Repeat, while matchSucceeded is false + [...] + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). + 2. ReturnIfAbrupt(setStatus). + 3. Return null. +features: [Symbol.match] +---*/ + +assert.sameValue(/a/y[Symbol.match]('ba'), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-set-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-set-lastindex-err.js new file mode 100644 index 0000000000..5942f5a220 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-set-lastindex-err.js @@ -0,0 +1,44 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error thrown while setting `lastIndex` after a "sticky" match + failure +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 14. Let matchSucceeded be false. + 15. Repeat, while matchSucceeded is false + [...] + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). + 2. ReturnIfAbrupt(setStatus). +features: [Symbol.match] +---*/ + +var r = /a/y; + +Object.defineProperty(r, 'lastIndex', { writable: false }); + +assert.throws(TypeError, function() { + r[Symbol.match]('ba'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-set-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-set-lastindex.js new file mode 100644 index 0000000000..dae445fba7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-failure-y-set-lastindex.js @@ -0,0 +1,40 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Setting `lastIndex` to `0` after a "sticky" match failure +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 14. Let matchSucceeded be false. + 15. Repeat, while matchSucceeded is false + [...] + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). +features: [Symbol.match] +---*/ + +var r = /a/y; +r.lastIndex = 1; + +r[Symbol.match]('aba'); + +assert.sameValue(r.lastIndex, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-infer-unicode.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-infer-unicode.js new file mode 100644 index 0000000000..4b54342f63 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-infer-unicode.js @@ -0,0 +1,40 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Extended unicode support is determined by internal slot (not `unicode` + property) +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 12. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 13. If flags contains "u", let fullUnicode be true, else let fullUnicode be + false. +features: [Symbol.match] +---*/ + +var r; + +r = /\udf06/; +Object.defineProperty(r, 'unicode', { value: true }); +assert.notSameValue(r[Symbol.match]('\ud834\udf06'), null); + +r = /\udf06/u; +Object.defineProperty(r, 'unicode', { value: false }); +assert.sameValue(r[Symbol.match]('\ud834\udf06'), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-g-set-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-g-set-lastindex-err.js new file mode 100644 index 0000000000..69a5517173 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-g-set-lastindex-err.js @@ -0,0 +1,54 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error thrown while setting `lastIndex` after a "global" match + success +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 18. If global is true or sticky is true, + a. Let setStatus be Set(R, "lastIndex", e, true). + b. ReturnIfAbrupt(setStatus). +features: [Symbol.match] +---*/ + +var r = /b/g; +var callCount = 0; + +// Because this test speicifically concerns the behavior when setting +// "lastIndex" following a match, care must be taken to avoid triggering a +// similar error when `lastIndex` is initially set to `0` earlier in the +// algorithm. +// +// Because the `lastIndex` property is non-configurable, this cannot be +// accomplished with a simple "set" accessor function. +// +// Defer disabling modification of `lastIndex` until after the "this" value's +// `exec` property has been accessed, ensuring that the resultant abrupt +// completion originates from the second property modification. +Object.defineProperty(r, 'exec', { + get: function() { + Object.defineProperty(r, 'lastIndex', { writable: false }); + } +}); + +assert.throws(TypeError, function() { + r[Symbol.match]('abc'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-g-set-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-g-set-lastindex.js new file mode 100644 index 0000000000..dc8548afdf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-g-set-lastindex.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Setting `lastIndex` after a "global" match success +esid: sec-regexp.prototype-@@match +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 5. Let flags be the value of R's [[OriginalFlags]] internal slot. + 6. If flags contains "g", let global be true, else let global be false. + [...] + 16. Let e be r's endIndex value. + [...] + 18. If global is true or sticky is true, + a. Let setStatus be Set(R, "lastIndex", e, true). +features: [Symbol.match] +---*/ + +// The conflicting values for the "global" flag are necessary to observe the +// final modification of `lastIndex` in RegExpBuiltinExec +var r = /b/g; +Object.defineProperty(r, 'global', { value: false }); + +r[Symbol.match]('abc'); + +assert.sameValue(r.lastIndex, 2); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-return-val-groups.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-return-val-groups.js new file mode 100644 index 0000000000..86d8aaa53f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-return-val-groups.js @@ -0,0 +1,51 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Return value after successful match with capturing groups +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 20. Let A be ArrayCreate(n + 1). + [...] + 24. Perform CreateDataProperty(A, "index", matchIndex). + 25. Perform CreateDataProperty(A, "input", S). + 26. Let matchedSubstr be the matched substring (i.e. the portion of S + between offset lastIndex inclusive and offset e exclusive). + 27. Perform CreateDataProperty(A, "0", matchedSubstr). + 28. For each integer i such that i > 0 and i ≤ n + [...] + d. Else, fullUnicode is false, + i. Assert: captureI is a List of code units. + ii. Let capturedValue be a string consisting of the code units of + captureI. + e. Perform CreateDataProperty(A, ToString(i) , capturedValue). + [...] + 29. Return A. +features: [Symbol.match] +---*/ + +var result = /b(.).(.)./[Symbol.match]('abcdefg'); + +assert(Array.isArray(result)); +assert.sameValue(result.index, 1); +assert.sameValue(result.input, 'abcdefg'); +assert.sameValue(result.length, 3); +assert.sameValue(result[0], 'bcdef'); +assert.sameValue(result[1], 'c'); +assert.sameValue(result[2], 'e'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-return-val.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-return-val.js new file mode 100644 index 0000000000..cf833f4fab --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-return-val.js @@ -0,0 +1,42 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Return value after successful match +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 20. Let A be ArrayCreate(n + 1). + [...] + 24. Perform CreateDataProperty(A, "index", matchIndex). + 25. Perform CreateDataProperty(A, "input", S). + 26. Let matchedSubstr be the matched substring (i.e. the portion of S + between offset lastIndex inclusive and offset e exclusive). + 27. Perform CreateDataProperty(A, "0", matchedSubstr). + [...] + 29. Return A. +features: [Symbol.match] +---*/ + +var result = /b./[Symbol.match]('abcd'); + +assert(Array.isArray(result)); +assert.sameValue(result.index, 1); +assert.sameValue(result.input, 'abcd'); +assert.sameValue(result.length, 1); +assert.sameValue(result[0], 'bc'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-u-return-val-groups.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-u-return-val-groups.js new file mode 100644 index 0000000000..e324b49846 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-u-return-val-groups.js @@ -0,0 +1,53 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Return value after successful match with extended unicode capturing groups +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 20. Let A be ArrayCreate(n + 1). + [...] + 24. Perform CreateDataProperty(A, "index", matchIndex). + 25. Perform CreateDataProperty(A, "input", S). + 26. Let matchedSubstr be the matched substring (i.e. the portion of S + between offset lastIndex inclusive and offset e exclusive). + 27. Perform CreateDataProperty(A, "0", matchedSubstr). + 28. For each integer i such that i > 0 and i ≤ n + [...] + c. Else if fullUnicode is true, + i. Assert: captureI is a List of code points. + ii. Let capturedValue be a string whose code units are the + UTF16Encoding (10.1.1) of the code points of captureI. + [...] + e. Perform CreateDataProperty(A, ToString(i) , capturedValue). + [...] + 29. Return A. +features: [Symbol.match] +---*/ + +var result = /b(.).(.)./u[Symbol.match]('ab\ud834\udf06defg'); + +assert(Array.isArray(result)); +assert.sameValue(result.index, 1); +assert.sameValue(result.input, 'ab\ud834\udf06defg'); +assert.sameValue(result.length, 3); +assert.sameValue(result[0], 'b\ud834\udf06def'); +assert.sameValue(result[1], '\ud834\udf06'); +assert.sameValue(result[2], 'e'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-y-set-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-y-set-lastindex-err.js new file mode 100644 index 0000000000..d48ba62333 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-y-set-lastindex-err.js @@ -0,0 +1,38 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error thrown while setting `lastIndex` after a "sticky" match + success +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 18. If global is true or sticky is true, + a. Let setStatus be Set(R, "lastIndex", e, true). + b. ReturnIfAbrupt(setStatus). +features: [Symbol.match] +---*/ + +var r = /a/y; + +Object.defineProperty(r, 'lastIndex', { writable: false }); + +assert.throws(TypeError, function() { + r[Symbol.match]('a'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-y-set-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-y-set-lastindex.js new file mode 100644 index 0000000000..a2eff7604e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-success-y-set-lastindex.js @@ -0,0 +1,35 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Setting `lastIndex` after a "sticky" match success +es6id: 21.2.5.6 +info: | + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 16. Let e be r's endIndex value. + [...] + 18. If global is true or sticky is true, + a. Let setStatus be Set(R, "lastIndex", e, true). +features: [Symbol.match] +---*/ + +var r = /a/y; + +r[Symbol.match]('a'); + +assert.sameValue(r.lastIndex, 1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-y-coerce-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-y-coerce-lastindex-err.js new file mode 100644 index 0000000000..9ef965f7d2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/builtin-y-coerce-lastindex-err.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Behavior when coercion of `lastIndex` attribute throws an error +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 7. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 7. If global is false and sticky is false, let lastIndex be 0. + 8. Else, let lastIndex be ? ToLength(? Get(R, "lastIndex")). +features: [Symbol.match] +---*/ + +var r = /./y; +r.lastIndex = { + valueOf: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + r[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-arg-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-arg-err.js new file mode 100644 index 0000000000..6c7ede9f51 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-arg-err.js @@ -0,0 +1,27 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error thrown during string coercion of first parameter +es6id: 21.2.5.6 +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 3. Let S be ToString(string) + 4. ReturnIfAbrupt(S). +features: [Symbol.match] +---*/ + +var str = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + /./[Symbol.match](str); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-arg.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-arg.js new file mode 100644 index 0000000000..5b3ef902b2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-arg.js @@ -0,0 +1,27 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: String coercion of first parameter +es6id: 21.2.5.6 +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 3. Let S be ToString(string) + [...] +features: [Symbol.match] +---*/ + +var obj = { + valueOf: function() { + throw new Test262Error('This method should not be invoked.'); + }, + toString: function() { + return 'toString value'; + } +}; + +assert.notSameValue(/toString value/[Symbol.match](obj), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-global.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-global.js new file mode 100644 index 0000000000..82750300d6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/coerce-global.js @@ -0,0 +1,87 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Boolean coercion of `global` property +esid: sec-regexp.prototype-@@match +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 4. Let global be ToBoolean(? Get(rx, "global")). + 5. If global is false, then + a. Return ? RegExpExec(rx, S). + 6. Else global is true, + a. Let fullUnicode be ToBoolean(? Get(rx, "unicode")). + [...] +features: [Symbol.match] +---*/ + +var exec = function() { + execCount += 1; + if (execCount === 1) { + return ['']; + } + return null; +}; +var r, result, execCount; + +r = /a/g; +r.exec = exec; +Object.defineProperty(r, 'global', { writable: true }); + +execCount = 0; +r.global = undefined; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 1, 'value: undefined'); + +execCount = 0; +r.global = null; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 1, 'value: null'); + +execCount = 0; +r.global = false; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 1, 'value: false'); + +execCount = 0; +r.global = NaN; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 1, 'value: NaN'); + +execCount = 0; +r.global = 0; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 1, 'value: 0'); + +execCount = 0; +r.global = ''; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 1, 'value: ""'); + +r = /a/; +r.exec = exec; +Object.defineProperty(r, 'global', { writable: true }); + +r.global = true; +execCount = 0; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 2, 'value: true'); + +r.global = 86; +execCount = 0; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 2, 'value: 86'); + +r.global = Symbol.match; +execCount = 0; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 2, 'value: Symbol.match'); + +r.global = {}; +execCount = 0; +r[Symbol.match]('aa'); +assert.sameValue(execCount, 2, 'value: {}'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-err.js new file mode 100644 index 0000000000..9d6ba24730 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-err.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Behavior when error is thrown by `exec` method +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 5. If IsCallable(exec) is true, then + a. Let result be Call(exec, R, «S»). + b. ReturnIfAbrupt(result). +features: [Symbol.match] +---*/ + +var r = /./; + +r.exec = function() { + throw new Test262Error(); +}; + +assert.throws(Test262Error, function() { + r[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-invocation.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-invocation.js new file mode 100644 index 0000000000..9322ef4d81 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-invocation.js @@ -0,0 +1,43 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Invocation of `exec` method +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 5. If IsCallable(exec) is true, then + a. Let result be Call(exec, R, «S»). +features: [Symbol.match] +---*/ + +var r = /./; +var callCount = 0; +var arg = { + toString: function() { + return 'string form'; + } +}; +var thisValue, args; + +r.exec = function() { + thisValue = this; + args = arguments; + callCount += 1; + return null; +}; + +r[Symbol.match](arg); + +assert.sameValue(callCount, 1); +assert.sameValue(thisValue, r); +assert.sameValue(args.length, 1); +assert.sameValue(args[0], 'string form'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-return-type-invalid.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-return-type-invalid.js new file mode 100644 index 0000000000..b173aee5d7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-return-type-invalid.js @@ -0,0 +1,58 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Behavior when `exec` method returns value of invalid type +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 5. If IsCallable(exec) is true, then + a. Let result be Call(exec, R, «S»). + b. ReturnIfAbrupt(result). + c. If Type(result) is neither Object or Null, throw a TypeError + exception. +features: [Symbol.match] +---*/ + +var r = /./; +var retValue; +r.exec = function() { + return retValue; +}; + +// Explicitly assert the method's presence to avoid false positives (i.e. +// TypeErrors thrown by invoking an undefined reference). +assert.sameValue(typeof r[Symbol.match], 'function'); + +retValue = undefined; +assert.throws(TypeError, function() { + r[Symbol.match](''); +}); + +retValue = true; +assert.throws(TypeError, function() { + r[Symbol.match](''); +}); + +retValue = 'string'; +assert.throws(TypeError, function() { + r[Symbol.match](''); +}); + +retValue = Symbol.match; +assert.throws(TypeError, function() { + r[Symbol.match](''); +}); + +retValue = 86; +assert.throws(TypeError, function() { + r[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-return-type-valid.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-return-type-valid.js new file mode 100644 index 0000000000..9a73b01290 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/exec-return-type-valid.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Behavior when `exec` method returns value of valid type +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 5. If IsCallable(exec) is true, then + a. Let result be Call(exec, R, «S»). + b. ReturnIfAbrupt(result). + c. If Type(result) is neither Object or Null, throw a TypeError + exception. + d. Return result. +features: [Symbol.match] +---*/ + +var r = /./; +var retValue; +r.exec = function() { + return retValue; +}; + +retValue = null; +assert.sameValue(r[Symbol.match](''), retValue); + +retValue = {}; +assert.sameValue(r[Symbol.match](''), retValue); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/flags-tostring-error.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/flags-tostring-error.js new file mode 100644 index 0000000000..57faa2b888 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/flags-tostring-error.js @@ -0,0 +1,45 @@ +// Copyright (C) 2022 Richard Gibson. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Errors thrown by converting `flags` to string are forwarded to the runtime +esid: sec-regexp.prototype-@@match +info: | + 1. Let _rx_ be the *this* value. + 2. If Type(_rx_) is not Object, throw a *TypeError* exception. + 3. Let _S_ be ? ToString(_string_). + 4. Let _flags_ be ? ToString(? Get(_rx_, *"flags"*)). +features: [Symbol.match] +---*/ + +function CustomError() {} +var toStringThrows = { + [Symbol.toPrimitive](hint) { + if (hint === 'string') { + throw new CustomError(); + } + throw new Test262Error('@@toPrimitive should be called with hint "string"'); + }, + get toString() { throw new Test262Error('toString property should not be read'); }, + get valueOf() { throw new Test262Error('valueOf property should not be read'); } +}; + +var re = /./; +Object.defineProperties(re, { + flags: { + get() { return toStringThrows; } + }, + global: { + get() { throw new Test262Error('global property should not be read'); } + }, + unicode: { + get() { throw new Test262Error('unicode property should not be read'); } + } +}); + +assert.throws(CustomError, function() { + re[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-coerce-result-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-coerce-result-err.js new file mode 100644 index 0000000000..72b4033d09 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-coerce-result-err.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while coercing `0` property of match result +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + [...] + iv. Else result is not null, + 1. Let matchStr be ToString(Get(result, "0")). + 2. ReturnIfAbrupt(matchStr). +features: [Symbol.match] +---*/ + +var r = /./g; +r.exec = function() { + return { + 0: { + toString: function() { + throw new Test262Error(); + } + } + }; +}; + +assert.throws(Test262Error, function() { + r[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-get-exec-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-get-exec-err.js new file mode 100644 index 0000000000..da260f89ca --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-get-exec-err.js @@ -0,0 +1,39 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when there is an error thrown while accessing the `exec` method of + "global" instances +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + ii. ReturnIfAbrupt(result). + + ES6 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 3. Let exec be Get(R, "exec"). + 4. ReturnIfAbrupt(exec). +features: [Symbol.match] +---*/ + +var r = { flags: 'g', global: true }; +Object.defineProperty(r, 'exec', { + get: function() { + throw new Test262Error(); + } +}); + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.match].call(r, ''); +}); + +assert.sameValue(r.lastIndex, 0, 'Error thrown after setting `lastIndex`'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-get-result-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-get-result-err.js new file mode 100644 index 0000000000..00e26c5aec --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-get-result-err.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while accessing `0` property of match result +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + [...] + iv. Else result is not null, + 1. Let matchStr be ToString(Get(result, "0")). + 2. ReturnIfAbrupt(matchStr). +features: [Symbol.match] +---*/ + +var r = /./g; +var poisonedZero = { + get 0() { + throw new Test262Error(); + } +}; + +r.exec = function() { + return poisonedZero; +}; + +assert.throws(Test262Error, function() { + r[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-init-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-init-lastindex-err.js new file mode 100644 index 0000000000..cd214c8d58 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-init-lastindex-err.js @@ -0,0 +1,24 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Behavior when `lastIndex` cannot be set on "global" instances +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + c. Let setStatus be Set(rx, "lastIndex", 0, true). + d. ReturnIfAbrupt(setStatus). +features: [Symbol.match] +---*/ + +var r = /./g; +Object.defineProperty(r, 'lastIndex', { writable: false }); + +assert.throws(TypeError, function() { + r[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-init-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-init-lastindex.js new file mode 100644 index 0000000000..f407004ff4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-init-lastindex.js @@ -0,0 +1,22 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Initializing the value of `lastIndex` on "global" instances +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + c. Let setStatus be Set(rx, "lastIndex", 0, true). +features: [Symbol.match] +---*/ + +var r = /./g; + +r.lastIndex = 1; + +assert.notSameValue(r[Symbol.match]('a'), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-advance-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-advance-lastindex.js new file mode 100644 index 0000000000..40787a069e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-advance-lastindex.js @@ -0,0 +1,38 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + lastIndex is explicitly advanced for zero-length matches for "global" + instances +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + [...] + iv. Else result is not null, + [...] + 5. If matchStr is the empty String, then + [...] + c. Let nextIndex be AdvanceStringIndex(S, thisIndex, + fullUnicode). + d. Let setStatus be Set(rx, "lastIndex", nextIndex, true). + e. ReturnIfAbrupt(setStatus). + 6. Increment n. +features: [Symbol.match] +---*/ + +var result = /(?:)/g[Symbol.match]('abc'); + +assert.notSameValue(result, null); +assert.sameValue(result.length, 4); +assert.sameValue(result[0], ''); +assert.sameValue(result[1], ''); +assert.sameValue(result[2], ''); +assert.sameValue(result[3], ''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-coerce-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-coerce-lastindex-err.js new file mode 100644 index 0000000000..8b11e37cc9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-coerce-lastindex-err.js @@ -0,0 +1,52 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while type coercing `lastIndex` of zero-width + match +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + [...] + iv. Else result is not null, + 1. Let matchStr be ToString(Get(result, "0")). + [...] + 5. If matchStr is the empty String, then + a. Let thisIndex be ToLength(Get(rx, "lastIndex")). + b. ReturnIfAbrupt(thisIndex). +features: [Symbol.match] +---*/ + +var r = /./g; +var nextMatch; + +r.exec = function() { + var thisMatch = nextMatch; + if (thisMatch === null) { + return null; + } + nextMatch = null; + return { + get 0() { + r.lastIndex = { + valueOf: function() { + throw new Test262Error(); + } + }; + return thisMatch; + } + }; +}; + +nextMatch = ''; +assert.throws(Test262Error, function() { + r[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-set-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-set-lastindex-err.js new file mode 100644 index 0000000000..f767a612c3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-empty-set-lastindex-err.js @@ -0,0 +1,49 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while setting `lastIndex` after a zero-width + match +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + [...] + iv. Else result is not null, + 1. Let matchStr be ToString(Get(result, "0")). + [...] + 5. If matchStr is the empty String, then + [...] + d. Let setStatus be Set(rx, "lastIndex", nextIndex, true). + e. ReturnIfAbrupt(setStatus). +features: [Symbol.match] +---*/ + +var exec = function() { + var thisMatch = nextMatch; + if (thisMatch === null) { + return null; + } + nextMatch = null; + return { + get 0() { + Object.defineProperty(r, 'lastIndex', { writable: false }); + return thisMatch; + } + }; +}; +var r, nextMatch; + +r = /./g; +r.exec = exec; +nextMatch = ''; +assert.throws(TypeError, function() { + r[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-no-coerce-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-no-coerce-lastindex.js new file mode 100644 index 0000000000..3417f6cb3b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-no-coerce-lastindex.js @@ -0,0 +1,49 @@ +// Copyright (C) 2015 Mike Pennisi. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + The `lastIndex` property is not coerced for a non-empty string match +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + [...] + iv. Else result is not null, + 1. Let matchStr be ToString(Get(result, "0")). + [...] + 5. If matchStr is the empty String, then + a. Let thisIndex be ToLength(Get(rx, "lastIndex")). + b. ReturnIfAbrupt(thisIndex). +features: [Symbol.match] +---*/ + +var r = /./g; +var nextMatch; + +r.exec = function() { + var thisMatch = nextMatch; + if (thisMatch === null) { + return null; + } + nextMatch = null; + return { + get 0() { + r.lastIndex = { + valueOf: function() { + throw new Test262Error('This function should not be invoked.'); + } + }; + return thisMatch; + } + }; +}; + +nextMatch = 'a non-empty string'; +r[Symbol.match](''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-no-set-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-no-set-lastindex.js new file mode 100644 index 0000000000..7ca7374884 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-match-no-set-lastindex.js @@ -0,0 +1,45 @@ +// Copyright (C) 2015 Mike Pennisi. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The `lastIndex` is not set after a non-zero-width match +es6id: 21.2.5.6 +info: | + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + [...] + iv. Else result is not null, + 1. Let matchStr be ToString(Get(result, "0")). + [...] + 5. If matchStr is the empty String, then + [...] + d. Let setStatus be Set(rx, "lastIndex", nextIndex, true). + e. ReturnIfAbrupt(setStatus). +features: [Symbol.match] +---*/ + +var exec = function() { + var thisMatch = nextMatch; + if (thisMatch === null) { + return null; + } + nextMatch = null; + return { + get 0() { + Object.defineProperty(r, 'lastIndex', { writable: false }); + return thisMatch; + } + }; +}; +var r, nextMatch; + +r = /./g; +r.exec = exec; +nextMatch = 'a non-empty string'; +r[Symbol.match](''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-success-return-val.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-success-return-val.js new file mode 100644 index 0000000000..b5b50c7b9e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-success-return-val.js @@ -0,0 +1,48 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Return value when matches occur with the `global` flag +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + [...] + 8. Else global is true, + [...] + e. Let A be ArrayCreate(0). + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + ii. ReturnIfAbrupt(result). + iii. If result is null, then + 1. If n=0, return null. + 2. Else, return A. +features: [Symbol.match] +---*/ + +var result = /.(.)./g[Symbol.match]('abcdefghi'); + +assert(Array.isArray(result)); + +assert( + !Object.prototype.hasOwnProperty.call(result, 'index'), + 'Does not define an `index` "own" property' +); +assert.sameValue( + result.index, undefined, 'Does not define an `index` property' +); +assert( + !Object.prototype.hasOwnProperty.call(result, 'input'), + 'Does not define an `input` "own" property' +); +assert.sameValue( + result.input, undefined, 'Does not define an `input` property' +); + +assert.sameValue(result.length, 3); +assert.sameValue(result[0], 'abc'); +assert.sameValue(result[1], 'def'); +assert.sameValue(result[2], 'ghi'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-zero-matches.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-zero-matches.js new file mode 100644 index 0000000000..2c60e877f2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/g-zero-matches.js @@ -0,0 +1,23 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Return value when no matches occur with the `global` flag +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + ii. ReturnIfAbrupt(result). + iii. If result is null, then + 1. If n=0, return null. +features: [Symbol.match] +---*/ + +assert.sameValue(/a/g[Symbol.match]('b'), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-exec-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-exec-err.js new file mode 100644 index 0000000000..aabcd9a3e4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-exec-err.js @@ -0,0 +1,32 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Behavior when error is thrown while accessing `exec` property +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 3. Let exec be Get(R, "exec"). + 4. ReturnIfAbrupt(exec). +features: [Symbol.match] +---*/ + +var r = /./; + +Object.defineProperty(r, 'exec', { + get: function() { + throw new Test262Error(); + } +}); + +assert.throws(Test262Error, function() { + r[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-flags-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-flags-err.js new file mode 100644 index 0000000000..e45a8d0789 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-flags-err.js @@ -0,0 +1,34 @@ +// Copyright (C) 2022 Richard Gibson. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Errors thrown by `flags` accessor are forwarded to the runtime +esid: sec-regexp.prototype-@@match +info: | + 1. Let _rx_ be the *this* value. + 2. If Type(_rx_) is not Object, throw a *TypeError* exception. + 3. Let _S_ be ? ToString(_string_). + 4. Let _flags_ be ? ToString(? Get(_rx_, *"flags"*)). +features: [Symbol.match] +---*/ + +function CustomError() {} + +var obj = { + get flags() { + throw new CustomError(); + }, + get global() { + throw new Test262Error('global property should not be read'); + }, + get unicode() { + throw new Test262Error('unicode property should not be read'); + } +}; + +assert.throws(CustomError, function() { + RegExp.prototype[Symbol.match].call(obj); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-global-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-global-err.js new file mode 100644 index 0000000000..22690b007f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-global-err.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown during retrieval of `global` property +esid: sec-regexp.prototype-@@match +info: | + 1. Let _rx_ be the *this* value. + 2. If Type(_rx_) is not Object, throw a *TypeError* exception. + 3. Let _S_ be ? ToString(_string_). + 4. Let _flags_ be ? ToString(? Get(_rx_, *"flags"*)). + + sec-get-regexp.prototype.flags get RegExp.prototype.flags + 6. Let _global_ be ToBoolean(? Get(_R_, *"global"*)). +features: [Symbol.match] +---*/ + +var re = /./; +Object.defineProperty(re, 'global', { + get() { + throw new Test262Error(); + } +}); + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.match].call(re); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-unicode-error.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-unicode-error.js new file mode 100644 index 0000000000..496d101d4b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/get-unicode-error.js @@ -0,0 +1,39 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Errors thrown by `unicode` accessor are forwarded to the runtime +esid: sec-regexp.prototype-@@match +info: | + 1. Let _rx_ be the *this* value. + 2. If Type(_rx_) is not Object, throw a *TypeError* exception. + 3. Let _S_ be ? ToString(_string_). + 4. Let _flags_ be ? ToString(? Get(_rx_, *"flags"*)). + + sec-get-regexp.prototype.flags get RegExp.prototype.flags + 14. Let _unicode_ be ToBoolean(? Get(_R_, *"unicode"*)). +features: [Symbol.match] +---*/ + +var nonGlobalRe = /./; +var globalRe = /./g; +var accessor = function() { + throw new Test262Error(); +}; +Object.defineProperty(nonGlobalRe, 'unicode', { + get: accessor +}); +Object.defineProperty(globalRe, 'unicode', { + get: accessor +}); + +assert.throws(Test262Error, function() { + nonGlobalRe[Symbol.match](''); +}); + +assert.throws(Test262Error, function() { + globalRe[Symbol.match](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/length.js new file mode 100644 index 0000000000..ea84d3ce40 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/length.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.6 +description: RegExp.prototype[Symbol.match] `length` property +info: | + ES6 Section 17: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this value + is equal to the largest number of named arguments shown in the subclause + headings for the function description, including optional parameters. + + [...] + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [Symbol.match] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.match].length, 1); + +verifyNotEnumerable(RegExp.prototype[Symbol.match], 'length'); +verifyNotWritable(RegExp.prototype[Symbol.match], 'length'); +verifyConfigurable(RegExp.prototype[Symbol.match], 'length'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/name.js new file mode 100644 index 0000000000..2c676dba2f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/name.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.6 +description: RegExp.prototype[Symbol.match] `name` property +info: | + The value of the name property of this function is "[Symbol.match]". + + ES6 Section 17: + + [...] + + Unless otherwise specified, the name property of a built-in Function + object, if it exists, has the attributes { [[Writable]]: false, + [[Enumerable]]: false, [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [Symbol.match] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.match].name, '[Symbol.match]'); + +verifyNotEnumerable(RegExp.prototype[Symbol.match], 'name'); +verifyNotWritable(RegExp.prototype[Symbol.match], 'name'); +verifyConfigurable(RegExp.prototype[Symbol.match], 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/not-a-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/not-a-constructor.js new file mode 100644 index 0000000000..f56be3391f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/not-a-constructor.js @@ -0,0 +1,35 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + RegExp.prototype[Symbol.match] does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [Reflect.construct, Symbol, Symbol.match, arrow-function] +---*/ + +assert.sameValue( + isConstructor(RegExp.prototype[Symbol.match]), + false, + 'isConstructor(RegExp.prototype[Symbol.match]) must return false' +); + +assert.throws(TypeError, () => { + let re = new RegExp(''); new re[Symbol.match](); +}, '`let re = new RegExp(\'\'); new re[Symbol.match]()` throws TypeError'); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/prop-desc.js new file mode 100644 index 0000000000..bfc4b1b68f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/prop-desc.js @@ -0,0 +1,21 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.6 +description: RegExp.prototype[Symbol.match] property descriptor +info: | + ES6 Section 17 + + Every other data property described in clauses 18 through 26 and in Annex + B.2 has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. +includes: [propertyHelper.js] +features: [Symbol.match] +---*/ + +verifyNotEnumerable(RegExp.prototype, Symbol.match); +verifyWritable(RegExp.prototype, Symbol.match); +verifyConfigurable(RegExp.prototype, Symbol.match); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/this-val-non-obj.js new file mode 100644 index 0000000000..2c48f0ceeb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/this-val-non-obj.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The `this` value must be an object +es6id: 21.2.5.6 +info: | + 1. Let rx be the this value. + 2. If Type(rx) is not Object, throw a TypeError exception. +features: [Symbol.match] +---*/ + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.match].call(undefined); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.match].call(null); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.match].call(true); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.match].call('string'); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.match].call(Symbol.match); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.match].call(86); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/this-val-non-regexp.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/this-val-non-regexp.js new file mode 100644 index 0000000000..ec0f62d4ea --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/this-val-non-regexp.js @@ -0,0 +1,38 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when invoked on an object without a a [[RegExpMatcher]] internal + slot +es6id: 21.2.5.6 +info: | + [...] + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 5. If IsCallable(exec) is true, then + [...] + d. Return result. + 6. If R does not have a [[RegExpMatcher]] internal slot, throw a TypeError + exception. +features: [Symbol.match] +---*/ + +var objWithExec = { + exec: function() { + return null; + } +}; +var objWithoutExec = {}; + +RegExp.prototype[Symbol.match].call(objWithExec); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.match].call(objWithoutExec); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/u-advance-after-empty.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/u-advance-after-empty.js new file mode 100644 index 0000000000..0b37aa2184 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/u-advance-after-empty.js @@ -0,0 +1,32 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: lastIndex is advanced according to width of astral symbols +es6id: 21.2.5.6 +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 8. Else global is true, + a. Let fullUnicode be ToBoolean(Get(rx, "unicode")). + [...] + g. Repeat, + [...] + iv. Else result is not null, + [...] + 5. If matchStr is the empty String, then + [...] + c. Let nextIndex be AdvanceStringIndex(S, thisIndex, + fullUnicode). + d. Let setStatus be Set(rx, "lastIndex", nextIndex, true). +features: [Symbol.match] +---*/ + +var match = /^|\udf06/ug[Symbol.match]('\ud834\udf06'); + +assert(match !== null); +assert.sameValue(match.length, 1); +assert.sameValue(match[0], ''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-global-return.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-global-return.js new file mode 100644 index 0000000000..2feead0fe2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-global-return.js @@ -0,0 +1,49 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Accumulates consecutive matches when `g` flag is present +es6id: 21.2.5.6 +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + [...] + 8. Else global is true, + [...] + g. Repeat, + i. Let result be RegExpExec(rx, S). + ii. ReturnIfAbrupt(result). + iii. If result is null, then + 1. If n=0, return null. + 2. Else, return A. + [...] + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + [...] + 3. Return null. +features: [Symbol.match] +---*/ + +var result = /a/yg[Symbol.match]('aaba'); + +assert.notSameValue(result, null); +assert.sameValue(result.length, 2); +assert.sameValue(result[0], 'a'); +assert.sameValue(result[1], 'a'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-lastindex-no-write.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-lastindex-no-write.js new file mode 100644 index 0000000000..174a13fccf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-lastindex-no-write.js @@ -0,0 +1,42 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Match failure with non-writable `lastIndex` property +es6id: 21.2.5.6 +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). + 2. ReturnIfAbrupt(setStatus). +features: [Symbol.match] +---*/ + +var r = /c/y; +Object.defineProperty(r, 'lastIndex', { + writable: false +}); + +assert.throws(TypeError, function() { + r[Symbol.match]('abc'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-lastindex.js new file mode 100644 index 0000000000..be4f4d0fd0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-lastindex.js @@ -0,0 +1,39 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Resets the `lastIndex` property to zero after a match failure +es6id: 21.2.5.6 +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). +features: [Symbol.match] +---*/ + +var r = /c/y; +r.lastIndex = 1; + +r[Symbol.match]('abc'); + +assert.sameValue(r.lastIndex, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-return.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-return.js new file mode 100644 index 0000000000..eab1193a87 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-fail-return.js @@ -0,0 +1,35 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Stops match execution after first match failure +es6id: 21.2.5.6 +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + [...] + 3. Return null. +features: [Symbol.match] +---*/ + +assert.sameValue(/b/y[Symbol.match]('ab'), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-init-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-init-lastindex.js new file mode 100644 index 0000000000..2570ac501a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-init-lastindex.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Honors initial value of the `lastIndex` property +es6id: 21.2.5.6 +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + 9. ReturnIfAbrupt(sticky). + 10. If global is false and sticky is false, let lastIndex be 0. +features: [Symbol.match] +---*/ + +var r = /./y; +var match; +r.lastIndex = 1; + +match = r[Symbol.match]('abc'); + +assert.notSameValue(match, null); +assert.sameValue(match.length, 1); +assert.sameValue(match[0], 'b'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-set-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-set-lastindex.js new file mode 100644 index 0000000000..a2e70777b0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.match/y-set-lastindex.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Sets the `lastIndex` property to the end index of the first match +es6id: 21.2.5.6 +info: | + 21.2.5.6 RegExp.prototype [ @@match ] ( string ) + + [...] + 5. Let global be ToBoolean(Get(rx, "global")). + 6. ReturnIfAbrupt(global). + 7. If global is false, then + a. Return RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 18. If global is true or sticky is true, + a. Let setStatus be Set(R, "lastIndex", e, true). +features: [Symbol.match] +---*/ + +var r = /abc/y; +r[Symbol.match]('abc'); + +assert.sameValue(r.lastIndex, 3); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-called-once.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-called-once.js new file mode 100644 index 0000000000..4d0888f201 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-called-once.js @@ -0,0 +1,59 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: IsRegExp should only be called once +info: | + RegExp.prototype [ @@matchAll ] ( string ) + 1. Let R be the this value. + [...] + 4. Let C be ? SpeciesConstructor(R, %RegExp%). + 5. Let flags be ? ToString(? Get(R, "flags")). + 6. Let matcher be ? Construct(C, « R, flags »). + + 21.2.3.1 RegExp ( pattern, flags ) + 1. Let patternIsRegExp be ? IsRegExp(pattern). + [...] +features: [Symbol.match, Symbol.matchAll] +---*/ + +var internalCount = 0; +Object.defineProperty(RegExp.prototype, Symbol.match, { + get: function() { + ++internalCount; + return true; + } +}); + +var calls = []; +var o = { + get [Symbol.match]() { + calls.push('get @@match'); + return false; + }, + get flags() { + calls.push('get flags'); + return { + toString() { + calls.push('flags toString'); + return ""; + } + }; + }, +}; + +RegExp.prototype[Symbol.matchAll].call(o, { + toString() { + calls.push('arg toString') + } +}); + +assert.sameValue(0, internalCount); + +assert.sameValue(calls.length, 4); +assert.sameValue(calls[0], 'arg toString'); +assert.sameValue(calls[1], 'get flags'); +assert.sameValue(calls[2], 'flags toString'); +assert.sameValue(calls[3], 'get @@match'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-this-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-this-throws.js new file mode 100644 index 0000000000..528c0cd5ad --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/isregexp-this-throws.js @@ -0,0 +1,28 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Re-throws errors thrown while accessing RegExp's @@match property +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + [...] +features: [Symbol.match, Symbol.matchAll] +---*/ + +var obj = { + get [Symbol.match]() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.matchAll].call(obj, ''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/length.js new file mode 100644 index 0000000000..ec522ab2f5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/length.js @@ -0,0 +1,32 @@ +// Copyright (C) 2018 Jordan Harband. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: RegExp.prototype[Symbol.matchAll] `length` property +info: | + 17 ECMAScript Standard Built-in Objects: + + [...] + + Every built-in function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description. Optional parameters + (which are indicated with brackets: [ ]) or rest parameters (which + are shown using the form «...name») are not included in the default + argument count. + + Unless otherwise specified, the length property of a built-in function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [Symbol.matchAll] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.matchAll].length, 1); + +verifyNotEnumerable(RegExp.prototype[Symbol.matchAll], 'length'); +verifyNotWritable(RegExp.prototype[Symbol.matchAll], 'length'); +verifyConfigurable(RegExp.prototype[Symbol.matchAll], 'length'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/name.js new file mode 100644 index 0000000000..f9a1e9bf87 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/name.js @@ -0,0 +1,30 @@ +// Copyright (C) 2018 Jordan Harband. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: RegExp.prototype[Symbol.matchAll] `name` property +info: | + 17 ECMAScript Standard Built-in Objects: + + [...] + + Every built-in function object, including constructors, that is not + identified as an anonymous function has a name property whose value + is a String. + + [...] + + Unless otherwise specified, the name property of a built-in function + object, if it exists, has the attributes { [[Writable]]: false, + [[Enumerable]]: false, [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [Symbol.matchAll] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.matchAll].name, '[Symbol.matchAll]'); + +verifyNotEnumerable(RegExp.prototype[Symbol.matchAll], 'name'); +verifyNotWritable(RegExp.prototype[Symbol.matchAll], 'name'); +verifyConfigurable(RegExp.prototype[Symbol.matchAll], 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/not-a-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/not-a-constructor.js new file mode 100644 index 0000000000..03009bf3de --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/not-a-constructor.js @@ -0,0 +1,35 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + RegExp.prototype[Symbol.matchAll] does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [Reflect.construct, Symbol, Symbol.match, Symbol.matchAll, arrow-function] +---*/ + +assert.sameValue( + isConstructor(RegExp.prototype[Symbol.matchAll]), + false, + 'isConstructor(RegExp.prototype[Symbol.matchAll]) must return false' +); + +assert.throws(TypeError, () => { + let re = new RegExp(''); new re[Symbol.matchAll](); +}, '`let re = new RegExp(\'\'); new re[Symbol.matchAll]()` throws TypeError'); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/prop-desc.js new file mode 100644 index 0000000000..5fc20a0f9c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/prop-desc.js @@ -0,0 +1,24 @@ +// Copyright (C) 2018 Jordan Harband. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: RegExp.prototype[Symbol.matchAll] property descriptor +info: | + 17 ECMAScript Standard Built-in Objects: + + [...] + + Every other data property described in clauses 18 through 26 and in Annex + B.2 has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. +includes: [propertyHelper.js] +features: [Symbol.matchAll] +---*/ + +assert.sameValue(typeof RegExp.prototype[Symbol.matchAll], 'function'); + +verifyNotEnumerable(RegExp.prototype, Symbol.matchAll); +verifyWritable(RegExp.prototype, Symbol.matchAll); +verifyConfigurable(RegExp.prototype, Symbol.matchAll); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/regexpcreate-this-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/regexpcreate-this-throws.js new file mode 100644 index 0000000000..edb02b3b8c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/regexpcreate-this-throws.js @@ -0,0 +1,32 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Re-throws errors while creating an internal RegExp +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + [...] + 3. Else, + a. Let flags be "g". + b. Let matcher be ? RegExpCreate(R, flags). +features: [Symbol.matchAll] +---*/ + +var obj = { + toString() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.matchAll].call(obj, ''); +}); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/shell.js new file mode 100644 index 0000000000..0ba29600b8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/shell.js @@ -0,0 +1,152 @@ +// GENERATED, DO NOT EDIT +// file: compareIterator.js +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: Compare the values of an iterator with an array of expected values +defines: [assert.compareIterator] +---*/ + +// Example: +// +// function* numbers() { +// yield 1; +// yield 2; +// yield 3; +// } +// +// assert.compareIterator(numbers(), [ +// v => assert.sameValue(v, 1), +// v => assert.sameValue(v, 2), +// v => assert.sameValue(v, 3), +// ]); +// +assert.compareIterator = function(iter, validators, message) { + message = message || ''; + + var i, result; + for (i = 0; i < validators.length; i++) { + result = iter.next(); + assert(!result.done, 'Expected ' + i + ' values(s). Instead iterator only produced ' + (i - 1) + ' value(s). ' + message); + validators[i](result.value); + } + + result = iter.next(); + assert(result.done, 'Expected only ' + i + ' values(s). Instead iterator produced more. ' + message); + assert.sameValue(result.value, undefined, 'Expected value of `undefined` when iterator completes. ' + message); +} + +// file: regExpUtils.js +// Copyright (C) 2017 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: | + Collection of functions used to assert the correctness of RegExp objects. +defines: [buildString, testPropertyEscapes, testPropertyOfStrings, testExtendedCharacterClass, matchValidator] +---*/ + +function buildString(args) { + // Use member expressions rather than destructuring `args` for improved + // compatibility with engines that only implement assignment patterns + // partially or not at all. + const loneCodePoints = args.loneCodePoints; + const ranges = args.ranges; + const CHUNK_SIZE = 10000; + let result = Reflect.apply(String.fromCodePoint, null, loneCodePoints); + for (let i = 0; i < ranges.length; i++) { + const range = ranges[i]; + const start = range[0]; + const end = range[1]; + const codePoints = []; + for (let length = 0, codePoint = start; codePoint <= end; codePoint++) { + codePoints[length++] = codePoint; + if (length === CHUNK_SIZE) { + result += Reflect.apply(String.fromCodePoint, null, codePoints); + codePoints.length = length = 0; + } + } + result += Reflect.apply(String.fromCodePoint, null, codePoints); + } + return result; +} + +function printCodePoint(codePoint) { + const hex = codePoint + .toString(16) + .toUpperCase() + .padStart(6, "0"); + return `U+${hex}`; +} + +function printStringCodePoints(string) { + const buf = []; + for (const symbol of string) { + const formatted = printCodePoint(symbol.codePointAt(0)); + buf.push(formatted); + } + return buf.join(' '); +} + +function testPropertyEscapes(regExp, string, expression) { + if (!regExp.test(string)) { + for (const symbol of string) { + const formatted = printCodePoint(symbol.codePointAt(0)); + assert( + regExp.test(symbol), + `\`${ expression }\` should match ${ formatted } (\`${ symbol }\`)` + ); + } + } +} + +function testPropertyOfStrings(args) { + // Use member expressions rather than destructuring `args` for improved + // compatibility with engines that only implement assignment patterns + // partially or not at all. + const regExp = args.regExp; + const expression = args.expression; + const matchStrings = args.matchStrings; + const nonMatchStrings = args.nonMatchStrings; + const allStrings = matchStrings.join(''); + if (!regExp.test(allStrings)) { + for (const string of matchStrings) { + assert( + regExp.test(string), + `\`${ expression }\` should match ${ string } (${ printStringCodePoints(string) })` + ); + } + } + + if (!nonMatchStrings) return; + + const allNonMatchStrings = nonMatchStrings.join(''); + if (regExp.test(allNonMatchStrings)) { + for (const string of nonMatchStrings) { + assert( + !regExp.test(string), + `\`${ expression }\` should not match ${ string } (${ printStringCodePoints(string) })` + ); + } + } +} + +// The exact same logic can be used to test extended character classes +// as enabled through the RegExp `v` flag. This is useful to test not +// just standalone properties of strings, but also string literals, and +// set operations. +const testExtendedCharacterClass = testPropertyOfStrings; + +// Returns a function that validates a RegExp match result. +// +// Example: +// +// var validate = matchValidator(['b'], 1, 'abc'); +// validate(/b/.exec('abc')); +// +function matchValidator(expectedEntries, expectedIndex, expectedInput) { + return function(match) { + assert.compareArray(match, expectedEntries, 'Match entries'); + assert.sameValue(match.index, expectedIndex, 'Match index'); + assert.sameValue(match.input, expectedInput, 'Match input'); + } +} diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-constructor-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-constructor-throws.js new file mode 100644 index 0000000000..73baa39d78 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-constructor-throws.js @@ -0,0 +1,34 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: | + Re-throws errors thrown while accessing RegExp's constructor property +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + a. Let C be ? SpeciesConstructor(R, RegExp). + + SpeciesConstructor ( O, defaultConstructor ) + [...] + 2. Let C be ? Get(O, "constructor"). +features: [Symbol.matchAll] +---*/ + +var regexp = /./; +Object.defineProperty(regexp, 'constructor', { + get(){ + throw new Test262Error(); + } +}); + +assert.throws(Test262Error, function() { + regexp[Symbol.matchAll](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-species-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-species-throws.js new file mode 100644 index 0000000000..4f3ebb94b4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-get-species-throws.js @@ -0,0 +1,33 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Re-throws errors thrown while accessing of @@species property +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + a. Let C be ? SpeciesConstructor(R, RegExp). + + SpeciesConstructor ( O, defaultConstructor ) + [...] + 2. Let C be ? Get(O, "constructor"). +features: [Symbol.matchAll, Symbol.species] +---*/ + +var regexp = /./; +regexp.constructor = { + get [Symbol.species]() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + regexp[Symbol.matchAll](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-not-object-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-not-object-throws.js new file mode 100644 index 0000000000..12a96e9dc6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-not-object-throws.js @@ -0,0 +1,43 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Throws TypeError if `constructor` property is not an object +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + a. Let C be ? SpeciesConstructor(R, RegExp). + + SpeciesConstructor ( O, defaultConstructor ) + [...] + 2. Let C be ? Get(O, "constructor"). + 3. If C is undefined, return defaultConstructor. + 4. If Type(C) is not Object, throw a TypeError exception. +features: [Symbol.matchAll] +---*/ + +var regexp = /./; + +function callMatchAll() { regexp[Symbol.matchAll](''); } + +regexp.constructor = null; +assert.throws(TypeError, callMatchAll, "`constructor` value is null"); + +regexp.constructor = true; +assert.throws(TypeError, callMatchAll, "`constructor` value is Boolean"); + +regexp.constructor = ""; +assert.throws(TypeError, callMatchAll, "`constructor` value is String"); + +regexp.constructor = Symbol(); +assert.throws(TypeError, callMatchAll, "`constructor` value is Symbol"); + +regexp.constructor = 1; +assert.throws(TypeError, callMatchAll, "`constructor` value is Number"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-undefined.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-undefined.js new file mode 100644 index 0000000000..6b1fe894da --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-is-undefined.js @@ -0,0 +1,33 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Throws TypeError if `constructor` property is not an object +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + a. Let C be ? SpeciesConstructor(R, RegExp). + + SpeciesConstructor ( O, defaultConstructor ) + [...] + 2. Let C be ? Get(O, "constructor"). + 3. If C is undefined, return defaultConstructor. +features: [Symbol.matchAll] +includes: [compareArray.js, compareIterator.js, regExpUtils.js] +---*/ + +var regexp = /\w/g; +regexp.constructor = undefined; +var str = 'a*b'; + +assert.compareIterator(regexp[Symbol.matchAll](str), [ + matchValidator(['a'], 0, str), + matchValidator(['b'], 2, str) +]); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-not-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-not-constructor.js new file mode 100644 index 0000000000..6499c3b06a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-not-constructor.js @@ -0,0 +1,47 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: TypeError is thrown when species constructor is not a constructor +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 2. Return ? [MatchAllIterator](#matchalliterator)(R, string). + + MatchAllIterator ( R, O ) + [...] + 3. Let C be ? [SpeciesConstructor][species-constructor](R, RegExp). + + SpeciesConstructor ( O, defaultConstructor ) + [...] + 2. Let C be ? Get(O, "constructor"). + 3. If C is undefined, return defaultConstructor. + 4. If Type(C) is not Object, throw a TypeError exception. + 5. Let S be ? Get(C, @@species). + 6. If S is either undefined or null, return defaultConstructor. + 7. If IsConstructor(S) is true, return S. + 8. Throw a TypeError exception. +features: [Symbol.matchAll, Symbol.species] +---*/ + +var regexp = /./; +var speciesConstructor = {}; +regexp.constructor = speciesConstructor; + +var callMatchAll = function() { + regexp[Symbol.matchAll](''); +} + +speciesConstructor[Symbol.species] = true; +assert.throws(TypeError, callMatchAll, "`constructor[Symbol.species]` value is Boolean"); + +speciesConstructor[Symbol.species] = 1; +assert.throws(TypeError, callMatchAll, "`constructor[Symbol.species]` value is Number"); + +speciesConstructor[Symbol.species] = Symbol(); +assert.throws(TypeError, callMatchAll, "`constructor[Symbol.species]` value is Symbol"); + +speciesConstructor[Symbol.species] = true; +assert.throws(TypeError, callMatchAll, "`constructor[Symbol.species]` value is Boolean"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-null-or-undefined.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-null-or-undefined.js new file mode 100644 index 0000000000..fbc5affa42 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-is-null-or-undefined.js @@ -0,0 +1,43 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: | + Default constructor is used when species constructor is null or undefined +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 2. Return ? [MatchAllIterator](#matchalliterator)(R, string). + + MatchAllIterator ( R, O ) + [...] + 3. Let C be ? [SpeciesConstructor][species-constructor](R, RegExp). + + SpeciesConstructor ( O, defaultConstructor ) + [...] + 2. Let C be ? Get(O, "constructor"). + 3. If C is undefined, return defaultConstructor. + 4. If Type(C) is not Object, throw a TypeError exception. + 5. Let S be ? Get(C, @@species). + 6. If S is either undefined or null, return defaultConstructor. +features: [Symbol.matchAll, Symbol.species] +includes: [compareArray.js, compareIterator.js, regExpUtils.js] +---*/ + +function TestWithConstructor(ctor) { + var regexp = /\w/g; + regexp.constructor = { + [Symbol.species]: ctor + }; + var str = 'a*b'; + + assert.compareIterator(regexp[Symbol.matchAll](str), [ + matchValidator(['a'], 0, str), + matchValidator(['b'], 2, str) + ]); +} + +TestWithConstructor(undefined); +TestWithConstructor(null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-throws.js new file mode 100644 index 0000000000..9ba712e86a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor-species-throws.js @@ -0,0 +1,31 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Re-throws errors when calling constructor's @@species +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + a. Let C be ? SpeciesConstructor(R, RegExp). + b. Let flags be ? ToString(? Get(R, "flags")) + c. Let matcher be ? Construct(C, R, flags). +features: [Symbol.matchAll, Symbol.species] +---*/ + +var regexp = /./; +regexp.constructor = { + [Symbol.species]: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + regexp[Symbol.matchAll](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor.js new file mode 100644 index 0000000000..521301b381 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-constructor.js @@ -0,0 +1,42 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Custom species constructor is called when creating internal RegExp +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 4. Let C be ? SpeciesConstructor(R, %RegExp%). + 5. Let flags be ? ToString(? Get(R, "flags")). + 6. Let matcher be ? Construct(C, « R, flags »). + [...] + 9. If flags contains "g", let global be true. + 10. Else, let global be false. + [...] +features: [Symbol.matchAll, Symbol.species] +includes: [compareArray.js, compareIterator.js, regExpUtils.js] +---*/ + +var callCount = 0; +var callArgs; +var regexp = /\d/u; +regexp.constructor = { + [Symbol.species]: function(){ + callCount++; + callArgs = arguments; + return /\w/g; + } +}; +var str = 'a*b'; +var iter = regexp[Symbol.matchAll](str); + +assert.sameValue(callCount, 1); +assert.sameValue(callArgs.length, 2); +assert.sameValue(callArgs[0], regexp); +assert.sameValue(callArgs[1], 'u'); + +assert.compareIterator(iter, [ + matchValidator(['a'], 0, str), +]); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-global-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-global-throws.js new file mode 100644 index 0000000000..dacf9b4249 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-global-throws.js @@ -0,0 +1,33 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: | + Doesn't access the "global" property of the constructed RegExp +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 4. Let C be ? SpeciesConstructor(R, %RegExp%). + 5. Let flags be ? ToString(? Get(R, "flags")). + 6. Let matcher be ? Construct(C, « R, flags »). + [...] + 9. If flags contains "g", let global be true. + 10. Else, let global be false. + [...] +features: [Symbol.matchAll, Symbol.species] +---*/ + +var regexp = /./; +regexp.constructor = { + [Symbol.species]: function() { + return Object.defineProperty(/./, 'global', { + get() { + throw new Test262Error(); + } + }); + } +}; + +regexp[Symbol.matchAll](''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-unicode-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-unicode-throws.js new file mode 100644 index 0000000000..f58fe1169b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/species-regexp-get-unicode-throws.js @@ -0,0 +1,33 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: | + Doesn't access the "unicode" property of the constructed RegExp +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 4. Let C be ? SpeciesConstructor(R, %RegExp%). + 5. Let flags be ? ToString(? Get(R, "flags")). + 6. Let matcher be ? Construct(C, « R, flags »). + [...] + 11. If flags contains "u", let fullUnicode be true. + 12. Else, let fullUnicode be false. + [...] +features: [Symbol.matchAll, Symbol.species] +---*/ + +var regexp = /./; +regexp.constructor = { + [Symbol.species]: function() { + return Object.defineProperty(/./, 'unicode', { + get() { + throw new Test262Error(); + } + }); + } +}; + +regexp[Symbol.matchAll](''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring-throws.js new file mode 100644 index 0000000000..6592addd96 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring-throws.js @@ -0,0 +1,29 @@ +// Copyright (C) 2018 Jordan Harband. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: String coercion of string parameter +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + 1. Let S be ? ToString(O). +features: [Symbol.matchAll] +---*/ + +var obj = { + valueOf() { + throw new Test262Error('This method should not be invoked.'); + }, + toString() { + throw new Test262Error('toString invoked'); + } +}; + +assert.throws(Test262Error, function() { + /toString value/[Symbol.matchAll](obj); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring.js new file mode 100644 index 0000000000..f7a03a6c56 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/string-tostring.js @@ -0,0 +1,31 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: String coercion of `string` argument +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + 1. Let S be ? ToString(O). +features: [Symbol.matchAll] +includes: [compareArray.js, compareIterator.js, regExpUtils.js] +---*/ + +var str = 'a*b'; +var obj = { + toString() { + return str; + } +}; +var regexp = /\w/g; + +assert.compareIterator(regexp[Symbol.matchAll](obj), [ + matchValidator(['a'], 0, str), + matchValidator(['b'], 2, str) +]); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags-throws.js new file mode 100644 index 0000000000..7612c19e3e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags-throws.js @@ -0,0 +1,30 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Re-throws errors thrown while accessing RegExp's flags property +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + [...] + b. Let flags be ? ToString(? Get(R, "flags")) +features: [Symbol.matchAll] +---*/ + +var regexp = /./; +Object.defineProperty(regexp, 'flags', { + get() { + throw new Test262Error(); + } +}); + +assert.throws(Test262Error, function() { + regexp[Symbol.matchAll](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags.js new file mode 100644 index 0000000000..083f7e4e50 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-get-flags.js @@ -0,0 +1,31 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Regexp's flags +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + [...] + b. Let flags be ? ToString(? Get(R, "flags")) +features: [Symbol.matchAll] +includes: [compareArray.js, compareIterator.js, regExpUtils.js] +---*/ + +var regexp = /\w/; +Object.defineProperty(regexp, 'flags', { + value: 'g' +}); +var str = 'a*b'; + +assert.compareIterator(regexp[Symbol.matchAll](str), [ + matchValidator(['a'], 0, str), + matchValidator(['b'], 2, str) +]); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-lastindex-cached.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-lastindex-cached.js new file mode 100644 index 0000000000..0c669c3594 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-lastindex-cached.js @@ -0,0 +1,38 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Verify regexp's lastIndex is cached +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + [...] + f. Let lastIndex be ? ToLength(? Get(R, "lastIndex")). + g. Perform ? Set(matcher, "lastIndex", lastIndex, true). +features: [Symbol.matchAll] +includes: [compareArray.js, compareIterator.js, regExpUtils.js] +---*/ + +var regexp = /./g; +regexp.lastIndex = { + valueOf() { + return 2; + } +}; +var str = 'abcd'; +var iter = regexp[Symbol.matchAll](str); + +// Verify lastIndex is cached at the time of calling @@matchAll +regexp.lastIndex = 0; + +assert.compareIterator(iter, [ + matchValidator(['c'], 2, str), + matchValidator(['d'], 3, str) +]); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-not-object-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-not-object-throws.js new file mode 100644 index 0000000000..83cf79f929 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-not-object-throws.js @@ -0,0 +1,33 @@ +// Copyright (C) 2018 Jordan Harband. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Throws TypeError when `this` is not an Object +info: | + RegExp.prototype [ @@matchAll ] ( string ) + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol.matchAll] +---*/ + +var thisValue; +var callMatchAll = function() { + RegExp.prototype[Symbol.matchAll].call(thisValue, ''); +}; + +thisValue = null; +assert.throws(TypeError, callMatchAll, 'this value is null'); + +thisValue = true; +assert.throws(TypeError, callMatchAll, 'this value is Boolean'); + +thisValue = ''; +assert.throws(TypeError, callMatchAll, 'this value is String'); + +thisValue = Symbol(); +assert.throws(TypeError, callMatchAll, 'this value is Symbol'); + +thisValue = 1; +assert.throws(TypeError, callMatchAll, 'this value is Number'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tolength-lastindex-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tolength-lastindex-throws.js new file mode 100644 index 0000000000..a3fd259a40 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tolength-lastindex-throws.js @@ -0,0 +1,30 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Re-throws errors while coercing RegExp's lastIndex +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + [...] + f. Let lastIndex be ? ToLength(? Get(R, "lastIndex")). +features: [Symbol.matchAll] +---*/ + +var regexp = /./; +regexp.lastIndex = { + valueOf() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + regexp[Symbol.matchAll](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags-throws.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags-throws.js new file mode 100644 index 0000000000..3dc84b9a0c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags-throws.js @@ -0,0 +1,35 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Re-throws errors while coercing RegExp's flags to a string +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + [...] + b. Let flags be ? ToString(? Get(R, "flags")) +features: [Symbol.matchAll] +---*/ + +var regexp = /\w/; +Object.defineProperty(regexp, 'flags', { + value: { + valueOf() { + ERROR('valueOf Should not be called'); + }, + toString() { + throw new Test262Error(); + } + } +}); + +assert.throws(Test262Error, function() { + regexp[Symbol.matchAll](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags.js new file mode 100644 index 0000000000..a2b69cfd1b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.matchAll/this-tostring-flags.js @@ -0,0 +1,35 @@ +// Copyright (C) 2018 Peter Wong. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: pending +description: Corercing regexp's flags +info: | + RegExp.prototype [ @@matchAll ] ( string ) + [...] + 3. Return ? MatchAllIterator(R, string). + + MatchAllIterator ( R, O ) + [...] + 2. If ? IsRegExp(R) is true, then + [...] + b. Let flags be ? ToString(? Get(R, "flags")) +features: [Symbol.matchAll] +includes: [compareArray.js, compareIterator.js, regExpUtils.js] +---*/ + +var regexp = /\w/; +Object.defineProperty(regexp, 'flags', { + value: { + toString() { + return 'g'; + } + } +}); +var str = 'a*b'; + +assert.compareIterator(regexp[Symbol.matchAll](str), [ + matchValidator(['a'], 0, str), + matchValidator(['b'], 2, str) +]); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-1-coerce-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-1-coerce-err.js new file mode 100644 index 0000000000..c9146920f6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-1-coerce-err.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Behavior when error thrown while type coercing first argument +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 3. Let S be ToString(string). + 4. ReturnIfAbrupt(S). +features: [Symbol.replace] +---*/ + +var arg = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + /./[Symbol.replace](arg); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-1-coerce.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-1-coerce.js new file mode 100644 index 0000000000..a471e4ef1e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-1-coerce.js @@ -0,0 +1,27 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Type coercion of first argument +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 3. Let S be ToString(string). + [...] +features: [Symbol.replace] +---*/ + +var arg = { + valueOf: function() { + throw new Test262Error('This method should not be invoked.'); + }, + toString: function() { + return 'toString value'; + } +}; + +assert.sameValue(/./[Symbol.replace](arg, 'x'), 'xoString value'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-2-coerce-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-2-coerce-err.js new file mode 100644 index 0000000000..3fe9cb57f5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-2-coerce-err.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Behavior when error thrown while type coercing second argument +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 6. Let functionalReplace be IsCallable(replaceValue). + 7. If functionalReplace is false, then + a. Let replaceValue be ToString(replaceValue). + b. ReturnIfAbrupt(replaceValue). +features: [Symbol.replace] +---*/ + +var arg = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + /./[Symbol.replace]('', arg); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-2-coerce.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-2-coerce.js new file mode 100644 index 0000000000..16c659a095 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/arg-2-coerce.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Type coercion of second argument +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 6. Let functionalReplace be IsCallable(replaceValue). + 7. If functionalReplace is false, then + a. Let replaceValue be ToString(replaceValue). + [...] +features: [Symbol.replace] +---*/ + +var arg = { + valueOf: function() { + throw new Test262Error('This method should not be invoked.'); + }, + toString: function() { + return 'toString value'; + } +}; + +assert.sameValue(/./[Symbol.replace]('string', arg), 'toString valuetring'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-global.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-global.js new file mode 100644 index 0000000000..4b87e84024 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-global.js @@ -0,0 +1,75 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Boolean coercion of `global` property +es6id: 21.2.5.8 +info: | + 21.2.5.6 RegExp.prototype [ @@replace ] ( string ) + + [...] + 8. Let global be ToBoolean(Get(rx, "global")). + [...] +features: [Symbol.replace] +---*/ + +Array.print = print; +var r = /a/g; +Object.defineProperty(r, 'global', { writable: true }); + +r.lastIndex = 0; +r.global = undefined; +assert.sameValue(r[Symbol.replace]('aa', 'b'), 'ba', 'value: undefined'); + +r.lastIndex = 0; +r.global = null; +assert.sameValue(r[Symbol.replace]('aa', 'b'), 'ba', 'value: null'); + +r.lastIndex = 0; +r.global = false; +assert.sameValue(r[Symbol.replace]('aa', 'b'), 'ba', 'value: false'); + +r.lastIndex = 0; +r.global = NaN; +assert.sameValue(r[Symbol.replace]('aa', 'b'), 'ba', 'value: NaN'); + +r.lastIndex = 0; +r.global = 0; +assert.sameValue(r[Symbol.replace]('aa', 'b'), 'ba', 'value: global'); + +r.lastIndex = 0; +r.global = ''; +assert.sameValue(r[Symbol.replace]('aa', 'b'), 'ba', 'value: ""'); + +var execCount = 0; +r = /a/; +Object.defineProperty(r, 'global', { writable: true }); +r.exec = function() { + execCount += 1; + if (execCount === 1) { + return ['a']; + } + return null; +}; + +execCount = 0; +r.global = true; +r[Symbol.replace]('aa', 'b'); +assert.sameValue(execCount, 2, 'value: true'); + +execCount = 0; +r.global = 86; +r[Symbol.replace]('aa', 'b'); +assert.sameValue(execCount, 2, 'value: 86'); + +execCount = 0; +r.global = Symbol.replace; +r[Symbol.replace]('aa', 'b'); +assert.sameValue(execCount, 2, 'value: Symbol.replace'); + +execCount = 0; +r.global = {}; +r[Symbol.replace]('aa', 'b'); +assert.sameValue(execCount, 2, 'value: {}'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-lastindex-err.js new file mode 100644 index 0000000000..767644672b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-lastindex-err.js @@ -0,0 +1,53 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Abrupt completion during coercion of "lastIndex" property of `this` value. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 11. Repeat, while done is false + a. Let result be ? RegExpExec(rx, S). + b. If result is null, set done to true. + c. Else, + i. Append result to the end of results. + ii. If global is false, set done to true. + iii. Else, + 1. Let matchStr be ? ToString(? Get(result, "0")). + 2. If matchStr is the empty String, then + a. Let thisIndex be ? ToLength(? Get(rx, "lastIndex")). +features: [Symbol.replace] +---*/ + +var r = /./g; +var execWasCalled = false; +var coercibleIndex = { + valueOf: function() { + throw new Test262Error(); + }, +}; + +var result = { + length: 1, + 0: '', + index: 0, +}; + +r.exec = function() { + if (execWasCalled) { + return null; + } + + r.lastIndex = coercibleIndex; + execWasCalled = true; + return result; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('', ''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-lastindex.js new file mode 100644 index 0000000000..23297ddfbd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-lastindex.js @@ -0,0 +1,54 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Length coercion of "lastIndex" property of `this` value. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 11. Repeat, while done is false + a. Let result be ? RegExpExec(rx, S). + b. If result is null, set done to true. + c. Else, + i. Append result to the end of results. + ii. If global is false, set done to true. + iii. Else, + 1. Let matchStr be ? ToString(? Get(result, "0")). + 2. If matchStr is the empty String, then + a. Let thisIndex be ? ToLength(? Get(rx, "lastIndex")). + b. Let nextIndex be AdvanceStringIndex(S, thisIndex, fullUnicode). + c. Perform ? Set(rx, "lastIndex", nextIndex, true). +features: [Symbol.replace] +---*/ + +var r = /./g; +var execWasCalled = false; +var coercibleIndex = { + valueOf: function() { + return Math.pow(2, 54); + }, +}; + +var result = { + length: 1, + 0: '', + index: 0, +}; + +r.exec = function() { + if (execWasCalled) { + return null; + } + + r.lastIndex = coercibleIndex; + execWasCalled = true; + return result; +}; + +assert.sameValue(r[Symbol.replace]('', ''), ''); +assert.sameValue(r.lastIndex, Math.pow(2, 53)); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-unicode.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-unicode.js new file mode 100644 index 0000000000..abe4a3727a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/coerce-unicode.js @@ -0,0 +1,50 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Boolean coercion of `unicode` property +es6id: 21.2.5.8 +info: | + 21.2.5.6 RegExp.prototype [ @@replace ] ( string ) + + [...] + 10. If global is true, then + a. Let fullUnicode be ToBoolean(Get(rx, "unicode")). + [...] +features: [Symbol.replace] +---*/ + +var r = /^|\udf06/g; +Object.defineProperty(r, 'unicode', { writable: true }); + +r.unicode = undefined; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834XXX'); + +r.unicode = null; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834XXX'); + +r.unicode = false; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834XXX'); + +r.unicode = NaN; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834XXX'); + +r.unicode = 0; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834XXX'); + +r.unicode = ''; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834XXX'); + +r.unicode = true; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834\udf06'); + +r.unicode = 86; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834\udf06'); + +r.unicode = Symbol.replace; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834\udf06'); + +r.unicode = {}; +assert.sameValue(r[Symbol.replace]('\ud834\udf06', 'XXX'), 'XXX\ud834\udf06'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-err.js new file mode 100644 index 0000000000..20be01fa3c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-err.js @@ -0,0 +1,35 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Behavior when error is thrown by `exec` method +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + b. ReturnIfAbrupt(result). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 3. Let exec be Get(R, "exec"). + 4. ReturnIfAbrupt(exec). + 5. If IsCallable(exec) is true, then + a. Let result be Call(exec, R, «S»). + b. ReturnIfAbrupt(result). +features: [Symbol.replace] +---*/ + +var r = /./; +r.exec = function() { + throw new Test262Error(); +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('', ''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-invocation.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-invocation.js new file mode 100644 index 0000000000..54f4b7b59e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/exec-invocation.js @@ -0,0 +1,46 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Invocation of `exec` method +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 3. Let exec be Get(R, "exec"). + 4. ReturnIfAbrupt(exec). + 5. If IsCallable(exec) is true, then + a. Let result be Call(exec, R, «S»). +features: [Symbol.replace] +---*/ + +var r = /./; +var callCount = 0; +var arg = { + toString: function() { + return 'string form'; + } +}; +var thisValue, args; + +r.exec = function() { + thisValue = this; + args = arguments; + callCount += 1; + return null; +}; + +r[Symbol.replace](arg, ''); + +assert.sameValue(callCount, 1); +assert.sameValue(thisValue, r); +assert.sameValue(args.length, 1); +assert.sameValue(args[0], 'string form'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/flags-tostring-error.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/flags-tostring-error.js new file mode 100644 index 0000000000..f66a3e4053 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/flags-tostring-error.js @@ -0,0 +1,49 @@ +// Copyright (C) 2022 Richard Gibson. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Errors thrown by converting `flags` to string are forwarded to the runtime +esid: sec-regexp.prototype-@@replace +info: | + 1. Let _rx_ be the *this* value. + 2. If Type(_rx_) is not Object, throw a *TypeError* exception. + 3. Let _S_ be ? ToString(_string_). + 4. Let _lengthS_ be the number of code unit elements in _S_. + 5. Let _functionalReplace_ be IsCallable(_replaceValue_). + 6. If _functionalReplace_ is *false*, then + a. Set _replaceValue_ to ? ToString(_replaceValue_). + i. Let _flags_ be ? ToString(? Get(_rx_, *"flags"*)). +features: [Symbol.replace] +---*/ + +function CustomError() {} +var toStringThrows = { + [Symbol.toPrimitive](hint) { + if (hint === 'string') { + throw new CustomError(); + } + throw new Test262Error('@@toPrimitive should be called with hint "string"'); + }, + get toString() { throw new Test262Error('toString property should not be read'); }, + get valueOf() { throw new Test262Error('valueOf property should not be read'); } +}; + +var re = /./g; +Object.defineProperties(re, { + flags: { + get() { return toStringThrows; } + }, + global: { + get() { throw new Test262Error('global property should not be read'); } + }, + unicode: { + get() { throw new Test262Error('unicode property should not be read'); } + } +}); + +assert.throws(CustomError, function() { + re[Symbol.replace](''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-coerce-replacement-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-coerce-replacement-err.js new file mode 100644 index 0000000000..76362ce99d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-coerce-replacement-err.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown during string coercion of the value returned + by functional replaceValue +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + i. Let replacerArgs be «matched». + ii. Append in list order the elements of captures to the end of the + List replacerArgs. + iii. Append position and S as the last two elements of replacerArgs. + iv. Let replValue be Call(replaceValue, undefined, replacerArgs). + v. Let replacement be ToString(replValue). + [...] + o. ReturnIfAbrupt(replacement). +features: [Symbol.replace] +---*/ + +var replacer = function() { + return { + toString: function() { + throw new Test262Error(); + } + }; +}; + +assert.throws(Test262Error, function() { + /x/[Symbol.replace]('[x]', replacer); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-coerce-replacement.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-coerce-replacement.js new file mode 100644 index 0000000000..6b09118351 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-coerce-replacement.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + String coercion of the value returned by functional replaceValue. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + k. If functionalReplace is true, then + [...] + v. Let replValue be ? Call(replaceValue, undefined, replacerArgs). + vi. Let replacement be ? ToString(replValue). +features: [Symbol.replace] +---*/ + +var replacer = function() { + return { + toString: function() { + return 'toString value'; + }, + valueOf: function() { + throw new Test262Error('This method should not be invoked.'); + }, + }; +}; + +assert.sameValue(/x/[Symbol.replace]('[x]', replacer), '[toString value]'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-err.js new file mode 100644 index 0000000000..32e0ccd115 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-err.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown by functional replaceValue. +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + i. Let replacerArgs be «matched». + ii. Append in list order the elements of captures to the end of the + List replacerArgs. + iii. Append position and S as the last two elements of replacerArgs. + iv. Let replValue be Call(replaceValue, undefined, replacerArgs). + v. Let replacement be ToString(replValue). + [...] + o. ReturnIfAbrupt(replacement). +features: [Symbol.replace] +---*/ + +var replacer = function() { + throw new Test262Error(); +}; + +assert.throws(Test262Error, function() { + /./[Symbol.replace]('a', replacer); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-args-empty-result.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-args-empty-result.js new file mode 100644 index 0000000000..712d046f6e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-args-empty-result.js @@ -0,0 +1,43 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Arguments of functional replaceValue (`exec` result is empty array). +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + e. Let position be ? ToInteger(? Get(result, "index")). + [...] + k. If functionalReplace is true, then + i. Let replacerArgs be « matched ». + ii. Append in list order the elements of captures to the end of the List replacerArgs. + iii. Append position and S to replacerArgs. + [...] + v. Let replValue be ? Call(replaceValue, undefined, replacerArgs). +features: [Symbol.replace] +---*/ + +var args; +var replacer = function() { + args = arguments; +}; + +var r = /./; +r.exec = function() { + return []; +}; + +r[Symbol.replace]('foo', replacer); + +assert.notSameValue(args, undefined); +assert.sameValue(args.length, 3); +assert.sameValue(args[0], 'undefined'); +assert.sameValue(args[1], 0); +assert.sameValue(args[2], 'foo'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-args.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-args.js new file mode 100644 index 0000000000..b48f9aff71 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-args.js @@ -0,0 +1,35 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Arguments of functional replaceValue +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + i. Let replacerArgs be «matched». + ii. Append in list order the elements of captures to the end of the + List replacerArgs. + iii. Append position and S as the last two elements of replacerArgs. + iv. Let replValue be Call(replaceValue, undefined, replacerArgs). + [...] +features: [Symbol.replace] +---*/ + +var args; +var replacer = function() { + args = arguments; +}; + +/b(.).(.)/[Symbol.replace]('abcdef', replacer); + +assert.notSameValue(args, undefined); +assert.sameValue(args.length, 5); +assert.sameValue(args[0], 'bcde'); +assert.sameValue(args[1], 'c'); +assert.sameValue(args[2], 'e'); +assert.sameValue(args[3], 1); +assert.sameValue(args[4], 'abcdef'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-no-strict.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-no-strict.js new file mode 100644 index 0000000000..217a7768a6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-no-strict.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + `this` value of functional replaceValue (outside of strict mode) +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + i. Let replacerArgs be «matched». + ii. Append in list order the elements of captures to the end of the + List replacerArgs. + iii. Append position and S as the last two elements of replacerArgs. + iv. Let replValue be Call(replaceValue, undefined, replacerArgs). + [...] +flags: [noStrict] +features: [Symbol.replace] +---*/ + +var thisVal; +var replacer = function() { + thisVal = this; +}; + +/./[Symbol.replace]('x', replacer); + +assert.sameValue(thisVal, this); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-strict-strict.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-strict-strict.js new file mode 100644 index 0000000000..906210b6bf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/fn-invoke-this-strict-strict.js @@ -0,0 +1,32 @@ +'use strict'; +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + `this` value of functional replaceValue (within strict mode) +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + i. Let replacerArgs be «matched». + ii. Append in list order the elements of captures to the end of the + List replacerArgs. + iii. Append position and S as the last two elements of replacerArgs. + iv. Let replValue be Call(replaceValue, undefined, replacerArgs). + [...] +flags: [onlyStrict] +features: [Symbol.replace] +---*/ + +var thisVal = null; +var replacer = function() { + thisVal = this; +}; + +/./[Symbol.replace]('x', replacer); + +assert.sameValue(thisVal, undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-init-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-init-lastindex-err.js new file mode 100644 index 0000000000..df97b72216 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-init-lastindex-err.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while initializing `lastIndex` property for + "global" instances +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 10. If global is true, then + [...] + c. Let setStatus be Set(rx, "lastIndex", 0, true). + d. ReturnIfAbrupt(setStatus). +features: [Symbol.replace] +---*/ + +var r = /./g; + +// Avoid false positives from unrelated TypeErrors +r[Symbol.replace]('x', 'x'); + +Object.defineProperty(r, 'lastIndex', { writable: false }); + +assert.throws(TypeError, function() { + r[Symbol.replace]('x', 'x'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-init-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-init-lastindex.js new file mode 100644 index 0000000000..ea824178e8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-init-lastindex.js @@ -0,0 +1,24 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Initialization of `lastIndex` property for "global" instances +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 10. If global is true, then + [...] + c. Let setStatus be Set(rx, "lastIndex", 0, true). + [...] +features: [Symbol.replace] +---*/ + +var r = /./g; + +r.lastIndex = 1; + +assert.sameValue(r[Symbol.replace]('aa', 'x'), 'xx'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-pos-decrement.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-pos-decrement.js new file mode 100644 index 0000000000..ed390cd2ed --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-pos-decrement.js @@ -0,0 +1,43 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when position is decremented during result accumulation +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + p. If position ≥ nextSourcePosition, then + i. NOTE position should not normally move backwards. If it does, it + is an indication of an ill-behaving RegExp subclass or use of an + access triggered side-effect to change the global flag or other + characteristics of rx. In such cases, the corresponding + substitution is ignored. + ii. Let accumulatedResult be the String formed by concatenating the + code units of the current value of accumulatedResult with the + substring of S consisting of the code units from + nextSourcePosition (inclusive) up to position (exclusive) and + with the code units of replacement. + iii. Let nextSourcePosition be position + matchLength. +features: [Symbol.replace] +---*/ + +var r = /./g; +var callCount = 0; +r.exec = function() { + callCount += 1; + + if (callCount === 1) { + return { index: 3, length: 1, 0: 0 }; + } else if (callCount === 2) { + return { index: 1, length: 1, 0: 0 }; + } + + return null; +}; + +assert.sameValue(r[Symbol.replace]('abcde', 'X'), 'abcXe'); +assert.sameValue(callCount, 3); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-pos-increment.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-pos-increment.js new file mode 100644 index 0000000000..2bc399093a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/g-pos-increment.js @@ -0,0 +1,43 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when position is incremented during result accumulation +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + p. If position ≥ nextSourcePosition, then + i. NOTE position should not normally move backwards. If it does, it + is an indication of an ill-behaving RegExp subclass or use of an + access triggered side-effect to change the global flag or other + characteristics of rx. In such cases, the corresponding + substitution is ignored. + ii. Let accumulatedResult be the String formed by concatenating the + code units of the current value of accumulatedResult with the + substring of S consisting of the code units from + nextSourcePosition (inclusive) up to position (exclusive) and + with the code units of replacement. + iii. Let nextSourcePosition be position + matchLength. +features: [Symbol.replace] +---*/ + +var r = /./g; +var callCount = 0; +r.exec = function() { + callCount += 1; + + if (callCount === 1) { + return { index: 1, length: 1, 0: 0 }; + } else if (callCount === 2) { + return { index: 3, length: 1, 0: 0 }; + } + + return null; +}; + +assert.sameValue(r[Symbol.replace]('abcde', 'X'), 'aXcXe'); +assert.sameValue(callCount, 3); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-exec-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-exec-err.js new file mode 100644 index 0000000000..6d431b44fb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-exec-err.js @@ -0,0 +1,35 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when there is an error thrown while accessing the `exec` method of + "global" instances +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + + ES6 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 3. Let exec be Get(R, "exec"). + 4. ReturnIfAbrupt(exec). +features: [Symbol.replace] +---*/ + +var r = { flags: 'g', global: true }; +Object.defineProperty(r, 'exec', { + get: function() { + throw new Test262Error(); + } +}); + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.replace].call(r, '', ''); +}); + +assert.sameValue(r.lastIndex, 0, 'Error thrown after setting `lastIndex`'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-flags-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-flags-err.js new file mode 100644 index 0000000000..9e2312efc0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-flags-err.js @@ -0,0 +1,38 @@ +// Copyright (C) 2022 Richard Gibson. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Errors thrown by `flags` accessor are forwarded to the runtime +esid: sec-regexp.prototype-@@replace +info: | + 1. Let _rx_ be the *this* value. + 2. If Type(_rx_) is not Object, throw a *TypeError* exception. + 3. Let _S_ be ? ToString(_string_). + 4. Let _lengthS_ be the number of code unit elements in _S_. + 5. Let _functionalReplace_ be IsCallable(_replaceValue_). + 6. If _functionalReplace_ is *false*, then + a. Set _replaceValue_ to ? ToString(_replaceValue_). + i. Let _flags_ be ? ToString(? Get(_rx_, *"flags"*)). +features: [Symbol.replace] +---*/ + +function CustomError() {} + +var obj = { + get flags() { + throw new CustomError(); + }, + get global() { + throw new Test262Error('global property should not be read'); + }, + get unicode() { + throw new Test262Error('unicode property should not be read'); + } +}; + +assert.throws(CustomError, function() { + RegExp.prototype[Symbol.replace].call(obj); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-global-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-global-err.js new file mode 100644 index 0000000000..dad8ab4b54 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-global-err.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown during retrieval of `global` property +esid: sec-regexp.prototype-@@replace +info: | + 1. Let _rx_ be the *this* value. + 2. If Type(_rx_) is not Object, throw a *TypeError* exception. + 3. Let _S_ be ? ToString(_string_). + 4. Let _lengthS_ be the number of code unit elements in _S_. + 5. Let _functionalReplace_ be IsCallable(_replaceValue_). + 6. If _functionalReplace_ is *false*, then + a. Set _replaceValue_ to ? ToString(_replaceValue_). + i. Let _flags_ be ? ToString(? Get(_rx_, *"flags"*)). + + sec-get-regexp.prototype.flags get RegExp.prototype.flags + 6. Let _global_ be ToBoolean(? Get(_R_, *"global"*)). +features: [Symbol.replace] +---*/ + +var re = /./; +Object.defineProperty(re, 'global', { + get() { + throw new Test262Error(); + } +}); + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.replace].call(re); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-unicode-error.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-unicode-error.js new file mode 100644 index 0000000000..a8ef365fac --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/get-unicode-error.js @@ -0,0 +1,43 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Errors thrown by `unicode` accessor are forwarded to the runtime +esid: sec-regexp.prototype-@@replace +info: | + 1. Let _rx_ be the *this* value. + 2. If Type(_rx_) is not Object, throw a *TypeError* exception. + 3. Let _S_ be ? ToString(_string_). + 4. Let _lengthS_ be the number of code unit elements in _S_. + 5. Let _functionalReplace_ be IsCallable(_replaceValue_). + 6. If _functionalReplace_ is *false*, then + a. Set _replaceValue_ to ? ToString(_replaceValue_). + i. Let _flags_ be ? ToString(? Get(_rx_, *"flags"*)). + + sec-get-regexp.prototype.flags get RegExp.prototype.flags + 14. Let _unicode_ be ToBoolean(? Get(_R_, *"unicode"*)). +features: [Symbol.replace] +---*/ + +var nonGlobalRe = /./; +var globalRe = /./g; +var accessor = function() { + throw new Test262Error(); +}; +Object.defineProperty(nonGlobalRe, 'unicode', { + get: accessor +}); +Object.defineProperty(globalRe, 'unicode', { + get: accessor +}); + +assert.throws(Test262Error, function() { + nonGlobalRe[Symbol.replace]('', ''); +}); + +assert.throws(Test262Error, function() { + globalRe[Symbol.replace]('', ''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/length.js new file mode 100644 index 0000000000..fe89e2265b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/length.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.8 +description: RegExp.prototype[Symbol.replace] `length` property +info: | + ES6 Section 17: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this value + is equal to the largest number of named arguments shown in the subclause + headings for the function description, including optional parameters. + + [...] + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [Symbol.replace] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.replace].length, 2); + +verifyNotEnumerable(RegExp.prototype[Symbol.replace], 'length'); +verifyNotWritable(RegExp.prototype[Symbol.replace], 'length'); +verifyConfigurable(RegExp.prototype[Symbol.replace], 'length'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/match-failure.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/match-failure.js new file mode 100644 index 0000000000..a0d5317e5b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/match-failure.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Return original string when no matches occur +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 12. Let done be false. + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + b. ReturnIfAbrupt(result). + c. If result is null, set done to true. + [...] + 14. Let accumulatedResult be the empty String value. + 15. Let nextSourcePosition be 0. + [...] + 18. Return the String formed by concatenating the code units of + accumulatedResult with the substring of S consisting of the code units + from nextSourcePosition (inclusive) up through the final code unit of S + (inclusive). +features: [Symbol.replace] +---*/ + +assert.sameValue(/x/[Symbol.replace]('abc', 'X'), 'abc'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/name.js new file mode 100644 index 0000000000..5d6dbb13e7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/name.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.8 +description: RegExp.prototype[Symbol.replace] `name` property +info: | + The value of the name property of this function is "[Symbol.replace]". + + ES6 Section 17: + + [...] + + Unless otherwise specified, the name property of a built-in Function + object, if it exists, has the attributes { [[Writable]]: false, + [[Enumerable]]: false, [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [Symbol.replace] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.replace].name, '[Symbol.replace]'); + +verifyNotEnumerable(RegExp.prototype[Symbol.replace], 'name'); +verifyNotWritable(RegExp.prototype[Symbol.replace], 'name'); +verifyConfigurable(RegExp.prototype[Symbol.replace], 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/named-groups-fn.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/named-groups-fn.js new file mode 100644 index 0000000000..5ef8030922 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/named-groups-fn.js @@ -0,0 +1,61 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + "groups" value is passed as last argument of replacer unless it is undefined. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + j. Let namedCaptures be ? Get(result, "groups"). + k. If functionalReplace is true, then + [...] + iv. If namedCaptures is not undefined, then + 1. Append namedCaptures as the last element of replacerArgs. + v. Let replValue be ? Call(replaceValue, undefined, replacerArgs). +features: [Symbol.replace, regexp-named-groups] +---*/ + +var matchGroups; +var re = /./; +re.exec = function() { + return { + length: 1, + 0: "a", + index: 0, + groups: matchGroups, + }; +}; + +var replacerCalls = 0; +var replacerLastArg; +var replacer = function() { + replacerCalls++; + replacerLastArg = arguments[arguments.length - 1]; +}; + +matchGroups = null; +re[Symbol.replace]("a", replacer); +assert.sameValue(replacerCalls, 1); +assert.sameValue(replacerLastArg, matchGroups); + +matchGroups = undefined; +re[Symbol.replace]("a", replacer); +assert.sameValue(replacerCalls, 2); +assert.sameValue(replacerLastArg, "a"); + +matchGroups = 10; +re[Symbol.replace]("a", replacer); +assert.sameValue(replacerCalls, 3); +assert.sameValue(replacerLastArg, matchGroups); + +matchGroups = {}; +re[Symbol.replace]("a", replacer); +assert.sameValue(replacerCalls, 4); +assert.sameValue(replacerLastArg, matchGroups); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/named-groups.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/named-groups.js new file mode 100644 index 0000000000..731671bccd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/named-groups.js @@ -0,0 +1,46 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-getsubstitution +description: > + RegExp.prototype[Symbol.replace] works with named capture references as expected. + (string replacement) +info: | + GetSubstitution ( matched, str, position, captures, namedCaptures, replacement ) + + Table: Replacement Text Symbol Substitutions + + Unicode Characters: $< + Replacement text: + 1. If namedCaptures is undefined, the replacement text is the literal string $<. + 2. Else, + a. Assert: Type(namedCaptures) is Object. + b. Scan until the next > U+003E (GREATER-THAN SIGN). + c. If none is found, the replacement text is the String "$<". + d. Else, + i. Let groupName be the enclosed substring. + ii. Let capture be ? Get(namedCaptures, groupName). + iii. If capture is undefined, replace the text through > with the empty String. + iv. Otherwise, replace the text through > with ? ToString(capture). +features: [Symbol.replace, regexp-named-groups] +---*/ + +assert.sameValue(/b/u[Symbol.replace]("abc", "$&$d"), "c$dc$d"); +assert.sameValue(/(b)./[Symbol.replace]("abc", "$$1"), "a$b"); + +assert.sameValue(/(?.)(?.)/[Symbol.replace]("abc", "$$"), "bac"); +assert.sameValue(/(?.)(?.)/gu[Symbol.replace]("abc", "$2$$1"), "baac"); +assert.sameValue(/(?b)/u[Symbol.replace]("abc", "c$d"), "acdc"); +assert.sameValue(/(?.)/g[Symbol.replace]("abc", "$<$1>"), ""); +assert.sameValue(/(?b)/[Symbol.replace]("abc", "$<>"), "ac"); +assert.sameValue(/(?.)(?.)/g[Symbol.replace]("abc", "$2$1"), "bac"); +assert.sameValue(/(?b)/u[Symbol.replace]("abc", "$.)/gu[Symbol.replace]("abc", "$"), ""); +assert.sameValue(/(?b)/[Symbol.replace]("abc", "$$$&"), "a$bc"); + +assert.sameValue(/(?<𝒜>b)/u[Symbol.replace]("abc", "d$<𝒜>$`"), "adbac"); +assert.sameValue(/(?<$𐒤>b)/gu[Symbol.replace]("abc", "$'$<$𐒤>d"), "acbdc"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/not-a-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/not-a-constructor.js new file mode 100644 index 0000000000..8fe7bd03bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/not-a-constructor.js @@ -0,0 +1,35 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + RegExp.prototype[Symbol.replace] does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [Reflect.construct, Symbol, Symbol.replace, arrow-function] +---*/ + +assert.sameValue( + isConstructor(RegExp.prototype[Symbol.replace]), + false, + 'isConstructor(RegExp.prototype[Symbol.replace]) must return false' +); + +assert.throws(TypeError, () => { + let re = new RegExp(''); new re[Symbol.replace](); +}, '`let re = new RegExp(\'\'); new re[Symbol.replace]()` throws TypeError'); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js new file mode 100644 index 0000000000..891ddbabb4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/poisoned-stdlib.js @@ -0,0 +1,45 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Both functional and pattern replacement performs as expected with poisoned stdlib. +features: [Symbol.iterator, Symbol.replace, regexp-named-groups] +---*/ + +assert(delete Array.prototype.concat); +assert(delete Array.prototype.push); +assert(delete Array.prototype[Symbol.iterator]); +assert(delete Function.prototype.apply); +assert(delete String.prototype.charAt); +assert(delete String.prototype.charCodeAt); +assert(delete String.prototype.indexOf); +assert(delete String.prototype.slice); +assert(delete String.prototype.substring); + +for (let i = 0; i < 5; ++i) { + Object.defineProperty(Array.prototype, i, { + get: function() { + throw new Test262Error(i + " getter should be unreachable."); + }, + set: function(_value) { + throw new Test262Error(i + " setter should be unreachable."); + }, + }); +} + +var str = "1a2"; + +assert.sameValue(/a/[Symbol.replace](str, "$`b"), "11b2"); +assert.sameValue(/a/[Symbol.replace](str, "b$'"), "1b22"); +assert.sameValue(/a/[Symbol.replace](str, "$3b$33"), "1$3b$332"); +assert.sameValue(/(a)/[Symbol.replace](str, "$1b"), "1ab2"); +assert.sameValue(/(?a)/[Symbol.replace](str, "$b"), "1ab2"); + +var replacer = function() { + return "b"; +}; + +assert.sameValue(/a/[Symbol.replace](str, replacer), "1b2"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/prop-desc.js new file mode 100644 index 0000000000..f2d00e5f77 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/prop-desc.js @@ -0,0 +1,21 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.8 +description: RegExp.prototype[Symbol.replace] property descriptor +info: | + ES6 Section 17 + + Every other data property described in clauses 18 through 26 and in Annex + B.2 has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. +includes: [propertyHelper.js] +features: [Symbol.replace] +---*/ + +verifyNotEnumerable(RegExp.prototype, Symbol.replace); +verifyWritable(RegExp.prototype, Symbol.replace); +verifyConfigurable(RegExp.prototype, Symbol.replace); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/replace-with-trailing.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/replace-with-trailing.js new file mode 100644 index 0000000000..18c994a784 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/replace-with-trailing.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Return value when replacement pattern does not match final code point +es6id: 21.2.5.8 +info: | + [...] + 18. Return the String formed by concatenating the code units of + accumulatedResult with the substring of S consisting of the code units + from nextSourcePosition (inclusive) up through the final code unit of S + (inclusive). +features: [Symbol.replace] +---*/ + +assert.sameValue(/abc/[Symbol.replace]('abcd', 'X'), 'Xd'); +assert.sameValue(/bc/[Symbol.replace]('abcd', 'X'), 'aXd'); +assert.sameValue(/c/[Symbol.replace]('abcd', 'X'), 'abXd'); + +assert.sameValue(/ab/[Symbol.replace]('abcd', 'X'), 'Xcd'); +assert.sameValue(/b/[Symbol.replace]('abcd', 'X'), 'aXcd'); + +assert.sameValue(/a/[Symbol.replace]('abcd', 'X'), 'Xbcd'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/replace-without-trailing.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/replace-without-trailing.js new file mode 100644 index 0000000000..e52de7ba56 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/replace-without-trailing.js @@ -0,0 +1,18 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Return value when replacement pattern matches final code point +es6id: 21.2.5.8 +info: | + [...] + 17. If nextSourcePosition ≥ lengthS, return accumulatedResult. +features: [Symbol.replace] +---*/ + +assert.sameValue(/abcd/[Symbol.replace]('abcd', 'X'), 'X'); +assert.sameValue(/bcd/[Symbol.replace]('abcd', 'X'), 'aX'); +assert.sameValue(/cd/[Symbol.replace]('abcd', 'X'), 'abX'); +assert.sameValue(/d/[Symbol.replace]('abcd', 'X'), 'abcX'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-capture-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-capture-err.js new file mode 100644 index 0000000000..e03a9a4300 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-capture-err.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while type coercing `1` property of result +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + 16. Repeat, for each result in results, + [...] + l. Repeat while n ≤ nCaptures + i. Let capN be Get(result, ToString(n)). + ii. ReturnIfAbrupt(capN). + iii. If capN is not undefined, then + 1. Let capN be ToString(capN). + 2. ReturnIfAbrupt(capN). +features: [Symbol.replace] +---*/ + +var r = /./; +var uncoercibleValue = { + length: 2, + 1: { + toString: function() { + throw new Test262Error(); + } + } +}; +r.exec = function() { + return uncoercibleValue; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', 'b'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-capture.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-capture.js new file mode 100644 index 0000000000..8ad783902e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-capture.js @@ -0,0 +1,46 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + String coercion of "3" property of the value returned by RegExpExec. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 11. Repeat, while done is false + a. Let result be ? RegExpExec(rx, S). + [...] + 14. For each result in results, do + [...] + i. Repeat, while n ≤ nCaptures + i. Let capN be ? Get(result, ! ToString(n)). + ii. If capN is not undefined, then + 1. Set capN to ? ToString(capN). + [...] +features: [Symbol.replace] +---*/ + +var r = /./; +var coercibleValue = { + length: 4, + index: 0, + 3: { + toString: function() { + return 'toString value'; + }, + valueOf: function() { + throw new Test262Error('This method should not be invoked.'); + }, + }, +}; +r.exec = function() { + return coercibleValue; +}; + +assert.sameValue( + r[Symbol.replace]('', 'foo[$3]bar'), 'foo[toString value]bar' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-err.js new file mode 100644 index 0000000000..c006397d2c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-err.js @@ -0,0 +1,40 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Abrupt completion during coercion of "groups" + property of the value returned by RegExpExec. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + j. Let namedCaptures be ? Get(result, "groups"). + k. If functionalReplace is true, then + [...] + l. Else, + i. If namedCaptures is not undefined, then + 1. Set namedCaptures to ? ToObject(namedCaptures). +features: [Symbol.replace, regexp-named-groups] +---*/ + +var r = /./; +var coercibleValue = { + length: 1, + 0: '', + index: 0, + groups: null, +}; + +r.exec = function() { + return coercibleValue; +}; + +assert.throws(TypeError, function() { + r[Symbol.replace]('bar', ''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop-err.js new file mode 100644 index 0000000000..bb69475979 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop-err.js @@ -0,0 +1,69 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Abrupt completion during coercion of value of "groups" object. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + j. Let namedCaptures be ? Get(result, "groups"). + k. If functionalReplace is true, then + [...] + l. Else, + [...] + ii. Let replacement be ? GetSubstitution(matched, S, position, captures, namedCaptures, replaceValue). + + Runtime Semantics: GetSubstitution ( matched, str, position, captures, namedCaptures, replacement ) + + [...] + 11. Let result be the String value derived from replacement by copying code unit elements + from replacement to result while performing replacements as specified in Table 54. + These $ replacements are done left-to-right, and, once such a replacement is performed, + the new replacement text is not subject to further replacements. + 12. Return result. + + Table 54: Replacement Text Symbol Substitutions + + $< + + 1. If namedCaptures is undefined, the replacement text is the String "$<". + 2. Else, + a. Assert: Type(namedCaptures) is Object. + b. Scan until the next > U+003E (GREATER-THAN SIGN). + c. If none is found, the replacement text is the String "$<". + d. Else, + i. Let groupName be the enclosed substring. + ii. Let capture be ? Get(namedCaptures, groupName). + iii. If capture is undefined, replace the text through > with the empty String. + iv. Otherwise, replace the text through > with ? ToString(capture). +features: [Symbol.replace, regexp-named-groups] +---*/ + +var r = /./; +var coercibleValue = { + length: 1, + 0: '', + index: 0, + groups: { + foo: { + toString: function() { + throw new Test262Error(); + }, + }, + }, +}; + +r.exec = function() { + return coercibleValue; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', '$'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop.js new file mode 100644 index 0000000000..4a2f731c76 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups-prop.js @@ -0,0 +1,72 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + String coercion of "groups" object values returned by RegExpExec. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + j. Let namedCaptures be ? Get(result, "groups"). + k. If functionalReplace is true, then + [...] + l. Else, + [...] + ii. Let replacement be ? GetSubstitution(matched, S, position, captures, namedCaptures, replaceValue). + + Runtime Semantics: GetSubstitution ( matched, str, position, captures, namedCaptures, replacement ) + + [...] + 11. Let result be the String value derived from replacement by copying code unit elements + from replacement to result while performing replacements as specified in Table 54. + These $ replacements are done left-to-right, and, once such a replacement is performed, + the new replacement text is not subject to further replacements. + 12. Return result. + + Table 54: Replacement Text Symbol Substitutions + + $< + + 1. If namedCaptures is undefined, the replacement text is the String "$<". + 2. Else, + a. Assert: Type(namedCaptures) is Object. + b. Scan until the next > U+003E (GREATER-THAN SIGN). + c. If none is found, the replacement text is the String "$<". + d. Else, + i. Let groupName be the enclosed substring. + ii. Let capture be ? Get(namedCaptures, groupName). + iii. If capture is undefined, replace the text through > with the empty String. + iv. Otherwise, replace the text through > with ? ToString(capture). +features: [Symbol.replace, regexp-named-groups] +---*/ + +var r = /./; +var coercibleValue = { + length: 1, + 0: 'a', + index: 0, + groups: { + foo: { + toString: function() { + return 'toString value'; + }, + valueOf: function() { + throw new Test262Error('This method should not be invoked.'); + }, + }, + bar: null, + }, +}; + +r.exec = function() { + return coercibleValue; +}; + +assert.sameValue(r[Symbol.replace]('ab', '[$]'), '[toString value]b'); +assert.sameValue(r[Symbol.replace]('ab', '[$]'), '[null]b'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups.js new file mode 100644 index 0000000000..db36533e3c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-groups.js @@ -0,0 +1,38 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + String coercion of "groups" property of the value returned by RegExpExec. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + j. Let namedCaptures be ? Get(result, "groups"). + k. If functionalReplace is true, then + [...] + l. Else, + i. If namedCaptures is not undefined, then + 1. Set namedCaptures to ? ToObject(namedCaptures). + ii. Let replacement be ? GetSubstitution(matched, S, position, captures, namedCaptures, replaceValue). +features: [Symbol.replace, regexp-named-groups] +---*/ + +var r = /./; +var coercibleValue = { + length: 1, + 0: 'b', + index: 1, + groups: '123', +}; + +r.exec = function() { + return coercibleValue; +}; + +assert.sameValue(r[Symbol.replace]('ab', '[$]'), 'a[3]'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index-err.js new file mode 100644 index 0000000000..9f7f177ee6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index-err.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while type coercing `index` property of + result +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + 16. Repeat, for each result in results, + [...] + g. Let position be ToInteger(Get(result, "index")). + h. ReturnIfAbrupt(position). +features: [Symbol.replace] +---*/ + +var r = /./; +var uncoercibleIndex = { + index: { + valueOf: function() { + throw new Test262Error(); + } + } +}; +r.exec = function() { + return uncoercibleIndex; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', 'b'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index-undefined.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index-undefined.js new file mode 100644 index 0000000000..506b483703 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index-undefined.js @@ -0,0 +1,43 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Integer coercion of "index" property of the value returned by RegExpExec. + (undefined value) +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + e. Let position be ? ToInteger(? Get(result, "index")). + [...] + + ToInteger ( argument ) + + 1. Let number be ? ToNumber(argument). + 2. If number is NaN, return +0. +features: [Symbol.toPrimitive, Symbol.replace] +---*/ + +var index = {}; +var toPrimitiveHint; +index[Symbol.toPrimitive] = function(hint) { + toPrimitiveHint = hint; +}; + +var r = /./; +r.exec = function() { + return { + length: 1, + 0: 'a', + index: index, + }; +}; + +assert.sameValue(r[Symbol.replace]('ab', '$`'), 'b'); +assert.sameValue(toPrimitiveHint, 'number'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index.js new file mode 100644 index 0000000000..58e401564c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-index.js @@ -0,0 +1,45 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Integer coercion of "index" property of the value returned by RegExpExec. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + e. Let position be ? ToInteger(? Get(result, "index")). + [...] + k. If functionalReplace is true, then + i. Let replacerArgs be « matched ». + ii. Append in list order the elements of captures to the end of the List replacerArgs. + iii. Append position and S to replacerArgs. + [...] + v. Let replValue be ? Call(replaceValue, undefined, replacerArgs). +features: [Symbol.replace] +---*/ + +var r = /./; +var coercibleIndex = { + length: 1, + 0: '', + index: { + valueOf: function() { + return 2.9; + }, + }, +}; +r.exec = function() { + return coercibleIndex; +}; + +var replacer = function(_matched, position) { + return position; +}; + +assert.sameValue(r[Symbol.replace]('abcd', replacer), 'ab2cd'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-length-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-length-err.js new file mode 100644 index 0000000000..2123cb3b17 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-length-err.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while type coercing `length` property of + result +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + 16. Repeat, for each result in results, + a. Let nCaptures be ToLength(Get(result, "length")). + b. ReturnIfAbrupt(nCaptures). +features: [Symbol.replace] +---*/ + +var r = /./; +var uncoercibleLength = { + length: { + valueOf: function() { + throw new Test262Error(); + } + } +}; +r.exec = function() { + return uncoercibleLength; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', 'b'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-length.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-length.js new file mode 100644 index 0000000000..ce35f50bc8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-length.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Type coercion of "length" property of the value returned by RegExpExec. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + a. Let nCaptures be ? LengthOfArrayLike(result). + [...] +features: [Symbol.replace] +---*/ + +var r = /./; +var coercibleIndex = { + length: { + valueOf: function() { + return 3.9; + }, + }, + 0: '', + 1: 'foo', + 2: 'bar', + 3: 'baz', + index: 0, +}; +r.exec = function() { + return coercibleIndex; +}; + +assert.sameValue(r[Symbol.replace]('', '$1$2$3'), 'foobar$3'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched-err.js new file mode 100644 index 0000000000..6e001de0b0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched-err.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while type coercing `0` property of result +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + 16. Repeat, for each result in results, + [...] + d. Let matched be ToString(Get(result, "0")). + e. ReturnIfAbrupt(matched). +features: [Symbol.replace] +---*/ + +var r = /./; +var uncoercibleValue = { + 0: { + toString: function() { + throw new Test262Error(); + } + } +}; +r.exec = function() { + return uncoercibleValue; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', 'b'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched-global.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched-global.js new file mode 100644 index 0000000000..05776dd56c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched-global.js @@ -0,0 +1,55 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + String coercion of "0" property of the value returned by RegExpExec. + (global RegExp) +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 11. Repeat, while done is false + a. Let result be ? RegExpExec(rx, S). + b. If result is null, set done to true. + c. Else, + i. Append result to the end of results. + ii. If global is false, set done to true. + iii. Else, + 1. Let matchStr be ? ToString(? Get(result, "0")). + 2. If matchStr is the empty String, then + a. Let thisIndex be ? ToLength(? Get(rx, "lastIndex")). + b. Let nextIndex be AdvanceStringIndex(S, thisIndex, fullUnicode). + c. Perform ? Set(rx, "lastIndex", nextIndex, true). +features: [Symbol.replace] +---*/ + +var r = /./g; +var coercibleValueWasReturned = false; +var coercibleValue = { + length: 1, + 0: { + toString: function() { + return ''; + }, + valueOf: function() { + throw new Test262Error('This method should not be invoked.'); + }, + }, + index: 0, +}; + +r.exec = function() { + if (coercibleValueWasReturned) { + return null; + } + + coercibleValueWasReturned = true; + return coercibleValue; +}; + +assert.sameValue(r[Symbol.replace]('', 'foo'), 'foo'); +assert.sameValue(r.lastIndex, 1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched.js new file mode 100644 index 0000000000..7d0ba81931 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-coerce-matched.js @@ -0,0 +1,42 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + String coercion of "0" property of the value returned by RegExpExec. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 11. Repeat, while done is false + a. Let result be ? RegExpExec(rx, S). + [...] + 14. For each result in results, do + [...] + c. Let matched be ? ToString(? Get(result, "0")). +features: [Symbol.replace] +---*/ + +var r = /./; +var coercibleValue = { + length: 1, + 0: { + toString: function() { + return 'toString value'; + }, + valueOf: function() { + throw new Test262Error('This method should not be invoked.'); + }, + }, + index: 0, +}; +r.exec = function() { + return coercibleValue; +}; + +assert.sameValue( + r[Symbol.replace]('', 'foo[$&]bar'), 'foo[toString value]bar' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-capture-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-capture-err.js new file mode 100644 index 0000000000..d2ec490339 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-capture-err.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while accessing `1` property of result +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + 16. Repeat, for each result in results, + [...] + l. Repeat while n ≤ nCaptures + i. Let capN be Get(result, ToString(n)). + ii. ReturnIfAbrupt(capN). +features: [Symbol.replace] +---*/ + +var r = /./; +var poisonedValue = { + length: 2, + get 1() { + throw new Test262Error(); + } +}; +r.exec = function() { + return poisonedValue; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', 'b'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-groups-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-groups-err.js new file mode 100644 index 0000000000..808cb84b15 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-groups-err.js @@ -0,0 +1,36 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Abrupt completion during lookup of "groups" + property of the value returned by RegExpExec. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + j. Let namedCaptures be ? Get(result, "groups"). +features: [Symbol.replace, regexp-named-groups] +---*/ + +var r = /./; +var coercibleValue = { + length: 0, + index: 0, + get groups() { + throw new Test262Error(); + }, +}; + +r.exec = function() { + return coercibleValue; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', '$'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-groups-prop-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-groups-prop-err.js new file mode 100644 index 0000000000..b4103c1ed5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-groups-prop-err.js @@ -0,0 +1,64 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@replace +description: > + Abrupt completion during lookup of value of "groups" object. +info: | + RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 14. For each result in results, do + [...] + j. Let namedCaptures be ? Get(result, "groups"). + k. If functionalReplace is true, then + [...] + l. Else, + [...] + ii. Let replacement be ? GetSubstitution(matched, S, position, captures, namedCaptures, replaceValue). + + Runtime Semantics: GetSubstitution ( matched, str, position, captures, namedCaptures, replacement ) + + [...] + 11. Let result be the String value derived from replacement by copying code unit elements + from replacement to result while performing replacements as specified in Table 54. + These $ replacements are done left-to-right, and, once such a replacement is performed, + the new replacement text is not subject to further replacements. + 12. Return result. + + Table 54: Replacement Text Symbol Substitutions + + $< + + 1. If namedCaptures is undefined, the replacement text is the String "$<". + 2. Else, + a. Assert: Type(namedCaptures) is Object. + b. Scan until the next > U+003E (GREATER-THAN SIGN). + c. If none is found, the replacement text is the String "$<". + d. Else, + i. Let groupName be the enclosed substring. + ii. Let capture be ? Get(namedCaptures, groupName). +features: [Symbol.replace, regexp-named-groups] +---*/ + +var r = /./; +var coercibleValue = { + length: 0, + index: 0, + groups: { + get foo() { + throw new Test262Error(); + }, + }, +}; + +r.exec = function() { + return coercibleValue; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', '$'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-index-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-index-err.js new file mode 100644 index 0000000000..9114a3ab5f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-index-err.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while accessing `index` property of result +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + 16. Repeat, for each result in results, + [...] + g. Let position be ToInteger(Get(result, "index")). + h. ReturnIfAbrupt(position). +features: [Symbol.replace] +---*/ + +var r = /./; +var poisonedIndex = { + get index() { + throw new Test262Error(); + } +}; +r.exec = function() { + return poisonedIndex; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', 'b'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-length-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-length-err.js new file mode 100644 index 0000000000..9f74da963a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-length-err.js @@ -0,0 +1,33 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while accessing `length` property of result +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + 16. Repeat, for each result in results, + a. Let nCaptures be ToLength(Get(result, "length")). + b. ReturnIfAbrupt(nCaptures). +features: [Symbol.replace] +---*/ + +var r = /./; +var poisonedLength = { + get length() { + throw new Test262Error(); + } +}; +r.exec = function() { + return poisonedLength; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', 'b'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-matched-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-matched-err.js new file mode 100644 index 0000000000..c38b17596e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/result-get-matched-err.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Behavior when error is thrown while accessing `0` property of result +es6id: 21.2.5.8 +info: | + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + [...] + 16. Repeat, for each result in results, + [...] + d. Let matched be ToString(Get(result, "0")). + e. ReturnIfAbrupt(matched). +features: [Symbol.replace] +---*/ + +var r = /./; +var poisonedValue = { + get 0() { + throw new Test262Error(); + } +}; +r.exec = function() { + return poisonedValue; +}; + +assert.throws(Test262Error, function() { + r[Symbol.replace]('a', 'b'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-after.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-after.js new file mode 100644 index 0000000000..92dcae5319 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-after.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Substitution pattern: text after match +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + [...] + n. Else, + i. Let replacement be GetSubstitution(matched, S, position, + captures, replaceValue). + [...] + + 21.1.3.14.1 Runtime Semantics: GetSubstitution + + Code units: 0x0024, 0x0027 + + Unicode Characters: $' + + Replacement text: + If tailPos ≥ stringLength, the replacement is the empty String. Otherwise + the replacement is the substring of str that starts at index tailPos and + continues to the end of str. +features: [Symbol.replace] +---*/ + +assert.sameValue(/c/[Symbol.replace]('abc', '[$\']'), 'ab[]'); +assert.sameValue(/b/[Symbol.replace]('abc', '[$\']'), 'a[c]c'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-before.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-before.js new file mode 100644 index 0000000000..71d88fb145 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-before.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Substitution pattern: text before match +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + [...] + n. Else, + i. Let replacement be GetSubstitution(matched, S, position, + captures, replaceValue). + [...] + + 21.1.3.14.1 Runtime Semantics: GetSubstitution + + Code units: 0x0024, 0x0060 + + Unicode Characters: $` + + Replacement text: + If position is 0, the replacement is the empty String. Otherwise the + replacement is the substring of str that starts at index 0 and whose last + code unit is at index `position-1`. +features: [Symbol.replace] +---*/ + +assert.sameValue(/a/[Symbol.replace]('abc', '[$`]'), '[]bc'); +assert.sameValue(/b/[Symbol.replace]('abc', '[$`]'), 'a[a]c'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-capture-idx-1.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-capture-idx-1.js new file mode 100644 index 0000000000..bd0cc5b6e8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-capture-idx-1.js @@ -0,0 +1,39 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Substitution pattern: one-digit capturing group reference +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + [...] + n. Else, + i. Let replacement be GetSubstitution(matched, S, position, + captures, replaceValue). + [...] + + 21.1.3.14.1 Runtime Semantics: GetSubstitution + + Code units: + 0x0024, N + Where 0x0031 ≤ N ≤ 0x0039 + + Unicode Characters: + $n where + n is one of 1 2 3 4 5 6 7 8 9 and $n is not followed by a decimal digit + + Replacement text: + The nth element of captures, where n is a single digit in the range 1 to 9. + If n≤m and the nth element of captures is undefined, use the empty String + instead. If n>m, no replacement is done. +features: [Symbol.replace] +---*/ + +assert.sameValue(/b(c)(z)?(.)/[Symbol.replace]('abcde', '[$1$2$3]'), 'a[cd]e'); + +assert.sameValue(/b(c)(z)?(.)/[Symbol.replace]('abcde', '[$1$2$3$4$0]'), 'a[cd$4$0]e'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-capture-idx-2.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-capture-idx-2.js new file mode 100644 index 0000000000..b9138d009d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-capture-idx-2.js @@ -0,0 +1,43 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Substitution pattern: two-digit capturing group reference +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + [...] + n. Else, + i. Let replacement be GetSubstitution(matched, S, position, + captures, replaceValue). + [...] + + 21.1.3.14.1 Runtime Semantics: GetSubstitution + + Code units: + 0x0024, N, N + Where 0x0030 ≤ N ≤ 0x0039 + + Unicode Characters: + $nn where + n is one of 0 1 2 3 4 5 6 7 8 9 + + Replacement text: + The nnth element of captures, where nn is a two-digit decimal number in the + range 01 to 99. If nn≤m and the nnth element of captures is undefined, use + the empty String instead. If nn is 00 or nn>m, no replacement is done. +features: [Symbol.replace] +---*/ + +assert.sameValue( + /b(c)(z)?(.)/[Symbol.replace]('abcde', '[$01$02$03]'), 'a[cd]e' +); + +assert.sameValue( + /b(c)(z)?(.)/[Symbol.replace]('abcde', '[$01$02$03$04$00]'), 'a[cd$04$00]e' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-dollar.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-dollar.js new file mode 100644 index 0000000000..946e33e2d8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-dollar.js @@ -0,0 +1,45 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Substitution pattern: dollar sign +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + [...] + n. Else, + i. Let replacement be GetSubstitution(matched, S, position, + captures, replaceValue). + [...] + + 21.1.3.14.1 Runtime Semantics: GetSubstitution + + Code units: 0x0024, 0x0024 + Unicode Characters: $$ + Replacement text: $ + + [...] + + Code units: 0x0024 + Unicode Characters: $ in any context that does not match any of the above. + Replacement text: $ +features: [Symbol.replace] +---*/ + +assert.sameValue(/./[Symbol.replace]('abc', '$$'), '$bc', '"escaped" version'); +assert.sameValue( + /./[Symbol.replace]('abc', '$'), '$bc', '"unescaped" version' +); +assert.sameValue( + /./[Symbol.replace]('abc', '\\$'), '\\$bc', 'backslash-prefixed' +); +assert.sameValue( + /./[Symbol.replace]('abc', '$$$'), + '$$bc', + '"escaped" followed by "unuescaped"' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-matched.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-matched.js new file mode 100644 index 0000000000..67438ee100 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/subst-matched.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + Substitution pattern: matched string +es6id: 21.2.5.8 +info: | + 16. Repeat, for each result in results, + [...] + m. If functionalReplace is true, then + [...] + n. Else, + i. Let replacement be GetSubstitution(matched, S, position, + captures, replaceValue). + [...] + + 21.1.3.14.1 Runtime Semantics: GetSubstitution + + Code units: 0x0024, 0x0026 + Unicode Characters: $& + Replacement text: matched +features: [Symbol.replace] +---*/ + +assert.sameValue(/.4?./[Symbol.replace]('abc', '[$&]'), '[ab]c'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/this-val-non-obj.js new file mode 100644 index 0000000000..2d840e32be --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/this-val-non-obj.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The `this` value must be an object +es6id: 21.2.5.8 +info: | + 1. Let rx be the this value. + 2. If Type(rx) is not Object, throw a TypeError exception. +features: [Symbol.replace] +---*/ + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.replace].call(); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.replace].call(undefined); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.replace].call(null); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.replace].call(true); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.replace].call('string'); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.replace].call(Symbol.replace); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.replace].call(86); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/u-advance-after-empty.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/u-advance-after-empty.js new file mode 100644 index 0000000000..69d57d61fb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/u-advance-after-empty.js @@ -0,0 +1,32 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: lastIndex is advanced according to width of astral symbols +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 10. If global is true, then + a. Let fullUnicode be ToBoolean(Get(rx, "unicode")). + b. ReturnIfAbrupt(fullUnicode). + [...] + 13. Repeat, while done is false + [...] + d. Else result is not null, + [...] + iii. Else, + [...] + 3. If matchStr is the empty String, then + [...] + c. Let nextIndex be AdvanceStringIndex(S, thisIndex, + fullUnicode). + d. Let setStatus be Set(rx, "lastIndex", nextIndex, true). +features: [Symbol.replace] +---*/ + +var str = /^|\udf06/ug[Symbol.replace]('\ud834\udf06', 'XXX'); +assert.sameValue(str, 'XXX\ud834\udf06'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-global-return.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-global-return.js new file mode 100644 index 0000000000..69248ba6a9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-global-return.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Replaces consecutive matches when the `g` flag is present +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + b. ReturnIfAbrupt(result). + c. If result is null, set done to true. + d. Else result is not null, + i. Append result to the end of results. + ii. If global is false, set done to true. + iii. Else, + 1. Let matchStr be ToString(Get(result, "0")). + [...] + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + [...] + 3. Return null. +features: [Symbol.replace] +---*/ + +assert.sameValue(/a/yg[Symbol.replace]('aaba', 'x'), 'xxba'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex-no-write.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex-no-write.js new file mode 100644 index 0000000000..3c2cae7431 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex-no-write.js @@ -0,0 +1,40 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Match failure with non-writable `lastIndex` property +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). + 2. ReturnIfAbrupt(setStatus). +features: [Symbol.replace] +---*/ + +var r = /c/y; +Object.defineProperty(r, 'lastIndex', { + writable: false +}); + +assert.throws(TypeError, function() { + r[Symbol.replace]('abc', 'x'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex.js new file mode 100644 index 0000000000..d469580c81 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-lastindex.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Resets the `lastIndex` property to zero after a match failure +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). +features: [Symbol.replace] +---*/ + +var r = /c/y; +r.lastIndex = 1; + +r[Symbol.replace]('abc', 'x'); + +assert.sameValue(r.lastIndex, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-return.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-return.js new file mode 100644 index 0000000000..b836ce2851 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-fail-return.js @@ -0,0 +1,33 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Stops match execution after first match failure +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + [...] + 3. Return null. +features: [Symbol.replace] +---*/ + +assert.sameValue(/b/y[Symbol.replace]('ab', 'x'), 'ab'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-init-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-init-lastindex.js new file mode 100644 index 0000000000..1c71ab2f6d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-init-lastindex.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Honors initial value of the `lastIndex` property +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + 9. ReturnIfAbrupt(sticky). + 10. If global is false and sticky is false, let lastIndex be 0. +features: [Symbol.replace] +---*/ + +var r = /./y; +r.lastIndex = 1; +assert.sameValue(r[Symbol.replace]('aaa', 'x'), 'axa'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-set-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-set-lastindex.js new file mode 100644 index 0000000000..d97b19cbab --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.replace/y-set-lastindex.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Sets the `lastIndex` property to the end index of the first match +es6id: 21.2.5.8 +info: | + 21.2.5.8 RegExp.prototype [ @@replace ] ( string, replaceValue ) + + [...] + 13. Repeat, while done is false + a. Let result be RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 18. If global is true or sticky is true, + a. Let setStatus be Set(R, "lastIndex", e, true). +features: [Symbol.replace] +---*/ + +var r = /abc/y; + +r[Symbol.replace]('abc', 'x'); + +assert.sameValue(r.lastIndex, 3); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/coerce-string-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/coerce-string-err.js new file mode 100644 index 0000000000..a0be9089cd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/coerce-string-err.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: Behavior when error thrown while coercing `string` argument +info: | + [...] + 3. Let S be ToString(string). + 4. ReturnIfAbrupt(S). +features: [Symbol.search] +---*/ + +var uncoercibleObj = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + /./[Symbol.search](uncoercibleObj); +}); + +assert.throws(TypeError, function() { + /./[Symbol.search](Symbol.search); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/coerce-string.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/coerce-string.js new file mode 100644 index 0000000000..b649f6f1bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/coerce-string.js @@ -0,0 +1,22 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: String coercion of `string` argument +info: | + [...] + 3. Let S be ToString(string). + [...] +features: [Symbol.search] +---*/ + +var obj = { + toString: function() { + return 'toString value'; + } +}; + +assert.sameValue(/ring/[Symbol.search](obj), 4); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/cstm-exec-return-index.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/cstm-exec-return-index.js new file mode 100644 index 0000000000..01410d1bdb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/cstm-exec-return-index.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 Mike Pennisi. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: Index value returned by a custom `exec` method +info: | + [...] + 9. Let result be RegExpExec(rx, S). + [...] + 14. Return Get(result, "index"). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 5. If IsCallable(exec) is true, then + a. Let result be Call(exec, R, «S»). + b. ReturnIfAbrupt(result). + c. If Type(result) is neither Object or Null, throw a TypeError + exception. + d. Return result. + +features: [Symbol.search] +---*/ + +var fakeRe = { + exec: function() { + return { index: 86 }; + } +}; + +assert.sameValue(RegExp.prototype[Symbol.search].call(fakeRe, 'abc'), 86); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/cstm-exec-return-invalid.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/cstm-exec-return-invalid.js new file mode 100644 index 0000000000..81d509c332 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/cstm-exec-return-invalid.js @@ -0,0 +1,58 @@ +// Copyright (C) 2015 Mike Pennisi. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: Behavior when invalid value is returned by custom `exec` method +info: | + [...] + 9. Let result be RegExpExec(rx, S). + 10. ReturnIfAbrupt(result). + [...] + 14. Return Get(result, "index"). + + 21.2.5.2.1 Runtime Semantics: RegExpExec ( R, S ) + + [...] + 5. If IsCallable(exec) is true, then + a. Let result be Call(exec, R, «S»). + b. ReturnIfAbrupt(result). + c. If Type(result) is neither Object or Null, throw a TypeError + exception. + +features: [Symbol, Symbol.search] +---*/ + +var retVal; +var fakeRe = { + exec: function() { + return retVal; + } +}; + +retVal = undefined; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(fakeRe, 'a'); +}); + +retVal = 86; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(fakeRe, 'a'); +}); + +retVal = 'string'; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(fakeRe, 'a'); +}); + +retVal = true; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(fakeRe, 'a'); +}); + +retVal = Symbol(); +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(fakeRe, 'a'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/failure-return-val.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/failure-return-val.js new file mode 100644 index 0000000000..466a65a52c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/failure-return-val.js @@ -0,0 +1,15 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: Return value when no match is found +info: | + [...] + 13. If result is null, return –1. +features: [Symbol.search] +---*/ + +assert.sameValue(/z/[Symbol.search]('a'), -1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/get-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/get-lastindex-err.js new file mode 100644 index 0000000000..523cd80f97 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/get-lastindex-err.js @@ -0,0 +1,24 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: Behavior when error thrown while accessing `lastIndex` property +info: | + [...] + 5. Let previousLastIndex be Get(rx, "lastIndex"). + 6. ReturnIfAbrupt(previousLastIndex). +features: [Symbol.search] +---*/ + +var poisonedLastIndex = { + get lastIndex() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.search].call(poisonedLastIndex); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/lastindex-no-restore.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/lastindex-no-restore.js new file mode 100644 index 0000000000..066d67da3e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/lastindex-no-restore.js @@ -0,0 +1,67 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: Behavior when some lastIndex writes should be skipped. +info: | + [...] + 4. Let previousLastIndex be ? Get(rx, "lastIndex"). + 5. If SameValue(previousLastIndex, 0) is false, then + a. Perform ? Set(rx, "lastIndex", 0, true). + [...] + 7. Let currentLastIndex be ? Get(rx, "lastIndex"). + 8. If SameValue(currentLastIndex, previousLastIndex) is false, then + a. Perform ? Set(rx, "lastIndex", previousLastIndex, true). + [...] +features: [Symbol.search] +---*/ + +var lastIndexValue; +var lastIndexValueAfterExec; +var lastIndexReads; +var lastIndexWrites; +var execCallCount; +var result; + +var fakeRe = { + get lastIndex() { + lastIndexReads++; + return lastIndexValue; + }, + set lastIndex(_) { + lastIndexWrites++; + lastIndexValue = _; + }, + exec: function() { + execCallCount++; + lastIndexValue = lastIndexValueAfterExec; + return null; + } +}; + +function reset(value, valueAfterExec) { + lastIndexValue = value; + lastIndexValueAfterExec = valueAfterExec; + lastIndexReads = 0; + lastIndexWrites = 0; + execCallCount = 0; +} + +reset(0, 0); +result = RegExp.prototype[Symbol.search].call(fakeRe); +assert.sameValue(result, -1); +assert.sameValue(lastIndexValue, 0); +assert.sameValue(lastIndexReads, 2); +assert.sameValue(lastIndexWrites, 0); +assert.sameValue(execCallCount, 1); + +reset(420, 420); +result = RegExp.prototype[Symbol.search].call(fakeRe); +assert.sameValue(result, -1); +assert.sameValue(lastIndexValue, 420); +assert.sameValue(lastIndexReads, 2); +assert.sameValue(lastIndexWrites, 1); +assert.sameValue(execCallCount, 1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/length.js new file mode 100644 index 0000000000..86a0b3051c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/length.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.9 +description: RegExp.prototype[Symbol.search] `length` property +info: | + ES6 section 17: + + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this value + is equal to the largest number of named arguments shown in the subclause + headings for the function description, including optional parameters. + + [...] + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +features: [Symbol.search] +includes: [propertyHelper.js] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.search].length, 1); + +verifyNotEnumerable(RegExp.prototype[Symbol.search], 'length'); +verifyNotWritable(RegExp.prototype[Symbol.search], 'length'); +verifyConfigurable(RegExp.prototype[Symbol.search], 'length'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/match-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/match-err.js new file mode 100644 index 0000000000..6d541aebea --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/match-err.js @@ -0,0 +1,27 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: Behavior when error thrown while executing match +info: | + [...] + 9. Let result be RegExpExec(rx, S). + 10. ReturnIfAbrupt(result). +features: [Symbol.search] +---*/ + +var fakeRe = { + lastIndex: 86, + exec: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.search].call(fakeRe); +}); + +assert.sameValue(fakeRe.lastIndex, 0, '`lastIndex` property is not restored'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/name.js new file mode 100644 index 0000000000..08a4452f48 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/name.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.9 +description: RegExp.prototype[Symbol.search] `name` property +info: | + The value of the name property of this function is "[Symbol.search]". + + ES6 Section 17: + + [...] + + Unless otherwise specified, the name property of a built-in Function + object, if it exists, has the attributes { [[Writable]]: false, + [[Enumerable]]: false, [[Configurable]]: true }. +features: [Symbol.search] +includes: [propertyHelper.js] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.search].name, '[Symbol.search]'); + +verifyNotEnumerable(RegExp.prototype[Symbol.search], 'name'); +verifyNotWritable(RegExp.prototype[Symbol.search], 'name'); +verifyConfigurable(RegExp.prototype[Symbol.search], 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/not-a-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/not-a-constructor.js new file mode 100644 index 0000000000..0403b2e6da --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/not-a-constructor.js @@ -0,0 +1,35 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + RegExp.prototype[Symbol.search] does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [Reflect.construct, Symbol, Symbol.search, arrow-function] +---*/ + +assert.sameValue( + isConstructor(RegExp.prototype[Symbol.search]), + false, + 'isConstructor(RegExp.prototype[Symbol.search]) must return false' +); + +assert.throws(TypeError, () => { + let re = new RegExp(''); new re[Symbol.search](); +}, '`let re = new RegExp(\'\'); new re[Symbol.search]()` throws TypeError'); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/prop-desc.js new file mode 100644 index 0000000000..c38f0f62d8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/prop-desc.js @@ -0,0 +1,21 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: RegExp.prototype[Symbol.search] property descriptor +info: | + ES6 Section 17 + + Every other data property described in clauses 18 through 26 and in Annex + B.2 has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. +includes: [propertyHelper.js] +features: [Symbol.search] +---*/ + +verifyNotEnumerable(RegExp.prototype, Symbol.search); +verifyWritable(RegExp.prototype, Symbol.search); +verifyConfigurable(RegExp.prototype, Symbol.search); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init-err.js new file mode 100644 index 0000000000..9df6ae6fc3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init-err.js @@ -0,0 +1,54 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: > + Behavior when error thrown while initially setting `lastIndex` property +info: | + [...] + 7. Let status be Set(rx, "lastIndex", 0, true). + 8. ReturnIfAbrupt(status). +features: [Symbol.search] +---*/ + +var callCount; +var poisonedLastIndex = { + get lastIndex() { + callCount += 1; + }, + set lastIndex(_) { + throw new Test262Error(); + } +}; +var nonWritableLastIndex = { + get lastIndex() { + callCount += 1; + }, + // This method defined to avoid false positives from unrelated TypeErrors + exec: function() { + return null; + } +}; + +callCount = 0; +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.search].call(poisonedLastIndex); +}); +assert.sameValue( + callCount, + 1, + 'Property value was accessed before being set ("poisoned" lastIndex)' +); + +callCount = 0; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(nonWritableLastIndex); +}); +assert.sameValue( + callCount, + 1, + 'Property value was accessed before being set (non-writable lastIndex)' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init-samevalue.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init-samevalue.js new file mode 100644 index 0000000000..155420d028 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init-samevalue.js @@ -0,0 +1,32 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@search +description: > + `previousLastIndex` value is compared using SameValue. +info: | + RegExp.prototype [ @@search ] ( string ) + + [...] + 4. Let previousLastIndex be ? Get(rx, "lastIndex"). + 5. If SameValue(previousLastIndex, 0) is false, then + a. Perform ? Set(rx, "lastIndex", 0, true). + 6. Let result be ? RegExpExec(rx, S). + [...] +features: [Symbol.search] +---*/ + +var re = /(?:)/; +var execLastIndex; + +re.lastIndex = -0; +re.exec = function() { + execLastIndex = re.lastIndex; + return null; +}; + +assert.sameValue(re[Symbol.search](""), -1); +assert.sameValue(execLastIndex, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init.js new file mode 100644 index 0000000000..17360b72f6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-init.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: > + The `lastIndex` value is set to 0 immediately prior to match execution +info: | + [...] + 7. Let status be Set(rx, "lastIndex", 0, true). + 8. ReturnIfAbrupt(status). + 9. Let result be RegExpExec(rx, S). + [...] +features: [Symbol.search] +---*/ + +var duringExec; +var fakeRe = { + lastIndex: 34, + exec: function() { + duringExec = fakeRe.lastIndex; + return null; + } +}; + +RegExp.prototype[Symbol.search].call(fakeRe); + +assert.sameValue(duringExec, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-err.js new file mode 100644 index 0000000000..03f11054ba --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-err.js @@ -0,0 +1,52 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: > + Behavior when error thrown while restoring `lastIndex` property following + match execution +info: | + [...] + 8. If SameValue(currentLastIndex, previousLastIndex) is false, then + a. Perform ? Set(rx, "lastIndex", previousLastIndex, true). +features: [Symbol.search] +---*/ + +var callCount; +var poisonedLastIndex = { + get lastIndex() { return this.lastIndex_; }, + set lastIndex(_) { + if (callCount === 1) { + throw new Test262Error(); + } + this.lastIndex_ = _; + }, + exec: function() { + callCount += 1; + return null; + } +}; +var nonWritableLastIndex = { + exec: function() { + Object.defineProperty( + nonWritableLastIndex, 'lastIndex', { writable: false } + ); + callCount += 1; + return null; + } +}; + +callCount = 0; +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.search].call(poisonedLastIndex); +}); +assert.sameValue(callCount, 1, 'Match executed ("poisoned" lastIndex)'); + +callCount = 0; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(nonWritableLastIndex); +}); +assert.sameValue(callCount, 1, 'Match executed (non-writable lastIndex)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-samevalue.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-samevalue.js new file mode 100644 index 0000000000..a7a909fe72 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore-samevalue.js @@ -0,0 +1,29 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@search +description: > + `currentLastIndex` value is compared using SameValue. +info: | + RegExp.prototype [ @@search ] ( string ) + + [...] + 6. Let result be ? RegExpExec(rx, S). + 7. Let currentLastIndex be ? Get(rx, "lastIndex"). + 8. If SameValue(currentLastIndex, previousLastIndex) is false, then + a. Perform ? Set(rx, "lastIndex", previousLastIndex, true). + [...] +features: [Symbol.search] +---*/ + +var re = /(?:)/; +re.exec = function() { + re.lastIndex = -0; + return null; +}; + +assert.sameValue(re[Symbol.search](""), -1); +assert.sameValue(re.lastIndex, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore.js new file mode 100644 index 0000000000..393d02a14e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/set-lastindex-restore.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: The `lastIndex` value is restored following match execution +info: | + [...] + 8. If SameValue(currentLastIndex, previousLastIndex) is false, then + a. Perform ? Set(rx, "lastIndex", previousLastIndex, true). + [...] +features: [Symbol.search] +---*/ + +var latestValue = 86; +var callCount = 0; +var fakeRe = { + get lastIndex() { + return latestValue; + }, + set lastIndex(_) { + latestValue = _; + }, + exec: function() { + callCount++; + latestValue = null; + return null; + } +}; + +RegExp.prototype[Symbol.search].call(fakeRe); + +assert.sameValue(callCount, 1); +assert.sameValue(latestValue, 86); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/success-get-index-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/success-get-index-err.js new file mode 100644 index 0000000000..104c75de96 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/success-get-index-err.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: > + Behavior when error thrown while accessing `index` property of match result +info: | + [...] + 14. Return Get(result, "index"). +features: [Symbol.search] +---*/ + +var poisonedIndex = { + get index() { + throw new Test262Error(); + } +}; +var fakeRe = { + exec: function() { + return poisonedIndex; + } +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.search].call(fakeRe); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/success-return-val.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/success-return-val.js new file mode 100644 index 0000000000..06020ea0f5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/success-return-val.js @@ -0,0 +1,17 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.9 +description: Return value following successful match +info: | + [...] + 14. Return Get(result, "index"). +features: [Symbol.search] +---*/ + +assert.sameValue(/a/[Symbol.search]('abc'), 0); +assert.sameValue(/b/[Symbol.search]('abc'), 1); +assert.sameValue(/c/[Symbol.search]('abc'), 2); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/this-val-non-obj.js new file mode 100644 index 0000000000..185e2cca72 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/this-val-non-obj.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The `this` value must be an object +es6id: 21.2.5.9 +info: | + 1. Let rx be the this value. + 2. If Type(rx) is not Object, throw a TypeError exception. +features: [Symbol.search] +---*/ + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(undefined); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(null); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(true); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call('string'); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(Symbol.search); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.search].call(86); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/u-lastindex-advance.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/u-lastindex-advance.js new file mode 100644 index 0000000000..a0dbf1022d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/u-lastindex-advance.js @@ -0,0 +1,25 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Advancement of lastIndex +es6id: 21.2.5.9 +info: | + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 12. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 13. If flags contains "u", let fullUnicode be true, else let fullUnicode be + false. + [...] + 15. Repeat, while matchSucceeded is false + [...] + c. If r is failure, then + [...] + ii. Let lastIndex be AdvanceStringIndex(S, lastIndex, fullUnicode). +features: [Symbol.search] +---*/ + +assert.sameValue(/\udf06/u[Symbol.search]('\ud834\udf06'), -1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/y-fail-return.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/y-fail-return.js new file mode 100644 index 0000000000..4944a8ad49 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.search/y-fail-return.js @@ -0,0 +1,32 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Stops match execution after first match failure +es6id: 21.2.5.9 +info: | + 21.2.5.9 RegExp.prototype [ @@search ] ( string ) + + [...] + 9. Let result be RegExpExec(rx, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + [...] + 3. Return null. +features: [Symbol.search] +---*/ + +assert.sameValue(/a/y[Symbol.search]('ba'), -1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-flags-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-flags-err.js new file mode 100644 index 0000000000..b779f838eb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-flags-err.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Behavior when error thrown while coercing `flags` property +info: | + [...] + 7. Let flags be ToString(Get(rx, "flags")). + 8. ReturnIfAbrupt(flags). +features: [Symbol.split] +---*/ + +var uncoercibleFlags = { + flags: { + toString: function() { + throw new Test262Error(); + } + } +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(uncoercibleFlags); +}); + +uncoercibleFlags = { + flags: Symbol.split +}; + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(uncoercibleFlags); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-flags.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-flags.js new file mode 100644 index 0000000000..d0c4f610c0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-flags.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: String coercion of `flags` property +info: | + [...] + 7. Let flags be ToString(Get(rx, "flags")). + [...] + 13. Let splitter be Construct(C, «rx, newFlags»). + [...] +features: [Symbol.split, Symbol.species] +---*/ + +var obj = { + constructor: function() {}, + flags: { + toString: function() { + return 'toString valuey'; + } + } +}; +var flagsArg; + +obj.constructor = function() {}; +obj.constructor[Symbol.species] = function(_, flags) { + flagsArg = flags; + return /./y; +}; + +RegExp.prototype[Symbol.split].call(obj); + +assert.sameValue(flagsArg, 'toString valuey'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-limit-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-limit-err.js new file mode 100644 index 0000000000..96a916768e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-limit-err.js @@ -0,0 +1,29 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Behavior when error thrown while coercing `limit` argument +info: | + [...] + 17. If limit is undefined, let lim be 253–1; else let lim be + ToLength(limit). + 18. ReturnIfAbrupt(lim). +features: [Symbol.split] +---*/ + +var uncoercibleObj = { + valueOf: function() { + throw new Test262Error(); + } +}; + +assert.throws(TypeError, function() { + /./[Symbol.split]('', Symbol.split); +}); + +assert.throws(Test262Error, function() { + /./[Symbol.split]('', uncoercibleObj); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-limit.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-limit.js new file mode 100644 index 0000000000..d355b34599 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-limit.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Length coercion of `limit` argument +info: | + [...] + 17. If limit is undefined, let lim be 2^32-1; else let lim be ? ToUint32(limit). + [...] +features: [Symbol.split] +---*/ + +var result; + +// ToUint32(-23) = 4294967273 +result = /./[Symbol.split]('abc', -23); +assert(Array.isArray(result)); +assert.sameValue(result.length, 4); + +result = /./[Symbol.split]('abc', 1.9); +assert(Array.isArray(result)); +assert.sameValue(result.length, 1); +assert.sameValue(result[0], ''); + +result = /./[Symbol.split]('abc', NaN); +assert(Array.isArray(result)); +assert.sameValue(result.length, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-string-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-string-err.js new file mode 100644 index 0000000000..bb7c9696d1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-string-err.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Behavior when error thrown while coercing `string` argument +info: | + [...] + 3. Let S be ToString(string). + 4. ReturnIfAbrupt(S). +features: [Symbol.split] +---*/ + +var uncoercibleObj = { + toString: function() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + /./[Symbol.split](uncoercibleObj); +}); + +assert.throws(TypeError, function() { + /./[Symbol.split](Symbol.split); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-string.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-string.js new file mode 100644 index 0000000000..d1708d8e1a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/coerce-string.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: String coercion of `string` argument +info: | + [...] + 3. Let S be ToString(string). + [...] +features: [Symbol.split] +---*/ + +var obj = { + toString: function() { + return 'toString value'; + } +}; +var result; + +result = / /[Symbol.split](obj); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 2); +assert.sameValue(result[0], 'toString'); +assert.sameValue(result[1], 'value'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/get-flags-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/get-flags-err.js new file mode 100644 index 0000000000..62fc932fb5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/get-flags-err.js @@ -0,0 +1,24 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Behavior when error thrown while accessing `flags` property +info: | + [...] + 7. Let flags be ToString(Get(rx, "flags")). + 8. ReturnIfAbrupt(flags). +features: [Symbol.split] +---*/ + +var poisonedFlags = { + get flags() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(poisonedFlags); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/last-index-exceeds-str-size.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/last-index-exceeds-str-size.js new file mode 100644 index 0000000000..d229f5b8f9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/last-index-exceeds-str-size.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype-@@split +description: The `lastIndex` property is clamped to the string size. +info: | + RegExp.prototype [ @@split ] ( string, limit ) + + ... + 19. Repeat, while q < size + ... + d. Else z is not null, + i. Let e be ? ToLength(Get(splitter, "lastIndex")). + ii. Let e be min(e, size). + ... +features: [Symbol.split] +---*/ + +var regExp = /a/; +var string = "foo"; + +RegExp.prototype.exec = function() { + this.lastIndex = 100; + return {length: 0, index: 0}; +}; + +var result = regExp[Symbol.split](string); + +assert.sameValue(result.length, 2, "result.length"); +assert.sameValue(result[0], "", "result[0]"); +assert.sameValue(result[1], "", "result[1]"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/length.js new file mode 100644 index 0000000000..546f056ca0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/length.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.11 +description: RegExp.prototype[Symbol.split] `length` property +info: | + The length property of the @@split method is 2. + + ES6 Section 17: + + [...] + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [Symbol.split] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.split].length, 2); + +verifyNotEnumerable(RegExp.prototype[Symbol.split], 'length'); +verifyNotWritable(RegExp.prototype[Symbol.split], 'length'); +verifyConfigurable(RegExp.prototype[Symbol.split], 'length'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/limit-0-bail.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/limit-0-bail.js new file mode 100644 index 0000000000..0037f5d21b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/limit-0-bail.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: No matching attempt is made when `limit` argument is `0` +info: | + [...] + 21. If lim = 0, return A. +features: [Symbol.split, Symbol.species] +---*/ + +var result; +var obj = { + constructor: function() {} +}; +obj.constructor[Symbol.species] = function() { + return { + exec: function() { + throw new Test262Error('No match should be attempted when `limit` is `0`.'); + } + }; +}; + +result = RegExp.prototype[Symbol.split].call(obj, '', 0); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/name.js new file mode 100644 index 0000000000..aac4f253a1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/name.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.11 +description: RegExp.prototype[Symbol.split] `name` property +info: | + The value of the name property of this function is "[Symbol.split]". + + ES6 Section 17: + + [...] + + Unless otherwise specified, the name property of a built-in Function + object, if it exists, has the attributes { [[Writable]]: false, + [[Enumerable]]: false, [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [Symbol.split] +---*/ + +assert.sameValue(RegExp.prototype[Symbol.split].name, '[Symbol.split]'); + +verifyNotEnumerable(RegExp.prototype[Symbol.split], 'name'); +verifyNotWritable(RegExp.prototype[Symbol.split], 'name'); +verifyConfigurable(RegExp.prototype[Symbol.split], 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/not-a-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/not-a-constructor.js new file mode 100644 index 0000000000..4623db96ba --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/not-a-constructor.js @@ -0,0 +1,35 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + RegExp.prototype[Symbol.split] does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [Reflect.construct, Symbol, Symbol.split, arrow-function] +---*/ + +assert.sameValue( + isConstructor(RegExp.prototype[Symbol.split]), + false, + 'isConstructor(RegExp.prototype[Symbol.split]) must return false' +); + +assert.throws(TypeError, () => { + let re = new RegExp(''); new re[Symbol.split](); +}, '`let re = new RegExp(\'\'); new re[Symbol.split]()` throws TypeError'); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/prop-desc.js new file mode 100644 index 0000000000..f85d07714a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/prop-desc.js @@ -0,0 +1,21 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: RegExp.prototype[Symbol.split] property descriptor +info: | + ES6 Section 17 + + Every other data property described in clauses 18 through 26 and in Annex + B.2 has the attributes { [[Writable]]: true, [[Enumerable]]: false, + [[Configurable]]: true } unless otherwise specified. +includes: [propertyHelper.js] +features: [Symbol.split] +---*/ + +verifyNotEnumerable(RegExp.prototype, Symbol.split); +verifyWritable(RegExp.prototype, Symbol.split); +verifyConfigurable(RegExp.prototype, Symbol.split); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-get-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-get-err.js new file mode 100644 index 0000000000..f96a1389d2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-get-err.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Behavior when error thrown while accessing `constructor` property +info: | + [...] + 5. Let C be SpeciesConstructor(rx, %RegExp%). + 6. ReturnIfAbrupt(C). + + ES6 Section 7.3.20 SpeciesConstructor ( O, defaultConstructor ) + + 1. Assert: Type(O) is Object. + 2. Let C be Get(O, "constructor"). + 3. ReturnIfAbrupt(C). +features: [Symbol.split] +---*/ + +var poisonedCtor = { + get constructor() { + throw new Test262Error(); + } +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(poisonedCtor); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-non-obj.js new file mode 100644 index 0000000000..f4e1d26d03 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-non-obj.js @@ -0,0 +1,52 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: TypeError when `constructor` property is defined but not an object +info: | + [...] + 5. Let C be SpeciesConstructor(rx, %RegExp%). + 6. ReturnIfAbrupt(C). + + ES6 Section 7.3.20 SpeciesConstructor ( O, defaultConstructor ) + + 1. Assert: Type(O) is Object. + 2. Let C be Get(O, "constructor"). + 3. ReturnIfAbrupt(C). + 4. If C is undefined, return defaultConstructor. + 5. If Type(C) is not Object, throw a TypeError exception. +features: [Symbol.split] +---*/ + +var obj = { flags: '' }; + +// Avoid false positives from unrelated TypeErrors +RegExp.prototype[Symbol.split].call(obj); + +obj.constructor = false; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(obj); +}); + +obj.constructor = 'string'; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(obj); +}); + +obj.constructor = Symbol.split; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(obj); +}); + +obj.constructor = 86; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(obj); +}); + +obj.constructor = null; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(obj); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-undef.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-undef.js new file mode 100644 index 0000000000..c77f8aaa12 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-ctor-undef.js @@ -0,0 +1,33 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: RegExp used when `this` value does not define a constructor +info: | + [...] + 5. Let C be SpeciesConstructor(rx, %RegExp%). + [...] + + ES6 Section 7.3.20 SpeciesConstructor ( O, defaultConstructor ) + + 1. Assert: Type(O) is Object. + 2. Let C be Get(O, "constructor"). + 3. ReturnIfAbrupt(C). + 4. If C is undefined, return defaultConstructor. +features: [Symbol.split] +---*/ + +var re = /[db]/; +var result; +re.constructor = undefined; + +result = re[Symbol.split]('abcde'); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 3); +assert.sameValue(result[0], 'a'); +assert.sameValue(result[1], 'c'); +assert.sameValue(result[2], 'e'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-err.js new file mode 100644 index 0000000000..a694e44854 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-err.js @@ -0,0 +1,38 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Behavior when error thrown by custom species constructor +info: | + [...] + 5. Let C be SpeciesConstructor(rx, %RegExp%). + [...] + 13. Let splitter be Construct(C, «rx, newFlags»). + 14. ReturnIfAbrupt(splitter). + + ES6 Section 7.3.20 SpeciesConstructor ( O, defaultConstructor ) + + 1. Assert: Type(O) is Object. + 2. Let C be Get(O, "constructor"). + 3. ReturnIfAbrupt(C). + 4. If C is undefined, return defaultConstructor. + 5. If Type(C) is not Object, throw a TypeError exception. + 6. Let S be Get(C, @@species). + 7. ReturnIfAbrupt(S). + 8. If S is either undefined or null, return defaultConstructor. + 9. If IsConstructor(S) is true, return S. +features: [Symbol.split, Symbol.species] +---*/ + +var re = /x/; +re.constructor = function() {}; +re.constructor[Symbol.species] = function() { + throw new Test262Error(); +}; + +assert.throws(Test262Error, function() { + re[Symbol.split](); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-get-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-get-err.js new file mode 100644 index 0000000000..8a231885b2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-get-err.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + Behavior when error thrown while accessing `Symbol.species` property of + constructor +info: | + [...] + 5. Let C be SpeciesConstructor(rx, %RegExp%). + 6. ReturnIfAbrupt(C). + + ES6 Section 7.3.20 SpeciesConstructor ( O, defaultConstructor ) + + 1. Assert: Type(O) is Object. + 2. Let C be Get(O, "constructor"). + 3. ReturnIfAbrupt(C). + 4. If C is undefined, return defaultConstructor. + 5. If Type(C) is not Object, throw a TypeError exception. + 6. Let S be Get(C, @@species). + 7. ReturnIfAbrupt(S). +features: [Symbol.split, Symbol.species] +---*/ + +var poisonedSpecies = function() {}; +Object.defineProperty(poisonedSpecies, Symbol.species, { + get: function() { + throw new Test262Error(); + } +}); + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call({ constructor: poisonedSpecies }); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-non-ctor.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-non-ctor.js new file mode 100644 index 0000000000..7203f84fd2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-non-ctor.js @@ -0,0 +1,59 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + TypeError thrown when `Symbol.species` property value is not a constructor +info: | + [...] + 5. Let C be SpeciesConstructor(rx, %RegExp%). + 6. ReturnIfAbrupt(C). + + ES6 Section 7.3.20 SpeciesConstructor ( O, defaultConstructor ) + + 1. Assert: Type(O) is Object. + 2. Let C be Get(O, "constructor"). + 3. ReturnIfAbrupt(C). + 4. If C is undefined, return defaultConstructor. + 5. If Type(C) is not Object, throw a TypeError exception. + 6. Let S be Get(C, @@species). + 7. ReturnIfAbrupt(S). + 8. If S is either undefined or null, return defaultConstructor. + 9. If IsConstructor(S) is true, return S. + 10. Throw a TypeError exception. +features: [Symbol.split, Symbol.species] +---*/ + +var re = /./; +re.constructor = function() {}; + +// Avoid false positives from unrelated TypeErrors +re[Symbol.split](); + +re.constructor[Symbol.species] = {}; +assert.throws(TypeError, function() { + re[Symbol.split](); +}); + +re.constructor[Symbol.species] = 0; +assert.throws(TypeError, function() { + re[Symbol.split](); +}); + +re.constructor[Symbol.species] = ''; +assert.throws(TypeError, function() { + re[Symbol.split](); +}); + +re.constructor[Symbol.species] = Symbol.split; +assert.throws(TypeError, function() { + re[Symbol.split](); +}); + +re.constructor[Symbol.species] = Date.now; +assert.throws(TypeError, function() { + re[Symbol.split](); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-undef.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-undef.js new file mode 100644 index 0000000000..21614b66f6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-species-undef.js @@ -0,0 +1,50 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + RegExp used when the `Symbol.species` property of the `this` value's + constructor is `undefined` or `null` +info: | + [...] + 5. Let C be SpeciesConstructor(rx, %RegExp%). + [...] + + ES6 Section 7.3.20 SpeciesConstructor ( O, defaultConstructor ) + + 1. Assert: Type(O) is Object. + 2. Let C be Get(O, "constructor"). + 3. ReturnIfAbrupt(C). + 4. If C is undefined, return defaultConstructor. + 5. If Type(C) is not Object, throw a TypeError exception. + 6. Let S be Get(C, @@species). + 7. ReturnIfAbrupt(S). + 8. If S is either undefined or null, return defaultConstructor. +features: [Symbol.split, Symbol.species] +---*/ + +var noSpecies = function() {}; +var re = /[db]/; +var result; +re.constructor = noSpecies; + +noSpecies[Symbol.species] = undefined; +result = re[Symbol.split]('abcde'); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 3); +assert.sameValue(result[0], 'a'); +assert.sameValue(result[1], 'c'); +assert.sameValue(result[2], 'e'); + +noSpecies[Symbol.species] = null; +result = re[Symbol.split]('abcde'); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 3); +assert.sameValue(result[0], 'a'); +assert.sameValue(result[1], 'c'); +assert.sameValue(result[2], 'e'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-y.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-y.js new file mode 100644 index 0000000000..59b44ea327 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor-y.js @@ -0,0 +1,47 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: The `y` flag is always used in constructing the "splitter" object +info: | + [...] + 5. Let C be SpeciesConstructor(rx, %RegExp%). + [...] + 11. If flags contains "y", let newFlags be flags. + 12. Else, let newFlags be the string that is the concatenation of flags and + "y". + 13. Let splitter be Construct(C, «rx, newFlags»). + [...] +features: [Symbol.split, Symbol.species] +---*/ + +var flagsArg; +var re = {}; +re.constructor = function() {}; +re.constructor[Symbol.species] = function(_, flags) { + flagsArg = flags; + return /./y; +}; + +re.flags = ''; +RegExp.prototype[Symbol.split].call(re, ''); +assert.sameValue(flagsArg, 'y'); + +re.flags = 'abcd'; +RegExp.prototype[Symbol.split].call(re, ''); +assert.sameValue(flagsArg, 'abcdy'); + +re.flags = 'Y'; +RegExp.prototype[Symbol.split].call(re, ''); +assert.sameValue(flagsArg, 'Yy'); + +re.flags = 'y'; +RegExp.prototype[Symbol.split].call(re, ''); +assert.sameValue(flagsArg, 'y'); + +re.flags = 'abycd'; +RegExp.prototype[Symbol.split].call(re, ''); +assert.sameValue(flagsArg, 'abycd'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor.js new file mode 100644 index 0000000000..b8f058dc0e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/species-ctor.js @@ -0,0 +1,50 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Invocation of custom species constructor +info: | + [...] + 5. Let C be SpeciesConstructor(rx, %RegExp%). + [...] + 13. Let splitter be Construct(C, «rx, newFlags»). + [...] + + ES6 Section 7.3.20 SpeciesConstructor ( O, defaultConstructor ) + + 1. Assert: Type(O) is Object. + 2. Let C be Get(O, "constructor"). + 3. ReturnIfAbrupt(C). + 4. If C is undefined, return defaultConstructor. + 5. If Type(C) is not Object, throw a TypeError exception. + 6. Let S be Get(C, @@species). + 7. ReturnIfAbrupt(S). + 8. If S is either undefined or null, return defaultConstructor. + 9. If IsConstructor(S) is true, return S. +features: [Symbol.split, Symbol.species] +---*/ + +var thisVal, args, result; +var re = /x/iy; +re.constructor = function() {}; +re.constructor[Symbol.species] = function() { + thisVal = this; + args = arguments; + return /[db]/y; +}; + +result = RegExp.prototype[Symbol.split].call(re, 'abcde'); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 3); +assert.sameValue(result[0], 'a'); +assert.sameValue(result[1], 'c'); +assert.sameValue(result[2], 'e'); + +assert(thisVal instanceof re.constructor[Symbol.species]); +assert.sameValue(args.length, 2); +assert.sameValue(args[0], re); +assert.sameValue(args[1], 'iy'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/splitter-proto-from-ctor-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/splitter-proto-from-ctor-realm.js new file mode 100644 index 0000000000..577b554855 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/splitter-proto-from-ctor-realm.js @@ -0,0 +1,33 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-regexp.prototype-@@split +description: Default [[Prototype]] value derived from realm of the constructor +info: | + 10. Let splitter be ? Construct(C, « rx, newFlags »). + + 9.1.14 GetPrototypeFromConstructor + + [...] + 3. Let proto be ? Get(constructor, "prototype"). + 4. If Type(proto) is not Object, then + a. Let realm be ? GetFunctionRealm(constructor). + b. Let proto be realm's intrinsic object named intrinsicDefaultProto. + [...] +features: [cross-realm, Symbol.species, Symbol.split] +---*/ + +var other = $262.createRealm().global; +other.shared = null; +var C = new other.Function('shared = this; return /./;'); +C.prototype = null; + +var r = /./; +r.constructor = function() {}; +r.constructor[Symbol.species] = C; + +r[Symbol.split](); + +assert.sameValue(Object.getPrototypeOf(other.shared), other.Object.prototype); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-adv-thru-empty-match.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-adv-thru-empty-match.js new file mode 100644 index 0000000000..3918899112 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-adv-thru-empty-match.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + lastIndex is explicitly advanced following an empty match +es6id: 21.2.5.11 +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + b. ReturnIfAbrupt(setStatus). + c. Let z be RegExpExec(splitter, S). + d. ReturnIfAbrupt(z). + e. If z is null, let q be AdvanceStringIndex(S, q, unicodeMatching). + f. Else z is not null, + i. Let e be ToLength(Get(splitter, "lastIndex")). + ii. ReturnIfAbrupt(e). + iii. If e = p, let q be AdvanceStringIndex(S, q, unicodeMatching). +features: [Symbol.split] +---*/ + +var result = /(?:)/[Symbol.split]('abc'); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 3); +assert.sameValue(result[0], 'a'); +assert.sameValue(result[1], 'b'); +assert.sameValue(result[2], 'c'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-coerce-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-coerce-lastindex-err.js new file mode 100644 index 0000000000..7cf7bde55a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-coerce-lastindex-err.js @@ -0,0 +1,51 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + Behavior when error thrown while coercing `lastIndex` property of splitter + after a match +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + i. Let e be ToLength(Get(splitter, "lastIndex")). + ii. ReturnIfAbrupt(e). +features: [Symbol.split, Symbol.species] +---*/ + +var badLastIndex; +var obj = { + constructor: function() {} +}; +var fakeRe = { + set lastIndex(_) {}, + get lastIndex() { + return badLastIndex; + }, + exec: function() { + return []; + } +}; +obj.constructor[Symbol.species] = function() { + return fakeRe; +}; + +badLastIndex = Symbol.split; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(obj, 'abcd'); +}); + +badLastIndex = { + valueOf: function() { throw new Test262Error(); } +}; +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(obj, 'abcd'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-coerce-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-coerce-lastindex.js new file mode 100644 index 0000000000..a8a910fa95 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-coerce-lastindex.js @@ -0,0 +1,48 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Length coercion of `lastIndex` property of splitter after a match +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + i. Let e be ToLength(Get(splitter, "lastIndex")). + [...] +features: [Symbol.split, Symbol.species] +---*/ + +var result; +var obj = { + constructor: function() {} +}; +var fakeRe = { + set lastIndex(_) {}, + get lastIndex() { + return { + valueOf: function() { + return 2.9; + } + }; + }, + exec: function() { + return []; + } +}; +obj.constructor[Symbol.species] = function() { + return fakeRe; +}; + +result = RegExp.prototype[Symbol.split].call(obj, 'abcd'); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 2); +assert.sameValue(result[0], ''); +assert.sameValue(result[1], 'cd'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-match-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-match-err.js new file mode 100644 index 0000000000..d1452fbf37 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-match-err.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Behavior when error thrown while executing match for empty string +info: | + [...] + 22. If size = 0, then + a. Let z be RegExpExec(splitter, S). + b. ReturnIfAbrupt(z). +features: [Symbol.split, Symbol.species] +---*/ + +var obj = { + constructor: function() {} +}; +obj.constructor[Symbol.species] = function() { + return { + exec: function() { + throw new Test262Error(); + } + }; +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(obj, ''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-match.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-match.js new file mode 100644 index 0000000000..7411ded2cb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-match.js @@ -0,0 +1,21 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Successful match of empty string +info: | + [...] + 22. If size = 0, then + a. Let z be RegExpExec(splitter, S). + b. ReturnIfAbrupt(z). + c. If z is not null, return A. +features: [Symbol.split] +---*/ + +var result = /(?:)/[Symbol.split](''); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-no-match.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-no-match.js new file mode 100644 index 0000000000..b4cd097e29 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-empty-no-match.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Unsuccessful match of empty string +info: | + [...] + 22. If size = 0, then + a. Let z be RegExpExec(splitter, S). + b. ReturnIfAbrupt(z). + c. If z is not null, return A. + d. Assert: The following call will never result in an abrupt + completion. + e. Perform CreateDataProperty(A, "0", S). + f. Return A. +features: [Symbol.split] +---*/ + +var result = /./[Symbol.split](''); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 1); +assert.sameValue(result[0], ''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-get-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-get-lastindex-err.js new file mode 100644 index 0000000000..64f8cc21d6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-get-lastindex-err.js @@ -0,0 +1,46 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + Behavior when error thrown while accessing `lastIndex` property of splitter + after a match +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + i. Let e be ToLength(Get(splitter, "lastIndex")). + ii. ReturnIfAbrupt(e). +features: [Symbol.split, Symbol.species] +---*/ + +var obj = { + constructor: function() {} +}; +var callCount = 0; +var fakeRe = { + set lastIndex(_) {}, + get lastIndex() { + throw new Test262Error(); + }, + exec: function() { + callCount += 1; + return []; + } +}; +obj.constructor[Symbol.species] = function() { + return fakeRe; +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(obj, 'abcd'); +}); + +assert.sameValue(callCount, 1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-limit-capturing.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-limit-capturing.js new file mode 100644 index 0000000000..c08608a185 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-limit-capturing.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: The `limit` argument is applied to capturing groups +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + [...] + iv. Else e ≠ p, + [...] + 11. Repeat, while i ≤ numberOfCaptures. + [...] + f. If lengthA = lim, return A. +features: [Symbol.split] +---*/ + +var result = /c(d)(e)/[Symbol.split]('abcdefg', 2); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 2); +assert.sameValue(result[0], 'ab'); +assert.sameValue(result[1], 'd'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-limit.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-limit.js new file mode 100644 index 0000000000..0d13dcb1bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-limit.js @@ -0,0 +1,32 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Results limited to number specified as second argument +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + [...] + iv. Else e ≠ p, + [...] + 3. Perform CreateDataProperty(A, ToString(lengthA), T). + 4. Let lengthA be lengthA +1. + 5. If lengthA = lim, return A. +features: [Symbol.split] +---*/ + +var result = /x/[Symbol.split]('axbxcxdxe', 3); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 3); +assert.sameValue(result[0], 'a'); +assert.sameValue(result[1], 'b'); +assert.sameValue(result[2], 'c'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-match-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-match-err.js new file mode 100644 index 0000000000..0f158b23ec --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-match-err.js @@ -0,0 +1,32 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + Behavior when error thrown while executing match for non-empty string +info: | + [...] + 24. Repeat, while q < size + [...] + c. Let z be RegExpExec(splitter, S). + d. ReturnIfAbrupt(z). +features: [Symbol.split, Symbol.species] +---*/ + +var obj = { + constructor: function() {} +}; +obj.constructor[Symbol.species] = function() { + return { + exec: function() { + throw new Test262Error(); + } + }; +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(obj, 'a'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-coerce-length-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-coerce-length-err.js new file mode 100644 index 0000000000..884fd5e22c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-coerce-length-err.js @@ -0,0 +1,52 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + Behavior when error thrown while coercing `length` property of match result +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + iv. Else e ≠ p, + [...] + 7. Let numberOfCaptures be ToLength(Get(z, "length")). + 8. ReturnIfAbrupt(numberOfCaptures). +features: [Symbol.split, Symbol.species] +---*/ + +var obj = { + constructor: function() {} +}; +var uncoercibleLength; +var fakeRe = { + exec: function() { + return { + length: uncoercibleLength + }; + } +}; +obj.constructor[Symbol.species] = function() { + return fakeRe; +}; + +uncoercibleLength = Symbol.split; +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(obj, 'abcd'); +}); + +uncoercibleLength = { + valueOf: function() { + throw new Test262Error(); + } +}; +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(obj, 'abcd'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-coerce-length.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-coerce-length.js new file mode 100644 index 0000000000..9ffa5fe519 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-coerce-length.js @@ -0,0 +1,54 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + Length coercion of `length` property of match result +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + iv. Else e ≠ p, + [...] + 7. Let numberOfCaptures be ToLength(Get(z, "length")). + [...] +features: [Symbol.split, Symbol.species] +---*/ + +var result; +var obj = { + constructor: function() {} +}; +var fakeRe = { + exec: function() { + fakeRe.lastIndex = 1; + return { + length: { + valueOf: function() { + return 2.9; + } + }, + 0: 'foo', + 1: 'bar', + 2: 'baz' + }; + } +}; +obj.constructor[Symbol.species] = function() { + return fakeRe; +}; + +result = RegExp.prototype[Symbol.split].call(obj, 'a'); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 3); +assert.sameValue(result[0], ''); +assert.sameValue(result[1], 'bar'); +assert.sameValue(result[2], ''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-get-capture-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-get-capture-err.js new file mode 100644 index 0000000000..efea4dacc2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-get-capture-err.js @@ -0,0 +1,51 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + Behavior when error thrown while accessing capturing group match +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + iv. Else e ≠ p, + [...] + 11. Repeat, while i ≤ numberOfCaptures. + [...] + a. Let nextCapture be Get(z, ToString(i)). + b. ReturnIfAbrupt(nextCapture). +features: [Symbol.split, Symbol.species] +---*/ + +var result; +var obj = { + constructor: function() {} +}; +var poisonedCapture = { + length: 3, + 0: 'a', + 1: 'b', + get 2() { + throw new Test262Error(); + } +}; +var fakeRe = { + exec: function() { + fakeRe.lastIndex = 1; + return poisonedCapture; + } +}; +obj.constructor[Symbol.species] = function() { + return fakeRe; +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(obj, 'a'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-get-length-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-get-length-err.js new file mode 100644 index 0000000000..ec7e011813 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-result-get-length-err.js @@ -0,0 +1,45 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + Behavior when error thrown while accessing `length` property of match + result +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + iv. Else e ≠ p, + [...] + 7. Let numberOfCaptures be ToLength(Get(z, "length")). + 8. ReturnIfAbrupt(numberOfCaptures). +features: [Symbol.split, Symbol.species] +---*/ + +var obj = { + constructor: function() {} +}; +var poisonedLength = { + get length() { + throw new Test262Error(); + } +}; +var fakeRe = { + exec: function() { + return poisonedLength; + } +}; +obj.constructor[Symbol.species] = function() { + return fakeRe; +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(obj, 'abcd'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-err.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-err.js new file mode 100644 index 0000000000..e151328249 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-err.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: > + Behavior when error thrown while setting `lastIndex` property of splitter +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + b. ReturnIfAbrupt(setStatus). +features: [Symbol.split, Symbol.species] +---*/ + +var callCount = 0; +var obj = { + constructor: function() {} +}; +obj.constructor[Symbol.species] = function() { + return { + set lastIndex(_) { + throw new Test262Error(); + }, + exec: function() { + callCount += 1; + } + }; +}; + +assert.throws(Test262Error, function() { + RegExp.prototype[Symbol.split].call(obj, 'a'); +}); + +assert.sameValue(callCount, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-match.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-match.js new file mode 100644 index 0000000000..93a8cc0113 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-match.js @@ -0,0 +1,51 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Setting `lastIndex` property of splitter after a match +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + c. Let z be RegExpExec(splitter, S). + [...] + f. Else z is not null, + i. Let e be ToLength(Get(splitter, "lastIndex")). + [...] + iv. Else e ≠ p, + [...] + 6. Let p be e. + [...] + 12. Let q be p. +features: [Symbol.split, Symbol.species] +---*/ + +var obj = { + constructor: function() {} +}; +var lastIndex = 0; +var indices = ''; +var fakeRe = { + set lastIndex(val) { + lastIndex = val; + indices += val + ','; + }, + get lastIndex() { + return lastIndex; + }, + exec: function() { + lastIndex += 1; + return ['a']; + } +}; +obj.constructor[Symbol.species] = function() { + return fakeRe; +}; + +RegExp.prototype[Symbol.split].call(obj, 'abcd'); + +assert.sameValue(indices, '0,1,2,3,'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-no-match.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-no-match.js new file mode 100644 index 0000000000..a40a87132f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-set-lastindex-no-match.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Setting `lastIndex` property of splitter after a failed match +info: | + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + [...] + e. If z is null, let q be AdvanceStringIndex(S, q, unicodeMatching). + [...] +features: [Symbol.split, Symbol.species] +---*/ + +var obj = { + constructor: function() {} +}; +var indices = ''; +var fakeRe = { + set lastIndex(val) { + indices += val + ','; + }, + exec: function() { + return null; + } +}; +obj.constructor[Symbol.species] = function() { + return fakeRe; +}; + +RegExp.prototype[Symbol.split].call(obj, 'abcd'); + +assert.sameValue(indices, '0,1,2,3,'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-trailing-chars.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-trailing-chars.js new file mode 100644 index 0000000000..6d1f6d3830 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/str-trailing-chars.js @@ -0,0 +1,24 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.11 +description: Characters after the final match are appended to the result +info: | + [...] + 25. Let T be a String value equal to the substring of S consisting of the + elements at indices p (inclusive) through size (exclusive). + 26. Assert: The following call will never result in an abrupt completion. + 27. Perform CreateDataProperty(A, ToString(lengthA), T ). + 28. Return A. +features: [Symbol.split] +---*/ + +var result = /d/[Symbol.split]('abcdefg'); + +assert(Array.isArray(result)); +assert.sameValue(result.length, 2); +assert.sameValue(result[0], 'abc'); +assert.sameValue(result[1], 'efg'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/this-val-non-obj.js new file mode 100644 index 0000000000..8afd822474 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/this-val-non-obj.js @@ -0,0 +1,41 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: The `this` value must be an object +es6id: 21.2.5.11 +info: | + 1. Let rx be the this value. + 2. If Type(rx) is not Object, throw a TypeError exception. +features: [Symbol.split] +---*/ + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(undefined); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(null); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(true); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call('string'); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(Symbol.split); +}); + +assert.throws(TypeError, function() { + RegExp.prototype[Symbol.split].call(86); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/u-lastindex-adv-thru-failure.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/u-lastindex-adv-thru-failure.js new file mode 100644 index 0000000000..e73f1b9c0d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/u-lastindex-adv-thru-failure.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + lastIndex is advanced according to width of astral symbols following match failure +es6id: 21.2.5.11 +info: | + 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit ) + + [...] + 7. Let flags be ToString(Get(rx, "flags")). + 8. ReturnIfAbrupt(flags). + 9. If flags contains "u", let unicodeMatching be true. + 10. Else, let unicodeMatching be false. + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + b. ReturnIfAbrupt(setStatus). + c. Let z be RegExpExec(splitter, S). + d. ReturnIfAbrupt(z). + e. If z is null, let q be AdvanceStringIndex(S, q, unicodeMatching). +features: [Symbol.split] +---*/ + +var result = /\udf06/u[Symbol.split]('\ud834\udf06'); + +assert.sameValue(result.length, 1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/u-lastindex-adv-thru-match.js b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/u-lastindex-adv-thru-match.js new file mode 100644 index 0000000000..5bb444eaaf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/Symbol.split/u-lastindex-adv-thru-match.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + lastIndex is advanced according to width of astral symbols following match success +es6id: 21.2.5.11 +info: | + 21.2.5.11 RegExp.prototype [ @@split ] ( string, limit ) + + [...] + 7. Let flags be ToString(Get(rx, "flags")). + 8. ReturnIfAbrupt(flags). + 9. If flags contains "u", let unicodeMatching be true. + 10. Else, let unicodeMatching be false. + [...] + 24. Repeat, while q < size + a. Let setStatus be Set(splitter, "lastIndex", q, true). + b. ReturnIfAbrupt(setStatus). + c. Let z be RegExpExec(splitter, S). + d. ReturnIfAbrupt(z). + e. If z is null, let q be AdvanceStringIndex(S, q, unicodeMatching). + f. Else z is not null, + i. Let e be ToLength(Get(splitter, "lastIndex")). + ii. ReturnIfAbrupt(e). + iii. If e = p, let q be AdvanceStringIndex(S, q, unicodeMatching). +features: [Symbol.split] +---*/ + +var result = /./u[Symbol.split]('\ud834\udf06'); + +assert.sameValue(result.length, 2); +assert.sameValue(result[0], ''); +assert.sameValue(result[1], ''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/cross-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/cross-realm.js new file mode 100644 index 0000000000..baa13fadd5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/cross-realm.js @@ -0,0 +1,31 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.dotall +description: Invoked on a cross-realm object +info: | + get RegExp.prototype.dotAll + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +features: [regexp-dotall, cross-realm] +---*/ + +var dotAll = Object.getOwnPropertyDescriptor(RegExp.prototype, 'dotAll').get; +var other = $262.createRealm().global; +var otherRegExpProto = other.RegExp.prototype; +var otherRegExpGetter = Object.getOwnPropertyDescriptor(otherRegExpProto, 'dotAll').get; + +assert.throws(TypeError, function() { + dotAll.call(otherRegExpProto); +}, 'cross-realm RegExp.prototype'); + +assert.throws(other.TypeError, function() { + otherRegExpGetter.call(RegExp.prototype); +}, 'cross-realm RegExp.prototype getter method against primary realm RegExp.prototype'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/length.js new file mode 100644 index 0000000000..1a6bb3afe2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/length.js @@ -0,0 +1,36 @@ +// Copyright (C) 2017 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.dotall +description: > + get RegExp.prototype.dotAll.length is 0. +info: | + get RegExp.prototype.dotAll + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [regexp-dotall] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "dotAll"); + +assert.sameValue(desc.get.length, 0); + +verifyProperty(desc.get, "length", { + enumerable: false, + writable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/name.js new file mode 100644 index 0000000000..15d9117e62 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/name.js @@ -0,0 +1,29 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.dotall +description: > + RegExp.prototype.dotAll name +info: | + 17 ECMAScript Standard Built-in Objects + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. +includes: [propertyHelper.js] +features: [regexp-dotall] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "dotAll"); + +assert.sameValue( + desc.get.name, + "get dotAll" +); + +verifyProperty(desc.get, "name", { + enumerable: false, + writable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/prop-desc.js new file mode 100644 index 0000000000..dd00e948bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/prop-desc.js @@ -0,0 +1,31 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.dotall +description: > + `pending` property descriptor +info: | + RegExp.prototype.dotAll is an accessor property whose set accessor + function is undefined. + + 17 ECMAScript Standard Built-in Objects + + Every accessor property described in clauses 18 through 26 and in Annex B.2 has the attributes + { [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified. If only a get + accessor function is described, the set accessor function is the default value, undefined. If + only a set accessor is described the get accessor is the default value, undefined. +includes: [propertyHelper.js] +features: [regexp-dotall] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "dotAll"); + +assert.sameValue(desc.set, undefined); +assert.sameValue(typeof desc.get, "function"); + +verifyProperty(RegExp.prototype, "dotAll", { + enumerable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-invalid-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-invalid-obj.js new file mode 100644 index 0000000000..76196d39f0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-invalid-obj.js @@ -0,0 +1,36 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.dotall +description: Invoked on an object without an [[OriginalFlags]] internal slot +info: | + get RegExp.prototype.dotAll + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +features: [regexp-dotall] +---*/ + +var dotAll = Object.getOwnPropertyDescriptor(RegExp.prototype, 'dotAll').get; + +assert.throws(TypeError, function() { + dotAll.call({}); +}, 'ordinary object'); + +assert.throws(TypeError, function() { + dotAll.call([]); +}, 'array exotic object'); + +assert.throws(TypeError, function() { + dotAll.call(arguments); +}, 'arguments object'); + +assert.throws(TypeError, function() { + dotAll.call(() => {}); +}, 'function object'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-non-obj.js new file mode 100644 index 0000000000..1e6e0b16de --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-non-obj.js @@ -0,0 +1,46 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.dotall +description: > + `dotAll` accessor invoked on a non-object value +info: | + get RegExp.prototype.dotAll + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol, regexp-dotall] +---*/ + +var dotAll = Object.getOwnPropertyDescriptor(RegExp.prototype, "dotAll").get; + +assert.throws(TypeError, function() { + dotAll.call(undefined); +}, "undefined"); + +assert.throws(TypeError, function() { + dotAll.call(null); +}, "null"); + +assert.throws(TypeError, function() { + dotAll.call(true); +}, "true"); + +assert.throws(TypeError, function() { + dotAll.call("string"); +}, "string"); + +assert.throws(TypeError, function() { + dotAll.call(Symbol("s")); +}, "symbol"); + +assert.throws(TypeError, function() { + dotAll.call(4); +}, "number"); + +assert.throws(TypeError, function() { + dotAll.call(4n); +}, "bigint"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-regexp-prototype.js new file mode 100644 index 0000000000..fc4f7178c3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-regexp-prototype.js @@ -0,0 +1,21 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.dotall +description: > + Return value of `undefined` when the "this" value is the RegExp prototype + object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. +features: [regexp-dotall] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "dotAll").get; + +assert.sameValue(get.call(RegExp.prototype), undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-regexp.js b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-regexp.js new file mode 100644 index 0000000000..428d2c78dc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/dotAll/this-val-regexp.js @@ -0,0 +1,41 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.dotall +description: > + `dotAll` accessor function invoked on a RegExp instance +info: | + 21.2.5.12 get RegExp.prototype.dotAll + + 4. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 5. If flags contains the code unit "s", return true. + 6. Return false. +features: [regexp-dotall] +---*/ + +assert.sameValue(/./.dotAll, false, "/./.dotAll"); +assert.sameValue(/./i.dotAll, false, "/./i.dotAll"); +assert.sameValue(/./g.dotAll, false, "/./g.dotAll"); +assert.sameValue(/./y.dotAll, false, "/./y.dotAll"); +assert.sameValue(/./m.dotAll, false, "/./m.dotAll"); + +assert.sameValue(/./s.dotAll, true, "/./s.dotAll"); +assert.sameValue(/./is.dotAll, true, "/./is.dotAll"); +assert.sameValue(/./sg.dotAll, true, "/./sg.dotAll"); +assert.sameValue(/./sy.dotAll, true, "/./sy.dotAll"); +assert.sameValue(/./ms.dotAll, true, "/./ms.dotAll"); + +assert.sameValue(new RegExp(".", "").dotAll, false, "new RegExp('.', '').dotAll"); +assert.sameValue(new RegExp(".", "i").dotAll, false, "new RegExp('.', 'i').dotAll"); +assert.sameValue(new RegExp(".", "g").dotAll, false, "new RegExp('.', 'g').dotAll"); +assert.sameValue(new RegExp(".", "y").dotAll, false, "new RegExp('.', 'y').dotAll"); +assert.sameValue(new RegExp(".", "m").dotAll, false, "new RegExp('.', 'm').dotAll"); + +assert.sameValue(new RegExp(".", "s").dotAll, true, "new RegExp('.', 's').dotAll"); +assert.sameValue(new RegExp(".", "is").dotAll, true, "new RegExp('.', 'is').dotAll"); +assert.sameValue(new RegExp(".", "sg").dotAll, true, "new RegExp('.', 'sg').dotAll"); +assert.sameValue(new RegExp(".", "sy").dotAll, true, "new RegExp('.', 'sy').dotAll"); +assert.sameValue(new RegExp(".", "ms").dotAll, true, "new RegExp('.', 'ms').dotAll"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/15.10.6.2-9-e-1.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/15.10.6.2-9-e-1.js new file mode 100644 index 0000000000..ec873a700c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/15.10.6.2-9-e-1.js @@ -0,0 +1,18 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.6.2-9-e-1 +description: > + RegExp.prototype.exec - the removed step 9.e won't affected + current algorithm +---*/ + + var str = "Hello World!"; + var regObj = new RegExp("World"); + var result = false; + result = regObj.exec(str).toString() === "World"; + +assert(result, 'result !== true'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A10.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A10.js new file mode 100644 index 0000000000..30f70bedac --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A10.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype.exec.length property has the attribute ReadOnly +es5id: 15.10.6.2_A10 +description: Checking if varying the RegExp.prototype.exec.length property fails +includes: [propertyHelper.js] +---*/ +assert.sameValue( + RegExp.prototype.exec.hasOwnProperty('length'), + true, + 'RegExp.prototype.exec.hasOwnProperty(\'length\') must return true' +); + +var __obj = RegExp.prototype.exec.length; + +verifyNotWritable(RegExp.prototype.exec, "length", null, function(){return "shifted";}); + +assert.sameValue( + RegExp.prototype.exec.length, + __obj, + 'The value of RegExp.prototype.exec.length is expected to equal the value of __obj' +); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A11.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A11.js new file mode 100644 index 0000000000..2cd62c397f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A11.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The length property of the exec method is 1 +es5id: 15.10.6.2_A11 +description: Checking RegExp.prototype.exec.length +---*/ +assert.sameValue( + RegExp.prototype.exec.hasOwnProperty("length"), + true, + 'RegExp.prototype.exec.hasOwnProperty("length") must return true' +); + +assert.sameValue(RegExp.prototype.exec.length, 1, 'The value of RegExp.prototype.exec.length is expected to be 1'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A12.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A12.js new file mode 100644 index 0000000000..86c5b57945 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A12.js @@ -0,0 +1,15 @@ +// Copyright 2011 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: regExp exec() acts like regExp.exec('undefined') (step 2) +es5id: 15.10.6.2_A12 +description: Checking RegExp.prototype.exec +---*/ + +(/foo/).test('xfoox'); +var match = new RegExp('(.|\r|\n)*','').exec()[0]; +assert.notSameValue(match, 'xfoox', 'The value of match is not "xfoox"'); +assert.sameValue(match, 'undefined', 'The value of match is expected to be "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T1.js new file mode 100644 index 0000000000..afbac70c61 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T1.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T1 +description: String is "123" and RegExp is /1|12/ +---*/ + +var __executed = /1|12/.exec("123"); + +var __expected = ["1"]; +__expected.index=0; +__expected.input="123"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T10.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T10.js new file mode 100644 index 0000000000..8da7239544 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T10.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T10 +description: String is 1.01 and RegExp is /1|12/ +---*/ + +var __executed = /1|12/.exec(1.01); + +var __expected = ["1"]; +__expected.index=0; +__expected.input="1.01"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T11.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T11.js new file mode 100644 index 0000000000..826e9f1f0b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T11.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T11 +description: String is new Number(1.012) and RegExp is /2|12/ +---*/ + +var __executed = /2|12/.exec(new Number(1.012)); + +var __expected = ["12"]; +__expected.index=3; +__expected.input="1.012"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T12.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T12.js new file mode 100644 index 0000000000..25924e5aa6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T12.js @@ -0,0 +1,52 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T12 +description: > + String is {toString:function(){return Math.PI;}} and RegExp is + /\.14/ +---*/ + +var __executed = /\.14/.exec({toString:function(){return Math.PI}}); + +var __expected = [".14"]; +__expected.index=1; +__expected.input=String(Math.PI); + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T13.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T13.js new file mode 100644 index 0000000000..c727f0db2b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T13.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T13 +description: String is true and RegExp is /t[a-b|q-s]/ +---*/ + +var __executed = /t[a-b|q-s]/.exec(true); + +var __expected = ["tr"]; +__expected.index=0; +__expected.input="true"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T14.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T14.js new file mode 100644 index 0000000000..4b447fc451 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T14.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T14 +description: String is new Boolean and RegExp is /AL|se/ +---*/ + +var __executed = /AL|se/.exec(new Boolean); + +var __expected = ["se"]; +__expected.index=3; +__expected.input="false"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T15.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T15.js new file mode 100644 index 0000000000..37eb4c6689 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T15.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T15 +description: "String is {toString:function(){return false;}} and RegExp is /LS/i" +---*/ + +var __executed = /LS/i.exec({toString:function(){return false}}); + +var __expected = ["ls"]; +__expected.index=2; +__expected.input="false"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T16.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T16.js new file mode 100644 index 0000000000..45318b1bf6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T16.js @@ -0,0 +1,15 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T16 +description: RegExp is /undefined/ and call exec() without arguments +---*/ + +var __re = /undefined/.exec()[0]; +assert.sameValue(__re, "undefined", 'The value of __re is expected to be "undefined"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T17.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T17.js new file mode 100644 index 0000000000..ed4f5280de --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T17.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T17 +description: String is null and RegExp is /ll|l/ +---*/ + +var __executed = /ll|l/.exec(null); + +var __expected = ["ll"]; +__expected.index=2; +__expected.input="null"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T18.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T18.js new file mode 100644 index 0000000000..4682802f69 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T18.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T18 +description: String is undefined and RegExp is /nd|ne/ +---*/ + +var __executed = /nd|ne/.exec(undefined); + +var __expected = ["nd"]; +__expected.index=1; +__expected.input="undefined"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T19.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T19.js new file mode 100644 index 0000000000..1a904a79df --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T19.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T19 +description: String is void 0 and RegExp is /e{1}/ +---*/ + +var __executed = /e{1}/.exec(void 0); + +var __expected = ["e"]; +__expected.index=3; +__expected.input="undefined"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T2.js new file mode 100644 index 0000000000..1260136aa1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T2.js @@ -0,0 +1,51 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T2 +description: String is new String("123") and RegExp is /((1)|(12))((3)|(23))/ +---*/ + +var __re = /((1)|(12))((3)|(23))/; +var __executed = __re.exec(new String("123")); + +var __expected = ["123", "1", "1", undefined, "23", undefined, "23"]; +__expected.index=0; +__expected.input="123"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T20.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T20.js new file mode 100644 index 0000000000..338e7ef05f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T20.js @@ -0,0 +1,52 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T20 +description: String is x and RegExp is /[a-f]d/, where x is undefined variable +---*/ + +var __executed = /[a-f]d/.exec(x); + +var __expected = ["ed"]; +__expected.index=7; +__expected.input="undefined"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +var x; + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T21.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T21.js new file mode 100644 index 0000000000..f35ae8d538 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T21.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T21 +description: String is function(){}() and RegExp is /[a-z]n/ +---*/ + +var __executed = /[a-z]n/.exec(function(){}()); + +var __expected = ["un"]; +__expected.index=0; +__expected.input="undefined"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T3.js new file mode 100644 index 0000000000..c6e0d2f775 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T3.js @@ -0,0 +1,50 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T3 +description: String is new Object("abcdefghi") and RegExp is /a[a-z]{2,4}/ +---*/ + +var __executed = /a[a-z]{2,4}/.exec(new Object("abcdefghi")); + +var __expected = ["abcde"]; +__expected.index=0; +__expected.input="abcdefghi"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T4.js new file mode 100644 index 0000000000..fc4bdb79c7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T4.js @@ -0,0 +1,52 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T4 +description: > + String is {toString:function(){return "abcdefghi";}} and RegExp is + /a[a-z]{2,4}?/ +---*/ + +var __executed = /a[a-z]{2,4}?/.exec({toString:function(){return "abcdefghi"}}); + +var __expected = ["abc"]; +__expected.index=0; +__expected.input="abcdefghi"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T5.js new file mode 100644 index 0000000000..228127b9cd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T5.js @@ -0,0 +1,53 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T5 +description: > + String is {toString:function(){return {};}, + valueOf:function(){return "aabaac";}} and RegExp is + /(aa|aabaac|ba|b|c)* / +---*/ + +var __executed = /(aa|aabaac|ba|b|c)*/.exec({toString:function(){return {};}, valueOf:function(){return "aabaac";}}); + +var __expected = ["aaba", "ba"]; +__expected.index=0; +__expected.input="aabaac"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T6.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T6.js new file mode 100644 index 0000000000..a06db4b6eb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T6.js @@ -0,0 +1,52 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T6 +description: > + String is (function(){return "zaacbbbcac"})() and RegExp is + /(z)((a+)?(b+)?(c))* / +---*/ + +var __executed = /(z)((a+)?(b+)?(c))*/.exec((function(){return "zaacbbbcac"})()); + +var __expected = ["zaacbbbcac", "z", "ac", "a", undefined, "c"]; +__expected.index=0; +__expected.input="zaacbbbcac"; + +assert.sameValue( + __executed instanceof Array, + true, + 'The result of evaluating (__executed instanceof Array) is expected to be true' +); + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T7.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T7.js new file mode 100644 index 0000000000..8d51e48ea1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T7.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T7 +description: > + String is {toString:function(){throw "intostr";}} and RegExp is + /[a-z]/ +---*/ + +try { + throw new Test262Error('#1.1: /[a-z]/.exec({toString:function(){throw "intostr"}}) throw "intostr". Actual: ' + (/[a-z]/.exec({toString:function(){throw "intostr"}}))); +} catch (e) { + assert.sameValue(e, "intostr", 'The value of e is expected to be "intostr"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T8.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T8.js new file mode 100644 index 0000000000..c842675bb8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T8.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T8 +description: > + String is {toString:void 0, valueOf:function(){throw "invalof";}} + and RegExp is /[a-z]/ +---*/ + +try { + throw new Test262Error('#1.1: /[a-z]/.exec({toString:void 0, valueOf:function(){throw "invalof"}}) throw "invalof". Actual: ' + (/[a-z]/.exec({toString:void 0, valueOf:function(){throw "invalof"}}))); +} catch (e) { + assert.sameValue(e, "invalof", 'The value of e is expected to be "invalof"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T9.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T9.js new file mode 100644 index 0000000000..42bda957e5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A1_T9.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec(string) Performs a regular expression match of ToString(string) against the regular expression and + returns an Array object containing the results of the match, or null if the string did not match +es5id: 15.10.6.2_A1_T9 +description: String is undefined variable and RegExp is /1|12/ +---*/ + +var __string; + +var __re = /1|12/; +assert.sameValue(__re.exec(__string), null, '__re.exec() must return null'); + +function __string(){} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T1.js new file mode 100644 index 0000000000..160fe731cd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T1.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T1 +description: The internal [[Class]] property is "Object" +---*/ + +var __instance = new Object; + +__instance.exec = RegExp.prototype.exec; + +try { + throw new Test262Error('#1.1: __instance = new Object; __instance.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T10.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T10.js new file mode 100644 index 0000000000..377601dd09 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T10.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T10 +description: The tested object is undefined +---*/ + +var exec = RegExp.prototype.exec; + +try { + throw new Test262Error('#1.1: exec = RegExp.prototype.exec; exec("message to investigate"). Actual: ' + (exec("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T2.js new file mode 100644 index 0000000000..b00031334e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T2.js @@ -0,0 +1,29 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T2 +description: The tested object is Math +---*/ + +var __instance = Math; + +__instance.exec = RegExp.prototype.exec; + +try { + __instance.exec("message to investigate"); + throw new Test262Error('#1.1: __instance = Math; __instance.exec = RegExp.prototype.exec; __instance.exec("message to investigate")'); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T3.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T3.js new file mode 100644 index 0000000000..36cedabf51 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T3.js @@ -0,0 +1,29 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T3 +description: The tested object is function object +---*/ + +__instance.exec = RegExp.prototype.exec; + +try { + __instance.exec("message to investigate"); + throw new Test262Error('#1.1: __instance.exec = RegExp.prototype.exec; __instance.exec("message to investigate"); function __instance(){}'); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +function __instance(){}; + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T4.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T4.js new file mode 100644 index 0000000000..5cf0ba8d34 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T4.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T4 +description: The tested object is new String("[a-b]") +---*/ + +var __instance = new String("[a-b]"); + +__instance.exec = RegExp.prototype.exec; + + try { + throw new Test262Error('#1.1: __instance = new String("[a-b]"); __instance.exec = RegExp.prototype.exec; exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate"))); + } catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); + } + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T5.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T5.js new file mode 100644 index 0000000000..4128d2a5c0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T5.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T5 +description: The tested object is new Boolean(false) +---*/ + +var __instance = new Boolean(false); + +__instance.exec = RegExp.prototype.exec; + + try { + throw new Test262Error('#1.1: __instance = new Boolean(false); __instance.exec = RegExp.prototype.exec; exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate"))); + } catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); + } + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T6.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T6.js new file mode 100644 index 0000000000..ebbb2a8a2a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T6.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T6 +description: The tested object is new Number(1.0) +---*/ + +var __instance = new Number(1.0); + +__instance.exec = RegExp.prototype.exec; + +try { + throw new Test262Error('#1.1: __instance = new Number(1.0); __instance.exec = RegExp.prototype.exec; __instance["exec"]("message to investigate"). Actual: ' + (__instance["exec"]("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T7.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T7.js new file mode 100644 index 0000000000..be09f460f8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T7.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T7 +description: The tested object is false +---*/ + +var __instance = false; + +Object.prototype.exec = RegExp.prototype.exec; + +try { + throw new Test262Error('#1.1: __instance = false; Object.prototype.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T8.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T8.js new file mode 100644 index 0000000000..4118289d6f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T8.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T8 +description: The tested object is "." +---*/ + +var __instance = "."; + +Object.prototype.exec = RegExp.prototype.exec; + +try { + throw new Test262Error('#1.1: __instance = "."; Object.prototype.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T9.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T9.js new file mode 100644 index 0000000000..83f8f5945a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A2_T9.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.2_A2_T9 +description: The tested object is 1.0 +---*/ + +var __instance = 1.0; + +Object.prototype.exec = RegExp.prototype.exec; + +try { + throw new Test262Error('#1.1: __instance = 1.0; Object.prototype.exec = RegExp.prototype.exec; __instance.exec("message to investigate"). Actual: ' + (__instance.exec("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T1.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T1.js new file mode 100644 index 0000000000..52d3ccc26d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T1.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true and lastIndex not changed manually, + next exec calling start to match from position where current match finished +es5id: 15.10.6.2_A3_T1 +description: "RegExp is /(?:ab|cd)\\d?/g and tested string is \"ab cd2 ab34 cd\"" +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __matched = []; + +var __expected = ["ab", "cd2", "ab3", "cd"]; + +do{ + var __executed = __re.exec("ab cd2 ab34 cd"); + if (__executed !== null) { + __matched.push(__executed[0]); + } else { + break; + } +}while(true); + +assert.sameValue( + __expected.length, + __matched.length, + 'The value of __expected.length is expected to equal the value of __matched.length' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __expected[index], + __matched[index], + 'The value of __expected[index] is expected to equal the value of __matched[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T2.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T2.js new file mode 100644 index 0000000000..2c9c8b5171 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T2.js @@ -0,0 +1,153 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true and lastIndex not changed manually, + next exec calling start to match from position where current match finished +es5id: 15.10.6.2_A3_T2 +description: RegExp is /[Nn]evermore/g and tested string is very long string +---*/ + +var __the__raven = " Once upon a midnight dreary, while I pondered weak and weary," + + "Over many a quaint and curious volume of forgotten lore," + + "While I nodded, nearly napping, suddenly there came a tapping," + + "As of some one gently rapping, rapping at my chamber door." + + "`'Tis some visitor,' I muttered, `tapping at my chamber door -" + + "Only this, and nothing more.'" + + "Ah, distinctly I remember it was in the bleak December," + + "And each separate dying ember wrought its ghost upon the floor." + + "Eagerly I wished the morrow; - vainly I had sought to borrow" + + "From my books surcease of sorrow - sorrow for the lost Lenore -" + + "For the rare and radiant maiden whom the angels named Lenore -" + + "Nameless here for evermore." + + "\n" + + "And the silken sad uncertain rustling of each purple curtain" + + "Thrilled me - filled me with fantastic terrors never felt before;" + + "So that now, to still the beating of my heart, I stood repeating" + + "`'Tis some visitor entreating entrance at my chamber door -" + + "Some late visitor entreating entrance at my chamber door; -" + + "This it is, and nothing more,'" + + "Presently my soul grew stronger; hesitating then no longer," + + "`Sir,' said I, `or Madam, truly your forgiveness I implore;" + + "But the fact is I was napping, and so gently you came rapping," + + "And so faintly you came tapping, tapping at my chamber door," + + "That I scarce was sure I heard you' - here I opened wide the door; -" + + "Darkness there, and nothing more." + + "\n" + + "Deep into that darkness peering, long I stood there wondering, fearing," + + "Doubting, dreaming dreams no mortal ever dared to dream before" + + "But the silence was unbroken, and the darkness gave no token," + + "And the only word there spoken was the whispered word, `Lenore!'" + + "This I whispered, and an echo murmured back the word, `Lenore!'" + + "Merely this and nothing more." + + "\n" + + "Back into the chamber turning, all my soul within me burning," + + "Soon again I heard a tapping somewhat louder than before." + + "`Surely,' said I, `surely that is something at my window lattice;" + + "Let me see then, what thereat is, and this mystery explore -" + + "Let my heart be still a moment and this mystery explore; -" + + "'Tis the wind and nothing more!'" + + "\n" + + "Open here I flung the shutter, when, with many a flirt and flutter," + + "In there stepped a stately raven of the saintly days of yore." + + "Not the least obeisance made he; not a minute stopped or stayed he;" + + "But, with mien of lord or lady, perched above my chamber door -" + + "Perched upon a bust of Pallas just above my chamber door -" + + "Perched, and sat, and nothing more." + + "\n" + + "Then this ebony bird beguiling my sad fancy into smiling," + + "By the grave and stern decorum of the countenance it wore," + + "`Though thy crest be shorn and shaven, thou,' I said, `art sure no craven." + + "Ghastly grim and ancient raven wandering from the nightly shore -" + + "Tell me what thy lordly name is on the Night's Plutonian shore!'" + + "Quoth the raven, `Nevermore.'" + + "-n" + + "Much I marvelled this ungainly fowl to hear discourse so plainly," + + "Though its answer little meaning - little relevancy bore;" + + "For we cannot help agreeing that no living human being" + + "Ever yet was blessed with seeing bird above his chamber door -" + + "Bird or beast above the sculptured bust above his chamber door," + + "With such name as `Nevermore.'" + + "\n" + + "But the raven, sitting lonely on the placid bust, spoke only," + + "That one word, as if his soul in that one word he did outpour." + + "Nothing further then he uttered - not a feather then he fluttered -" + + "Till I scarcely more than muttered `Other friends have flown before -" + + "On the morrow he will leave me, as my hopes have flown before.'" + + "Then the bird said, `Nevermore.'" + + "\n" + + "Startled at the stillness broken by reply so aptly spoken," + + "`Doubtless,' said I, `what it utters is its only stock and store," + + "Caught from some unhappy master whom unmerciful disaster" + + "Followed fast and followed faster till his songs one burden bore -" + + "Till the dirges of his hope that melancholy burden bore" + + "Of \"Never-nevermore.\"'" + + "\n" + + "But the raven still beguiling all my sad soul into smiling," + + "Straight I wheeled a cushioned seat in front of bird and bust and door;" + + "Then, upon the velvet sinking, I betook myself to linking" + + "Fancy unto fancy, thinking what this ominous bird of yore -" + + "What this grim, ungainly, ghastly, gaunt, and ominous bird of yore" + + "Meant in croaking `Nevermore.'" + + "\n" + + "This I sat engaged in guessing, but no syllable expressing" + + "To the fowl whose fiery eyes now burned into my bosom's core;" + + "This and more I sat divining, with my head at ease reclining" + + "On the cushion's velvet lining that the lamp-light gloated o'er," + + "But whose velvet violet lining with the lamp-light gloating o'er," + + "She shall press, ah, nevermore!" + + "\n" + + "Then, methought, the air grew denser, perfumed from an unseen censer" + + "Swung by Seraphim whose foot-falls tinkled on the tufted floor." + + "`Wretch,' I cried, `thy God hath lent thee - by these angels he has sent thee" + + "Respite - respite and nepenthe from thy memories of Lenore!" + + "Quaff, oh quaff this kind nepenthe, and forget this lost Lenore!'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil! -" + + "Whether tempter sent, or whether tempest tossed thee here ashore," + + "Desolate yet all undaunted, on this desert land enchanted -" + + "On this home by horror haunted - tell me truly, I implore -" + + "Is there - is there balm in Gilead? - tell me - tell me, I implore!'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil!" + + "By that Heaven that bends above us - by that God we both adore -" + + "Tell this soul with sorrow laden if, within the distant Aidenn," + + "It shall clasp a sainted maiden whom the angels named Lenore -" + + "Clasp a rare and radiant maiden, whom the angels named Lenore?'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "`Be that word our sign of parting, bird or fiend!' I shrieked upstarting -" + + "`Get thee back into the tempest and the Night's Plutonian shore!" + + "Leave no black plume as a token of that lie thy soul hath spoken!" + + "Leave my loneliness unbroken! - quit the bust above my door!" + + "Take thy beak from out my heart, and take thy form from off my door!'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "And the raven, never flitting, still is sitting, still is sitting" + + "On the pallid bust of Pallas just above my chamber door;" + + "And his eyes have all the seeming of a demon's that is dreaming," + + "And the lamp-light o'er him streaming throws his shadow on the floor;" + + "And my soul from out that shadow that lies floating on the floor" + + "Shall be lifted - nevermore!" + +var NEVERMORE=11; + +var __re = /[Nn]evermore/g; +var __matched=0; + +do{ + var __executed = __re.exec(__the__raven); + if (__executed !== null) { + __matched++; + } else { + break; + } +}while(1); + +assert.sameValue(__matched, NEVERMORE, 'The value of __matched is expected to equal the value of NEVERMORE'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T3.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T3.js new file mode 100644 index 0000000000..dec512cc87 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T3.js @@ -0,0 +1,157 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true and lastIndex not changed manually, + next exec calling start to match from position where current match finished +es5id: 15.10.6.2_A3_T3 +description: RegExp is /[Nn]?evermore/g and tested string is very long string +---*/ + +var __the__raven = " Once upon a midnight dreary, while I pondered weak and weary," + + "Over many a quaint and curious volume of forgotten lore," + + "While I nodded, nearly napping, suddenly there came a tapping," + + "As of some one gently rapping, rapping at my chamber door." + + "`'Tis some visitor,' I muttered, `tapping at my chamber door -" + + "Only this, and nothing more.'" + + "Ah, distinctly I remember it was in the bleak December," + + "And each separate dying ember wrought its ghost upon the floor." + + "Eagerly I wished the morrow; - vainly I had sought to borrow" + + "From my books surcease of sorrow - sorrow for the lost Lenore -" + + "For the rare and radiant maiden whom the angels named Lenore -" + + "Nameless here for evermore." + + "\n" + + "And the silken sad uncertain rustling of each purple curtain" + + "Thrilled me - filled me with fantastic terrors never felt before;" + + "So that now, to still the beating of my heart, I stood repeating" + + "`'Tis some visitor entreating entrance at my chamber door -" + + "Some late visitor entreating entrance at my chamber door; -" + + "This it is, and nothing more,'" + + "Presently my soul grew stronger; hesitating then no longer," + + "`Sir,' said I, `or Madam, truly your forgiveness I implore;" + + "But the fact is I was napping, and so gently you came rapping," + + "And so faintly you came tapping, tapping at my chamber door," + + "That I scarce was sure I heard you' - here I opened wide the door; -" + + "Darkness there, and nothing more." + + "\n" + + "Deep into that darkness peering, long I stood there wondering, fearing," + + "Doubting, dreaming dreams no mortal ever dared to dream before" + + "But the silence was unbroken, and the darkness gave no token," + + "And the only word there spoken was the whispered word, `Lenore!'" + + "This I whispered, and an echo murmured back the word, `Lenore!'" + + "Merely this and nothing more." + + "\n" + + "Back into the chamber turning, all my soul within me burning," + + "Soon again I heard a tapping somewhat louder than before." + + "`Surely,' said I, `surely that is something at my window lattice;" + + "Let me see then, what thereat is, and this mystery explore -" + + "Let my heart be still a moment and this mystery explore; -" + + "'Tis the wind and nothing more!'" + + "\n" + + "Open here I flung the shutter, when, with many a flirt and flutter," + + "In there stepped a stately raven of the saintly days of yore." + + "Not the least obeisance made he; not a minute stopped or stayed he;" + + "But, with mien of lord or lady, perched above my chamber door -" + + "Perched upon a bust of Pallas just above my chamber door -" + + "Perched, and sat, and nothing more." + + "\n" + + "Then this ebony bird beguiling my sad fancy into smiling," + + "By the grave and stern decorum of the countenance it wore," + + "`Though thy crest be shorn and shaven, thou,' I said, `art sure no craven." + + "Ghastly grim and ancient raven wandering from the nightly shore -" + + "Tell me what thy lordly name is on the Night's Plutonian shore!'" + + "Quoth the raven, `Nevermore.'" + + "-n" + + "Much I marvelled this ungainly fowl to hear discourse so plainly," + + "Though its answer little meaning - little relevancy bore;" + + "For we cannot help agreeing that no living human being" + + "Ever yet was blessed with seeing bird above his chamber door -" + + "Bird or beast above the sculptured bust above his chamber door," + + "With such name as `Nevermore.'" + + "\n" + + "But the raven, sitting lonely on the placid bust, spoke only," + + "That one word, as if his soul in that one word he did outpour." + + "Nothing further then he uttered - not a feather then he fluttered -" + + "Till I scarcely more than muttered `Other friends have flown before -" + + "On the morrow he will leave me, as my hopes have flown before.'" + + "Then the bird said, `Nevermore.'" + + "\n" + + "Startled at the stillness broken by reply so aptly spoken," + + "`Doubtless,' said I, `what it utters is its only stock and store," + + "Caught from some unhappy master whom unmerciful disaster" + + "Followed fast and followed faster till his songs one burden bore -" + + "Till the dirges of his hope that melancholy burden bore" + + "Of \"Never-nevermore.\"'" + + "\n" + + "But the raven still beguiling all my sad soul into smiling," + + "Straight I wheeled a cushioned seat in front of bird and bust and door;" + + "Then, upon the velvet sinking, I betook myself to linking" + + "Fancy unto fancy, thinking what this ominous bird of yore -" + + "What this grim, ungainly, ghastly, gaunt, and ominous bird of yore" + + "Meant in croaking `Nevermore.'" + + "\n" + + "This I sat engaged in guessing, but no syllable expressing" + + "To the fowl whose fiery eyes now burned into my bosom's core;" + + "This and more I sat divining, with my head at ease reclining" + + "On the cushion's velvet lining that the lamp-light gloated o'er," + + "But whose velvet violet lining with the lamp-light gloating o'er," + + "She shall press, ah, nevermore!" + + "\n" + + "Then, methought, the air grew denser, perfumed from an unseen censer" + + "Swung by Seraphim whose foot-falls tinkled on the tufted floor." + + "`Wretch,' I cried, `thy God hath lent thee - by these angels he has sent thee" + + "Respite - respite and nepenthe from thy memories of Lenore!" + + "Quaff, oh quaff this kind nepenthe, and forget this lost Lenore!'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil! -" + + "Whether tempter sent, or whether tempest tossed thee here ashore," + + "Desolate yet all undaunted, on this desert land enchanted -" + + "On this home by horror haunted - tell me truly, I implore -" + + "Is there - is there balm in Gilead? - tell me - tell me, I implore!'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil!" + + "By that Heaven that bends above us - by that God we both adore -" + + "Tell this soul with sorrow laden if, within the distant Aidenn," + + "It shall clasp a sainted maiden whom the angels named Lenore -" + + "Clasp a rare and radiant maiden, whom the angels named Lenore?'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "`Be that word our sign of parting, bird or fiend!' I shrieked upstarting -" + + "`Get thee back into the tempest and the Night's Plutonian shore!" + + "Leave no black plume as a token of that lie thy soul hath spoken!" + + "Leave my loneliness unbroken! - quit the bust above my door!" + + "Take thy beak from out my heart, and take thy form from off my door!'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "And the raven, never flitting, still is sitting, still is sitting" + + "On the pallid bust of Pallas just above my chamber door;" + + "And his eyes have all the seeming of a demon's that is dreaming," + + "And the lamp-light o'er him streaming throws his shadow on the floor;" + + "And my soul from out that shadow that lies floating on the floor" + + "Shall be lifted - nevermore!" + +var NEVERMORE_AND_EVERMORE=12; + +var __re = /[Nn]?evermore/g; +var __matched=0; + +do{ + var __executed = __re.exec(__the__raven); + if (__executed !== null) { + __matched++; + } else { + break; + } +}while(1); + +assert.sameValue( + __matched, + NEVERMORE_AND_EVERMORE, + 'The value of __matched is expected to equal the value of NEVERMORE_AND_EVERMORE' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T4.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T4.js new file mode 100644 index 0000000000..dd54ccca23 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T4.js @@ -0,0 +1,159 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true and lastIndex not changed manually, + next exec calling start to match from position where current match finished +es5id: 15.10.6.2_A3_T4 +description: > + RegExp is /([Nn]?ever|([Nn]othing\s{1,}))more/g and tested string + is very long string +---*/ + +var __the__raven = " Once upon a midnight dreary, while I pondered weak and weary," + + "Over many a quaint and curious volume of forgotten lore," + + "While I nodded, nearly napping, suddenly there came a tapping," + + "As of some one gently rapping, rapping at my chamber door." + + "`'Tis some visitor,' I muttered, `tapping at my chamber door -" + + "Only this, and nothing more.'" + + "Ah, distinctly I remember it was in the bleak December," + + "And each separate dying ember wrought its ghost upon the floor." + + "Eagerly I wished the morrow; - vainly I had sought to borrow" + + "From my books surcease of sorrow - sorrow for the lost Lenore -" + + "For the rare and radiant maiden whom the angels named Lenore -" + + "Nameless here for evermore." + + "\n" + + "And the silken sad uncertain rustling of each purple curtain" + + "Thrilled me - filled me with fantastic terrors never felt before;" + + "So that now, to still the beating of my heart, I stood repeating" + + "`'Tis some visitor entreating entrance at my chamber door -" + + "Some late visitor entreating entrance at my chamber door; -" + + "This it is, and nothing more,'" + + "Presently my soul grew stronger; hesitating then no longer," + + "`Sir,' said I, `or Madam, truly your forgiveness I implore;" + + "But the fact is I was napping, and so gently you came rapping," + + "And so faintly you came tapping, tapping at my chamber door," + + "That I scarce was sure I heard you' - here I opened wide the door; -" + + "Darkness there, and nothing more." + + "\n" + + "Deep into that darkness peering, long I stood there wondering, fearing," + + "Doubting, dreaming dreams no mortal ever dared to dream before" + + "But the silence was unbroken, and the darkness gave no token," + + "And the only word there spoken was the whispered word, `Lenore!'" + + "This I whispered, and an echo murmured back the word, `Lenore!'" + + "Merely this and nothing more." + + "\n" + + "Back into the chamber turning, all my soul within me burning," + + "Soon again I heard a tapping somewhat louder than before." + + "`Surely,' said I, `surely that is something at my window lattice;" + + "Let me see then, what thereat is, and this mystery explore -" + + "Let my heart be still a moment and this mystery explore; -" + + "'Tis the wind and nothing more!'" + + "\n" + + "Open here I flung the shutter, when, with many a flirt and flutter," + + "In there stepped a stately raven of the saintly days of yore." + + "Not the least obeisance made he; not a minute stopped or stayed he;" + + "But, with mien of lord or lady, perched above my chamber door -" + + "Perched upon a bust of Pallas just above my chamber door -" + + "Perched, and sat, and nothing more." + + "\n" + + "Then this ebony bird beguiling my sad fancy into smiling," + + "By the grave and stern decorum of the countenance it wore," + + "`Though thy crest be shorn and shaven, thou,' I said, `art sure no craven." + + "Ghastly grim and ancient raven wandering from the nightly shore -" + + "Tell me what thy lordly name is on the Night's Plutonian shore!'" + + "Quoth the raven, `Nevermore.'" + + "-n" + + "Much I marvelled this ungainly fowl to hear discourse so plainly," + + "Though its answer little meaning - little relevancy bore;" + + "For we cannot help agreeing that no living human being" + + "Ever yet was blessed with seeing bird above his chamber door -" + + "Bird or beast above the sculptured bust above his chamber door," + + "With such name as `Nevermore.'" + + "\n" + + "But the raven, sitting lonely on the placid bust, spoke only," + + "That one word, as if his soul in that one word he did outpour." + + "Nothing further then he uttered - not a feather then he fluttered -" + + "Till I scarcely more than muttered `Other friends have flown before -" + + "On the morrow he will leave me, as my hopes have flown before.'" + + "Then the bird said, `Nevermore.'" + + "\n" + + "Startled at the stillness broken by reply so aptly spoken," + + "`Doubtless,' said I, `what it utters is its only stock and store," + + "Caught from some unhappy master whom unmerciful disaster" + + "Followed fast and followed faster till his songs one burden bore -" + + "Till the dirges of his hope that melancholy burden bore" + + "Of \"Never-nevermore.\"'" + + "\n" + + "But the raven still beguiling all my sad soul into smiling," + + "Straight I wheeled a cushioned seat in front of bird and bust and door;" + + "Then, upon the velvet sinking, I betook myself to linking" + + "Fancy unto fancy, thinking what this ominous bird of yore -" + + "What this grim, ungainly, ghastly, gaunt, and ominous bird of yore" + + "Meant in croaking `Nevermore.'" + + "\n" + + "This I sat engaged in guessing, but no syllable expressing" + + "To the fowl whose fiery eyes now burned into my bosom's core;" + + "This and more I sat divining, with my head at ease reclining" + + "On the cushion's velvet lining that the lamp-light gloated o'er," + + "But whose velvet violet lining with the lamp-light gloating o'er," + + "She shall press, ah, nevermore!" + + "\n" + + "Then, methought, the air grew denser, perfumed from an unseen censer" + + "Swung by Seraphim whose foot-falls tinkled on the tufted floor." + + "`Wretch,' I cried, `thy God hath lent thee - by these angels he has sent thee" + + "Respite - respite and nepenthe from thy memories of Lenore!" + + "Quaff, oh quaff this kind nepenthe, and forget this lost Lenore!'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil! -" + + "Whether tempter sent, or whether tempest tossed thee here ashore," + + "Desolate yet all undaunted, on this desert land enchanted -" + + "On this home by horror haunted - tell me truly, I implore -" + + "Is there - is there balm in Gilead? - tell me - tell me, I implore!'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "`Prophet!' said I, `thing of evil! - prophet still, if bird or devil!" + + "By that Heaven that bends above us - by that God we both adore -" + + "Tell this soul with sorrow laden if, within the distant Aidenn," + + "It shall clasp a sainted maiden whom the angels named Lenore -" + + "Clasp a rare and radiant maiden, whom the angels named Lenore?'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "`Be that word our sign of parting, bird or fiend!' I shrieked upstarting -" + + "`Get thee back into the tempest and the Night's Plutonian shore!" + + "Leave no black plume as a token of that lie thy soul hath spoken!" + + "Leave my loneliness unbroken! - quit the bust above my door!" + + "Take thy beak from out my heart, and take thy form from off my door!'" + + "Quoth the raven, `Nevermore.'" + + "\n" + + "And the raven, never flitting, still is sitting, still is sitting" + + "On the pallid bust of Pallas just above my chamber door;" + + "And his eyes have all the seeming of a demon's that is dreaming," + + "And the lamp-light o'er him streaming throws his shadow on the floor;" + + "And my soul from out that shadow that lies floating on the floor" + + "Shall be lifted - nevermore!" + +var ALL_THE_HOPELESS_MORE=18; + +var __re = /([Nn]?ever|([Nn]othing\s{1,}))more/g; +var __matched=0; + +do{ + var __executed = __re.exec(__the__raven); + if (__executed !== null) { + __matched++; + } else { + break; + } +}while(1); + +assert.sameValue( + __matched, + ALL_THE_HOPELESS_MORE, + 'The value of __matched is expected to equal the value of ALL_THE_HOPELESS_MORE' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T5.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T5.js new file mode 100644 index 0000000000..a457312611 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T5.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true and lastIndex not changed manually, + next exec calling start to match from position where current match finished +es5id: 15.10.6.2_A3_T5 +description: RegExp is /\d+/g and tested string is "123 456 789" +---*/ + +var __re = /\d+/g; + +var __matched = []; + +var __expected = ["123","456","789"]; + +do{ + var __executed = __re.exec("123 456 789"); + if (__executed !== null) { + __matched.push(__executed[0]); + } else { + break; + } +}while(true); + +assert.sameValue( + __expected.length, + __matched.length, + 'The value of __expected.length is expected to equal the value of __matched.length' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __expected[index], + __matched[index], + 'The value of __expected[index] is expected to equal the value of __matched[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T6.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T6.js new file mode 100644 index 0000000000..4c4c1491a6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T6.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true and lastIndex not changed manually, + next exec calling start to match from position where current match finished +es5id: 15.10.6.2_A3_T6 +description: RegExp is /(\d+)/g and tested string is "123 456 789" +---*/ + +var __re = /(\d+)/g; + +var __matched = []; + +var __expected = ["123","456","789"]; + +do{ + var __executed = __re.exec("123 456 789"); + if (__executed !== null) { + __matched.push(__executed[0]); + } else { + break; + } +}while(true); + +assert.sameValue( + __expected.length, + __matched.length, + 'The value of __expected.length is expected to equal the value of __matched.length' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __expected[index], + __matched[index], + 'The value of __expected[index] is expected to equal the value of __matched[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T7.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T7.js new file mode 100644 index 0000000000..75232f1ea3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A3_T7.js @@ -0,0 +1,42 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true and lastIndex not changed manually, + next exec calling start to match from position where current match finished +es5id: 15.10.6.2_A3_T7 +description: RegExp is /\d+/ and tested string is "123 456 789" +---*/ + +var __re = /\d+/; + +var __matched = []; + +var __expected = ["123","123","123","123","123","123","123","123","123","123"]; + +do{ + var __executed = __re.exec("123 456 789"); + if (__executed !== null) { + __matched.push(__executed[0]); + } else { + break; + } +}while(__matched.length<10); + +assert.sameValue( + __expected.length, + __matched.length, + 'The value of __expected.length is expected to equal the value of __matched.length' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __expected[index], + __matched[index], + 'The value of __expected[index] is expected to equal the value of __matched[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T1.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T1.js new file mode 100644 index 0000000000..22fa388398 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T1.js @@ -0,0 +1,80 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T1 +description: Call first exec, then set re.lastIndex = 12 and again call exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__re.lastIndex = 12; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["ab4"]; +__expected.index = 17; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T10.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T10.js new file mode 100644 index 0000000000..5c3cbd0ff4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T10.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T10 +description: > + Call first exec, then set re.lastIndex = + {valueOf:function(){return 12;}} and again call exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +var __obj = {valueOf:function(){return 12;}}; + +__re.lastIndex = __obj; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["ab4"]; +__expected.index = 17; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T11.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T11.js new file mode 100644 index 0000000000..6d8559da56 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T11.js @@ -0,0 +1,60 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T11 +description: > + Call first exec, then set re.lastIndex = {valueOf:function(){throw + "intoint";}} and again call exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +var __obj = {valueOf:function(){throw "intoint";}}; + +__re.lastIndex = __obj; + +try { + throw new Test262Error('#5.1: __obj = {valueOf:function(){throw "intoint";}}; __re.lastIndex = __obj; __executed = __re.exec("aacd2233ab12nm444ab42") throw "intoint". Actual: ' + (__re.exec("aacd2233ab12nm444ab42"))); +} catch (e) { + assert.sameValue(e, "intoint", 'The value of e is expected to be "intoint"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T12.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T12.js new file mode 100644 index 0000000000..f9e6a6df38 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T12.js @@ -0,0 +1,85 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T12 +description: > + Call first exec, then set re.lastIndex = + {toString:function(){return 12;},valueOf:function(){return {};}} + and again call exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +var __obj = {toString:function(){return 12;},valueOf:function(){return {};}}; + +__re.lastIndex = __obj; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["ab4"]; +__expected.index = 17; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T2.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T2.js new file mode 100644 index 0000000000..cc3d4a67ee --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T2.js @@ -0,0 +1,82 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T2 +description: > + Call first exec, then set re.lastIndex = undefined and again call + exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__re.lastIndex = undefined; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T3.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T3.js new file mode 100644 index 0000000000..eec144fd72 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T3.js @@ -0,0 +1,80 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T3 +description: Call first exec, then set re.lastIndex = void 0 and again call exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__re.lastIndex = void 0; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T4.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T4.js new file mode 100644 index 0000000000..b87cb4b9f0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T4.js @@ -0,0 +1,80 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T4 +description: Call first exec, then set re.lastIndex = null and again call exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__re.lastIndex = null; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T5.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T5.js new file mode 100644 index 0000000000..00e8e21fc3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T5.js @@ -0,0 +1,84 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T5 +description: > + Call first exec, then set re.lastIndex = x and again call exec, + where x is undefined variable +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__re.lastIndex = x; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +var x; + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T6.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T6.js new file mode 100644 index 0000000000..ccd2eff07c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T6.js @@ -0,0 +1,80 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T6 +description: Call first exec, then set re.lastIndex = false and again call exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__re.lastIndex = false; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T7.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T7.js new file mode 100644 index 0000000000..5d90fa0435 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T7.js @@ -0,0 +1,82 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T7 +description: > + Call first exec, then set re.lastIndex = Math.NaN and again call + exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__re.lastIndex = Math.NaN; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T8.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T8.js new file mode 100644 index 0000000000..77c7f9c4d4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T8.js @@ -0,0 +1,80 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T8 +description: Call first exec, then set re.lastIndex = "12" and again call exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__re.lastIndex = "12"; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["ab4"]; +__expected.index = 17; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T9.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T9.js new file mode 100644 index 0000000000..dc4902a6bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A4_T9.js @@ -0,0 +1,82 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + If global is true next exec calling start to match from lastIndex position +es5id: 15.10.6.2_A4_T9 +description: > + Call first exec, then set re.lastIndex = "eleven" and again call + exec +---*/ + +var __re = /(?:ab|cd)\d?/g; + +var __executed = __re.exec("aacd2233ab12nm444ab42"); + +var __expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__re.lastIndex = "eleven"; + +__executed = __re.exec("aacd2233ab12nm444ab42"); + +__expected = ["cd2"]; +__expected.index = 2; +__expected.input = "aacd2233ab12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T1.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T1.js new file mode 100644 index 0000000000..c290de421b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T1.js @@ -0,0 +1,53 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + Let global is true and let I = If ToInteger(lastIndex). + Then if I<0 orI>length then set lastIndex to 0 and return null +es5id: 15.10.6.2_A5_T1 +description: > + First call /(?:ab|cd)\d?/g.exec("aac1dz2233a1bz12nm444ab42"), and + then First call /(?:ab|cd)\d?/g.exec("aacd22") +---*/ + +var __re = /(?:ab|cd)\d?/g; +var __executed = __re.exec("aac1dz2233a1bz12nm444ab42"); + +var __expected = ["ab4"]; +__expected.index = 21; +__expected.input = "aac1dz2233a1bz12nm444ab42"; + +assert.sameValue( + __executed.length, + __expected.length, + 'The value of __executed.length is expected to equal the value of __expected.length' +); + +assert.sameValue( + __executed.index, + __expected.index, + 'The value of __executed.index is expected to equal the value of __expected.index' +); + +assert.sameValue( + __executed.input, + __expected.input, + 'The value of __executed.input is expected to equal the value of __expected.input' +); + +for(var index=0; index<__expected.length; index++) { + assert.sameValue( + __executed[index], + __expected[index], + 'The value of __executed[index] is expected to equal the value of __expected[index]' + ); +} + +__executed = __re.exec("aacd22"); + +assert(!__executed, 'The value of !__executed is expected to be true'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T2.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T2.js new file mode 100644 index 0000000000..5661d8d609 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T2.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on global property. + Let global is true and let I = If ToInteger(lastIndex). + Then if I<0 orI>length then set lastIndex to 0 and return null +es5id: 15.10.6.2_A5_T2 +description: "Set lastIndex to 100 and call /(?:ab|cd)\\d?/g.exec(\"aacd22 \")" +---*/ + +var __re = /(?:ab|cd)\d?/g; +__re.lastIndex=100; +var __executed = __re.exec("aacd22 "); + +assert(!__executed, 'The value of !__executed is expected to be true'); +assert.sameValue(__re.lastIndex, 0, 'The value of __re.lastIndex is expected to be 0'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T3.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T3.js new file mode 100644 index 0000000000..274ae6775f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A5_T3.js @@ -0,0 +1,26 @@ +// Copyright 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.exec behavior depends on the lastIndex property: + ToLength(lastIndex) is the starting point for the search, so + negative numbers result in searching from 0. +es5id: 15.10.6.2_A5_T3 +description: "Set lastIndex to -1 and call /(?:ab|cd)\\d?/g.exec(\"aacd22 \")" +---*/ + +var __re = /(?:ab|cd)\d?/g; +__re.lastIndex=-1; +var __executed = __re.exec("aacd22 "); + +assert.sameValue(__executed[0], "cd2", 'The value of __executed[0] is expected to be "cd2"'); +assert.sameValue(__re.lastIndex, 5, 'The value of __re.lastIndex is expected to be 5'); + +__re.lastIndex=-100; +__executed = __re.exec("aacd22 "); + +assert.sameValue(__executed[0], "cd2", 'The value of __executed[0] is expected to be "cd2"'); +assert.sameValue(__re.lastIndex, 5, 'The value of __re.lastIndex is expected to be 5'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A6.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A6.js new file mode 100644 index 0000000000..87f4b0238f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A6.js @@ -0,0 +1,15 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp.prototype.exec has not prototype property +es5id: 15.10.6.2_A6 +description: Checking RegExp.prototype.exec.prototype +---*/ +assert.sameValue( + RegExp.prototype.exec.prototype, + undefined, + 'The value of RegExp.prototype.exec.prototype is expected to equal undefined' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A7.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A7.js new file mode 100644 index 0000000000..f5ac4392c1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A7.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp.prototype.exec can't be used as constructor +es5id: 15.10.6.2_A7 +description: Checking if creating the RegExp.prototype.exec object fails +---*/ + +var __FACTORY = RegExp.prototype.exec; + +try { + var __instance = new __FACTORY; + throw new Test262Error('#1.1: __FACTORY = RegExp.prototype.exec throw TypeError. Actual: ' + (__instance)); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A8.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A8.js new file mode 100644 index 0000000000..bef663772f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A8.js @@ -0,0 +1,35 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype.exec.length property has the attribute DontEnum +es5id: 15.10.6.2_A8 +description: > + Checking if enumerating the RegExp.prototype.exec.length property + fails +---*/ +assert.sameValue( + RegExp.prototype.exec.hasOwnProperty('length'), + true, + 'RegExp.prototype.exec.hasOwnProperty(\'length\') must return true' +); + +assert.sameValue( + RegExp.prototype.exec.propertyIsEnumerable('length'), + false, + 'RegExp.prototype.exec.propertyIsEnumerable(\'length\') must return false' +); + +var count=0; + +for (var p in RegExp.prototype.exec){ + if (p==="length") { + count++; + } +} + +assert.sameValue(count, 0, 'The value of count is expected to be 0'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A9.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A9.js new file mode 100644 index 0000000000..ec0dda3895 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/S15.10.6.2_A9.js @@ -0,0 +1,33 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The RegExp.prototype.exec.length property does not have the attribute + DontDelete +es5id: 15.10.6.2_A9 +description: > + Checking if deleting the RegExp.prototype.exec.length property + fails +---*/ +assert.sameValue( + RegExp.prototype.exec.hasOwnProperty('length'), + true, + 'RegExp.prototype.exec.hasOwnProperty(\'length\') must return true' +); + +assert.sameValue( + delete RegExp.prototype.exec.length, + true, + 'The value of `delete RegExp.prototype.exec.length` is expected to be true' +); + +assert.sameValue( + RegExp.prototype.exec.hasOwnProperty('length'), + false, + 'RegExp.prototype.exec.hasOwnProperty(\'length\') must return false' +); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/duplicate-named-groups-properties.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/duplicate-named-groups-properties.js new file mode 100644 index 0000000000..890f8302b3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/duplicate-named-groups-properties.js @@ -0,0 +1,39 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Properties on groups object with duplicate named capture groups +esid: prod-GroupSpecifier +features: [regexp-duplicate-named-groups] +includes: [compareArray.js] +---*/ + +const matcher = /(?:(?a)|(?a)(?b))(?:(?c)|(?d))/; + +const threeMatchResult = matcher.exec("abc"); +assert.sameValue(threeMatchResult.groups.x, "b", "group x matches b"); +assert.sameValue(threeMatchResult.groups.y, "a", "group y matches a"); +assert.sameValue(threeMatchResult.groups.z, "c", "group z matches c"); +assert.compareArray( + Object.keys(threeMatchResult.groups), + ["x", "y", "z"], + "Properties of groups are ordered in RegExp source order despite y matching before x in this alternative" +); + +const twoMatchResult = matcher.exec("ad"); +assert.sameValue(twoMatchResult.groups.x, "a", "group x matches a"); +assert.sameValue(twoMatchResult.groups.y, undefined, "group y does not match"); +assert.sameValue(twoMatchResult.groups.z, "d", "group z matches d"); +assert.compareArray( + Object.keys(twoMatchResult.groups), + ["x", "y", "z"], + "y is still present on groups object, in the right order, despite not matching" +); + +const iteratedMatcher = /(?:(?:(?a)|(?b)|c)\k){2}/; + +const matchedInPrevIterationResult = iteratedMatcher.exec("aac"); +assert.sameValue(matchedInPrevIterationResult.groups.x, undefined, "group x does not match in the last iteration"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/duplicate-named-indices-groups-properties.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/duplicate-named-indices-groups-properties.js new file mode 100644 index 0000000000..ca0faac957 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/duplicate-named-indices-groups-properties.js @@ -0,0 +1,39 @@ +// |reftest| skip -- regexp-duplicate-named-groups is not supported +// Copyright 2022 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Properties on indices.groups object with duplicate named capture groups +esid: prod-GroupSpecifier +features: [regexp-duplicate-named-groups, regexp-match-indices] +includes: [compareArray.js] +---*/ + +const matcher = /(?:(?a)|(?a)(?b))(?:(?c)|(?d))/d; + +const threeMatchResult = matcher.exec("abc"); +assert.compareArray(threeMatchResult.indices.groups.x, [1, 2], "group x matches b"); +assert.compareArray(threeMatchResult.indices.groups.y, [0, 1], "group y matches a"); +assert.compareArray(threeMatchResult.indices.groups.z, [2, 3], "group z matches c"); +assert.compareArray( + Object.keys(threeMatchResult.indices.groups), + ["x", "y", "z"], + "Properties of groups are ordered in RegExp source order despite y matching before x in this alternative" +); + +const twoMatchResult = matcher.exec("ad"); +assert.compareArray(twoMatchResult.indices.groups.x, [0, 1], "group x matches a"); +assert.sameValue(twoMatchResult.indices.groups.y, undefined, "group y does not match"); +assert.compareArray(twoMatchResult.indices.groups.z, [1, 2], "group z matches d"); +assert.compareArray( + Object.keys(twoMatchResult.indices.groups), + ["x", "y", "z"], + "y is still present on groups object, in the right order, despite not matching" +); + +const iteratedMatcher = /(?:(?:(?a)|(?b)|c)\k){2}/d; + +const matchedInPrevIterationResult = iteratedMatcher.exec("aac"); +assert.sameValue(matchedInPrevIterationResult.indices.groups.x, undefined, "group x does not match in the last iteration"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-g-lastindex-reset.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-g-lastindex-reset.js new file mode 100644 index 0000000000..8b3dd5e333 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-g-lastindex-reset.js @@ -0,0 +1,54 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + lastIndex is read and reset to 0 when global is set and the match fails. +es6id: 21.2.5.2.2 +info: | + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let flags be R.[[OriginalFlags]]. + 5. If flags contains "g", let global be true, else let global be false. + [...] + 7. If global is false and sticky is false, let lastIndex be 0. + 8. Else, let lastIndex be ? ToLength(? Get(R, "lastIndex")). + [...] + 12. Repeat, while matchSucceeded is false + [...] + c. If r is failure, then + i. If sticky is true, then + 1. Perform ? Set(R, "lastIndex", 0, true). + 2. Return null. + ii. Let lastIndex be AdvanceStringIndex(S, lastIndex, fullUnicode). +---*/ + +var lastIndexReads; +var result; + +var r = /a/g; + +function reset(value) { + r.lastIndex = { + valueOf: function() { + lastIndexReads++; + return value; + } + }; + lastIndexReads = 0; +} + +reset(42); // lastIndex beyond end of string. +result = r.exec('abc'); +assert.sameValue(result, null); +assert.sameValue(r.lastIndex, 0); +assert.sameValue(lastIndexReads, 1); + +reset(-1); // No match. +result = r.exec('nbc'); +assert.sameValue(result, null); +assert.sameValue(r.lastIndex, 0); +assert.sameValue(lastIndexReads, 1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-lastindex-access.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-lastindex-access.js new file mode 100644 index 0000000000..9925767e23 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-lastindex-access.js @@ -0,0 +1,38 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: lastIndex is read but not written when global and sticky are unset. +es6id: 21.2.5.2.2 +info: | + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + 4. Let lastIndex be ? ToLength(? Get(R, "lastIndex")). + [...] + 8. If global is false and sticky is false, let lastIndex be 0. + [...] + 12. Repeat, while matchSucceeded is false + [...] + c. If r is failure, then + i. If sticky is true, then + 1. Perform ? Set(R, "lastIndex", 0, true). + 2. Return null. +---*/ + +var gets = 0; +var counter = { + valueOf: function() { + gets++; + return 0; + } +}; + +var r = /a/; +r.lastIndex = counter; + +var result = r.exec('nbc'); +assert.sameValue(result, null); +assert.sameValue(r.lastIndex, counter); +assert.sameValue(gets, 1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-lastindex-set.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-lastindex-set.js new file mode 100644 index 0000000000..f5ff21f355 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/failure-lastindex-set.js @@ -0,0 +1,74 @@ +// Copyright (C) 2021 Richard Gibson. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + lastIndex is set to 0 after exhausting the string when global and/or sticky are set. +esid: sec-regexpbuiltinexec +info: | + RegExpBuiltinExec ( + _R_: an initialized RegExp instance, + _S_: a String, + ) + ... + 1. Let _length_ be the number of code units in _S_. + 2. Let _lastIndex_ be ℝ(? ToLength(? Get(_R_, *"lastIndex"*))). + 3. Let _flags_ be _R_.[[OriginalFlags]]. + 4. If _flags_ contains *"g"*, let _global_ be *true*; else let _global_ be *false*. + 5. If _flags_ contains *"y"*, let _sticky_ be *true*; else let _sticky_ be *false*. + ... + 9. Let _matchSucceeded_ be *false*. + 10. Repeat, while _matchSucceeded_ is *false*, + a. If _lastIndex_ > _length_, then + i. If _global_ is *true* or _sticky_ is *true*, then + 1. Perform ? Set(_R_, *"lastIndex"*, *+0*𝔽, *true*). + ii. Return *null*. +features: [exponentiation] +---*/ + +var R_g = /./g, R_y = /./y, R_gy = /./gy; + +var S = "test"; + +var lastIndex; +var bigLastIndexes = [ + Infinity, + Number.MAX_VALUE, + Number.MAX_SAFE_INTEGER, + Number.MAX_SAFE_INTEGER - 1, + 2**32 + 4, + 2**32 + 3, + 2**32 + 2, + 2**32 + 1, + 2**32, + 2**32 - 1, + 5 +]; +for ( var i = 0; i < bigLastIndexes.length; i++ ) { + lastIndex = bigLastIndexes[i]; + R_g.lastIndex = lastIndex; + R_y.lastIndex = lastIndex; + R_gy.lastIndex = lastIndex; + + assert.sameValue(R_g.exec(S), null, + "global RegExp instance must fail to match against '" + S + + "' at lastIndex " + lastIndex); + assert.sameValue(R_y.exec(S), null, + "sticky RegExp instance must fail to match against '" + S + + "' at lastIndex " + lastIndex); + assert.sameValue(R_gy.exec(S), null, + "global sticky RegExp instance must fail to match against '" + S + + "' at lastIndex " + lastIndex); + + assert.sameValue(R_g.lastIndex, 0, + "global RegExp instance lastIndex must be reset after " + lastIndex + + " exceeds string length"); + assert.sameValue(R_y.lastIndex, 0, + "sticky RegExp instance lastIndex must be reset after " + lastIndex + + " exceeds string length"); + assert.sameValue(R_gy.lastIndex, 0, + "global sticky RegExp instance lastIndex must be reset after " + lastIndex + + " exceeds string length"); +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/name.js new file mode 100644 index 0000000000..89d0243a20 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/name.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.2 +description: > + RegExp.prototype.exec.name is "exec". +info: | + RegExp.prototype.exec ( string ) + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, that is not + identified as an anonymous function has a name property whose value + is a String. + + Unless otherwise specified, the name property of a built-in Function + object, if it exists, has the attributes { [[Writable]]: false, + [[Enumerable]]: false, [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +assert.sameValue(RegExp.prototype.exec.name, "exec"); + +verifyNotEnumerable(RegExp.prototype.exec, "name"); +verifyNotWritable(RegExp.prototype.exec, "name"); +verifyConfigurable(RegExp.prototype.exec, "name"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/not-a-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/not-a-constructor.js new file mode 100644 index 0000000000..c4492952dd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/not-a-constructor.js @@ -0,0 +1,35 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + RegExp.prototype.exec does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [Reflect.construct, arrow-function] +---*/ + +assert.sameValue( + isConstructor(RegExp.prototype.exec), + false, + 'isConstructor(RegExp.prototype.exec) must return false' +); + +assert.throws(TypeError, () => { + let re = new RegExp(''); new re.exec(); +}, '`let re = new RegExp(\'\'); new re.exec()` throws TypeError'); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/success-g-lastindex-no-access.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/success-g-lastindex-no-access.js new file mode 100644 index 0000000000..0642cd4fe8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/success-g-lastindex-no-access.js @@ -0,0 +1,35 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: lastIndex is accessed when global is set. +es6id: 21.2.5.2.2 +info: | + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let flags be R.[[OriginalFlags]]. + 5. If flags contains "g", let global be true, else let global be false. + [...] + 15. If global is true or sticky is true, then + a. Perform ? Set(R, "lastIndex", e, true). +---*/ + +var lastIndexReads = 0; + +var r = /./g; +r.lastIndex = { + valueOf: function() { + lastIndexReads++; + return 0; + } +}; + +var result = r.exec('abc'); +assert.sameValue(result.length, 1); +assert.sameValue(result[0], 'a'); +assert.sameValue(r.lastIndex, 1); +assert.sameValue(lastIndexReads, 1); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/success-lastindex-access.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/success-lastindex-access.js new file mode 100644 index 0000000000..30f3c62d3f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/success-lastindex-access.js @@ -0,0 +1,38 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: lastIndex read but not written when global and sticky are unset. +es6id: 21.2.5.2.2 +info: | + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ? ToLength(? Get(R, "lastIndex")). + 5. Let flags be R.[[OriginalFlags]]. + 6. If flags contains "g", let global be true, else let global be false. + [...] + 15. If global is true or sticky is true, then + a. Perform ? Set(R, "lastIndex", e, true). +---*/ + +var gets = 0; +var counter = { + valueOf: function() { + gets++; + return 0; + } +}; + +var r = /./; +r.lastIndex = counter; + +var result = r.exec('abc'); + +assert.notSameValue(result, null); +assert.sameValue(result.length, 1); +assert.sameValue(result[0], 'a'); +assert.sameValue(r.lastIndex, counter); +assert.sameValue(gets, 1); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/u-captured-value.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/u-captured-value.js new file mode 100644 index 0000000000..40b419e1c4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/u-captured-value.js @@ -0,0 +1,35 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Encoding of `capturedValue` +es6id: 21.2.5.2.2 +info: | + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 12. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 13. If flags contains "u", let fullUnicode be true, else let fullUnicode be + false. + [...] + 28. For each integer i such that i > 0 and i ≤ n + a. Let captureI be ith element of r's captures List. + b. If captureI is undefined, let capturedValue be undefined. + c. Else if fullUnicode is true, + i. Assert: captureI is a List of code points. + ii. Let capturedValue be a string whose code units are the + UTF16Encoding (10.1.1) of the code points of captureI. + [...] + e. Perform CreateDataProperty(A, ToString(i) , capturedValue). + 29. Return A. +---*/ + +var match = /./u.exec('𝌆'); + +assert(match !== null); +assert.sameValue(match.length, 1); +assert.sameValue(match[0].length, 2); +assert.sameValue(match[0][0], '\ud834'); +assert.sameValue(match[0][1], '\udf06'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/u-lastindex-adv.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/u-lastindex-adv.js new file mode 100644 index 0000000000..405fc8cd43 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/u-lastindex-adv.js @@ -0,0 +1,24 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Advancement of lastIndex +es6id: 21.2.5.2.2 +info: | + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 12. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 13. If flags contains "u", let fullUnicode be true, else let fullUnicode be + false. + [...] + 15. Repeat, while matchSucceeded is false + [...] + c. If r is failure, then + [...] + ii. Let lastIndex be AdvanceStringIndex(S, lastIndex, fullUnicode). +---*/ + +assert.sameValue(/\udf06/u.exec('\ud834\udf06'), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/u-lastindex-value.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/u-lastindex-value.js new file mode 100644 index 0000000000..5c31efb0ef --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/u-lastindex-value.js @@ -0,0 +1,32 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Definition of `lastIndex` property value +es6id: 21.2.5.2.2 +info: | + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 12. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 13. If flags contains "u", let fullUnicode be true, else let fullUnicode be + false. + [...] + 16. Let e be r's endIndex value. + 17. If fullUnicode is true, then + a. e is an index into the Input character list, derived from S, matched + by matcher. Let eUTF be the smallest index into S that corresponds + to the character at element e of Input. If e is greater than or + equal to the length of Input, then eUTF is the number of code units + in S. + b. Let e be eUTF. + 18. If global is true or sticky is true, + a. Let setStatus be Set(R, "lastIndex", e, true). + b. ReturnIfAbrupt(setStatus). +---*/ + +var r = /./ug; +r.exec('𝌆'); +assert.sameValue(r.lastIndex, 2); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-lastindex-no-write.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-lastindex-no-write.js new file mode 100644 index 0000000000..5c353da177 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-lastindex-no-write.js @@ -0,0 +1,38 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Match failure with non-writable `lastIndex` property +es6id: 21.2.5.2 +info: | + 21.2.5.2 RegExp.prototype.exec ( string ) + + [...] + 6. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). + 2. ReturnIfAbrupt(setStatus). +---*/ + +var r = /c/y; +Object.defineProperty(r, 'lastIndex', { + writable: false +}); + +assert.throws(TypeError, function() { + r.exec('abc'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-lastindex.js new file mode 100644 index 0000000000..f0da74c13f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-lastindex.js @@ -0,0 +1,35 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Resets the `lastIndex` property to zero after a match failure +es6id: 21.2.5.2 +info: | + 21.2.5.2 RegExp.prototype.exec ( string ) + + [...] + 6. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). +---*/ + +var r = /c/y; +r.lastIndex = 1; + +r.exec('abc'); + +assert.sameValue(r.lastIndex, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-return.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-return.js new file mode 100644 index 0000000000..54767c3f16 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-fail-return.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Stops match execution after first match failure +es6id: 21.2.5.2 +info: | + 21.2.5.2 RegExp.prototype.exec ( string ) + + [...] + 6. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + [...] + 3. Return null. +---*/ + +assert.sameValue(/b/y.exec('ab'), null); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-init-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-init-lastindex.js new file mode 100644 index 0000000000..ca5b7ea03b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-init-lastindex.js @@ -0,0 +1,33 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Honors initial value of the `lastIndex` property +es6id: 21.2.5.2 +info: | + 21.2.5.2 RegExp.prototype.exec ( string ) + + [...] + 6. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + 9. ReturnIfAbrupt(sticky). + 10. If global is false and sticky is false, let lastIndex be 0. +---*/ + +var r = /./y; +var match; +r.lastIndex = 1; + +match = r.exec('abc'); + +assert(match !== null); +assert.sameValue(match.length, 1); +assert.sameValue(match[0], 'b'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-set-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-set-lastindex.js new file mode 100644 index 0000000000..ff58a9aa61 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/exec/y-set-lastindex.js @@ -0,0 +1,27 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Sets the `lastIndex` property to the end index of the first match +es6id: 21.2.5.2 +info: | + 21.2.5.2 RegExp.prototype.exec ( string ) + + [...] + 6. Return RegExpBuiltinExec(R, S). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 18. If global is true or sticky is true, + a. Let setStatus be Set(R, "lastIndex", e, true). +---*/ + +var r = /abc/y; +r.exec('abc'); + +assert.sameValue(r.lastIndex, 3); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-dotall.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-dotall.js new file mode 100644 index 0000000000..7b6afe6f54 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-dotall.js @@ -0,0 +1,47 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: Boolean coercion of the dotAll property +info: | + get RegExp.prototype.flags + + ... + 10. Let dotAll be ToBoolean(? Get(R, "dotAll")). + ... +features: [Symbol, regexp-dotall] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get; + +var r = {}; + +r.dotAll = undefined; +assert.sameValue(get.call(r), "", "dotAll: undefined"); + +r.dotAll = null; +assert.sameValue(get.call(r), "", "dotAll: null"); + +r.dotAll = NaN; +assert.sameValue(get.call(r), "", "dotAll: NaN"); + +r.dotAll = ""; +assert.sameValue(get.call(r), "", "dotAll: the empty string"); + +r.dotAll = "string"; +assert.sameValue(get.call(r), "s", "dotAll: string"); + +r.dotAll = 86; +assert.sameValue(get.call(r), "s", "dotAll: 86"); + +r.dotAll = Symbol(); +assert.sameValue(get.call(r), "s", "dotAll: Symbol()"); + +r.dotAll = []; +assert.sameValue(get.call(r), "s", "dotAll: []"); + +r.dotAll = {}; +assert.sameValue(get.call(r), "s", "dotAll: {}"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-global.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-global.js new file mode 100644 index 0000000000..1ad31f0647 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-global.js @@ -0,0 +1,47 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: Boolean coercion of the global property +info: | + get RegExp.prototype.flags + + ... + 4. Let global be ToBoolean(? Get(R, "global")). + ... +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get; + +var r = {}; + +r.global = undefined; +assert.sameValue(get.call(r), "", "global: undefined"); + +r.global = null; +assert.sameValue(get.call(r), "", "global: null"); + +r.global = NaN; +assert.sameValue(get.call(r), "", "global: NaN"); + +r.global = ""; +assert.sameValue(get.call(r), "", "global: the empty string"); + +r.global = "string"; +assert.sameValue(get.call(r), "g", "global: string"); + +r.global = 86; +assert.sameValue(get.call(r), "g", "global: 86"); + +r.global = Symbol(); +assert.sameValue(get.call(r), "g", "global: Symbol()"); + +r.global = []; +assert.sameValue(get.call(r), "g", "global: []"); + +r.global = {}; +assert.sameValue(get.call(r), "g", "global: {}"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-hasIndices.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-hasIndices.js new file mode 100644 index 0000000000..7e791b33a3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-hasIndices.js @@ -0,0 +1,47 @@ +// Copyright (C) 2021 Ron Buckton and Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: Boolean coercion of the hasIndices property +info: | + get RegExp.prototype.flags + + ... + 10. Let hasIndices be ToBoolean(? Get(R, "hasIndices")). + ... +features: [Symbol, regexp-match-indices] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get; + +var r = {}; + +r.hasIndices = undefined; +assert.sameValue(get.call(r), "", "hasIndices: undefined"); + +r.hasIndices = null; +assert.sameValue(get.call(r), "", "hasIndices: null"); + +r.hasIndices = NaN; +assert.sameValue(get.call(r), "", "hasIndices: NaN"); + +r.hasIndices = ""; +assert.sameValue(get.call(r), "", "hasIndices: the empty string"); + +r.hasIndices = "string"; +assert.sameValue(get.call(r), "d", "hasIndices: string"); + +r.hasIndices = 86; +assert.sameValue(get.call(r), "d", "hasIndices: 86"); + +r.hasIndices = Symbol(); +assert.sameValue(get.call(r), "d", "hasIndices: Symbol()"); + +r.hasIndices = []; +assert.sameValue(get.call(r), "d", "hasIndices: []"); + +r.hasIndices = {}; +assert.sameValue(get.call(r), "d", "hasIndices: {}"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-ignoreCase.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-ignoreCase.js new file mode 100644 index 0000000000..076b7feca2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-ignoreCase.js @@ -0,0 +1,47 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: Boolean coercion of the ignoreCase property +info: | + get RegExp.prototype.flags + + ... + 6. Let ignoreCase be ToBoolean(? Get(R, "ignoreCase")). + ... +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get; + +var r = {}; + +r.ignoreCase = undefined; +assert.sameValue(get.call(r), "", "ignoreCase: undefined"); + +r.ignoreCase = null; +assert.sameValue(get.call(r), "", "ignoreCase: null"); + +r.ignoreCase = NaN; +assert.sameValue(get.call(r), "", "ignoreCase: NaN"); + +r.ignoreCase = ""; +assert.sameValue(get.call(r), "", "ignoreCase: the empty string"); + +r.ignoreCase = "string"; +assert.sameValue(get.call(r), "i", "ignoreCase: string"); + +r.ignoreCase = 86; +assert.sameValue(get.call(r), "i", "ignoreCase: 86"); + +r.ignoreCase = Symbol(); +assert.sameValue(get.call(r), "i", "ignoreCase: Symbol()"); + +r.ignoreCase = []; +assert.sameValue(get.call(r), "i", "ignoreCase: []"); + +r.ignoreCase = {}; +assert.sameValue(get.call(r), "i", "ignoreCase: {}"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-multiline.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-multiline.js new file mode 100644 index 0000000000..976c94aa13 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-multiline.js @@ -0,0 +1,47 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: Boolean coercion of the multiline property +info: | + get RegExp.prototype.flags + + ... + 8. Let multiline be ToBoolean(? Get(R, "multiline")). + ... +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get; + +var r = {}; + +r.multiline = undefined; +assert.sameValue(get.call(r), "", "multiline: undefined"); + +r.multiline = null; +assert.sameValue(get.call(r), "", "multiline: null"); + +r.multiline = NaN; +assert.sameValue(get.call(r), "", "multiline: NaN"); + +r.multiline = ""; +assert.sameValue(get.call(r), "", "multiline: the empty string"); + +r.multiline = "string"; +assert.sameValue(get.call(r), "m", "multiline: string"); + +r.multiline = 86; +assert.sameValue(get.call(r), "m", "multiline: 86"); + +r.multiline = Symbol(); +assert.sameValue(get.call(r), "m", "multiline: Symbol()"); + +r.multiline = []; +assert.sameValue(get.call(r), "m", "multiline: []"); + +r.multiline = {}; +assert.sameValue(get.call(r), "m", "multiline: {}"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-sticky.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-sticky.js new file mode 100644 index 0000000000..6ebd0cf5e9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-sticky.js @@ -0,0 +1,47 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: Boolean coercion of the sticky property +info: | + get RegExp.prototype.flags + + ... + 14. Let sticky be ToBoolean(? Get(R, "sticky")). + ... +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get; + +var r = {}; + +r.sticky = undefined; +assert.sameValue(get.call(r), "", "sticky: undefined"); + +r.sticky = null; +assert.sameValue(get.call(r), "", "sticky: null"); + +r.sticky = NaN; +assert.sameValue(get.call(r), "", "sticky: NaN"); + +r.sticky = ""; +assert.sameValue(get.call(r), "", "sticky: the empty string"); + +r.sticky = "string"; +assert.sameValue(get.call(r), "y", "sticky: string"); + +r.sticky = 86; +assert.sameValue(get.call(r), "y", "sticky: 86"); + +r.sticky = Symbol(); +assert.sameValue(get.call(r), "y", "sticky: Symbol()"); + +r.sticky = []; +assert.sameValue(get.call(r), "y", "sticky: []"); + +r.sticky = {}; +assert.sameValue(get.call(r), "y", "sticky: {}"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-unicode.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-unicode.js new file mode 100644 index 0000000000..e6c2ed48a7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/coercion-unicode.js @@ -0,0 +1,47 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: Boolean coercion of the unicode property +info: | + get RegExp.prototype.flags + + ... + 12. Let unicode be ToBoolean(? Get(R, "unicode")). + ... +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get; + +var r = {}; + +r.unicode = undefined; +assert.sameValue(get.call(r), "", "unicode: undefined"); + +r.unicode = null; +assert.sameValue(get.call(r), "", "unicode: null"); + +r.unicode = NaN; +assert.sameValue(get.call(r), "", "unicode: NaN"); + +r.unicode = ""; +assert.sameValue(get.call(r), "", "unicode: the empty string"); + +r.unicode = "string"; +assert.sameValue(get.call(r), "u", "unicode: string"); + +r.unicode = 86; +assert.sameValue(get.call(r), "u", "unicode: 86"); + +r.unicode = Symbol(); +assert.sameValue(get.call(r), "u", "unicode: Symbol()"); + +r.unicode = []; +assert.sameValue(get.call(r), "u", "unicode: []"); + +r.unicode = {}; +assert.sameValue(get.call(r), "u", "unicode: {}"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/get-order.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/get-order.js new file mode 100644 index 0000000000..4b8e8acc52 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/get-order.js @@ -0,0 +1,51 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: Gets are performed in specified order +info: | + get RegExp.prototype.flags + + [...] + 4. let hasIndices be ToBoolean(? Get(R, "hasIndices")) + 6. Let global be ToBoolean(? Get(R, "global")). + 8. Let ignoreCase be ToBoolean(? Get(R, "ignoreCase")). + 10. Let multiline be ToBoolean(? Get(R, "multiline")). + 12. Let dotAll be ToBoolean(? Get(R, "dotAll")). + 14. Let unicode be ToBoolean(? Get(R, "unicode")). + 18. Let sticky be ToBoolean(? Get(R, "sticky")). +features: [regexp-dotall, regexp-match-indices] +---*/ + +var calls = ''; +var re = { + get hasIndices() { + calls += 'd'; + }, + get global() { + calls += 'g'; + }, + get ignoreCase() { + calls += 'i'; + }, + get multiline() { + calls += 'm'; + }, + get dotAll() { + calls += 's'; + }, + get unicode() { + calls += 'u'; + }, + get sticky() { + calls += 'y'; + }, +}; + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get; + +get.call(re); +assert.sameValue(calls, 'dgimsuy'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/length.js new file mode 100644 index 0000000000..6ceb16cd22 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/length.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: > + get RegExp.prototype.flags.length is 0. +info: | + get RegExp.prototype.flags + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get; + +verifyProperty(get, 'length', { + value: 0, + writable: false, + enumerable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/name.js new file mode 100644 index 0000000000..0ea73c639d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/name.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: > + get RegExp.prototype.flags.name is "get flags". +info: | + get RegExp.prototype.flags + + 17 ECMAScript Standard Built-in Objects + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. + + Unless otherwise specified, the name property of a built-in function object, + if it exists, has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get; + +verifyProperty(get, 'name', { + value: 'get flags', + writable: false, + enumerable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/prop-desc.js new file mode 100644 index 0000000000..ad0bf43336 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/prop-desc.js @@ -0,0 +1,26 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: > + get RegExp.prototype.flags property descriptor +info: | + get RegExp.prototype.flags + + RegExp.prototype.flags is an accessor property whose set accessor + function is undefined +includes: [propertyHelper.js] +---*/ + +var d = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags'); + +assert.sameValue(typeof d.get, 'function', 'typeof d.get'); +assert.sameValue(d.set, undefined, 'd.set'); + +verifyProperty(RegExp.prototype, 'flags', { + enumerable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/rethrow.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/rethrow.js new file mode 100644 index 0000000000..b6ca38a3f6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/rethrow.js @@ -0,0 +1,79 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: Rethrows exceptions raised in property gets +info: | + get RegExp.prototype.flags + + [...] + 4. let hasIndices be ToBoolean(? Get(R, "hasIndices")) + 6. Let global be ToBoolean(? Get(R, "global")). + 8. Let ignoreCase be ToBoolean(? Get(R, "ignoreCase")). + 10. Let multiline be ToBoolean(? Get(R, "multiline")). + 12. Let dotAll be ToBoolean(? Get(R, "dotAll")). + 14. Let unicode be ToBoolean(? Get(R, "unicode")). + 18. Let sticky be ToBoolean(? Get(R, "sticky")). +features: [regexp-dotall, regexp-match-indices] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get; + +assert.throws(Test262Error, function() { + get.call({ + get hasIndices() { + throw new Test262Error(); + }, + }); +}, 'Let hasIndices be ToBoolean(? Get(R, "hasIndices"))'); + +assert.throws(Test262Error, function() { + get.call({ + get global() { + throw new Test262Error(); + }, + }); +}, 'Let global be ToBoolean(? Get(R, "global"))'); + +assert.throws(Test262Error, function() { + get.call({ + get ignoreCase() { + throw new Test262Error(); + }, + }); +}, 'Let ignoreCase be ToBoolean(? Get(R, "ignoreCase"))'); + +assert.throws(Test262Error, function() { + get.call({ + get multiline() { + throw new Test262Error(); + }, + }); +}, 'Let multiline be ToBoolean(? Get(R, "multiline"))'); + +assert.throws(Test262Error, function() { + get.call({ + get dotAll() { + throw new Test262Error(); + }, + }); +}, 'Let dotAll be ToBoolean(? Get(R, "dotAll"))'); + +assert.throws(Test262Error, function() { + get.call({ + get unicode() { + throw new Test262Error(); + }, + }); +}, 'Let unicode be ToBoolean(? Get(R, "unicode"))'); + +assert.throws(Test262Error, function() { + get.call({ + get sticky() { + throw new Test262Error(); + }, + }); +}, 'Let sticky be ToBoolean(? Get(R, "sticky"))'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/return-order.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/return-order.js new file mode 100644 index 0000000000..437f27daeb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/return-order.js @@ -0,0 +1,29 @@ +// Copyright (C) 2017 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: > + RegExp.prototype.flags come in a single order, independent of source order +info: | + 4. Let global be ToBoolean(? Get(R, "global")). + 5. If global is true, append "g" as the last code unit of result. + 6. Let global be ToBoolean(? Get(R, "global")). + 7. If global is true, append "g" as the last code unit of result. + 8. Let ignoreCase be ToBoolean(? Get(R, "ignoreCase")). + 9. If ignoreCase is true, append "i" as the last code unit of result. + 10. Let multiline be ToBoolean(? Get(R, "multiline")). + 11. If multiline is true, append "m" as the last code unit of result. + 12. Let dotAll be ToBoolean(? Get(R, "dotAll")). + 13. If dotAll is true, append "s" as the last code unit of result. + 14. Let unicode be ToBoolean(? Get(R, "unicode")). + 15. If unicode is true, append "u" as the last code unit of result. + 16. Let sticky be ToBoolean(? Get(R, "sticky")). + 17. If sticky is true, append "y" as the last code unit of result. +features: [regexp-dotall, regexp-match-indices] +---*/ + +assert.sameValue(new RegExp("", "dgimsuy").flags, "dgimsuy", "dgimsuy => dgimsuy"); +assert.sameValue(new RegExp("", "yusmigd").flags, "dgimsuy", "yusmigd => dgimsuy"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-non-obj.js new file mode 100644 index 0000000000..305e729589 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-non-obj.js @@ -0,0 +1,43 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: A TypeError is thrown when the `this` value is not an Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get; + +assert.throws(TypeError, function() { + get.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + get.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + get.call(4); +}, 'number'); + +assert.throws(TypeError, function() { + get.call('string'); +}, 'string'); + +assert.throws(TypeError, function() { + get.call(false); +}, 'boolean'); + +assert.throws(TypeError, function() { + get.call(Symbol()); +}, 'symbol'); + +assert.throws(TypeError, function() { + get.call(4n); +}, 'bigint'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-regexp-prototype.js new file mode 100644 index 0000000000..a182860c73 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-regexp-prototype.js @@ -0,0 +1,29 @@ +// Copyright (C) 2016 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: > + Return "" when the `this` value is the RegExp.prototype object +info: | + 3. Let result be the empty String. + 4. Let global be ToBoolean(? Get(R, "global")). + 5. If global is true, append "g" as the last code unit of result. + 6. Let ignoreCase be ToBoolean(? Get(R, "ignoreCase")). + 7. If ignoreCase is true, append "i" as the last code unit of result. + 8. Let multiline be ToBoolean(? Get(R, "multiline")). + 9. If multiline is true, append "m" as the last code unit of result. + 10. Let dotAll be ToBoolean(? Get(R, "dotAll")). + 11. If dotAll is true, append "s" as the last code unit of result. + 12. Let unicode be ToBoolean(? Get(R, "unicode")). + 13. If unicode is true, append "u" as the last code unit of result. + 14. Let sticky be ToBoolean(? Get(R, "sticky")). + 15. If sticky is true, append "y" as the last code unit of result. + 16. Return result. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get; + +assert.sameValue(get.call(RegExp.prototype), ''); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-regexp.js b/js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-regexp.js new file mode 100644 index 0000000000..48ffaf6938 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/flags/this-val-regexp.js @@ -0,0 +1,38 @@ +// Copyright (C) 2017 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.flags +description: > + RegExp.prototype.flags returns RegExp flags as a string +info: | + 3. Let result be the empty String. + 4. Let global be ToBoolean(? Get(R, "global")). + 5. If global is true, append "g" as the last code unit of result. + 6. Let ignoreCase be ToBoolean(? Get(R, "ignoreCase")). + 7. If ignoreCase is true, append "i" as the last code unit of result. + 8. Let multiline be ToBoolean(? Get(R, "multiline")). + 9. If multiline is true, append "m" as the last code unit of result. + 10. Let dotAll be ToBoolean(? Get(R, "dotAll")). + 11. If dotAll is true, append "s" as the last code unit of result. + 12. Let unicode be ToBoolean(? Get(R, "unicode")). + 13. If unicode is true, append "u" as the last code unit of result. + 14. Let unicodeSets be ! ToBoolean(? Get(R, "unicodeSets")). + 15. If unicodeSets is true, append "v" as the last code unit of result. + 16. Let sticky be ToBoolean(? Get(R, "sticky")). + 17. If sticky is true, append "y" as the last code unit of result. + 18. Return result. +features: [regexp-dotall, regexp-match-indices, regexp-v-flag] +---*/ + +assert.sameValue(/./.flags, '', 'no flags'); +assert.sameValue(/./d.flags, 'd', 'hasIndices'); +assert.sameValue(/./g.flags, 'g', 'global'); +assert.sameValue(/./i.flags, 'i', 'ignoreCase'); +assert.sameValue(/./m.flags, 'm', 'multiline'); +assert.sameValue(/./s.flags, 's', 'dotAll'); +assert.sameValue(/./u.flags, 'u', 'unicode'); +assert.sameValue(/./v.flags, 'v', 'unicodeSets'); +assert.sameValue(/./y.flags, 'y', 'sticky'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/15.10.7.2-2.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/15.10.7.2-2.js new file mode 100644 index 0000000000..c615203c44 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/15.10.7.2-2.js @@ -0,0 +1,19 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.7.2-2 +description: > + RegExp.prototype.global is an accessor property whose set accessor + function is undefined +---*/ + + var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, 'global'); + + +assert.sameValue(typeof desc.get, 'function', 'typeof desc.get'); +assert.sameValue(desc.set, undefined, 'desc.set'); +assert.sameValue(desc.enumerable, false, 'desc.enumerable'); +assert.sameValue(desc.configurable, true, 'desc.configurable'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A10.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A10.js new file mode 100644 index 0000000000..9f1722c642 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A10.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype global property does not have a set accessor +es5id: 15.10.7.2_A10 +description: Checking if varying the global property fails +includes: [propertyHelper.js] +---*/ + +var __re = RegExp.prototype; + +assert.sameValue(__re.hasOwnProperty('global'), true, '__re.hasOwnProperty(\'global\') must return true'); + +var __sample = /^|^/; +var __obj = __sample.global; + +verifyNotWritable(__sample, "global", "global", "shifted"); + +assert.sameValue(__sample.global, __obj, 'The value of __sample.global is expected to equal the value of __obj'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A8.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A8.js new file mode 100644 index 0000000000..c2f69b59ae --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A8.js @@ -0,0 +1,33 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype global property has the attribute DontEnum +es5id: 15.10.7.2_A8 +description: > + Checking if enumerating the global property of RegExp.prototype + fails +---*/ + +var __re = RegExp.prototype; + +assert.sameValue(__re.hasOwnProperty('global'), true, '__re.hasOwnProperty(\'global\') must return true'); + +assert.sameValue( + __re.propertyIsEnumerable('global'), + false, + '__re.propertyIsEnumerable(\'global\') must return false' +); + +var count = 0 +for (var p in __re){ + if (p==="global") { + count++ + } +} + +assert.sameValue(count, 0, 'The value of count is expected to be 0'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A9.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A9.js new file mode 100644 index 0000000000..2a2f0f14c0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/S15.10.7.2_A9.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The RegExp.prototype global property does not have the attribute + DontDelete +es5id: 15.10.7.2_A9 +description: Checking if deleting the global property succeeds +---*/ + +var __re = RegExp.prototype; + +assert.sameValue(__re.hasOwnProperty('global'), true, '__re.hasOwnProperty(\'global\') must return true'); +assert.sameValue(delete __re.global, true, 'The value of `delete __re.global` is expected to be true'); +assert.sameValue(__re.hasOwnProperty('global'), false, '__re.hasOwnProperty(\'global\') must return false'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/cross-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/cross-realm.js new file mode 100644 index 0000000000..b903f21996 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/cross-realm.js @@ -0,0 +1,28 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.global +description: A TypeError is thrown when the "this" value is an invalid cross-realm Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +features: [cross-realm] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'global').get; +var other = $262.createRealm().global; +var otherRegExpProto = other.RegExp.prototype; +var otherRegExpGetter = Object.getOwnPropertyDescriptor(otherRegExpProto, 'global').get; + +assert.throws(TypeError, function() { + get.call(otherRegExpProto); +}, 'cross-realm RegExp.prototype'); + +assert.throws(other.TypeError, function() { + otherRegExpGetter.call(RegExp.prototype); +}, 'cross-realm RegExp.prototype getter method against primary realm RegExp.prototype'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/length.js new file mode 100644 index 0000000000..d2802441f3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/length.js @@ -0,0 +1,33 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.4 +description: > + get RegExp.prototype.global.length is 0. +info: | + get RegExp.prototype.global + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "global"); + +assert.sameValue(desc.get.length, 0); + +verifyNotEnumerable(desc.get, "length"); +verifyNotWritable(desc.get, "length"); +verifyConfigurable(desc.get, "length"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/name.js new file mode 100644 index 0000000000..ba8ace9def --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/name.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.4 +description: > + RegExp.prototype.global name +info: | + 17 ECMAScript Standard Built-in Objects + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. +includes: [propertyHelper.js] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'global'); + +assert.sameValue( + descriptor.get.name, + 'get global' +); + +verifyNotEnumerable(descriptor.get, 'name'); +verifyNotWritable(descriptor.get, 'name'); +verifyConfigurable(descriptor.get, 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-invalid-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-invalid-obj.js new file mode 100644 index 0000000000..3e51f470cd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-invalid-obj.js @@ -0,0 +1,32 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.global +description: A TypeError is thrown when the "this" value is an invalid Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'global').get; + +assert.throws(TypeError, function() { + get.call({}); +}, 'ordinary object'); + +assert.throws(TypeError, function() { + get.call([]); +}, 'array exotic object'); + +assert.throws(TypeError, function() { + get.call(arguments); +}, 'arguments object'); + +assert.throws(TypeError, function() { + get.call(() => {}); +}, 'function object'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-non-obj.js new file mode 100644 index 0000000000..daf345583d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-non-obj.js @@ -0,0 +1,43 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.global +description: A TypeError is thrown when the "this" value is not an Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'global').get; +var symbol = Symbol(); + +assert.throws(TypeError, function() { + get.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + get.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + get.call(3); +}, 'number'); + +assert.throws(TypeError, function() { + get.call('string'); +}, 'string'); + +assert.throws(TypeError, function() { + get.call(true); +}, 'boolean'); + +assert.throws(TypeError, function() { + get.call(symbol); +}, 'symbol'); + +assert.throws(TypeError, function() { + get.call(4n); +}, 'bigint'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-regexp-prototype.js new file mode 100644 index 0000000000..9d899b1021 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/global/this-val-regexp-prototype.js @@ -0,0 +1,19 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.global +description: > + Return value of `undefined` when the "this" value is the RegExp prototype + object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'global').get; + +assert.sameValue(get.call(RegExp.prototype), undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/cross-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/cross-realm.js new file mode 100644 index 0000000000..93d85a4160 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/cross-realm.js @@ -0,0 +1,31 @@ +// Copyright (C) 2021 Ron Buckton and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.hasindices +description: Invoked on a cross-realm object +info: | + get RegExp.prototype.hasIndices + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +features: [regexp-match-indices, cross-realm] +---*/ + +var hasIndices = Object.getOwnPropertyDescriptor(RegExp.prototype, 'hasIndices').get; +var other = $262.createRealm().global; +var otherRegExpProto = other.RegExp.prototype; +var otherRegExpGetter = Object.getOwnPropertyDescriptor(otherRegExpProto, 'hasIndices').get; + +assert.throws(TypeError, function() { + hasIndices.call(otherRegExpProto); +}, 'cross-realm RegExp.prototype'); + +assert.throws(other.TypeError, function() { + otherRegExpGetter.call(RegExp.prototype); +}, 'cross-realm RegExp.prototype getter method against primary realm RegExp.prototype'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/length.js new file mode 100644 index 0000000000..2a6c54f440 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/length.js @@ -0,0 +1,36 @@ +// Copyright (C) 2021 Ron Buckton and André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.hasindices +description: > + get RegExp.prototype.hasIndices.length is 0. +info: | + get RegExp.prototype.hasIndices + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [regexp-match-indices] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "hasIndices"); + +assert.sameValue(desc.get.length, 0); + +verifyProperty(desc.get, "length", { + enumerable: false, + writable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/name.js new file mode 100644 index 0000000000..9649fd3133 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/name.js @@ -0,0 +1,29 @@ +// Copyright (C) 2021 Ron buckton and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.hasindices +description: > + RegExp.prototype.hasIndices name +info: | + 17 ECMAScript Standard Built-in Objects + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. +includes: [propertyHelper.js] +features: [regexp-match-indices] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "hasIndices"); + +assert.sameValue( + desc.get.name, + "get hasIndices" +); + +verifyProperty(desc.get, "name", { + enumerable: false, + writable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/prop-desc.js new file mode 100644 index 0000000000..27a593b5c5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/prop-desc.js @@ -0,0 +1,31 @@ +// Copyright (C) 2017 Ron Buckton and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.hasIndices +description: > + `pending` property descriptor +info: | + RegExp.prototype.hasIndices is an accessor property whose set accessor + function is undefined. + + 17 ECMAScript Standard Built-in Objects + + Every accessor property described in clauses 18 through 26 and in Annex B.2 has the attributes + { [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified. If only a get + accessor function is described, the set accessor function is the default value, undefined. If + only a set accessor is described the get accessor is the default value, undefined. +includes: [propertyHelper.js] +features: [regexp-match-indices] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "hasIndices"); + +assert.sameValue(desc.set, undefined); +assert.sameValue(typeof desc.get, "function"); + +verifyProperty(RegExp.prototype, "hasIndices", { + enumerable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-invalid-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-invalid-obj.js new file mode 100644 index 0000000000..44bb0c8880 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-invalid-obj.js @@ -0,0 +1,36 @@ +// Copyright (C) 2021 Ron Buckton and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.hasindices +description: Invoked on an object without an [[OriginalFlags]] internal slot +info: | + get RegExp.prototype.hasIndices + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +features: [regexp-match-indices] +---*/ + +var hasIndices = Object.getOwnPropertyDescriptor(RegExp.prototype, 'hasIndices').get; + +assert.throws(TypeError, function() { + hasIndices.call({}); +}, 'ordinary object'); + +assert.throws(TypeError, function() { + hasIndices.call([]); +}, 'array exotic object'); + +assert.throws(TypeError, function() { + hasIndices.call(arguments); +}, 'arguments object'); + +assert.throws(TypeError, function() { + hasIndices.call(() => {}); +}, 'function object'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-non-obj.js new file mode 100644 index 0000000000..ac6f7d78e3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-non-obj.js @@ -0,0 +1,46 @@ +// Copyright (C) 2021 Ron Buckton and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.hasindices +description: > + `hasIndices` accessor invoked on a non-object value +info: | + get RegExp.prototype.hasIndices + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol, regexp-match-indices] +---*/ + +var hasIndices = Object.getOwnPropertyDescriptor(RegExp.prototype, "hasIndices").get; + +assert.throws(TypeError, function() { + hasIndices.call(undefined); +}, "undefined"); + +assert.throws(TypeError, function() { + hasIndices.call(null); +}, "null"); + +assert.throws(TypeError, function() { + hasIndices.call(true); +}, "true"); + +assert.throws(TypeError, function() { + hasIndices.call("string"); +}, "string"); + +assert.throws(TypeError, function() { + hasIndices.call(Symbol("s")); +}, "symbol"); + +assert.throws(TypeError, function() { + hasIndices.call(4); +}, "number"); + +assert.throws(TypeError, function() { + hasIndices.call(4n); +}, "bigint"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-regexp-prototype.js new file mode 100644 index 0000000000..8bdd4394c6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-regexp-prototype.js @@ -0,0 +1,21 @@ +// Copyright (C) 2021 Ron Buckton and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.hasIndices +description: > + Return value of `undefined` when the "this" value is the RegExp prototype + object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. +features: [regexp-match-indices] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "hasIndices").get; + +assert.sameValue(get.call(RegExp.prototype), undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-regexp.js b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-regexp.js new file mode 100644 index 0000000000..b029c46a47 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/hasIndices/this-val-regexp.js @@ -0,0 +1,49 @@ +// Copyright (C) 2021 Ron Buckton and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.hasindices +description: > + `hasIndices` accessor function invoked on a RegExp instance +info: | + 21.2.5.12 get RegExp.prototype.hasIndices + + 4. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 5. If flags contains the code unit "s", return true. + 6. Return false. +features: [regexp-match-indices] +---*/ + +assert.sameValue(/./.hasIndices, false, "/./.hasIndices"); +assert.sameValue(/./i.hasIndices, false, "/./i.hasIndices"); +assert.sameValue(/./g.hasIndices, false, "/./g.hasIndices"); +assert.sameValue(/./y.hasIndices, false, "/./y.hasIndices"); +assert.sameValue(/./m.hasIndices, false, "/./m.hasIndices"); +assert.sameValue(/./s.hasIndices, false, "/./s.hasIndices"); +assert.sameValue(/./u.hasIndices, false, "/./u.hasIndices"); + +assert.sameValue(/./d.hasIndices, true, "/./d.hasIndices"); +assert.sameValue(/./di.hasIndices, true, "/./di.hasIndices"); +assert.sameValue(/./dg.hasIndices, true, "/./dg.hasIndices"); +assert.sameValue(/./dy.hasIndices, true, "/./dy.hasIndices"); +assert.sameValue(/./dm.hasIndices, true, "/./dm.hasIndices"); +assert.sameValue(/./ds.hasIndices, true, "/./ds.hasIndices"); +assert.sameValue(/./du.hasIndices, true, "/./du.hasIndices"); + +assert.sameValue(new RegExp(".", "").hasIndices, false, "new RegExp('.', '').hasIndices"); +assert.sameValue(new RegExp(".", "i").hasIndices, false, "new RegExp('.', 'i').hasIndices"); +assert.sameValue(new RegExp(".", "g").hasIndices, false, "new RegExp('.', 'g').hasIndices"); +assert.sameValue(new RegExp(".", "y").hasIndices, false, "new RegExp('.', 'y').hasIndices"); +assert.sameValue(new RegExp(".", "m").hasIndices, false, "new RegExp('.', 'm').hasIndices"); +assert.sameValue(new RegExp(".", "s").hasIndices, false, "new RegExp('.', 's').hasIndices"); +assert.sameValue(new RegExp(".", "u").hasIndices, false, "new RegExp('.', 'u').hasIndices"); + +assert.sameValue(new RegExp(".", "d").hasIndices, true, "new RegExp('.', 'd').hasIndices"); +assert.sameValue(new RegExp(".", "di").hasIndices, true, "new RegExp('.', 'di').hasIndices"); +assert.sameValue(new RegExp(".", "dg").hasIndices, true, "new RegExp('.', 'dg').hasIndices"); +assert.sameValue(new RegExp(".", "dy").hasIndices, true, "new RegExp('.', 'dy').hasIndices"); +assert.sameValue(new RegExp(".", "dm").hasIndices, true, "new RegExp('.', 'dm').hasIndices"); +assert.sameValue(new RegExp(".", "ds").hasIndices, true, "new RegExp('.', 'ds').hasIndices"); +assert.sameValue(new RegExp(".", "du").hasIndices, true, "new RegExp('.', 'du').hasIndices"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/15.10.7.3-2.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/15.10.7.3-2.js new file mode 100644 index 0000000000..125ec41eb4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/15.10.7.3-2.js @@ -0,0 +1,19 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.7.3-2 +description: > + RegExp.prototype.ignoreCase is an accessor property whose set + accessor function is undefined +---*/ + + var d = Object.getOwnPropertyDescriptor(RegExp.prototype, 'ignoreCase'); + + +assert.sameValue(typeof d.get, 'function', 'typeof d.get'); +assert.sameValue(d.set, undefined, 'd.set'); +assert.sameValue(d.enumerable, false, 'd.enumerable'); +assert.sameValue(d.configurable, true, 'd.configurable'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A10.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A10.js new file mode 100644 index 0000000000..17c3ecb5bb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A10.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype ignoreCase property does not have a set accessor +es5id: 15.10.7.3_A10 +description: Checking if varying the ignoreCase property fails +includes: [propertyHelper.js] +---*/ + +var __re = RegExp.prototype; + +assert.sameValue(__re.hasOwnProperty('ignoreCase'), true, '__re.hasOwnProperty(\'ignoreCase\') must return true'); + +var __sample = /a|b|c/; +var __obj = __sample.ignoreCase; + +verifyNotWritable(__sample, "ignoreCase", "ignoreCase", "shifted"); + +assert.sameValue( + __sample.ignoreCase, + __obj, + 'The value of __sample.ignoreCase is expected to equal the value of __obj' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A8.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A8.js new file mode 100644 index 0000000000..a70df8a51e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A8.js @@ -0,0 +1,33 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype ignoreCase property has the attribute DontEnum +es5id: 15.10.7.3_A8 +description: > + Checking if enumerating the ignoreCase property of + RegExp.prototype fails +---*/ + +var __re = RegExp.prototype; + +assert.sameValue(__re.hasOwnProperty('ignoreCase'), true, '__re.hasOwnProperty(\'ignoreCase\') must return true'); + +assert.sameValue( + __re.propertyIsEnumerable('ignoreCase'), + false, + '__re.propertyIsEnumerable(\'ignoreCase\') must return false' +); + +var count = 0 +for (var p in __re){ + if (p==="ignoreCase") { + count++ + } +} + +assert.sameValue(count, 0, 'The value of count is expected to be 0'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A9.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A9.js new file mode 100644 index 0000000000..70edcce662 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/S15.10.7.3_A9.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The RegExp.prototype ignoreCase property does not have the attribute + DontDelete +es5id: 15.10.7.3_A9 +description: Checking if deleting the ignoreCase property succeeds +---*/ + +var __re = RegExp.prototype; + +assert.sameValue(__re.hasOwnProperty('ignoreCase'), true, '__re.hasOwnProperty(\'ignoreCase\') must return true'); +assert.sameValue(delete __re.ignoreCase, true, 'The value of `delete __re.ignoreCase` is expected to be true'); +assert.sameValue(__re.hasOwnProperty('ignoreCase'), false, '__re.hasOwnProperty(\'ignoreCase\') must return false'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/cross-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/cross-realm.js new file mode 100644 index 0000000000..8a56805273 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/cross-realm.js @@ -0,0 +1,28 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.ignorecase +description: A TypeError is thrown when the "this" value is an invalid cross-realm Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +features: [cross-realm] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'ignoreCase').get; +var other = $262.createRealm().global; +var otherRegExpProto = other.RegExp.prototype; +var otherRegExpGetter = Object.getOwnPropertyDescriptor(otherRegExpProto, 'ignoreCase').get; + +assert.throws(TypeError, function() { + get.call(otherRegExpProto); +}, 'cross-realm RegExp.prototype'); + +assert.throws(other.TypeError, function() { + otherRegExpGetter.call(RegExp.prototype); +}, 'cross-realm RegExp.prototype getter method against primary realm RegExp.prototype'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/length.js new file mode 100644 index 0000000000..3707ec5ad1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/length.js @@ -0,0 +1,33 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.5 +description: > + get RegExp.prototype.ignoreCase.length is 0. +info: | + get RegExp.prototype.ignoreCase + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "ignoreCase"); + +assert.sameValue(desc.get.length, 0); + +verifyNotEnumerable(desc.get, "length"); +verifyNotWritable(desc.get, "length"); +verifyConfigurable(desc.get, "length"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/name.js new file mode 100644 index 0000000000..1f3894cbbe --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/name.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.5 +description: > + RegExp.prototype.ignoreCase name +info: | + 17 ECMAScript Standard Built-in Objects + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. +includes: [propertyHelper.js] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'ignoreCase'); + +assert.sameValue( + descriptor.get.name, + 'get ignoreCase' +); + +verifyNotEnumerable(descriptor.get, 'name'); +verifyNotWritable(descriptor.get, 'name'); +verifyConfigurable(descriptor.get, 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-invalid-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-invalid-obj.js new file mode 100644 index 0000000000..4ffb9390e5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-invalid-obj.js @@ -0,0 +1,32 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.ignorecase +description: A TypeError is thrown when the "this" value is an invalid Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'ignoreCase').get; + +assert.throws(TypeError, function() { + get.call({}); +}, 'ordinary object'); + +assert.throws(TypeError, function() { + get.call([]); +}, 'array exotic object'); + +assert.throws(TypeError, function() { + get.call(arguments); +}, 'arguments object'); + +assert.throws(TypeError, function() { + get.call(() => {}); +}, 'function object'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-non-obj.js new file mode 100644 index 0000000000..00ac21cc25 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-non-obj.js @@ -0,0 +1,43 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.ignorecase +description: A TypeError is thrown when the "this" value is not an Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'ignoreCase').get; +var symbol = Symbol(); + +assert.throws(TypeError, function() { + get.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + get.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + get.call(3); +}, 'number'); + +assert.throws(TypeError, function() { + get.call('string'); +}, 'string'); + +assert.throws(TypeError, function() { + get.call(true); +}, 'boolean'); + +assert.throws(TypeError, function() { + get.call(symbol); +}, 'symbol'); + +assert.throws(TypeError, function() { + get.call(4n); +}, 'bigint'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-regexp-prototype.js new file mode 100644 index 0000000000..51157d86b0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/ignoreCase/this-val-regexp-prototype.js @@ -0,0 +1,19 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.ignorecase +description: > + Return value of `undefined` when the "this" value is the RegExp prototype + object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'ignoreCase').get; + +assert.sameValue(get.call(RegExp.prototype), undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/15.10.7.4-2.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/15.10.7.4-2.js new file mode 100644 index 0000000000..d554e1046c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/15.10.7.4-2.js @@ -0,0 +1,19 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es5id: 15.10.7.4-2 +description: > + RegExp.prototype.multiline is an accessor property whose set + accessor function is undefined +---*/ + + var d = Object.getOwnPropertyDescriptor(RegExp.prototype, 'multiline'); + + +assert.sameValue(typeof d.get, 'function', 'typeof d.get'); +assert.sameValue(d.set, undefined, 'd.set'); +assert.sameValue(d.enumerable, false, 'd.enumerable'); +assert.sameValue(d.configurable, true, 'd.configurable'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A10.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A10.js new file mode 100644 index 0000000000..b5d5653e08 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A10.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype multiline property does not have a set accessor +es5id: 15.10.7.4_A10 +description: Checking if varying the multiline property fails +includes: [propertyHelper.js] +---*/ + +var __re = RegExp.prototype; + +assert.sameValue(__re.hasOwnProperty('multiline'), true, '__re.hasOwnProperty(\'multiline\') must return true'); + +var __sample = /\n/; +var __obj = __sample.multiline; + +verifyNotWritable(__sample, "multiline", "multiline", "shifted"); + +assert.sameValue(__sample.multiline, __obj, 'The value of __sample.multiline is expected to equal the value of __obj'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A8.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A8.js new file mode 100644 index 0000000000..f4a2868a7b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A8.js @@ -0,0 +1,33 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype multiline property has the attribute DontEnum +es5id: 15.10.7.4_A8 +description: > + Checking if enumerating the multiline property of RegExp.prototype + fails +---*/ + +var __re = RegExp.prototype; + +assert.sameValue(__re.hasOwnProperty('multiline'), true, '__re.hasOwnProperty(\'multiline\') must return true'); + +assert.sameValue( + __re.propertyIsEnumerable('multiline'), + false, + '__re.propertyIsEnumerable(\'multiline\') must return false' +); + +var count = 0 +for (var p in __re){ + if (p==="multiline") { + count++ + } +} + +assert.sameValue(count, 0, 'The value of count is expected to be 0'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A9.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A9.js new file mode 100644 index 0000000000..89a576a978 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/S15.10.7.4_A9.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The RegExp.prototype multiline property does not have the attribute + DontDelete +es5id: 15.10.7.4_A9 +description: Checking if deleting the multiline property succeeds +---*/ + +var __re = RegExp.prototype; + +assert.sameValue(__re.hasOwnProperty('multiline'), true, '__re.hasOwnProperty(\'multiline\') must return true'); +assert.sameValue(delete __re.multiline, true, 'The value of `delete __re.multiline` is expected to be true'); +assert.sameValue(__re.hasOwnProperty('multiline'), false, '__re.hasOwnProperty(\'multiline\') must return false'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/cross-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/cross-realm.js new file mode 100644 index 0000000000..ef0b1bb2e7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/cross-realm.js @@ -0,0 +1,28 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.multiline +description: A TypeError is thrown when the "this" value is an invalid cross-realm Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +features: [cross-realm] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'multiline').get; +var other = $262.createRealm().global; +var otherRegExpProto = other.RegExp.prototype; +var otherRegExpGetter = Object.getOwnPropertyDescriptor(otherRegExpProto, 'multiline').get; + +assert.throws(TypeError, function() { + get.call(otherRegExpProto); +}, 'cross-realm RegExp.prototype'); + +assert.throws(other.TypeError, function() { + otherRegExpGetter.call(RegExp.prototype); +}, 'cross-realm RegExp.prototype getter method against primary realm RegExp.prototype'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/length.js new file mode 100644 index 0000000000..08105090e0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/length.js @@ -0,0 +1,33 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.7 +description: > + get RegExp.prototype.multiline.length is 0. +info: | + get RegExp.prototype.multiline + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "multiline"); + +assert.sameValue(desc.get.length, 0); + +verifyNotEnumerable(desc.get, "length"); +verifyNotWritable(desc.get, "length"); +verifyConfigurable(desc.get, "length"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/name.js new file mode 100644 index 0000000000..674dec6f70 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/name.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.7 +description: > + RegExp.prototype.multiline name +info: | + 17 ECMAScript Standard Built-in Objects + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. +includes: [propertyHelper.js] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'multiline'); + +assert.sameValue( + descriptor.get.name, + 'get multiline' +); + +verifyNotEnumerable(descriptor.get, 'name'); +verifyNotWritable(descriptor.get, 'name'); +verifyConfigurable(descriptor.get, 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-invalid-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-invalid-obj.js new file mode 100644 index 0000000000..f2d3a6e69b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-invalid-obj.js @@ -0,0 +1,32 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.multiline +description: A TypeError is thrown when the "this" value is an invalid Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'multiline').get; + +assert.throws(TypeError, function() { + get.call({}); +}, 'ordinary object'); + +assert.throws(TypeError, function() { + get.call([]); +}, 'array exotic object'); + +assert.throws(TypeError, function() { + get.call(arguments); +}, 'arguments object'); + +assert.throws(TypeError, function() { + get.call(() => {}); +}, 'function object'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-non-obj.js new file mode 100644 index 0000000000..4ae30ee5b3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-non-obj.js @@ -0,0 +1,43 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.multiline +description: A TypeError is thrown when the "this" value is not an Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'multiline').get; +var symbol = Symbol(); + +assert.throws(TypeError, function() { + get.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + get.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + get.call(3); +}, 'number'); + +assert.throws(TypeError, function() { + get.call('string'); +}, 'string'); + +assert.throws(TypeError, function() { + get.call(true); +}, 'boolean'); + +assert.throws(TypeError, function() { + get.call(symbol); +}, 'symbol'); + +assert.throws(TypeError, function() { + get.call(4n); +}, 'bigint'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-regexp-prototype.js new file mode 100644 index 0000000000..bbc533b46a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/multiline/this-val-regexp-prototype.js @@ -0,0 +1,19 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.multiline +description: > + Return value of `undefined` when the "this" value is the RegExp prototype + object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'multiline').get; + +assert.sameValue(get.call(RegExp.prototype), undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/no-regexp-matcher.js b/js/src/tests/test262/built-ins/RegExp/prototype/no-regexp-matcher.js new file mode 100644 index 0000000000..27fc38ac8a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/no-regexp-matcher.js @@ -0,0 +1,24 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-properties-of-the-regexp-prototype-object +description: > + The RegExp prototype object does not have a [[RegExpMatcher]] internal slot +info: | + The RegExp prototype object is an ordinary object. It is not a RegExp + instance and does not have a [[RegExpMatcher]] internal slot or any of the + other internal slots of RegExp instance objects. + + 21.2.5.2 RegExp.prototype.exec + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have a [[RegExpMatcher]] internal slot, throw a TypeError + exception. +---*/ + +assert.throws(TypeError, function() { + RegExp.prototype.exec(''); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/cross-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/cross-realm.js new file mode 100644 index 0000000000..faf9123f36 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/cross-realm.js @@ -0,0 +1,28 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.source +description: A TypeError is thrown when the "this" value is an invalid cross-realm Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return "(?:)". + b. Otherwise, throw a TypeError exception. +features: [cross-realm] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'source').get; +var other = $262.createRealm().global; +var otherRegExpProto = other.RegExp.prototype; +var otherRegExpGetter = Object.getOwnPropertyDescriptor(otherRegExpProto, 'source').get; + +assert.throws(TypeError, function() { + get.call(otherRegExpProto); +}, 'cross-realm RegExp.prototype'); + +assert.throws(other.TypeError, function() { + otherRegExpGetter.call(RegExp.prototype); +}, 'cross-realm RegExp.prototype getter method against primary realm RegExp.prototype'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/length.js new file mode 100644 index 0000000000..522f81227d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/length.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.source +description: > + get RegExp.prototype.source.length is 0. +info: | + get RegExp.prototype.source + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'source').get; + +verifyProperty(get, 'length', { + value: 0, + writable: false, + enumerable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/name.js new file mode 100644 index 0000000000..501762bb55 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/name.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.source +description: > + get RegExp.prototype.source.name is "get source". +info: | + get RegExp.prototype.source + + 17 ECMAScript Standard Built-in Objects + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. + + Unless otherwise specified, the name property of a built-in function object, + if it exists, has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'source').get; + +verifyProperty(get, 'name', { + value: 'get source', + writable: false, + enumerable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/prop-desc.js new file mode 100644 index 0000000000..00d66114f4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/prop-desc.js @@ -0,0 +1,22 @@ +// Copyright (c) 2012 Ecma International. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.source +description: > + RegExp.prototype.source is an accessor property whose set accessor + function is undefined +includes: [propertyHelper.js] +---*/ + +var d = Object.getOwnPropertyDescriptor(RegExp.prototype, 'source'); + +assert.sameValue(typeof d.get, 'function', 'typeof d.get'); +assert.sameValue(d.set, undefined, 'd.set'); + +verifyProperty(RegExp.prototype, 'source', { + enumerable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-invalid-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-invalid-obj.js new file mode 100644 index 0000000000..862a2d354e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-invalid-obj.js @@ -0,0 +1,32 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.source +description: A TypeError is thrown when the "this" value is an invalid Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return "(?:)". + b. Otherwise, throw a TypeError exception. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'source').get; + +assert.throws(TypeError, function() { + get.call({}); +}, 'ordinary object'); + +assert.throws(TypeError, function() { + get.call([]); +}, 'array exotic object'); + +assert.throws(TypeError, function() { + get.call(arguments); +}, 'arguments object'); + +assert.throws(TypeError, function() { + get.call(() => {}); +}, 'function object'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-non-obj.js new file mode 100644 index 0000000000..9b0cbec7f7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-non-obj.js @@ -0,0 +1,43 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.source +description: A TypeError is thrown when the "this" value is not an Object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'source').get; +var symbol = Symbol(); + +assert.throws(TypeError, function() { + get.call(undefined); +}, 'undefined'); + +assert.throws(TypeError, function() { + get.call(null); +}, 'null'); + +assert.throws(TypeError, function() { + get.call(3); +}, 'number'); + +assert.throws(TypeError, function() { + get.call('string'); +}, 'string'); + +assert.throws(TypeError, function() { + get.call(true); +}, 'boolean'); + +assert.throws(TypeError, function() { + get.call(symbol); +}, 'symbol'); + +assert.throws(TypeError, function() { + get.call(4n); +}, 'bigint'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-regexp-prototype.js new file mode 100644 index 0000000000..ca630d5f12 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/this-val-regexp-prototype.js @@ -0,0 +1,18 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.source +description: > + Return "(?:)" when the `this` value is the RegExp.prototype object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return "(?:)". +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'source').get; + +assert.sameValue(get.call(RegExp.prototype), '(?:)'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/value-empty.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/value-empty.js new file mode 100644 index 0000000000..50dbaf263d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/value-empty.js @@ -0,0 +1,26 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.source +description: > + Return value can be used to create an equivalent RegExp when the + [[OriginalSource]] internal slot is the empty string + + 21.2.3.2.4 Runtime Semantics: EscapeRegExpPattern + + [...] the internal procedure that would result from evaluating S as a + Pattern[~U] (Pattern[+U] if F contains "u") must behave identically to the + internal procedure given by the constructed object's [[RegExpMatcher]] + internal slot. +info: | + [...] + 5. Let src be R.[[OriginalSource]]. + 6. Let flags be R.[[OriginalFlags]]. + 7. Return EscapeRegExpPattern(src, flags). +---*/ + +var re = eval('/' + new RegExp('').source + '/'); + +assert.sameValue(re.test(''), true); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/value-line-terminator.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/value-line-terminator.js new file mode 100644 index 0000000000..bc52096f4d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/value-line-terminator.js @@ -0,0 +1,30 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.source +description: > + Return value can be used to create an equivalent RegExp when the + [[OriginalSource]] internal slot contains a LineTerminator +info: | + [...] + 5. Let src be R.[[OriginalSource]]. + 6. Let flags be R.[[OriginalFlags]]. + 7. Return EscapeRegExpPattern(src, flags). + + 21.2.3.2.4 Runtime Semantics: EscapeRegExpPattern + + [...] the internal procedure that would result from evaluating S as a + Pattern[~U] (Pattern[+U] if F contains "u") must behave identically to the + internal procedure given by the constructed object's [[RegExpMatcher]] + internal slot. +---*/ + +var re = eval('/' + new RegExp('\n').source + '/'); + +assert.sameValue(re.test('\n'), true, 'input: "\\n"'); +assert.sameValue(re.test('_\n_'), true, 'input: "_\\n_"'); +assert.sameValue(re.test('\\n'), false, 'input: "\\\\n"'); +assert.sameValue(re.test('\r'), false, 'input: "\\r"'); +assert.sameValue(re.test('n'), false, 'input: "n"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/value-slash.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/value-slash.js new file mode 100644 index 0000000000..e0a6f23492 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/value-slash.js @@ -0,0 +1,28 @@ +// Copyright (C) 2016 Aleksey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.source +description: Return value can be used to create an equivalent RegExp +info: | + [...] + 5. Let src be R.[[OriginalSource]]. + 6. Let flags be R.[[OriginalFlags]]. + 7. Return EscapeRegExpPattern(src, flags). + + 21.2.3.2.4 Runtime Semantics: EscapeRegExpPattern + + [...] The code points / or any LineTerminator occurring in the pattern + shall be escaped in S as necessary to ensure that the String value + formed by concatenating the Strings "/", S, "/", and F can be parsed + (in an appropriate lexical context) as a RegularExpressionLiteral that + behaves identically to the constructed regular expression. +---*/ + +var re = eval('/' + new RegExp('/').source + '/'); + +assert(re.test('/'), 'input: "/"'); +assert(re.test('_/_'), 'input: "_/_"'); +assert(!re.test('\\'), 'input: "\\"'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/value-u.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/value-u.js new file mode 100644 index 0000000000..e7847b7287 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/value-u.js @@ -0,0 +1,34 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.source +description: > + Return value can be used to create an equivalent RegExp when the + [[OriginalFlags]] internal slot contains the `u` flag +info: | + [...] + 5. Let src be R.[[OriginalSource]]. + 6. Let flags be R.[[OriginalFlags]]. + 7. Return EscapeRegExpPattern(src, flags). + + 21.2.3.2.4 Runtime Semantics: EscapeRegExpPattern + + [...] the internal procedure that would result from evaluating S as a + Pattern[~U] (Pattern[+U] if F contains "u") must behave identically to the + internal procedure given by the constructed object's [[RegExpMatcher]] + internal slot. +---*/ + +var re; + +re = eval('/' + /\ud834\udf06/u.source + '/u'); + +assert.sameValue(re.test('\ud834\udf06'), true); +assert.sameValue(re.test('𝌆'), true); + +re = eval('/' + /\u{1d306}/u.source + '/u'); + +assert.sameValue(re.test('\ud834\udf06'), true); +assert.sameValue(re.test('𝌆'), true); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/source/value.js b/js/src/tests/test262/built-ins/RegExp/prototype/source/value.js new file mode 100644 index 0000000000..5fdb1df936 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/source/value.js @@ -0,0 +1,36 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.source +description: Return value can be used to create an equivalent RegExp +info: | + [...] + 5. Let src be R.[[OriginalSource]]. + 6. Let flags be R.[[OriginalFlags]]. + 7. Return EscapeRegExpPattern(src, flags). + + 21.2.3.2.4 Runtime Semantics: EscapeRegExpPattern + + [...] the internal procedure that would result from evaluating S as a + Pattern[~U] (Pattern[+U] if F contains "u") must behave identically to the + internal procedure given by the constructed object's [[RegExpMatcher]] + internal slot. +---*/ + +var re = eval('/' + /ab{2,4}c$/.source + '/'); + +assert(re.test('abbc'), 'input: abbc'); +assert(re.test('abbbc'), 'input: abbbc'); +assert(re.test('abbbbc'), 'input: abbbbc'); +assert(re.test('xabbc'), 'input: xabbc'); +assert(re.test('xabbbc'), 'input: xabbbc'); +assert(re.test('xabbbbc'), 'input: xabbbbc'); + +assert.sameValue(re.test('ac'), false, 'input: ac'); +assert.sameValue(re.test('abc'), false, 'input: abc'); +assert.sameValue(re.test('abbcx'), false, 'input: abbcx'); +assert.sameValue(re.test('bbc'), false, 'input: bbc'); +assert.sameValue(re.test('abb'), false, 'input: abb'); +assert.sameValue(re.test('abbbbbc'), false, 'input: abbbbbc'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/cross-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/cross-realm.js new file mode 100644 index 0000000000..65b3b244c5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/cross-realm.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Invoked on a cross-realm object without an [[OriginalFlags]] internal slot +es6id: 21.2.5.12 +info: | + 21.2.5.12 get RegExp.prototype.sticky + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, throw a TypeError + exception. +features: [cross-realm] +---*/ + +var sticky = Object.getOwnPropertyDescriptor(RegExp.prototype, 'sticky').get; +var other = $262.createRealm().global; +var otherRegExpProto = other.RegExp.prototype; +var otherRegExpGetter = Object.getOwnPropertyDescriptor(otherRegExpProto, 'sticky').get; + +assert.throws(TypeError, function() { + sticky.call(otherRegExpProto); +}, 'cross-realm RegExp.prototype'); + +assert.throws(other.TypeError, function() { + otherRegExpGetter.call(RegExp.prototype); +}, 'cross-realm RegExp.prototype getter method against primary realm RegExp.prototype'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/length.js new file mode 100644 index 0000000000..220cf0a901 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/length.js @@ -0,0 +1,33 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.12 +description: > + get RegExp.prototype.sticky.length is 0. +info: | + get RegExp.prototype.sticky + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "sticky"); + +assert.sameValue(desc.get.length, 0); + +verifyNotEnumerable(desc.get, "length"); +verifyNotWritable(desc.get, "length"); +verifyConfigurable(desc.get, "length"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/name.js new file mode 100644 index 0000000000..8fa5b1ac0f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/name.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.12 +description: > + RegExp.prototype.sticky name +info: | + 17 ECMAScript Standard Built-in Objects + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. +includes: [propertyHelper.js] +---*/ + +var descriptor = Object.getOwnPropertyDescriptor(RegExp.prototype, 'sticky'); + +assert.sameValue( + descriptor.get.name, + 'get sticky' +); + +verifyNotEnumerable(descriptor.get, 'name'); +verifyNotWritable(descriptor.get, 'name'); +verifyConfigurable(descriptor.get, 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/prop-desc.js new file mode 100644 index 0000000000..349219513b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/prop-desc.js @@ -0,0 +1,17 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.12 +description: > + `sticky` property descriptor +info: | + RegExp.prototype.sticky is an accessor property whose set accessor + function is undefined. +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, 'sticky'); + +assert.sameValue(desc.set, undefined); +assert.sameValue(typeof desc.get, 'function'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-invalid-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-invalid-obj.js new file mode 100644 index 0000000000..41aaee539b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-invalid-obj.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Invoked on an object without an [[OriginalFlags]] internal slot +es6id: 21.2.5.12 +info: | + 21.2.5.12 get RegExp.prototype.sticky + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, throw a TypeError + exception. +---*/ + +var sticky = Object.getOwnPropertyDescriptor(RegExp.prototype, 'sticky').get; + +assert.throws(TypeError, function() { + sticky.call({}); +}, 'ordinary object'); + +assert.throws(TypeError, function() { + sticky.call([]); +}, 'array exotic object'); + +assert.throws(TypeError, function() { + sticky.call(arguments); +}, 'arguments object'); + +assert.throws(TypeError, function() { + sticky.call(() => {}); +}, 'function object'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-non-obj.js new file mode 100644 index 0000000000..b0e67154fd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-non-obj.js @@ -0,0 +1,46 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + `sticky` accessor invoked on a non-object value +es6id: 21.2.5.12 +info: | + 21.2.5.12 get RegExp.prototype.sticky + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol] +---*/ + +var sticky = Object.getOwnPropertyDescriptor(RegExp.prototype, 'sticky').get; + +assert.throws(TypeError, function() { + sticky.call(undefined); +}); + +assert.throws(TypeError, function() { + sticky.call(null); +}); + +assert.throws(TypeError, function() { + sticky.call(true); +}); + +assert.throws(TypeError, function() { + sticky.call('string'); +}); + +assert.throws(TypeError, function() { + sticky.call(Symbol('s')); +}); + +assert.throws(TypeError, function() { + sticky.call(4); +}); + +assert.throws(TypeError, function() { + sticky.call(4n); +}, 'bigint'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-regexp-prototype.js new file mode 100644 index 0000000000..d3c9fc454e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-regexp-prototype.js @@ -0,0 +1,19 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.sticky +description: > + Return value of `undefined` when the "this" value is the RegExp prototype + object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'sticky').get; + +assert.sameValue(get.call(RegExp.prototype), undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-regexp.js b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-regexp.js new file mode 100644 index 0000000000..4308d25afb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/sticky/this-val-regexp.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + `sticky` accessor function invoked on a RegExp instance +es6id: 21.2.5.12 +info: | + 21.2.5.12 get RegExp.prototype.sticky + + 4. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 5. If flags contains the code unit "y", return true. + 6. Return false. +---*/ + +assert.sameValue(/./.sticky, false); +assert.sameValue(/./i.sticky, false); +assert.sameValue(/./g.sticky, false); +assert.sameValue(/./gi.sticky, false); + +assert.sameValue(/./y.sticky, true); +assert.sameValue(/./iy.sticky, true); +assert.sameValue(/./yg.sticky, true); +assert.sameValue(/./iyg.sticky, true); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A10.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A10.js new file mode 100644 index 0000000000..0a8d503e08 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A10.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype.test.length property has the attribute ReadOnly +es5id: 15.10.6.3_A10 +description: Checking if varying the RegExp.prototype.test.length property fails +includes: [propertyHelper.js] +---*/ +assert.sameValue( + RegExp.prototype.test.hasOwnProperty('length'), + true, + 'RegExp.prototype.test.hasOwnProperty(\'length\') must return true' +); + +var __obj = RegExp.prototype.test.length; + +verifyNotWritable(RegExp.prototype.test, "length", null, function(){return "shifted";}); + +assert.sameValue( + RegExp.prototype.test.length, + __obj, + 'The value of RegExp.prototype.test.length is expected to equal the value of __obj' +); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A11.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A11.js new file mode 100644 index 0000000000..3dbaa2d9ab --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A11.js @@ -0,0 +1,17 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The length property of the test method is 1 +es5id: 15.10.6.3_A11 +description: Checking RegExp.prototype.test.length +---*/ +assert.sameValue( + RegExp.prototype.test.hasOwnProperty("length"), + true, + 'RegExp.prototype.test.hasOwnProperty("length") must return true' +); + +assert.sameValue(RegExp.prototype.test.length, 1, 'The value of RegExp.prototype.test.length is expected to be 1'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T1.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T1.js new file mode 100644 index 0000000000..6a64ab568d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T1.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T1 +description: RegExp is /1|12/ and tested string is "123" +---*/ + +var __string = "123"; +var __re = /1|12/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test(""123"") must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T10.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T10.js new file mode 100644 index 0000000000..52d27fd635 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T10.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T10 +description: RegExp is /1|12/ and tested string is 1.01 +---*/ + +var __string = 1.01; +var __re = /1|12/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test(1.01) must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T11.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T11.js new file mode 100644 index 0000000000..3c0caf4afb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T11.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T11 +description: RegExp is /2|12/ and tested string is new Number(1.012) +---*/ + +var __string = new Number(1.012); +var __re = /2|12/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test(new Number(1.012)) must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T12.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T12.js new file mode 100644 index 0000000000..55adc94424 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T12.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T12 +description: > + RegExp is /\.14/ and tested string is {toString:function(){return + Math.PI;}} +---*/ + +var __string = {toString:function(){return Math.PI;}}; +var __re = /\.14/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test({toString:function(){return Math.PI;}}) must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T13.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T13.js new file mode 100644 index 0000000000..93b0405274 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T13.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T13 +description: RegExp is /t[a-b|q-s]/ and tested string is true +---*/ + +var __string = true; +var __re = /t[a-b|q-s]/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test(true) must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T14.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T14.js new file mode 100644 index 0000000000..95460d84fb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T14.js @@ -0,0 +1,19 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T14 +description: RegExp is /AL|se/ and tested string is new Boolean +---*/ + +var __string = new Boolean; +var __re = /AL|se/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test(new Boolean) must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T15.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T15.js new file mode 100644 index 0000000000..7017b295d3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T15.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T15 +description: > + RegExp is /LS/i and tested string is {toString:function(){return + false;}} +---*/ + +var __string = {toString:function(){return false;}}; +var __re = /LS/i; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test({toString:function(){return false;}}) must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T16.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T16.js new file mode 100644 index 0000000000..5bd90f169c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T16.js @@ -0,0 +1,14 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T16 +description: RegExp is /undefined/ and call test() without arguments +---*/ + +var __re = /undefined/; + +assert.sameValue(__re.test(), __re.exec() !== null, '__re.test() must return __re.exec() !== null'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T17.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T17.js new file mode 100644 index 0000000000..2d2f52b5cb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T17.js @@ -0,0 +1,14 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T17 +description: RegExp is /ll|l/ and tested string is null +---*/ + +var __re = /ll|l/; + +assert.sameValue(__re.test(null), __re.exec(null) !== null, '__re.test(null) must return __re.exec(null) !== null'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T18.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T18.js new file mode 100644 index 0000000000..0726b40eda --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T18.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T18 +description: RegExp is /nd|ne/ and tested string is undefined +---*/ + +var __re = /nd|ne/; + +assert.sameValue( + __re.test(undefined), + __re.exec(undefined) !== null, + '__re.test(undefined) must return __re.exec(undefined) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T19.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T19.js new file mode 100644 index 0000000000..a767ea20c6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T19.js @@ -0,0 +1,18 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T19 +description: RegExp is /e{1}/ and tested string is void 0 +---*/ + +var __re = /e{1}/; + +assert.sameValue( + __re.test(void 0), + __re.exec(void 0) !== null, + '__re.test(void 0) must return __re.exec(void 0) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T2.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T2.js new file mode 100644 index 0000000000..abe89629f4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T2.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T2 +description: > + RegExp is /((1)|(12))((3)|(23))/ and tested string is new + String("123") +---*/ + +var __string = new String("123"); +var __re = /((1)|(12))((3)|(23))/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test("new String("123")") must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T20.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T20.js new file mode 100644 index 0000000000..50fcf0443c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T20.js @@ -0,0 +1,16 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T20 +description: RegExp is /[a-f]d/ and tested string is x, where x is undefined +---*/ + +var __re = /[a-f]d/; + +assert.sameValue(__re.test(x), __re.exec(x) !== null, '__re.test() must return __re.exec(x) !== null'); + +var x; + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T21.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T21.js new file mode 100644 index 0000000000..1af7dfac0c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T21.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T21 +description: > + RegExp is /[a-z]n/ and tested string is x, where x is + function(){}() +---*/ + +var __re = /[a-z]n/; + +assert.sameValue( + __re.test(function(){}()), + __re.exec(function(){}()) !== null, + '__re.test(function(){}()) must return __re.exec(function(){}()) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T22.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T22.js new file mode 100644 index 0000000000..cadeb79c93 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T22.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + RegExp.prototype.test behavior depends on the lastIndex property: + ToLength(lastIndex) is the starting point for the search, so + negative numbers result in searching from 0. +es5id: 15.10.6.3_A1_T22 +description: "Set lastIndex to -1 and call /(?:ab|cd)\\d?/g.test(\"aacd22 \")" +---*/ + +var __re = /(?:ab|cd)\d?/g; +__re.lastIndex=-1; +var __executed = __re.test("aacd22 "); + +assert(!!__executed, 'The value of !!__executed is expected to be true'); +assert.sameValue(__re.lastIndex, 5, 'The value of __re.lastIndex is expected to be 5'); + +__re.lastIndex=-100; +__executed = __re.test("aacd22 "); + +assert(!!__executed, 'The value of !!__executed is expected to be true'); +assert.sameValue(__re.lastIndex, 5, 'The value of __re.lastIndex is expected to be 5'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T3.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T3.js new file mode 100644 index 0000000000..fe59bc5001 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T3.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T3 +description: > + RegExp is /a[a-z]{2,4}/ and tested string is new + Object("abcdefghi") +---*/ + +var __string = new Object("abcdefghi"); +var __re = /a[a-z]{2,4}/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test("new Object("abcdefghi")") must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T4.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T4.js new file mode 100644 index 0000000000..e4b4a1676b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T4.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T4 +description: > + RegExp is /a[a-z]{2,4}?/ and tested string is + {toString:function(){return "abcdefghi";}} +---*/ + +var __string = {toString:function(){return "abcdefghi";}}; +var __re = /a[a-z]{2,4}?/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test({toString:function(){return "abcdefghi";}}) must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T5.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T5.js new file mode 100644 index 0000000000..d15cd52808 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T5.js @@ -0,0 +1,22 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T5 +description: > + RegExp is /(aa|aabaac|ba|b|c)* / and tested string is + {toString:function(){return {};}, valueOf:function(){return + "aabaac";}} +---*/ + +var __string = {toString:function(){return {};}, valueOf:function(){return "aabaac";}}; +var __re = /(aa|aabaac|ba|b|c)*/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test("{toString:function(){return {};}, valueOf:function(){return "aabaac";}}) must return __re.exec(__string) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T6.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T6.js new file mode 100644 index 0000000000..dad55d3c3a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T6.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T6 +description: > + RegExp is /(z)((a+)?(b+)?(c))* / and tested string is + (function(){return "zaacbbbcac"})() +---*/ + +var __re = /(z)((a+)?(b+)?(c))*/; + +assert.sameValue( + __re.test((function(){return "zaacbbbcac"})()), + __re.exec((function(){return "zaacbbbcac"})()) !== null, + '__re.test((function(){return "zaacbbbcac"})()) must return __re.exec((function(){return "zaacbbbcac"})()) !== null' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T7.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T7.js new file mode 100644 index 0000000000..43abe4e04b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T7.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T7 +description: > + RegExp is /[a-z]/ and tested string is {toString:function(){throw + "intostr";}} +---*/ + +try { + throw new Test262Error('#1.1: /[a-z]/.test({toString:function(){throw "intostr";}}) throw "intostr". Actual: ' + (/[a-z]/.test({toString:function(){throw "intostr";}}))); +} catch (e) { + assert.sameValue(e, "intostr", 'The value of e is expected to be "intostr"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T8.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T8.js new file mode 100644 index 0000000000..a068a2da63 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T8.js @@ -0,0 +1,20 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T8 +description: > + RegExp is /[a-z]/ and tested string is {toString:void 0, + valueOf:function(){throw "invalof";}} +---*/ + +try { + throw new Test262Error('#1.1: /[a-z]/.test({toString:void 0, valueOf:function(){throw "invalof";}}) throw "invalof". Actual: ' + (/[a-z]/.test({toString:void 0, valueOf:function(){throw "invalof";}}))); +} catch (e) { + assert.sameValue(e, "invalof", 'The value of e is expected to be "invalof"'); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T9.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T9.js new file mode 100644 index 0000000000..dad72cb614 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A1_T9.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: Equivalent to the expression RegExp.prototype.exec(string) != null +es5id: 15.10.6.3_A1_T9 +description: RegExp is /1|12/ and tested string is function object +---*/ + +var __string; +var __re = /1|12/; + +assert.sameValue( + __re.test(__string), + __re.exec(__string) !== null, + '__re.test() must return __re.exec(__string) !== null' +); + +function __string(){} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T1.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T1.js new file mode 100644 index 0000000000..aa7c948527 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T1.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T1 +description: The tested object is new Object +---*/ + +var __instance = new Object; + +__instance.test = RegExp.prototype.test; + +try { + throw new Test262Error('#1.1: __instance = new Object; __instance.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (__instance.test("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T10.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T10.js new file mode 100644 index 0000000000..d674d38ae8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T10.js @@ -0,0 +1,26 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T10 +description: The tested object is undefined +---*/ + +var test = RegExp.prototype.test; + +try { + throw new Test262Error('#1.1: test = RegExp.prototype.test; test("message to investigate"). Actual: ' + (test("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T2.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T2.js new file mode 100644 index 0000000000..0690647f9e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T2.js @@ -0,0 +1,29 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T2 +description: The tested object is Math +---*/ + +var __instance = Math; + +__instance.test = RegExp.prototype.test; + +try { + __instance.test("message to investigate"); + throw new Test262Error('#1.1: __instance = Math; __instance.test = RegExp.prototype.test; __instance.test("message to investigate")'); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T3.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T3.js new file mode 100644 index 0000000000..e304938ad0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T3.js @@ -0,0 +1,29 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T3 +description: The tested object is function object +---*/ + +__instance.test = RegExp.prototype.test; + +try { + __instance.test("message to investigate"); + throw new Test262Error('#1.1: __instance.test = RegExp.prototype.test; __instance.test("message to investigate"); function __instance(){}'); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +function __instance(){}; + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T4.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T4.js new file mode 100644 index 0000000000..b22f6dc1b4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T4.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T4 +description: The tested object is new String("[a-b]") +---*/ + +var __instance = new String("[a-b]"); + +__instance.test = RegExp.prototype.test; + + try { + throw new Test262Error('#1.1: __instance = new String("[a-b]"); __instance.test = RegExp.prototype.test; test("message to investigate"). Actual: ' + (__instance.test("message to investigate"))); + } catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); + } + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T5.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T5.js new file mode 100644 index 0000000000..47fcde5b88 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T5.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T5 +description: The tested object is new Boolean(false) +---*/ + +var __instance = new Boolean(false); + +__instance.test = RegExp.prototype.test; + + try { + throw new Test262Error('#1.1: __instance = new Boolean(false); __instance.test = RegExp.prototype.test; test("message to investigate"). Actual: ' + (__instance.test("message to investigate"))); + } catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); + } + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T6.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T6.js new file mode 100644 index 0000000000..3f72ae9523 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T6.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T6 +description: The tested object is new Number(1.0) +---*/ + +var __instance = new Number(1.0); + +__instance.test = RegExp.prototype.test; + +try { + throw new Test262Error('#1.1: __instance = new Number(1.0); __instance.test = RegExp.prototype.test; __instance["test"]("message to investigate"). Actual: ' + (__instance["test"]("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T7.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T7.js new file mode 100644 index 0000000000..19794986f5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T7.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T7 +description: The tested object is false +---*/ + +var __instance = false; + +Object.prototype.test = RegExp.prototype.test; + +try { + throw new Test262Error('#1.1: __instance = false; Object.prototype.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (__instance.test("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T8.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T8.js new file mode 100644 index 0000000000..a50d1fcedd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T8.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T8 +description: The tested object is "." +---*/ + +var __instance = "."; + +Object.prototype.test = RegExp.prototype.test; + +try { + throw new Test262Error('#1.1: __instance = "."; Object.prototype.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (__instance.test("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T9.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T9.js new file mode 100644 index 0000000000..0ff585e300 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A2_T9.js @@ -0,0 +1,28 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + A TypeError exception is thrown if the this value is not an object for + which the value of the internal [[Class]] property is "RegExp" +es5id: 15.10.6.3_A2_T9 +description: The tested object is 1.0 +---*/ + +var __instance = 1.0; + +Object.prototype.test = RegExp.prototype.test; + +try { + throw new Test262Error('#1.1: __instance = 1.0; Object.prototype.test = RegExp.prototype.test; __instance.test("message to investigate"). Actual: ' + (__instance.test("message to investigate"))); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A6.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A6.js new file mode 100644 index 0000000000..2888978604 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A6.js @@ -0,0 +1,15 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp.prototype.test has not prototype property +es5id: 15.10.6.3_A6 +description: Checking RegExp.prototype.test.prototype +---*/ +assert.sameValue( + RegExp.prototype.test.prototype, + undefined, + 'The value of RegExp.prototype.test.prototype is expected to equal undefined' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A7.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A7.js new file mode 100644 index 0000000000..db7364bd31 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A7.js @@ -0,0 +1,25 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp.prototype.test can't be used as constructor +es5id: 15.10.6.3_A7 +description: Checking if creating the RegExp.prototype.test object fails +---*/ + +var __FACTORY = RegExp.prototype.test; + +try { + var __instance = new __FACTORY; + throw new Test262Error('#1.1: __FACTORY = RegExp.prototype.test throw TypeError. Actual: ' + (__instance)); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A8.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A8.js new file mode 100644 index 0000000000..e956dacab2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A8.js @@ -0,0 +1,35 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype.test.length property has the attribute DontEnum +es5id: 15.10.6.3_A8 +description: > + Checking if enumerating the RegExp.prototype.test.length property + fails +---*/ +assert.sameValue( + RegExp.prototype.test.hasOwnProperty('length'), + true, + 'RegExp.prototype.test.hasOwnProperty(\'length\') must return true' +); + +assert.sameValue( + RegExp.prototype.test.propertyIsEnumerable('length'), + false, + 'RegExp.prototype.test.propertyIsEnumerable(\'length\') must return false' +); + +var count=0; + +for (var p in RegExp.prototype.test){ + if (p==="length") { + count++; + } +} + +assert.sameValue(count, 0, 'The value of count is expected to be 0'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A9.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A9.js new file mode 100644 index 0000000000..7667d3f3a3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/S15.10.6.3_A9.js @@ -0,0 +1,31 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The RegExp.prototype.test.length property does not have the attribute + DontDelete +es5id: 15.10.6.3_A9 +description: Checking if deleting RegExp.prototype.test.length property fails +---*/ +assert.sameValue( + RegExp.prototype.exec.hasOwnProperty('length'), + true, + 'RegExp.prototype.exec.hasOwnProperty(\'length\') must return true' +); + +assert.sameValue( + delete RegExp.prototype.exec.length, + true, + 'The value of `delete RegExp.prototype.exec.length` is expected to be true' +); + +assert.sameValue( + RegExp.prototype.exec.hasOwnProperty('length'), + false, + 'RegExp.prototype.exec.hasOwnProperty(\'length\') must return false' +); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/name.js new file mode 100644 index 0000000000..7ee8a9a2e7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/name.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.13 +description: > + RegExp.prototype.test.name is "test". +info: | + RegExp.prototype.test( S ) + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, that is not + identified as an anonymous function has a name property whose value + is a String. + + Unless otherwise specified, the name property of a built-in Function + object, if it exists, has the attributes { [[Writable]]: false, + [[Enumerable]]: false, [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +assert.sameValue(RegExp.prototype.test.name, "test"); + +verifyNotEnumerable(RegExp.prototype.test, "name"); +verifyNotWritable(RegExp.prototype.test, "name"); +verifyConfigurable(RegExp.prototype.test, "name"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/not-a-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/not-a-constructor.js new file mode 100644 index 0000000000..ee6ce0aeaf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/not-a-constructor.js @@ -0,0 +1,35 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + RegExp.prototype.test does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [Reflect.construct, arrow-function] +---*/ + +assert.sameValue( + isConstructor(RegExp.prototype.test), + false, + 'isConstructor(RegExp.prototype.test) must return false' +); + +assert.throws(TypeError, () => { + let re = new RegExp(''); new re.test(); +}, '`let re = new RegExp(\'\'); new re.test()` throws TypeError'); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-lastindex-no-write.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-lastindex-no-write.js new file mode 100644 index 0000000000..0746d299c3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-lastindex-no-write.js @@ -0,0 +1,38 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Match failure with non-writable `lastIndex` property +es6id: 21.2.5.13 +info: | + 21.2.5.13 RegExp.prototype.test( S ) + + [...] + 5. Let match be RegExpExec(R, string). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). + 2. ReturnIfAbrupt(setStatus). +---*/ + +var r = /c/y; +Object.defineProperty(r, 'lastIndex', { + writable: false +}); + +assert.throws(TypeError, function() { + r.test('abc'); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-lastindex.js new file mode 100644 index 0000000000..ec9e0a51b2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-lastindex.js @@ -0,0 +1,35 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Resets the `lastIndex` property to zero after a match failure +es6id: 21.2.5.13 +info: | + 21.2.5.13 RegExp.prototype.test( S ) + + [...] + 5. Let match be RegExpExec(R, string). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + 1. Let setStatus be Set(R, "lastIndex", 0, true). +---*/ + +var r = /c/y; +r.lastIndex = 1; + +r.test('abc'); + +assert.sameValue(r.lastIndex, 0); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-return.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-return.js new file mode 100644 index 0000000000..17c627c804 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-fail-return.js @@ -0,0 +1,31 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Stops match execution after first match failure +es6id: 21.2.5.13 +info: | + 21.2.5.13 RegExp.prototype.test( S ) + + [...] + 5. Let match be RegExpExec(R, string). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 15. Repeat, while matchSucceeded is false + [...] + b. Let r be matcher(S, lastIndex). + c. If r is failure, then + i. If sticky is true, then + [...] + 3. Return null. +---*/ + +assert.sameValue(/b/y.test('ab'), false); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/y-init-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-init-lastindex.js new file mode 100644 index 0000000000..2d66352dce --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-init-lastindex.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Honors initial value of the `lastIndex` property +es6id: 21.2.5.13 +info: | + 21.2.5.13 RegExp.prototype.test( S ) + + [...] + 5. Let match be RegExpExec(R, string). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 4. Let lastIndex be ToLength(Get(R,"lastIndex")). + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + 9. ReturnIfAbrupt(sticky). + 10. If global is false and sticky is false, let lastIndex be 0. +---*/ + +var r = /./y; +r.lastIndex = 1; + +assert.sameValue(r.test('a'), false); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/test/y-set-lastindex.js b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-set-lastindex.js new file mode 100644 index 0000000000..17f01468a5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/test/y-set-lastindex.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Sets the `lastIndex` property to the end index of the first match +es6id: 21.2.5.13 +info: | + 21.2.5.13 RegExp.prototype.test( S ) + + [...] + 5. Let match be RegExpExec(R, string). + + 21.2.5.2.2 Runtime Semantics: RegExpBuiltinExec ( R, S ) + + [...] + 8. Let sticky be ToBoolean(Get(R, "sticky")). + [...] + 18. If global is true or sticky is true, + a. Let setStatus be Set(R, "lastIndex", e, true). +---*/ + +var r = /abc/y; + +r.test('abc'); + +assert.sameValue(r.lastIndex, 3); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A10.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A10.js new file mode 100644 index 0000000000..34498afafc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A10.js @@ -0,0 +1,30 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype.toString.length property has the attribute ReadOnly +es5id: 15.10.6.4_A10 +description: > + Checking if varying the RegExp.prototype.toString.length property + fails +includes: [propertyHelper.js] +---*/ +assert.sameValue( + RegExp.prototype.toString.hasOwnProperty('length'), + true, + 'RegExp.prototype.toString.hasOwnProperty(\'length\') must return true' +); + +var __obj = RegExp.prototype.toString.length; + +verifyNotWritable(RegExp.prototype.toString, "length", null, function(){return "shifted";}); + +assert.sameValue( + RegExp.prototype.toString.length, + __obj, + 'The value of RegExp.prototype.toString.length is expected to equal the value of __obj' +); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A11.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A11.js new file mode 100644 index 0000000000..ba322bd577 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A11.js @@ -0,0 +1,21 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The length property of the toString method is 1 +es5id: 15.10.6.4_A11 +description: Checking RegExp.prototype.toString.length +---*/ +assert.sameValue( + RegExp.prototype.toString.hasOwnProperty("length"), + true, + 'RegExp.prototype.toString.hasOwnProperty("length") must return true' +); + +assert.sameValue( + RegExp.prototype.toString.length, + 0, + 'The value of RegExp.prototype.toString.length is expected to be 0' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A6.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A6.js new file mode 100644 index 0000000000..42adb4757d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A6.js @@ -0,0 +1,23 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp.prototype.toString has not prototype property +es5id: 15.10.6.4_A6 +description: Checking RegExp.prototype.toString.prototype +includes: [isConstructor.js] +features: [Reflect.construct] +---*/ +assert.sameValue( + RegExp.prototype.toString.prototype, + undefined, + 'The value of RegExp.prototype.toString.prototype is expected to equal undefined' +); + +assert.sameValue( + isConstructor(RegExp.prototype.toString), + false, + 'isConstructor(RegExp.prototype.toString) must return false' +); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A7.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A7.js new file mode 100644 index 0000000000..334fcc1f4d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A7.js @@ -0,0 +1,33 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: RegExp.prototype.toString can't be used as constructor +es5id: 15.10.6.4_A7 +description: Checking if creating the RegExp.prototype.toString object fails +includes: [isConstructor.js] +features: [Reflect.construct] +---*/ + +var __FACTORY = RegExp.prototype.toString; + +try { + var __instance = new __FACTORY; + throw new Test262Error('#1.1: __FACTORY = RegExp.prototype.toString throw TypeError. Actual: ' + (__instance)); +} catch (e) { + assert.sameValue( + e instanceof TypeError, + true, + 'The result of evaluating (e instanceof TypeError) is expected to be true' + ); +} + +assert.sameValue( + isConstructor(RegExp.prototype.toString), + false, + 'isConstructor(RegExp.prototype.toString) must return false' +); + +// TODO: Convert to assert.throws() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A8.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A8.js new file mode 100644 index 0000000000..fe8d29d512 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A8.js @@ -0,0 +1,35 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: The RegExp.prototype.toString.length property has the attribute DontEnum +es5id: 15.10.6.4_A8 +description: > + Checking if enumerating the RegExp.prototype.toString.length + property fails +---*/ +assert.sameValue( + RegExp.prototype.toString.hasOwnProperty('length'), + true, + 'RegExp.prototype.toString.hasOwnProperty(\'length\') must return true' +); + +assert.sameValue( + RegExp.prototype.toString.propertyIsEnumerable('length'), + false, + 'RegExp.prototype.toString.propertyIsEnumerable(\'length\') must return false' +); + +var count=0; + +for (var p in RegExp.prototype.toString){ + if (p==="length") { + count++; + } +} + +assert.sameValue(count, 0, 'The value of count is expected to be 0'); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A9.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A9.js new file mode 100644 index 0000000000..34f1cdffc9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/toString/S15.10.6.4_A9.js @@ -0,0 +1,33 @@ +// Copyright 2009 the Sputnik authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +info: | + The RegExp.prototype.toString.length property does not have the attribute + DontDelete +es5id: 15.10.6.4_A9 +description: > + Checking if deleting the RegExp.prototype.toString.length property + fails +---*/ +assert.sameValue( + RegExp.prototype.toString.hasOwnProperty('length'), + true, + 'RegExp.prototype.toString.hasOwnProperty(\'length\') must return true' +); + +assert.sameValue( + delete RegExp.prototype.toString.length, + true, + 'The value of `delete RegExp.prototype.toString.length` is expected to be true' +); + +assert.sameValue( + RegExp.prototype.toString.hasOwnProperty('length'), + false, + 'RegExp.prototype.toString.hasOwnProperty(\'length\') must return false' +); + +// TODO: Convert to verifyProperty() format. + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/called-as-function.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/called-as-function.js new file mode 100644 index 0000000000..0b64826c37 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/toString/called-as-function.js @@ -0,0 +1,34 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-regexp.prototype.tostring +description: > + `this` value is resolved using strict mode semantics, + throwing TypeError if called as top-level function. +info: | + RegExp.prototype.toString ( ) + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + + ToObject ( argument ) + + Argument Type: Undefined + Result: Throw a TypeError exception. +---*/ + +["source", "flags"].forEach(function(key) { + Object.defineProperty(this, key, { + get: function() { + throw new Test262Error(key + " lookup should not be performed"); + }, + }); +}, this); + +var toString = RegExp.prototype.toString; +assert.throws(TypeError, function() { + toString(); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/name.js new file mode 100644 index 0000000000..91fe5a8809 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/toString/name.js @@ -0,0 +1,28 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.5.14 +description: > + RegExp.prototype.toString.name is "toString". +info: | + RegExp.prototype.toString ( ) + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, that is not + identified as an anonymous function has a name property whose value + is a String. + + Unless otherwise specified, the name property of a built-in Function + object, if it exists, has the attributes { [[Writable]]: false, + [[Enumerable]]: false, [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +assert.sameValue(RegExp.prototype.toString.name, "toString"); + +verifyNotEnumerable(RegExp.prototype.toString, "name"); +verifyNotWritable(RegExp.prototype.toString, "name"); +verifyConfigurable(RegExp.prototype.toString, "name"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/not-a-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/not-a-constructor.js new file mode 100644 index 0000000000..f064aaf64d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/toString/not-a-constructor.js @@ -0,0 +1,35 @@ +// Copyright (C) 2020 Rick Waldron. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-ecmascript-standard-built-in-objects +description: > + RegExp.prototype.toString does not implement [[Construct]], is not new-able +info: | + ECMAScript Function Objects + + Built-in function objects that are not identified as constructors do not + implement the [[Construct]] internal method unless otherwise specified in + the description of a particular function. + + sec-evaluatenew + + ... + 7. If IsConstructor(constructor) is false, throw a TypeError exception. + ... +includes: [isConstructor.js] +features: [Reflect.construct, arrow-function] +---*/ + +assert.sameValue( + isConstructor(RegExp.prototype.toString), + false, + 'isConstructor(RegExp.prototype.toString) must return false' +); + +assert.throws(TypeError, () => { + let re = new RegExp(''); new re.toString(); +}, '`let re = new RegExp(\'\'); new re.toString()` throws TypeError'); + + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/toString/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/toString/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/cross-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/cross-realm.js new file mode 100644 index 0000000000..dd86e4d5ad --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/cross-realm.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Invoked on a cross-realm object without an [[OriginalFlags]] internal slot +es6id: 21.2.5.15 +info: | + 21.2.5.15 get RegExp.prototype.unicode + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, throw a TypeError + exception. +features: [cross-realm] +---*/ + +var unicode = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicode').get; +var other = $262.createRealm().global; +var otherRegExpProto = other.RegExp.prototype; +var otherRegExpGetter = Object.getOwnPropertyDescriptor(otherRegExpProto, 'unicode').get; + +assert.throws(TypeError, function() { + unicode.call(otherRegExpProto); +}, 'cross-realm RegExp.prototype'); + +assert.throws(other.TypeError, function() { + otherRegExpGetter.call(RegExp.prototype); +}, 'cross-realm RegExp.prototype getter method against primary realm RegExp.prototype'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/length.js new file mode 100644 index 0000000000..127e2d0428 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/length.js @@ -0,0 +1,30 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.15 +description: > + "length" property of `unicode` accessor function +info: | + ES6 section 17: Every built-in Function object, including constructors, has + a length property whose value is an integer. Unless otherwise specified, + this value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. + + [...] + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var getter = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicode').get; + +assert.sameValue(getter.length, 0); + +verifyNotEnumerable(getter, 'length'); +verifyNotWritable(getter, 'length'); +verifyConfigurable(getter, 'length'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/name.js new file mode 100644 index 0000000000..1e1858b46d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/name.js @@ -0,0 +1,37 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.15 +description: > + "name" property of `unicode` accessor function +info: | + The value of the name property of this function is "get ". + + ES6 section 17: + + Every built-in Function object, including constructors, that is not + identified as an anonymous function has a name property whose value is a + String. + + [...] + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. + + [...] + + Unless otherwise specified, the name property of a built-in + Function object, if it exists, has the attributes { [[Writable]]: false, + [[Enumerable]]: false, [[Configurable]]: true }. +includes: [propertyHelper.js] +---*/ + +var getter = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicode').get; + +assert.sameValue(getter.name, 'get unicode'); + +verifyNotEnumerable(getter, 'name'); +verifyNotWritable(getter, 'name'); +verifyConfigurable(getter, 'name'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/prop-desc.js new file mode 100644 index 0000000000..c4c89d7e6e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/prop-desc.js @@ -0,0 +1,17 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +es6id: 21.2.5.15 +description: > + `unicode` property descriptor +info: | + RegExp.prototype.unicode is an accessor property whose set accessor + function is undefined. +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicode'); + +assert.sameValue(desc.set, undefined); +assert.sameValue(typeof desc.get, 'function'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-invalid-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-invalid-obj.js new file mode 100644 index 0000000000..1a8bcb012a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-invalid-obj.js @@ -0,0 +1,34 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: Invoked on an object without an [[OriginalFlags]] internal slot +es6id: 21.2.5.15 +info: | + 21.2.5.15 get RegExp.prototype.unicode + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, throw a TypeError + exception. +---*/ + +var unicode = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicode').get; + +assert.throws(TypeError, function() { + unicode.call({}); +}, 'ordinary object'); + +assert.throws(TypeError, function() { + unicode.call([]); +}, 'array exotic object'); + +assert.throws(TypeError, function() { + unicode.call(arguments); +}, 'arguments object'); + +assert.throws(TypeError, function() { + unicode.call(() => {}); +}, 'function object'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-non-obj.js new file mode 100644 index 0000000000..d5a8130c1a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-non-obj.js @@ -0,0 +1,46 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + `unicode` accessor invoked on a non-object value +es6id: 21.2.5.15 +info: | + 21.2.5.15 get RegExp.prototype.unicode + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol] +---*/ + +var unicode = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicode').get; + +assert.throws(TypeError, function() { + unicode.call(undefined); +}); + +assert.throws(TypeError, function() { + unicode.call(null); +}); + +assert.throws(TypeError, function() { + unicode.call(true); +}); + +assert.throws(TypeError, function() { + unicode.call('string'); +}); + +assert.throws(TypeError, function() { + unicode.call(Symbol('s')); +}); + +assert.throws(TypeError, function() { + unicode.call(4); +}); + +assert.throws(TypeError, function() { + unicode.call(4n); +}, 'bigint'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-regexp-prototype.js new file mode 100644 index 0000000000..4b7d407c00 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-regexp-prototype.js @@ -0,0 +1,19 @@ +// Copyright (C) 2016 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.unicode +description: > + Return value of `undefined` when the "this" value is the RegExp prototype + object +info: | + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicode').get; + +assert.sameValue(get.call(RegExp.prototype), undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-regexp.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-regexp.js new file mode 100644 index 0000000000..abc61293f2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicode/this-val-regexp.js @@ -0,0 +1,27 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: > + `unicode` accessor function invoked on a RegExp instance +es6id: 21.2.5.15 +info: | + 21.2.5.15 get RegExp.prototype.unicode + + [...] + 4. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 5. If flags contains the code unit "u", return true. + 6. Return false. +---*/ + +assert.sameValue(/./.unicode, false); +assert.sameValue(/./i.unicode, false); +assert.sameValue(/./g.unicode, false); +assert.sameValue(/./gi.unicode, false); + +assert.sameValue(/./u.unicode, true); +assert.sameValue(/./iu.unicode, true); +assert.sameValue(/./ug.unicode, true); +assert.sameValue(/./iug.unicode, true); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-01.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-01.js new file mode 100644 index 0000000000..f0e4f208f9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-01.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[(]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-02.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-02.js new file mode 100644 index 0000000000..a22587504c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-02.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[)]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-03.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-03.js new file mode 100644 index 0000000000..488a979c3f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-03.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[[]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-04.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-04.js new file mode 100644 index 0000000000..0b1556f050 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-04.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[{]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-05.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-05.js new file mode 100644 index 0000000000..9fd5e7dd22 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-05.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[}]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-06.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-06.js new file mode 100644 index 0000000000..4e1efd8b35 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-06.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[/]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-07.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-07.js new file mode 100644 index 0000000000..18dd730ddc --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-07.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[-]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-08.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-08.js new file mode 100644 index 0000000000..a89f44af32 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-08.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[|]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-09.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-09.js new file mode 100644 index 0000000000..9ed867d9b2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-09.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[&&]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-10.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-10.js new file mode 100644 index 0000000000..866acdd44e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-10.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[!!]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-11.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-11.js new file mode 100644 index 0000000000..4cad46b6b4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-11.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[##]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-12.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-12.js new file mode 100644 index 0000000000..04909cbc0b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-12.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[$$]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-13.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-13.js new file mode 100644 index 0000000000..424f52d063 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-13.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[%%]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-14.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-14.js new file mode 100644 index 0000000000..6694bbee88 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-14.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[**]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-15.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-15.js new file mode 100644 index 0000000000..ec71a8d130 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-15.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[++]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-16.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-16.js new file mode 100644 index 0000000000..7599abcbaa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-16.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[,,]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-17.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-17.js new file mode 100644 index 0000000000..95c93e4329 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-17.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[..]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-18.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-18.js new file mode 100644 index 0000000000..fe505f4759 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-18.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[::]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-19.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-19.js new file mode 100644 index 0000000000..70fd4c9177 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-19.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[;;]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-20.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-20.js new file mode 100644 index 0000000000..4a07e47ea1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-20.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[<<]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-21.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-21.js new file mode 100644 index 0000000000..84d944a0b3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-21.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[==]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-22.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-22.js new file mode 100644 index 0000000000..386c331472 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-22.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[>>]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-23.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-23.js new file mode 100644 index 0000000000..2d0935f53b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-23.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[??]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-24.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-24.js new file mode 100644 index 0000000000..9241b85cf9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-24.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[@@]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-25.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-25.js new file mode 100644 index 0000000000..7d16515876 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-25.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[``]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-26.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-26.js new file mode 100644 index 0000000000..7d3c0d49ba --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-26.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[~~]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-27.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-27.js new file mode 100644 index 0000000000..2d2a4b1729 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-27.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[^^^]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-28.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-28.js new file mode 100644 index 0000000000..dc5a0ad292 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/breaking-change-from-u-to-v-28.js @@ -0,0 +1,20 @@ +// |reftest| error:SyntaxError +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Some previously valid patterns with the `u` flag are now expected to + throw an early SyntaxError with the `v` flag. + https://github.com/tc39/proposal-regexp-v-flag#how-is-the-v-flag-different-from-the-u-flag +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/[_^^]/v; diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/browser.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/cross-realm.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/cross-realm.js new file mode 100644 index 0000000000..977e85cfa6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/cross-realm.js @@ -0,0 +1,31 @@ +// Copyright (C) 2022 Mathias Bynens, Ron Buckton, and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.unicodeSets +description: RegExp#unicodeSets invoked on a cross-realm object +info: | + get RegExp.prototype.unicodeSets -> RegExpHasFlag + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +features: [regexp-v-flag, cross-realm] +---*/ + +var unicodeSets = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicodeSets').get; +var other = $262.createRealm().global; +var otherRegExpProto = other.RegExp.prototype; +var otherRegExpGetter = Object.getOwnPropertyDescriptor(otherRegExpProto, 'unicodeSets').get; + +assert.throws(TypeError, function() { + unicodeSets.call(otherRegExpProto); +}, 'cross-realm RegExp.prototype'); + +assert.throws(other.TypeError, function() { + otherRegExpGetter.call(RegExp.prototype); +}, 'cross-realm RegExp.prototype getter method against primary realm RegExp.prototype'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/length.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/length.js new file mode 100644 index 0000000000..47d429c6f6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/length.js @@ -0,0 +1,36 @@ +// Copyright (C) 2022 Mathias Bynens, Ron Buckton, and André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.unicodeSets +description: > + get RegExp.prototype.unicodeSets.length is 0. +info: | + get RegExp.prototype.unicodeSets + + 17 ECMAScript Standard Built-in Objects: + Every built-in Function object, including constructors, has a length + property whose value is an integer. Unless otherwise specified, this + value is equal to the largest number of named arguments shown in the + subclause headings for the function description, including optional + parameters. However, rest parameters shown using the form “...name” + are not included in the default argument count. + + Unless otherwise specified, the length property of a built-in Function + object has the attributes { [[Writable]]: false, [[Enumerable]]: false, + [[Configurable]]: true }. +includes: [propertyHelper.js] +features: [regexp-v-flag] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "unicodeSets"); + +assert.sameValue(desc.get.length, 0); + +verifyProperty(desc.get, "length", { + enumerable: false, + writable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/name.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/name.js new file mode 100644 index 0000000000..b67dbd8bec --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/name.js @@ -0,0 +1,29 @@ +// Copyright (C) 2022 Mathias Bynens, Ron Buckton, and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.unicodeSets +description: > + RegExp.prototype.unicodeSets name +info: | + 17 ECMAScript Standard Built-in Objects + + Functions that are specified as get or set accessor functions of built-in + properties have "get " or "set " prepended to the property name string. +includes: [propertyHelper.js] +features: [regexp-v-flag] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "unicodeSets"); + +assert.sameValue( + desc.get.name, + "get unicodeSets" +); + +verifyProperty(desc.get, "name", { + enumerable: false, + writable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/prop-desc.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/prop-desc.js new file mode 100644 index 0000000000..a78ecb36f3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/prop-desc.js @@ -0,0 +1,31 @@ +// Copyright (C) 2022 Mathias Bynens, Ron Buckton, and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +esid: sec-get-regexp.prototype.unicodeSets +description: > + `pending` property descriptor +info: | + RegExp.prototype.unicodeSets is an accessor property whose set accessor + function is undefined. + + 17 ECMAScript Standard Built-in Objects + + Every accessor property described in clauses 18 through 26 and in Annex B.2 has the attributes + { [[Enumerable]]: false, [[Configurable]]: true } unless otherwise specified. If only a get + accessor function is described, the set accessor function is the default value, undefined. If + only a set accessor is described the get accessor is the default value, undefined. +includes: [propertyHelper.js] +features: [regexp-v-flag] +---*/ + +var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, "unicodeSets"); + +assert.sameValue(desc.set, undefined); +assert.sameValue(typeof desc.get, "function"); + +verifyProperty(RegExp.prototype, "unicodeSets", { + enumerable: false, + configurable: true, +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/shell.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-invalid-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-invalid-obj.js new file mode 100644 index 0000000000..def04a6521 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-invalid-obj.js @@ -0,0 +1,36 @@ +// Copyright (C) 2022 Mathias Bynens, Ron Buckton, and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.unicodeSets +description: Invoked on an object without an [[OriginalFlags]] internal slot +info: | + get RegExp.prototype.unicodeSets -> RegExpHasFlag + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. + b. Otherwise, throw a TypeError exception. +features: [regexp-v-flag] +---*/ + +var unicodeSets = Object.getOwnPropertyDescriptor(RegExp.prototype, 'unicodeSets').get; + +assert.throws(TypeError, function() { + unicodeSets.call({}); +}, 'ordinary object'); + +assert.throws(TypeError, function() { + unicodeSets.call([]); +}, 'array exotic object'); + +assert.throws(TypeError, function() { + unicodeSets.call(arguments); +}, 'arguments object'); + +assert.throws(TypeError, function() { + unicodeSets.call(() => {}); +}, 'function object'); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-non-obj.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-non-obj.js new file mode 100644 index 0000000000..a3b0e4528c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-non-obj.js @@ -0,0 +1,46 @@ +// Copyright (C) 2022 Mathias Bynens, Ron Buckton, and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.unicodeSets +description: > + `unicodeSets` accessor invoked on a non-object value +info: | + get RegExp.prototype.unicodeSets -> RegExpHasFlag + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. +features: [Symbol, regexp-v-flag] +---*/ + +var unicodeSets = Object.getOwnPropertyDescriptor(RegExp.prototype, "unicodeSets").get; + +assert.throws(TypeError, function() { + unicodeSets.call(undefined); +}, "undefined"); + +assert.throws(TypeError, function() { + unicodeSets.call(null); +}, "null"); + +assert.throws(TypeError, function() { + unicodeSets.call(true); +}, "true"); + +assert.throws(TypeError, function() { + unicodeSets.call("string"); +}, "string"); + +assert.throws(TypeError, function() { + unicodeSets.call(Symbol("s")); +}, "symbol"); + +assert.throws(TypeError, function() { + unicodeSets.call(4); +}, "number"); + +assert.throws(TypeError, function() { + unicodeSets.call(4n); +}, "bigint"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-regexp-prototype.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-regexp-prototype.js new file mode 100644 index 0000000000..251cc17eb6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-regexp-prototype.js @@ -0,0 +1,23 @@ +// Copyright (C) 2022 Mathias Bynens, Ron Buckton, and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.unicodeSets +description: > + Return value of `undefined` when the "this" value is the RegExp prototype + object +info: | + get RegExp.prototype.unicodeSets -> RegExpHasFlag + + 1. Let R be the this value. + 2. If Type(R) is not Object, throw a TypeError exception. + 3. If R does not have an [[OriginalFlags]] internal slot, then + a. If SameValue(R, %RegExpPrototype%) is true, return undefined. +features: [regexp-v-flag] +---*/ + +var get = Object.getOwnPropertyDescriptor(RegExp.prototype, "unicodeSets").get; + +assert.sameValue(get.call(RegExp.prototype), undefined); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-regexp.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-regexp.js new file mode 100644 index 0000000000..e2c782d190 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/this-val-regexp.js @@ -0,0 +1,53 @@ +// Copyright (C) 2022 Mathias Bynens, Ron Buckton, and the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-get-regexp.prototype.unicodeSets +description: > + `unicodeSets` accessor function invoked on a RegExp instance +info: | + get RegExp.prototype.unicodeSets -> RegExpHasFlag + + 4. Let flags be the value of R’s [[OriginalFlags]] internal slot. + 5. If flags contains the code unit "s", return true. + 6. Return false. +features: [regexp-v-flag] +---*/ + +assert.sameValue(/./.unicodeSets, false, "/./.unicodeSets"); +assert.sameValue(/./d.unicodeSets, false, "/./d.unicodeSets"); +assert.sameValue(/./g.unicodeSets, false, "/./g.unicodeSets"); +assert.sameValue(/./i.unicodeSets, false, "/./i.unicodeSets"); +assert.sameValue(/./m.unicodeSets, false, "/./m.unicodeSets"); +assert.sameValue(/./s.unicodeSets, false, "/./s.unicodeSets"); +assert.sameValue(/./u.unicodeSets, false, "/./u.unicodeSets"); +assert.sameValue(/./y.unicodeSets, false, "/./y.unicodeSets"); + +assert.sameValue(/./v.unicodeSets, true, "/./v.unicodeSets"); +assert.sameValue(/./vd.unicodeSets, true, "/./vd.unicodeSets"); +assert.sameValue(/./vg.unicodeSets, true, "/./vg.unicodeSets"); +assert.sameValue(/./vi.unicodeSets, true, "/./vi.unicodeSets"); +assert.sameValue(/./vm.unicodeSets, true, "/./vm.unicodeSets"); +assert.sameValue(/./vs.unicodeSets, true, "/./vs.unicodeSets"); +// Note: `/vu` throws an early parse error and is tested separately. +assert.sameValue(/./vy.unicodeSets, true, "/./vy.unicodeSets"); + +assert.sameValue(new RegExp(".", "").unicodeSets, false, "new RegExp('.', '').unicodeSets"); +assert.sameValue(new RegExp(".", "d").unicodeSets, false, "new RegExp('.', 'd').unicodeSets"); +assert.sameValue(new RegExp(".", "g").unicodeSets, false, "new RegExp('.', 'g').unicodeSets"); +assert.sameValue(new RegExp(".", "i").unicodeSets, false, "new RegExp('.', 'i').unicodeSets"); +assert.sameValue(new RegExp(".", "m").unicodeSets, false, "new RegExp('.', 'm').unicodeSets"); +assert.sameValue(new RegExp(".", "s").unicodeSets, false, "new RegExp('.', 's').unicodeSets"); +assert.sameValue(new RegExp(".", "u").unicodeSets, false, "new RegExp('.', 'u').unicodeSets"); +assert.sameValue(new RegExp(".", "y").unicodeSets, false, "new RegExp('.', 'y').unicodeSets"); + +assert.sameValue(new RegExp(".", "v").unicodeSets, true, "new RegExp('.', 'v').unicodeSets"); +assert.sameValue(new RegExp(".", "vd").unicodeSets, true, "new RegExp('.', 'vd').unicodeSets"); +assert.sameValue(new RegExp(".", "vg").unicodeSets, true, "new RegExp('.', 'vg').unicodeSets"); +assert.sameValue(new RegExp(".", "vi").unicodeSets, true, "new RegExp('.', 'vi').unicodeSets"); +assert.sameValue(new RegExp(".", "vm").unicodeSets, true, "new RegExp('.', 'vm').unicodeSets"); +assert.sameValue(new RegExp(".", "vs").unicodeSets, true, "new RegExp('.', 'vs').unicodeSets"); +// Note: `new RegExp(pattern, 'vu')` throws a runtime error and is tested separately. +assert.sameValue(new RegExp(".", "vy").unicodeSets, true, "new RegExp('.', 'vy').unicodeSets"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/uv-flags-constructor.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/uv-flags-constructor.js new file mode 100644 index 0000000000..1974aaa7c8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/uv-flags-constructor.js @@ -0,0 +1,16 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Setting the `u` and `v` flag at the same time produces an error. +esid: sec-parsepattern +features: [regexp-v-flag] +---*/ + +assert.throws(SyntaxError, function() { + new RegExp(".", "uv"); +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/uv-flags.js b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/uv-flags.js new file mode 100644 index 0000000000..9432dda9b0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/prototype/unicodeSets/uv-flags.js @@ -0,0 +1,18 @@ +// |reftest| error:SyntaxError +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Setting the `u` and `v` flag at the same time produces an error. +esid: sec-parsepattern +negative: + phase: parse + type: SyntaxError +features: [regexp-v-flag] +---*/ + +$DONOTEVALUATE(); + +/./uv; diff --git a/js/src/tests/test262/built-ins/RegExp/quantifier-integer-limit.js b/js/src/tests/test262/built-ins/RegExp/quantifier-integer-limit.js new file mode 100644 index 0000000000..68a2f8cc55 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/quantifier-integer-limit.js @@ -0,0 +1,38 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-quantifier +description: > + MV of DecimalDigits evaluates to 2 ** 53 - 1. + (although DecimalDigits could be arbitrary large integer) +info: | + Quantifier + + The production QuantifierPrefix :: { DecimalDigits } evaluates as follows: + + 1. Let i be the MV of DecimalDigits (see 11.8.3). + 2. Return the two results i and i. + + The production QuantifierPrefix :: { DecimalDigits, } evaluates as follows: + + 1. Let i be the MV of DecimalDigits. + 2. Return the two results i and ∞. + + The production QuantifierPrefix :: { DecimalDigits, DecimalDigits } evaluates as follows: + + 1. Let i be the MV of the first DecimalDigits. + 2. Let j be the MV of the second DecimalDigits. + 3. Return the two results i and j. +---*/ + +var re1 = new RegExp("b{" + Number.MAX_SAFE_INTEGER + "}", "u"); +assert(!re1.test("")); + +var re2 = new RegExp("b{" + Number.MAX_SAFE_INTEGER + ",}?"); +assert(!re2.test("a")); + +var re3 = new RegExp("b{" + Number.MAX_SAFE_INTEGER + "," + Number.MAX_SAFE_INTEGER + "}"); +assert(!re3.test("b")); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/regexp-class-chars.js b/js/src/tests/test262/built-ins/RegExp/regexp-class-chars.js new file mode 100644 index 0000000000..b78cef9627 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/regexp-class-chars.js @@ -0,0 +1,31 @@ +// Copyright (C) 2019 Mike Pennisi. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: RegularExpressionClassChars may include the forward slash character +info: | + 11.8.5Regular Expression Literals + + RegularExpressionClass :: + [ RegularExpressionClassChars ] + + RegularExpressionClassChars :: + [empty] + RegularExpressionClassChars RegularExpressionClassChar + + RegularExpressionClassChar :: + RegularExpressionNonTerminator but not one of ] or \ + RegularExpressionBackslashSequence + + RegularExpressionNonTerminator :: + SourceCharacterbut not LineTerminator +esid: sec-literals-regular-expression-literals +---*/ + +assert(/[/]/.test("/"), "Forward slash"); +assert.sameValue(/[/]/.test("x"), false, "Forward slash"); + +assert(/[//]/.test("/"), "Forward slash - repeated"); +assert.sameValue(/[//]/.test("x"), false, "Forward slash - repeated"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/shell.js b/js/src/tests/test262/built-ins/RegExp/shell.js new file mode 100644 index 0000000000..eda1477282 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/shell.js @@ -0,0 +1,24 @@ +// GENERATED, DO NOT EDIT +// file: isConstructor.js +// Copyright (C) 2017 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: | + Test if a given function is a constructor function. +defines: [isConstructor] +features: [Reflect.construct] +---*/ + +function isConstructor(f) { + if (typeof f !== "function") { + throw new Test262Error("isConstructor invoked with a non-function value"); + } + + try { + Reflect.construct(function(){}, [], f); + } catch (e) { + return false; + } + return true; +} diff --git a/js/src/tests/test262/built-ins/RegExp/u180e.js b/js/src/tests/test262/built-ins/RegExp/u180e.js new file mode 100644 index 0000000000..00714b6183 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/u180e.js @@ -0,0 +1,28 @@ +// Copyright (C) 2017 Leonardo Balter. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-CharacterClassEscape +description: > + U+180E is no longer a Unicode `Space_Separator` symbol as of Unicode v6.3.0. +info: | + 21.2.2.12 CharacterClassEscape + + ... + + The production CharacterClassEscape::s evaluates as follows: + + Return the set of characters containing the characters that are on the + right-hand side of the WhiteSpace or LineTerminator productions. + + The production CharacterClassEscape::S evaluates as follows: + + Return the set of all characters not included in the set returned by + CharacterClassEscape::s . +features: [u180e] +---*/ + +assert.sameValue("\u180E".replace(/\s+/g, "42"), "\u180E", "\\s should not match U+180E"); +assert.sameValue("\u180E".replace(/\S+/g, "42"), "42", "\\S matches U+180E"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/browser.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/browser.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/browser.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js new file mode 100644 index 0000000000..d8f74db909 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class-escape.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]--\d]+$/v, + expression: "[[0-9]--\d]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js new file mode 100644 index 0000000000..3b209decb3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-class.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]--[0-9]]+$/v, + expression: "[[0-9]--[0-9]]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js new file mode 100644 index 0000000000..1f11986a68 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character-property-escape.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]--\p{ASCII_Hex_Digit}]+$/v, + expression: "[[0-9]--\p{ASCII_Hex_Digit}]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js new file mode 100644 index 0000000000..8e98a440ee --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-character.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]--_]+$/v, + expression: "[[0-9]--_]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js new file mode 100644 index 0000000000..0496408b2d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-property-of-strings-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]--\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[[0-9]--\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js new file mode 100644 index 0000000000..8754cf2c37 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-difference-string-literal.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]--\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[[0-9]--\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "1", + "3", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "0", + "2", + "4", + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js new file mode 100644 index 0000000000..c3bd770190 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class-escape.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d--\d]+$/v, + expression: "[\d--\d]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js new file mode 100644 index 0000000000..bdbdd0beda --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-class.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d--[0-9]]+$/v, + expression: "[\d--[0-9]]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js new file mode 100644 index 0000000000..a3f7473261 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character-property-escape.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d--\p{ASCII_Hex_Digit}]+$/v, + expression: "[\d--\p{ASCII_Hex_Digit}]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js new file mode 100644 index 0000000000..da28fd8943 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-character.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d--_]+$/v, + expression: "[\d--_]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js new file mode 100644 index 0000000000..66d4e67311 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-property-of-strings-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d--\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\d--\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js new file mode 100644 index 0000000000..94cd731fce --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-difference-string-literal.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d--\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\d--\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "1", + "3", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "0", + "2", + "4", + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js new file mode 100644 index 0000000000..05b3e9ae32 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d&&\d]+$/v, + expression: "[\d&&\d]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js new file mode 100644 index 0000000000..1c3e68be29 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-class.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d&&[0-9]]+$/v, + expression: "[\d&&[0-9]]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js new file mode 100644 index 0000000000..90bcb40be7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character-property-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d&&\p{ASCII_Hex_Digit}]+$/v, + expression: "[\d&&\p{ASCII_Hex_Digit}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js new file mode 100644 index 0000000000..1ceb380aa5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-character.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d&&_]+$/v, + expression: "[\d&&_]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js new file mode 100644 index 0000000000..9e1d9f8a52 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-property-of-strings-escape.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d&&\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\d&&\p{Emoji_Keycap_Sequence}]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js new file mode 100644 index 0000000000..08b3b2532e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-intersection-string-literal.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d&&\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\d&&\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "0", + "2", + "4" + ], + nonMatchStrings: [ + "1", + "3", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js new file mode 100644 index 0000000000..23a4d4a8db --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d\d]+$/v, + expression: "[\d\d]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js new file mode 100644 index 0000000000..4a876061d5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-class.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d[0-9]]+$/v, + expression: "[\d[0-9]]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js new file mode 100644 index 0000000000..208b9e0d9c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character-property-escape.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d\p{ASCII_Hex_Digit}]+$/v, + expression: "[\d\p{ASCII_Hex_Digit}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js new file mode 100644 index 0000000000..aa1e5ab90d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-character.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d_]+$/v, + expression: "[\d_]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js new file mode 100644 index 0000000000..b4f2da3da0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-property-of-strings-escape.js @@ -0,0 +1,52 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\d\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0", + "0\uFE0F\u20E3", + "1", + "1\uFE0F\u20E3", + "2", + "2\uFE0F\u20E3", + "3", + "3\uFE0F\u20E3", + "4", + "4\uFE0F\u20E3", + "5", + "5\uFE0F\u20E3", + "6", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8", + "8\uFE0F\u20E3", + "9", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js new file mode 100644 index 0000000000..9430ef5419 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-escape-union-string-literal.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\d\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\d\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js new file mode 100644 index 0000000000..1f6a807fcb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]&&\d]+$/v, + expression: "[[0-9]&&\d]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js new file mode 100644 index 0000000000..d0b6d95381 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-class.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]&&[0-9]]+$/v, + expression: "[[0-9]&&[0-9]]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js new file mode 100644 index 0000000000..7ebc4c5fb5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character-property-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]&&\p{ASCII_Hex_Digit}]+$/v, + expression: "[[0-9]&&\p{ASCII_Hex_Digit}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js new file mode 100644 index 0000000000..042c1e1782 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-character.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]&&_]+$/v, + expression: "[[0-9]&&_]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js new file mode 100644 index 0000000000..608401ff14 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-property-of-strings-escape.js @@ -0,0 +1,41 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]&&\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[[0-9]&&\p{Emoji_Keycap_Sequence}]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js new file mode 100644 index 0000000000..15a6d28147 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-intersection-string-literal.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]&&\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[[0-9]&&\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "0", + "2", + "4" + ], + nonMatchStrings: [ + "1", + "3", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js new file mode 100644 index 0000000000..886993514d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]\d]+$/v, + expression: "[[0-9]\d]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js new file mode 100644 index 0000000000..e24a1d32f8 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-class.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9][0-9]]+$/v, + expression: "[[0-9][0-9]]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js new file mode 100644 index 0000000000..6d3159b3e0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character-property-escape.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]\p{ASCII_Hex_Digit}]+$/v, + expression: "[[0-9]\p{ASCII_Hex_Digit}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js new file mode 100644 index 0000000000..9c86c50a7c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-character.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]_]+$/v, + expression: "[[0-9]_]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js new file mode 100644 index 0000000000..51d7208c33 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-property-of-strings-escape.js @@ -0,0 +1,52 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[[0-9]\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0", + "0\uFE0F\u20E3", + "1", + "1\uFE0F\u20E3", + "2", + "2\uFE0F\u20E3", + "3", + "3\uFE0F\u20E3", + "4", + "4\uFE0F\u20E3", + "5", + "5\uFE0F\u20E3", + "6", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8", + "8\uFE0F\u20E3", + "9", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js new file mode 100644 index 0000000000..9762968ceb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-class-union-string-literal.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[[0-9]\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[[0-9]\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js new file mode 100644 index 0000000000..03701e5e6e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class-escape.js @@ -0,0 +1,34 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_--\d]+$/v, + expression: "[_--\d]", + matchStrings: [ + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js new file mode 100644 index 0000000000..be1fe8b83e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-class.js @@ -0,0 +1,34 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_--[0-9]]+$/v, + expression: "[_--[0-9]]", + matchStrings: [ + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js new file mode 100644 index 0000000000..63f3f32d50 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character-property-escape.js @@ -0,0 +1,34 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_--\p{ASCII_Hex_Digit}]+$/v, + expression: "[_--\p{ASCII_Hex_Digit}]", + matchStrings: [ + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character.js new file mode 100644 index 0000000000..d8704742e1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-character.js @@ -0,0 +1,33 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_--_]+$/v, + expression: "[_--_]", + matchStrings: [], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "_", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js new file mode 100644 index 0000000000..1808274560 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-property-of-strings-escape.js @@ -0,0 +1,34 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_--\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[_--\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js new file mode 100644 index 0000000000..16adc0fa36 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-difference-string-literal.js @@ -0,0 +1,34 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_--\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[_--\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js new file mode 100644 index 0000000000..32db0b5bd2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class-escape.js @@ -0,0 +1,33 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_&&\d]+$/v, + expression: "[_&&\d]", + matchStrings: [], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "_", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js new file mode 100644 index 0000000000..4df9d43c39 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-class.js @@ -0,0 +1,33 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_&&[0-9]]+$/v, + expression: "[_&&[0-9]]", + matchStrings: [], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "_", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js new file mode 100644 index 0000000000..712352413b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character-property-escape.js @@ -0,0 +1,33 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_&&\p{ASCII_Hex_Digit}]+$/v, + expression: "[_&&\p{ASCII_Hex_Digit}]", + matchStrings: [], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "_", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js new file mode 100644 index 0000000000..8578b51194 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-character.js @@ -0,0 +1,34 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_&&_]+$/v, + expression: "[_&&_]", + matchStrings: [ + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js new file mode 100644 index 0000000000..740a5f3ac2 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-property-of-strings-escape.js @@ -0,0 +1,33 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_&&\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[_&&\p{Emoji_Keycap_Sequence}]", + matchStrings: [], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "_", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js new file mode 100644 index 0000000000..7aa02b544c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-intersection-string-literal.js @@ -0,0 +1,33 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_&&\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[_&&\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "_", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js new file mode 100644 index 0000000000..dc08e40e3d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class-escape.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}--\d]+$/v, + expression: "[\p{ASCII_Hex_Digit}--\d]", + matchStrings: [ + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js new file mode 100644 index 0000000000..8f4210b125 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-class.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}--[0-9]]+$/v, + expression: "[\p{ASCII_Hex_Digit}--[0-9]]", + matchStrings: [ + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js new file mode 100644 index 0000000000..7be89eb510 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character-property-escape.js @@ -0,0 +1,52 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}--\p{ASCII_Hex_Digit}]+$/v, + expression: "[\p{ASCII_Hex_Digit}--\p{ASCII_Hex_Digit}]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js new file mode 100644 index 0000000000..96ec7bb58e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-character.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}--_]+$/v, + expression: "[\p{ASCII_Hex_Digit}--_]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js new file mode 100644 index 0000000000..e39e83f26e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-property-of-strings-escape.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}--\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\p{ASCII_Hex_Digit}--\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js new file mode 100644 index 0000000000..3e666325f9 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-difference-string-literal.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}--\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\p{ASCII_Hex_Digit}--\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "1", + "3", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "0", + "2", + "4", + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js new file mode 100644 index 0000000000..478534e826 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class-escape.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}&&\d]+$/v, + expression: "[\p{ASCII_Hex_Digit}&&\d]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js new file mode 100644 index 0000000000..9573ad7b47 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-class.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}&&[0-9]]+$/v, + expression: "[\p{ASCII_Hex_Digit}&&[0-9]]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js new file mode 100644 index 0000000000..4dbca1c803 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character-property-escape.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}&&\p{ASCII_Hex_Digit}]+$/v, + expression: "[\p{ASCII_Hex_Digit}&&\p{ASCII_Hex_Digit}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js new file mode 100644 index 0000000000..d6b0c11257 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-character.js @@ -0,0 +1,52 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}&&_]+$/v, + expression: "[\p{ASCII_Hex_Digit}&&_]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js new file mode 100644 index 0000000000..42e1095769 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-property-of-strings-escape.js @@ -0,0 +1,52 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}&&\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\p{ASCII_Hex_Digit}&&\p{Emoji_Keycap_Sequence}]", + matchStrings: [], + nonMatchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js new file mode 100644 index 0000000000..13d31bfc37 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-intersection-string-literal.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}&&\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\p{ASCII_Hex_Digit}&&\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "0", + "2", + "4" + ], + nonMatchStrings: [ + "1", + "3", + "5", + "6", + "6\uFE0F\u20E3", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js new file mode 100644 index 0000000000..ebf6293819 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class-escape.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}\d]+$/v, + expression: "[\p{ASCII_Hex_Digit}\d]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js new file mode 100644 index 0000000000..7d630307df --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-class.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}[0-9]]+$/v, + expression: "[\p{ASCII_Hex_Digit}[0-9]]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js new file mode 100644 index 0000000000..1bac43ea61 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character-property-escape.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}\p{ASCII_Hex_Digit}]+$/v, + expression: "[\p{ASCII_Hex_Digit}\p{ASCII_Hex_Digit}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js new file mode 100644 index 0000000000..407534100c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-character.js @@ -0,0 +1,54 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}_]+$/v, + expression: "[\p{ASCII_Hex_Digit}_]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "_", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js new file mode 100644 index 0000000000..5e4a70e916 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-property-of-strings-escape.js @@ -0,0 +1,63 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\p{ASCII_Hex_Digit}\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0", + "0\uFE0F\u20E3", + "1", + "1\uFE0F\u20E3", + "2", + "2\uFE0F\u20E3", + "3", + "3\uFE0F\u20E3", + "4", + "4\uFE0F\u20E3", + "5", + "5\uFE0F\u20E3", + "6", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8", + "8\uFE0F\u20E3", + "9", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js new file mode 100644 index 0000000000..caa9f15f29 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-property-escape-union-string-literal.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{ASCII_Hex_Digit}\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\p{ASCII_Hex_Digit}\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js new file mode 100644 index 0000000000..11961d19fb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class-escape.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_\d]+$/v, + expression: "[_\d]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js new file mode 100644 index 0000000000..2207df07a0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-class.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_[0-9]]+$/v, + expression: "[_[0-9]]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js new file mode 100644 index 0000000000..ac27fe22c5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character-property-escape.js @@ -0,0 +1,54 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_\p{ASCII_Hex_Digit}]+$/v, + expression: "[_\p{ASCII_Hex_Digit}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "A", + "B", + "C", + "D", + "E", + "F", + "_", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "9\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character.js new file mode 100644 index 0000000000..d30bb97c4c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-character.js @@ -0,0 +1,34 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[__]+$/v, + expression: "[__]", + matchStrings: [ + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js new file mode 100644 index 0000000000..15294ce814 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-property-of-strings-escape.js @@ -0,0 +1,44 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[_\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3", + "_" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js new file mode 100644 index 0000000000..8de1295fdd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/character-union-string-literal.js @@ -0,0 +1,37 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[_\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[_\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "0", + "2", + "4", + "9\uFE0F\u20E3", + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js new file mode 100644 index 0000000000..de856512f5 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class-escape.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}--\d]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}--\d]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js new file mode 100644 index 0000000000..83a3877a9e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-class.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}--[0-9]]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}--[0-9]]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js new file mode 100644 index 0000000000..935e52fab7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character-property-escape.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}--\p{ASCII_Hex_Digit}]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}--\p{ASCII_Hex_Digit}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js new file mode 100644 index 0000000000..6a2b3dbf22 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-character.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}--_]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}--_]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js new file mode 100644 index 0000000000..2e0d4ba7bd --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-property-of-strings-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}--\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}--\p{Emoji_Keycap_Sequence}]", + matchStrings: [], + nonMatchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js new file mode 100644 index 0000000000..da68c78049 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-difference-string-literal.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}--\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}--\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3" + ], + nonMatchStrings: [ + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js new file mode 100644 index 0000000000..29e6302fbb --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}&&\d]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}&&\d]", + matchStrings: [], + nonMatchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js new file mode 100644 index 0000000000..da1469c0c1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-class.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}&&[0-9]]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}&&[0-9]]", + matchStrings: [], + nonMatchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js new file mode 100644 index 0000000000..0fa89e14aa --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character-property-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}&&\p{ASCII_Hex_Digit}]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}&&\p{ASCII_Hex_Digit}]", + matchStrings: [], + nonMatchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js new file mode 100644 index 0000000000..815ba85039 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-character.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}&&_]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}&&_]", + matchStrings: [], + nonMatchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js new file mode 100644 index 0000000000..c5d769cb7c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-property-of-strings-escape.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}&&\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}&&\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js new file mode 100644 index 0000000000..abbf43bb71 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-intersection-string-literal.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}&&\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}&&\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js new file mode 100644 index 0000000000..551a1469d4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class-escape.js @@ -0,0 +1,52 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}\d]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}\d]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0", + "0\uFE0F\u20E3", + "1", + "1\uFE0F\u20E3", + "2", + "2\uFE0F\u20E3", + "3", + "3\uFE0F\u20E3", + "4", + "4\uFE0F\u20E3", + "5", + "5\uFE0F\u20E3", + "6", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8", + "8\uFE0F\u20E3", + "9", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js new file mode 100644 index 0000000000..754d0cf66d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-class.js @@ -0,0 +1,52 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}[0-9]]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}[0-9]]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0", + "0\uFE0F\u20E3", + "1", + "1\uFE0F\u20E3", + "2", + "2\uFE0F\u20E3", + "3", + "3\uFE0F\u20E3", + "4", + "4\uFE0F\u20E3", + "5", + "5\uFE0F\u20E3", + "6", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8", + "8\uFE0F\u20E3", + "9", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js new file mode 100644 index 0000000000..f09ac6c225 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character-property-escape.js @@ -0,0 +1,63 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}\p{ASCII_Hex_Digit}]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}\p{ASCII_Hex_Digit}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0", + "0\uFE0F\u20E3", + "1", + "1\uFE0F\u20E3", + "2", + "2\uFE0F\u20E3", + "3", + "3\uFE0F\u20E3", + "4", + "4\uFE0F\u20E3", + "5", + "5\uFE0F\u20E3", + "6", + "6\uFE0F\u20E3", + "7", + "7\uFE0F\u20E3", + "8", + "8\uFE0F\u20E3", + "9", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js new file mode 100644 index 0000000000..15311dc344 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-character.js @@ -0,0 +1,44 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}_]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}_]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3", + "_" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js new file mode 100644 index 0000000000..52b4863f36 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-property-of-strings-escape.js @@ -0,0 +1,43 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js new file mode 100644 index 0000000000..bcdaebb4e1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/property-of-strings-escape-union-string-literal.js @@ -0,0 +1,46 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\p{Emoji_Keycap_Sequence}\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\p{Emoji_Keycap_Sequence}\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-13.1.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-13.1.js new file mode 100644 index 0000000000..f7eeb369e4 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-13.1.js @@ -0,0 +1,240 @@ +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Test that Unicode property escapes for `RGI_Emoji` (property of strings) + match Emoji 13.1 strings. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji}+$/v, + expression: "\\p{RGI_Emoji}", + matchStrings: [ + "\u2764\uFE0F\u200D\u{1F525}", + "\u2764\uFE0F\u200D\u{1FA79}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F468}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F469}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F468}\u{1F3FF}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FB}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FC}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FD}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FE}", + "\u{1F469}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F469}\u{1F3FF}", + "\u{1F48F}\u{1F3FB}", + "\u{1F48F}\u{1F3FC}", + "\u{1F48F}\u{1F3FD}", + "\u{1F48F}\u{1F3FE}", + "\u{1F48F}\u{1F3FF}", + "\u{1F491}\u{1F3FB}", + "\u{1F491}\u{1F3FC}", + "\u{1F491}\u{1F3FD}", + "\u{1F491}\u{1F3FE}", + "\u{1F491}\u{1F3FF}", + "\u{1F62E}\u200D\u{1F4A8}", + "\u{1F635}\u200D\u{1F4AB}", + "\u{1F636}\u200D\u{1F32B}\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FB}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FC}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FD}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FE}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FF}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F48B}\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FB}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FC}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FD}", + "\u{1F9D1}\u{1F3FF}\u200D\u2764\uFE0F\u200D\u{1F9D1}\u{1F3FE}", + "\u{1F9D4}\u200D\u2640\uFE0F", + "\u{1F9D4}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FB}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FB}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FC}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FC}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FD}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FD}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FE}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FE}\u200D\u2642\uFE0F", + "\u{1F9D4}\u{1F3FF}\u200D\u2640\uFE0F", + "\u{1F9D4}\u{1F3FF}\u200D\u2642\uFE0F" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-14.0.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-14.0.js new file mode 100644 index 0000000000..066dbd9a94 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-14.0.js @@ -0,0 +1,135 @@ +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Test that Unicode property escapes for `RGI_Emoji` (property of strings) + match Emoji 14.0 strings. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji}+$/v, + expression: "\\p{RGI_Emoji}", + matchStrings: [ + "\u{1F6DD}", + "\u{1F6DE}", + "\u{1F6DF}", + "\u{1F7F0}", + "\u{1F91D}\u{1F3FB}", + "\u{1F91D}\u{1F3FC}", + "\u{1F91D}\u{1F3FD}", + "\u{1F91D}\u{1F3FE}", + "\u{1F91D}\u{1F3FF}", + "\u{1F979}", + "\u{1F9CC}", + "\u{1FA7B}", + "\u{1FA7C}", + "\u{1FAA9}", + "\u{1FAAA}", + "\u{1FAAB}", + "\u{1FAAC}", + "\u{1FAB7}", + "\u{1FAB8}", + "\u{1FAB9}", + "\u{1FABA}", + "\u{1FAC3}", + "\u{1FAC3}\u{1F3FB}", + "\u{1FAC3}\u{1F3FC}", + "\u{1FAC3}\u{1F3FD}", + "\u{1FAC3}\u{1F3FE}", + "\u{1FAC3}\u{1F3FF}", + "\u{1FAC4}", + "\u{1FAC4}\u{1F3FB}", + "\u{1FAC4}\u{1F3FC}", + "\u{1FAC4}\u{1F3FD}", + "\u{1FAC4}\u{1F3FE}", + "\u{1FAC4}\u{1F3FF}", + "\u{1FAC5}", + "\u{1FAC5}\u{1F3FB}", + "\u{1FAC5}\u{1F3FC}", + "\u{1FAC5}\u{1F3FD}", + "\u{1FAC5}\u{1F3FE}", + "\u{1FAC5}\u{1F3FF}", + "\u{1FAD7}", + "\u{1FAD8}", + "\u{1FAD9}", + "\u{1FAE0}", + "\u{1FAE1}", + "\u{1FAE2}", + "\u{1FAE3}", + "\u{1FAE4}", + "\u{1FAE5}", + "\u{1FAE6}", + "\u{1FAE7}", + "\u{1FAF0}", + "\u{1FAF0}\u{1F3FB}", + "\u{1FAF0}\u{1F3FC}", + "\u{1FAF0}\u{1F3FD}", + "\u{1FAF0}\u{1F3FE}", + "\u{1FAF0}\u{1F3FF}", + "\u{1FAF1}", + "\u{1FAF1}\u{1F3FB}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FB}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FC}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FC}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FD}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF1}\u{1F3FD}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FE}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FE}\u200D\u{1FAF2}\u{1F3FF}", + "\u{1FAF1}\u{1F3FF}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FB}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FC}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FD}", + "\u{1FAF1}\u{1F3FF}\u200D\u{1FAF2}\u{1F3FE}", + "\u{1FAF2}", + "\u{1FAF2}\u{1F3FB}", + "\u{1FAF2}\u{1F3FC}", + "\u{1FAF2}\u{1F3FD}", + "\u{1FAF2}\u{1F3FE}", + "\u{1FAF2}\u{1F3FF}", + "\u{1FAF3}", + "\u{1FAF3}\u{1F3FB}", + "\u{1FAF3}\u{1F3FC}", + "\u{1FAF3}\u{1F3FD}", + "\u{1FAF3}\u{1F3FE}", + "\u{1FAF3}\u{1F3FF}", + "\u{1FAF4}", + "\u{1FAF4}\u{1F3FB}", + "\u{1FAF4}\u{1F3FC}", + "\u{1FAF4}\u{1F3FD}", + "\u{1FAF4}\u{1F3FE}", + "\u{1FAF4}\u{1F3FF}", + "\u{1FAF5}", + "\u{1FAF5}\u{1F3FB}", + "\u{1FAF5}\u{1F3FC}", + "\u{1FAF5}\u{1F3FD}", + "\u{1FAF5}\u{1F3FE}", + "\u{1FAF5}\u{1F3FF}", + "\u{1FAF6}", + "\u{1FAF6}\u{1F3FB}", + "\u{1FAF6}\u{1F3FC}", + "\u{1FAF6}\u{1F3FD}", + "\u{1FAF6}\u{1F3FE}", + "\u{1FAF6}\u{1F3FF}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.0.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.0.js new file mode 100644 index 0000000000..03c58e25c3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.0.js @@ -0,0 +1,54 @@ +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Test that Unicode property escapes for `RGI_Emoji` (property of strings) + match Emoji 15.0 strings. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji}+$/v, + expression: "\\p{RGI_Emoji}", + matchStrings: [ + "\u{1F426}\u200D\u2B1B", + "\u{1F6DC}", + "\u{1FA75}", + "\u{1FA76}", + "\u{1FA77}", + "\u{1FA87}", + "\u{1FA88}", + "\u{1FAAD}", + "\u{1FAAE}", + "\u{1FAAF}", + "\u{1FABB}", + "\u{1FABC}", + "\u{1FABD}", + "\u{1FABF}", + "\u{1FACE}", + "\u{1FACF}", + "\u{1FADA}", + "\u{1FADB}", + "\u{1FAE8}", + "\u{1FAF7}", + "\u{1FAF7}\u{1F3FB}", + "\u{1FAF7}\u{1F3FC}", + "\u{1FAF7}\u{1F3FD}", + "\u{1FAF7}\u{1F3FE}", + "\u{1FAF7}\u{1F3FF}", + "\u{1FAF8}", + "\u{1FAF8}\u{1F3FB}", + "\u{1FAF8}\u{1F3FC}", + "\u{1FAF8}\u{1F3FD}", + "\u{1FAF8}\u{1F3FE}", + "\u{1FAF8}\u{1F3FF}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.1.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.1.js new file mode 100644 index 0000000000..c2ef032918 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/rgi-emoji-15.1.js @@ -0,0 +1,141 @@ +// Copyright 2023 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Test that Unicode property escapes for `RGI_Emoji` (property of strings) + match Emoji 15.1 strings. +info: | + Generated by https://github.com/mathiasbynens/caniunicode +esid: sec-static-semantics-unicodematchproperty-p +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testPropertyOfStrings({ + regExp: /^\p{RGI_Emoji}+$/v, + expression: "\\p{RGI_Emoji}", + matchStrings: [ + "\u26D3\uFE0F\u200D\u{1F4A5}", + "\u{1F344}\u200D\u{1F7EB}", + "\u{1F34B}\u200D\u{1F7E9}", + "\u{1F3C3}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FB}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FC}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FD}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FE}\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F3C3}\u{1F3FF}\u200D\u27A1\uFE0F", + "\u{1F426}\u200D\u{1F525}", + "\u{1F468}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F468}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F469}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F642}\u200D\u2194\uFE0F", + "\u{1F642}\u200D\u2195\uFE0F", + "\u{1F6B6}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FB}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FC}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FD}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FE}\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F6B6}\u{1F3FF}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FB}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FC}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FD}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FE}\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", + "\u{1F9CE}\u{1F3FF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D2}", + "\u{1F9D1}\u200D\u{1F9D2}\u200D\u{1F9D2}", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FB}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FC}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FD}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FE}\u200D\u{1F9BD}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9AF}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BC}\u200D\u27A1\uFE0F", + "\u{1F9D1}\u{1F3FF}\u200D\u{1F9BD}\u200D\u27A1\uFE0F" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/shell.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/shell.js new file mode 100644 index 0000000000..591d3924c3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/shell.js @@ -0,0 +1,115 @@ +// GENERATED, DO NOT EDIT +// file: regExpUtils.js +// Copyright (C) 2017 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. +/*--- +description: | + Collection of functions used to assert the correctness of RegExp objects. +defines: [buildString, testPropertyEscapes, testPropertyOfStrings, testExtendedCharacterClass, matchValidator] +---*/ + +function buildString(args) { + // Use member expressions rather than destructuring `args` for improved + // compatibility with engines that only implement assignment patterns + // partially or not at all. + const loneCodePoints = args.loneCodePoints; + const ranges = args.ranges; + const CHUNK_SIZE = 10000; + let result = Reflect.apply(String.fromCodePoint, null, loneCodePoints); + for (let i = 0; i < ranges.length; i++) { + const range = ranges[i]; + const start = range[0]; + const end = range[1]; + const codePoints = []; + for (let length = 0, codePoint = start; codePoint <= end; codePoint++) { + codePoints[length++] = codePoint; + if (length === CHUNK_SIZE) { + result += Reflect.apply(String.fromCodePoint, null, codePoints); + codePoints.length = length = 0; + } + } + result += Reflect.apply(String.fromCodePoint, null, codePoints); + } + return result; +} + +function printCodePoint(codePoint) { + const hex = codePoint + .toString(16) + .toUpperCase() + .padStart(6, "0"); + return `U+${hex}`; +} + +function printStringCodePoints(string) { + const buf = []; + for (const symbol of string) { + const formatted = printCodePoint(symbol.codePointAt(0)); + buf.push(formatted); + } + return buf.join(' '); +} + +function testPropertyEscapes(regExp, string, expression) { + if (!regExp.test(string)) { + for (const symbol of string) { + const formatted = printCodePoint(symbol.codePointAt(0)); + assert( + regExp.test(symbol), + `\`${ expression }\` should match ${ formatted } (\`${ symbol }\`)` + ); + } + } +} + +function testPropertyOfStrings(args) { + // Use member expressions rather than destructuring `args` for improved + // compatibility with engines that only implement assignment patterns + // partially or not at all. + const regExp = args.regExp; + const expression = args.expression; + const matchStrings = args.matchStrings; + const nonMatchStrings = args.nonMatchStrings; + const allStrings = matchStrings.join(''); + if (!regExp.test(allStrings)) { + for (const string of matchStrings) { + assert( + regExp.test(string), + `\`${ expression }\` should match ${ string } (${ printStringCodePoints(string) })` + ); + } + } + + if (!nonMatchStrings) return; + + const allNonMatchStrings = nonMatchStrings.join(''); + if (regExp.test(allNonMatchStrings)) { + for (const string of nonMatchStrings) { + assert( + !regExp.test(string), + `\`${ expression }\` should not match ${ string } (${ printStringCodePoints(string) })` + ); + } + } +} + +// The exact same logic can be used to test extended character classes +// as enabled through the RegExp `v` flag. This is useful to test not +// just standalone properties of strings, but also string literals, and +// set operations. +const testExtendedCharacterClass = testPropertyOfStrings; + +// Returns a function that validates a RegExp match result. +// +// Example: +// +// var validate = matchValidator(['b'], 1, 'abc'); +// validate(/b/.exec('abc')); +// +function matchValidator(expectedEntries, expectedIndex, expectedInput) { + return function(match) { + assert.compareArray(match, expectedEntries, 'Match entries'); + assert.sameValue(match.index, expectedIndex, 'Match index'); + assert.sameValue(match.input, expectedInput, 'Match input'); + } +} diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js new file mode 100644 index 0000000000..02cf2f9e5b --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class-escape.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--\d]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}--\d]", + matchStrings: [ + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "0", + "2", + "4", + "6\uFE0F\u20E3", + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js new file mode 100644 index 0000000000..96c4b87b38 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-class.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--[0-9]]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}--[0-9]]", + matchStrings: [ + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "0", + "2", + "4", + "6\uFE0F\u20E3", + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js new file mode 100644 index 0000000000..1d337d37a7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character-property-escape.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--\p{ASCII_Hex_Digit}]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}--\p{ASCII_Hex_Digit}]", + matchStrings: [ + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "0", + "2", + "4", + "6\uFE0F\u20E3", + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js new file mode 100644 index 0000000000..3e27211dc3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-character.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--_]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}--_]", + matchStrings: [ + "0", + "2", + "4", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js new file mode 100644 index 0000000000..5ac2d64bc0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-property-of-strings-escape.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}--\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "0", + "2", + "4" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js new file mode 100644 index 0000000000..ee83c8c1b0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-difference-string-literal.js @@ -0,0 +1,35 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}--\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}--\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [], + nonMatchStrings: [ + "0", + "2", + "4", + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js new file mode 100644 index 0000000000..8b27faeb1e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class-escape.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&\d]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}&&\d]", + matchStrings: [ + "0", + "2", + "4" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js new file mode 100644 index 0000000000..82dd8971f7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-class.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&[0-9]]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}&&[0-9]]", + matchStrings: [ + "0", + "2", + "4" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js new file mode 100644 index 0000000000..91eb444cc6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character-property-escape.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&\p{ASCII_Hex_Digit}]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}&&\p{ASCII_Hex_Digit}]", + matchStrings: [ + "0", + "2", + "4" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js new file mode 100644 index 0000000000..87f8a8c182 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-character.js @@ -0,0 +1,35 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&_]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}&&_]", + matchStrings: [], + nonMatchStrings: [ + "0", + "2", + "4", + "6\uFE0F\u20E3", + "7", + "9\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js new file mode 100644 index 0000000000..fe4f943999 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-property-of-strings-escape.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}&&\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "0", + "2", + "4", + "6\uFE0F\u20E3", + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js new file mode 100644 index 0000000000..f6314e94e7 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-intersection-string-literal.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}&&\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}&&\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "0", + "2", + "4", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js new file mode 100644 index 0000000000..5bbf70287c --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class-escape.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}\d]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}\d]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js new file mode 100644 index 0000000000..28d3a42c68 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-class.js @@ -0,0 +1,42 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}[0-9]]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}[0-9]]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js new file mode 100644 index 0000000000..707dd8047a --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character-property-escape.js @@ -0,0 +1,53 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}\p{ASCII_Hex_Digit}]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}\p{ASCII_Hex_Digit}]", + matchStrings: [ + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "9\uFE0F\u20E3", + "A", + "B", + "C", + "D", + "E", + "F", + "a", + "b", + "c", + "d", + "e", + "f" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js new file mode 100644 index 0000000000..ddd9eeb7a6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-character.js @@ -0,0 +1,37 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}_]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}_]", + matchStrings: [ + "0", + "2", + "4", + "9\uFE0F\u20E3", + "_" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js new file mode 100644 index 0000000000..3596853330 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-property-of-strings-escape.js @@ -0,0 +1,46 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-unicode-property-escapes, regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}\p{Emoji_Keycap_Sequence}]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}\p{Emoji_Keycap_Sequence}]", + matchStrings: [ + "#\uFE0F\u20E3", + "*\uFE0F\u20E3", + "0", + "0\uFE0F\u20E3", + "1\uFE0F\u20E3", + "2", + "2\uFE0F\u20E3", + "3\uFE0F\u20E3", + "4", + "4\uFE0F\u20E3", + "5\uFE0F\u20E3", + "6\uFE0F\u20E3", + "7\uFE0F\u20E3", + "8\uFE0F\u20E3", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js new file mode 100644 index 0000000000..8780335787 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicodeSets/generated/string-literal-union-string-literal.js @@ -0,0 +1,36 @@ +// Copyright 2022 Mathias Bynens. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +author: Mathias Bynens +description: > + Extended character classes enabled by the RegExp `v` flag support + properties of strings, string literals, and set operations +info: | + Generated by https://github.com/mathiasbynens/unicode-property-escapes-tests + Unicode v14.0.0 +esid: sec-patterns +features: [regexp-v-flag] +includes: [regExpUtils.js] +---*/ + +testExtendedCharacterClass({ + regExp: /^[\q{0|2|4|9\uFE0F\u20E3}\q{0|2|4|9\uFE0F\u20E3}]+$/v, + expression: "[\q{0|2|4|9\uFE0F\u20E3}\q{0|2|4|9\uFE0F\u20E3}]", + matchStrings: [ + "0", + "2", + "4", + "9\uFE0F\u20E3" + ], + nonMatchStrings: [ + "6\uFE0F\u20E3", + "7", + "C", + "\u2603", + "\u{1D306}", + "\u{1F1E7}\u{1F1EA}" + ], +}); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicodeSets/shell.js b/js/src/tests/test262/built-ins/RegExp/unicodeSets/shell.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_character_class_backspace_escape.js b/js/src/tests/test262/built-ins/RegExp/unicode_character_class_backspace_escape.js new file mode 100644 index 0000000000..aefd40fcb3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_character_class_backspace_escape.js @@ -0,0 +1,22 @@ +// Copyright (C) 2020 Alexey Shvayka. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: prod-ClassEscapes +description: > + \b escape inside CharacterClass is valid in Unicode patterns (unlike \B). +info: | + ClassEscape[U] :: + b + + Static Semantics: CharacterValue + + ClassEscape :: b + + 1. Return the code point value of U+0008 (BACKSPACE). +---*/ + +assert(/[\b]/u.test('\u0008')); +assert(/[\b-A]/u.test('A')); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_full_case_folding.js b/js/src/tests/test262/built-ins/RegExp/unicode_full_case_folding.js new file mode 100644 index 0000000000..48900a67f0 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_full_case_folding.js @@ -0,0 +1,27 @@ +// Copyright (C) 2022 Igalia, S.L. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +esid: sec-runtime-semantics-canonicalize-ch +description: > + Case-insensitive Unicode RegExps should not apply full case folding mappings +info: | + Canonicalize ( _rer_, _ch_ ) + 1. If _rer_.[[Unicode]] is *true* and _rer_.[[IgnoreCase]] is *true*, then + a. If the file `CaseFolding.txt` of the Unicode Character Database provides + a simple or common case folding mapping for _ch_, return the result of + applying that mapping to _ch_. + b. Return _ch_. + + See https://unicode.org/Public/UCD/latest/ucd/CaseFolding.txt for the case + folding mappings. +---*/ + +assert(/[\u0390]/ui.test("\u1fd3"), "\\u0390 does not match \\u1fd3"); +assert(/[\u1fd3]/ui.test("\u0390"), "\\u1fd3 does not match \\u0390"); +assert(/[\u03b0]/ui.test("\u1fe3"), "\\u03b0 does not match \\u1fe3"); +assert(/[\u1fe3]/ui.test("\u03b0"), "\\u1fe3 does not match \\u03b0"); +assert(/[\ufb05]/ui.test("\ufb06"), "\\ufb05 does not match \\ufb06"); +assert(/[\ufb06]/ui.test("\ufb05"), "\\ufb06 does not match \\ufb05"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_identity_escape.js b/js/src/tests/test262/built-ins/RegExp/unicode_identity_escape.js new file mode 100644 index 0000000000..1c5b47ad5e --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_identity_escape.js @@ -0,0 +1,55 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: IdentityEscape for Unicode RegExp +info: | + IdentityEscape for Unicode RegExps is restricted to SyntaxCharacter and U+002F (SOLIDUS) +es6id: 21.1.2 +---*/ + +// 21.2.1 Patterns +// +// IdentityEscape[U] :: +// [+U] SyntaxCharacter +// [+U] / +// +// SyntaxCharacter :: one of +// ^ $ \ . * + ? ( ) [ ] { } | + +// IdentityEscape in AtomEscape +assert(/\^/u.test("^"), "IdentityEscape in AtomEscape: /\\^/"); +assert(/\$/u.test("$"), "IdentityEscape in AtomEscape: /\\$/"); +assert(/\\/u.test("\\"), "IdentityEscape in AtomEscape: /\\\\/"); +assert(/\./u.test("."), "IdentityEscape in AtomEscape: /\\./"); +assert(/\*/u.test("*"), "IdentityEscape in AtomEscape: /\\*/"); +assert(/\+/u.test("+"), "IdentityEscape in AtomEscape: /\\+/"); +assert(/\?/u.test("?"), "IdentityEscape in AtomEscape: /\\?/"); +assert(/\(/u.test("("), "IdentityEscape in AtomEscape: /\\(/"); +assert(/\)/u.test(")"), "IdentityEscape in AtomEscape: /\\)/"); +assert(/\[/u.test("["), "IdentityEscape in AtomEscape: /\\[/"); +assert(/\]/u.test("]"), "IdentityEscape in AtomEscape: /\\]/"); +assert(/\{/u.test("{"), "IdentityEscape in AtomEscape: /\\{/"); +assert(/\}/u.test("}"), "IdentityEscape in AtomEscape: /\\}/"); +assert(/\|/u.test("|"), "IdentityEscape in AtomEscape: /\\|/"); +assert(/\//u.test("/"), "IdentityEscape in AtomEscape: /\\//"); + + +// IdentityEscape in ClassEscape +assert(/[\^]/u.test("^"), "IdentityEscape in ClassEscape: /[\\^]/"); +assert(/[\$]/u.test("$"), "IdentityEscape in ClassEscape: /[\\$]/"); +assert(/[\\]/u.test("\\"), "IdentityEscape in ClassEscape: /[\\\\]/"); +assert(/[\.]/u.test("."), "IdentityEscape in ClassEscape: /[\\.]/"); +assert(/[\*]/u.test("*"), "IdentityEscape in ClassEscape: /[\\*]/"); +assert(/[\+]/u.test("+"), "IdentityEscape in ClassEscape: /[\\+]/"); +assert(/[\?]/u.test("?"), "IdentityEscape in ClassEscape: /[\\?]/"); +assert(/[\(]/u.test("("), "IdentityEscape in ClassEscape: /[\\(]/"); +assert(/[\)]/u.test(")"), "IdentityEscape in ClassEscape: /[\\)]/"); +assert(/[\[]/u.test("["), "IdentityEscape in ClassEscape: /[\\[]/"); +assert(/[\]]/u.test("]"), "IdentityEscape in ClassEscape: /[\\]]/"); +assert(/[\{]/u.test("{"), "IdentityEscape in ClassEscape: /[\\{]/"); +assert(/[\}]/u.test("}"), "IdentityEscape in ClassEscape: /[\\}]/"); +assert(/[\|]/u.test("|"), "IdentityEscape in ClassEscape: /[\\|]/"); +assert(/[\/]/u.test("/"), "IdentityEscape in ClassEscape: /[\\/]/"); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_brackets.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_brackets.js new file mode 100644 index 0000000000..da3c2f3f38 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_brackets.js @@ -0,0 +1,33 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Standalone brackets +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExp. + Tested extension: "Atom[U] :: PatternCharacter" +es6id: 21.1.2 +---*/ + +// Single parentheses and brackets. +assert.throws(SyntaxError, function() { + RegExp("(", "u"); +}, 'RegExp("(", "u"): '); +assert.throws(SyntaxError, function() { + RegExp(")", "u"); +}, 'RegExp(")", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[", "u"); +}, 'RegExp("[", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("]", "u"); +}, 'RegExp("]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{", "u"); +}, 'RegExp("{", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("}", "u"); +}, 'RegExp("}", "u"): '); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_character_class_escape.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_character_class_escape.js new file mode 100644 index 0000000000..971eb169c6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_character_class_escape.js @@ -0,0 +1,75 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - ClassEscape in range expression +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExp. + Tested extension: "ClassAtomNoDashInRange :: \ ClassEscape but only if ClassEscape evaluates to a CharSet with exactly one character" +es6id: 21.2.2.15.1 +---*/ + +// Leading CharacterClassEscape. +assert.throws(SyntaxError, function() { + RegExp("[\\d-a]", "u"); +}, 'RegExp("[\\d-a]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\D-a]", "u"); +}, 'RegExp("[\\D-a]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\s-a]", "u"); +}, 'RegExp("[\\s-a]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\S-a]", "u"); +}, 'RegExp("[\\S-a]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\w-a]", "u"); +}, 'RegExp("[\\w-a]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\W-a]", "u"); +}, 'RegExp("[\\W-a]", "u"): '); + + +// Trailing CharacterClassEscape. +assert.throws(SyntaxError, function() { + RegExp("[a-\\d]", "u"); +}, 'RegExp("[a-\\d]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[a-\\D]", "u"); +}, 'RegExp("[a-\\D]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[a-\\s]", "u"); +}, 'RegExp("[a-\\s]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[a-\\S]", "u"); +}, 'RegExp("[a-\\S]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[a-\\w]", "u"); +}, 'RegExp("[a-\\w]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[a-\\W]", "u"); +}, 'RegExp("[a-\\W]", "u"): '); + + +// Leading and trailing CharacterClassEscape. +assert.throws(SyntaxError, function() { + RegExp("[\\d-\\d]", "u"); +}, 'RegExp("[\\d-\\d]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\D-\\D]", "u"); +}, 'RegExp("[\\D-\\D]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\s-\\s]", "u"); +}, 'RegExp("[\\s-\\s]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\S-\\S]", "u"); +}, 'RegExp("[\\S-\\S]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\w-\\w]", "u"); +}, 'RegExp("[\\w-\\w]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\W-\\W]", "u"); +}, 'RegExp("[\\W-\\W]", "u"): '); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js new file mode 100644 index 0000000000..3b71e992b6 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape.js @@ -0,0 +1,67 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Identity escape with basic latin characters +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExps. + Tested extension: "IdentityEscape[U] :: [~U] SourceCharacter but not c" +es6id: 21.1.2 +---*/ + +function isSyntaxCharacter(c) { + switch (c) { + case "^": + case "$": + case "\\": + case ".": + case "*": + case "+": + case "?": + case "(": + case ")": + case "[": + case "]": + case "{": + case "}": + case "|": + return true; + default: + return false; + } +} + +function isAlphaDigit(c) { + return ("0" <= c && c <= "9") || ("A" <= c && c <= "Z") || ("a" <= c && c <= "z"); +} + + +// IdentityEscape in AtomEscape. +// +// AtomEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: IdentityEscape[?U] +for (var cu = 0x00; cu <= 0x7f; ++cu) { + var s = String.fromCharCode(cu); + if (!isAlphaDigit(s) && !isSyntaxCharacter(s) && s !== "/") { + assert.throws(SyntaxError, function() { + RegExp("\\" + s, "u"); + }, "Invalid IdentityEscape in AtomEscape: '\\" + s + "'"); + } +} + + +// IdentityEscape in ClassEscape. +// +// ClassEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: IdentityEscape[?U] +for (var cu = 0x00; cu <= 0x7f; ++cu) { + var s = String.fromCharCode(cu); + if (!isAlphaDigit(s) && !isSyntaxCharacter(s) && s !== "/" && s !== "-") { + assert.throws(SyntaxError, function() { + RegExp("[\\" + s + "]", "u"); + }, "Invalid IdentityEscape in ClassEscape: '\\" + s + "'"); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_alpha.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_alpha.js new file mode 100644 index 0000000000..b226c0a545 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_alpha.js @@ -0,0 +1,102 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Identity escape with basic latin letters +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExps. + Tested extension: "IdentityEscape[U] :: [~U] SourceCharacter but not c" + + Forbidden extension (16.1): + The RegExp pattern grammars in 21.2.1 and B.1.4 must not be extended to recognize any of the + source characters A-Z or a-z as IdentityEscape[U] when the U grammar parameter is present. +es6id: 21.1.2 +---*/ + +function isValidAlphaEscapeInAtom(s) { + switch (s) { + // Assertion [U] :: \b + case "b": + // Assertion [U] :: \B + case "B": + // ControlEscape :: one of f n r t v + case "f": + case "n": + case "r": + case "t": + case "v": + // CharacterClassEscape :: one of d D s S w W + case "d": + case "D": + case "s": + case "S": + case "w": + case "W": + return true; + default: + return false; + } +} + +function isValidAlphaEscapeInClass(s) { + switch (s) { + // ClassEscape[U] :: b + case "b": + // ControlEscape :: one of f n r t v + case "f": + case "n": + case "r": + case "t": + case "v": + // CharacterClassEscape :: one of d D s S w W + case "d": + case "D": + case "s": + case "S": + case "w": + case "W": + return true; + default: + return false; + } +} + +// IdentityEscape in AtomEscape +for (var cu = 0x41 /* A */; cu <= 0x5a /* Z */; ++cu) { + var s = String.fromCharCode(cu); + if (!isValidAlphaEscapeInAtom(s)) { + assert.throws(SyntaxError, function() { + RegExp("\\" + s, "u"); + }, "IdentityEscape in AtomEscape: '" + s + "'"); + } +} +for (var cu = 0x61 /* a */; cu <= 0x7a /* z */; ++cu) { + var s = String.fromCharCode(cu); + if (!isValidAlphaEscapeInAtom(s)) { + assert.throws(SyntaxError, function() { + RegExp("\\" + s, "u"); + }, "IdentityEscape in AtomEscape: '" + s + "'"); + } +} + + +// IdentityEscape in ClassEscape +for (var cu = 0x41 /* A */; cu <= 0x5a /* Z */; ++cu) { + var s = String.fromCharCode(cu); + if (!isValidAlphaEscapeInClass(s)) { + assert.throws(SyntaxError, function() { + RegExp("[\\" + s + "]", "u"); + }, "IdentityEscape in ClassEscape: '" + s + "'"); + } +} +for (var cu = 0x61 /* a */; cu <= 0x7a /* z */; ++cu) { + var s = String.fromCharCode(cu); + if (!isValidAlphaEscapeInClass(s)) { + assert.throws(SyntaxError, function() { + RegExp("[\\" + s + "]", "u"); + }, "IdentityEscape in ClassEscape: '" + s + "'"); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_c.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_c.js new file mode 100644 index 0000000000..416bce486d --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_c.js @@ -0,0 +1,47 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Invalid control escape sequences +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExp. + Tested extension: "IdentityEscape[U] :: [~U] SourceCharacter but not c" +es6id: 21.1.2 +---*/ + +function isAlpha(c) { + return ("A" <= c && c <= "Z") || ("a" <= c && c <= "z"); +} + + +// "c ControlLetter" sequence in AtomEscape. +// +// AtomEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: c ControlLetter +assert.throws(SyntaxError, function() { RegExp("\\c", "u"); }); +for (var cu = 0x00; cu <= 0x7f; ++cu) { + var s = String.fromCharCode(cu); + if (!isAlpha(s)) { + assert.throws(SyntaxError, function() { + RegExp("\\c" + s, "u"); + }, "ControlLetter escape in AtomEscape: '" + s + "'"); + } +} + + +// "c ControlLetter" sequence in ClassEscape. +// +// ClassEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: c ControlLetter +assert.throws(SyntaxError, function() { RegExp("[\\c]", "u"); }); +for (var cu = 0x00; cu <= 0x7f; ++cu) { + var s = String.fromCharCode(cu); + if (!isAlpha(s)) { + assert.throws(SyntaxError, function() { + RegExp("[\\c" + s + "]", "u"); + }, "ControlLetter escape in ClassEscape: '" + s + "'"); + } +} + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_u.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_u.js new file mode 100644 index 0000000000..517bf08ab3 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_u.js @@ -0,0 +1,78 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Incomplete Unicode escape sequences +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExp. + Tested extension: "IdentityEscape[U] :: [~U] SourceCharacter but not c" +es6id: 21.1.2 +---*/ + +// Incomplete RegExpUnicodeEscapeSequence in AtomEscape not parsed as IdentityEscape. +// +// AtomEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: RegExpUnicodeEscapeSequence[?U] +assert.throws(SyntaxError, function() { + RegExp("\\u", "u"); +}, 'RegExp("\\u", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\u1", "u"); +}, 'RegExp("\\u1", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\u12", "u"); +}, 'RegExp("\\u12", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\u123", "u"); +}, 'RegExp("\\u123", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\u{", "u"); +}, 'RegExp("\\u{", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\u{}", "u"); +}, 'RegExp("\\u{}", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\u{1", "u"); +}, 'RegExp("\\u{1", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\u{12", "u"); +}, 'RegExp("\\u{12", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\u{123", "u"); +}, 'RegExp("\\u{123", "u"): '); + + +// Incomplete RegExpUnicodeEscapeSequence in ClassEscape not parsed as IdentityEscape. +// +// ClassEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: RegExpUnicodeEscapeSequence[?U] +assert.throws(SyntaxError, function() { + RegExp("[\\u]", "u"); +}, 'RegExp("[\\u]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\u1]", "u"); +}, 'RegExp("[\\u1]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\u12]", "u"); +}, 'RegExp("[\\u12]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\u123]", "u"); +}, 'RegExp("[\\u123]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\u{]", "u"); +}, 'RegExp("[\\u{]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\u{}]", "u"); +}, 'RegExp("[\\u{}]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\u{1]", "u"); +}, 'RegExp("[\\u{1]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\u{12]", "u"); +}, 'RegExp("[\\u{12]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\u{123]", "u"); +}, 'RegExp("[\\u{123]", "u"): '); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_x.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_x.js new file mode 100644 index 0000000000..24a1d9f90f --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_identity_escape_x.js @@ -0,0 +1,36 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Incomplete hexadecimal escape sequences +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExp. + Tested extension: "IdentityEscape[U] :: [~U] SourceCharacter but not c" +es6id: 21.1.2 +---*/ + +// Incomplete HexEscapeSequence in AtomEscape not parsed as IdentityEscape. +// +// AtomEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: HexEscapeSequence +assert.throws(SyntaxError, function() { + RegExp("\\x", "u"); +}, 'RegExp("\\x", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\x1", "u"); +}, 'RegExp("\\x1", "u"): '); + + +// Incomplete HexEscapeSequence in ClassEscape not parsed as IdentityEscape. +// +// ClassEscape[U] :: CharacterEscape[?U] +// CharacterEscape[U] :: HexEscapeSequence +assert.throws(SyntaxError, function() { + RegExp("[\\x]", "u"); +}, 'RegExp("[\\x]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\x1]", "u"); +}, 'RegExp("[\\x1]", "u"): '); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_incomplete_quantifier.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_incomplete_quantifier.js new file mode 100644 index 0000000000..2a437729cf --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_incomplete_quantifier.js @@ -0,0 +1,42 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Incomplete quantifiers +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExp. + Tested extension: "Atom[U] :: PatternCharacter" +es6id: 21.1.2 +---*/ + +// Incomplete quantifier with atom. +assert.throws(SyntaxError, function() { + RegExp("a{", "u"); +}, 'RegExp("a{", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("a{1", "u"); +}, 'RegExp("a{1", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("a{1,", "u"); +}, 'RegExp("a{1,", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("a{1,2", "u"); +}, 'RegExp("a{1,2", "u"): '); + + +// Incomplete quantifier without atom. +assert.throws(SyntaxError, function() { + RegExp("{", "u"); +}, 'RegExp("{", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{1", "u"); +}, 'RegExp("{1", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{1,", "u"); +}, 'RegExp("{1,", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{1,2", "u"); +}, 'RegExp("{1,2", "u"): '); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_octal_escape.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_octal_escape.js new file mode 100644 index 0000000000..2940fd9011 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_octal_escape.js @@ -0,0 +1,150 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Octal escape sequences +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExp. + Tested extension: "CharacterEscape[U] :: [~U] LegacyOctalEscapeSequence" +es6id: 21.1.2 +---*/ + +// DecimalEscape without leading 0 in AtomEscape. +// +// AtomEscape[U] :: DecimalEscape +// DecimalEscape :: DecimalIntegerLiteral [lookahead /= DecimalDigit] +assert.throws(SyntaxError, function() { + RegExp("\\1", "u"); +}, 'RegExp("\\1", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\2", "u"); +}, 'RegExp("\\2", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\3", "u"); +}, 'RegExp("\\3", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\4", "u"); +}, 'RegExp("\\4", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\5", "u"); +}, 'RegExp("\\5", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\6", "u"); +}, 'RegExp("\\6", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\7", "u"); +}, 'RegExp("\\7", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\8", "u"); +}, 'RegExp("\\8", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\9", "u"); +}, 'RegExp("\\9", "u"): '); + + +// DecimalEscape without leading 0 in ClassEscape. +// +// ClassEscape[U] :: DecimalEscape +// DecimalEscape :: DecimalIntegerLiteral [lookahead /= DecimalDigit] +assert.throws(SyntaxError, function() { + RegExp("[\\1]", "u"); +}, 'RegExp("[\\1]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\2]", "u"); +}, 'RegExp("[\\2]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\3]", "u"); +}, 'RegExp("[\\3]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\4]", "u"); +}, 'RegExp("[\\4]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\5]", "u"); +}, 'RegExp("[\\5]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\6]", "u"); +}, 'RegExp("[\\6]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\7]", "u"); +}, 'RegExp("[\\7]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\8]", "u"); +}, 'RegExp("[\\8]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\9]", "u"); +}, 'RegExp("[\\9]", "u"): '); + + +// DecimalEscape with leading 0 in AtomEscape. +// +// Atom[U] :: DecimalEscape +// DecimalEscape :: DecimalIntegerLiteral [lookahead /= DecimalDigit] +assert.throws(SyntaxError, function() { + RegExp("\\00", "u"); +}, 'RegExp("\\00", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\01", "u"); +}, 'RegExp("\\01", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\02", "u"); +}, 'RegExp("\\02", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\03", "u"); +}, 'RegExp("\\03", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\04", "u"); +}, 'RegExp("\\04", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\05", "u"); +}, 'RegExp("\\05", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\06", "u"); +}, 'RegExp("\\06", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\07", "u"); +}, 'RegExp("\\07", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\08", "u"); +}, 'RegExp("\\08", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("\\09", "u"); +}, 'RegExp("\\09", "u"): '); + + +// DecimalEscape with leading 0 in ClassEscape. +// +// ClassEscape[U] :: DecimalEscape +// DecimalEscape :: DecimalIntegerLiteral [lookahead /= DecimalDigit] +assert.throws(SyntaxError, function() { + RegExp("[\\00]", "u"); +}, 'RegExp("[\\00]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\01]", "u"); +}, 'RegExp("[\\01]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\02]", "u"); +}, 'RegExp("[\\02]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\03]", "u"); +}, 'RegExp("[\\03]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\04]", "u"); +}, 'RegExp("[\\04]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\05]", "u"); +}, 'RegExp("[\\05]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\06]", "u"); +}, 'RegExp("[\\06]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\07]", "u"); +}, 'RegExp("[\\07]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\08]", "u"); +}, 'RegExp("[\\08]", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("[\\09]", "u"); +}, 'RegExp("[\\09]", "u"): '); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_quantifiable_assertion.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_quantifiable_assertion.js new file mode 100644 index 0000000000..988dac42f1 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_quantifiable_assertion.js @@ -0,0 +1,96 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Production 'QuantifiableAssertion Quantifier' +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExps. + Tested extension: "ExtendedTerm :: QuantifiableAssertion Quantifier" +es6id: 21.1.2 +---*/ + +// Positive lookahead with quantifier. +assert.throws(SyntaxError, function() { + RegExp("(?=.)*", "u"); +}, 'RegExp("(?=.)*", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.)+", "u"); +}, 'RegExp("(?=.)+", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.)?", "u"); +}, 'RegExp("(?=.)?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.){1}", "u"); +}, 'RegExp("(?=.){1}", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.){1,}", "u"); +}, 'RegExp("(?=.){1,}", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.){1,2}", "u"); +}, 'RegExp("(?=.){1,2}", "u"): '); + + +// Positive lookahead with reluctant quantifier. +assert.throws(SyntaxError, function() { + RegExp("(?=.)*?", "u"); +}, 'RegExp("(?=.)*?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.)+?", "u"); +}, 'RegExp("(?=.)+?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.)??", "u"); +}, 'RegExp("(?=.)??", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.){1}?", "u"); +}, 'RegExp("(?=.){1}?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.){1,}?", "u"); +}, 'RegExp("(?=.){1,}?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?=.){1,2}?", "u"); +}, 'RegExp("(?=.){1,2}?", "u"): '); + + +// Negative lookahead with quantifier. +assert.throws(SyntaxError, function() { + RegExp("(?!.)*", "u"); +}, 'RegExp("(?!.)*", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.)+", "u"); +}, 'RegExp("(?!.)+", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.)?", "u"); +}, 'RegExp("(?!.)?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.){1}", "u"); +}, 'RegExp("(?!.){1}", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.){1,}", "u"); +}, 'RegExp("(?!.){1,}", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.){1,2}", "u"); +}, 'RegExp("(?!.){1,2}", "u"): '); + + +// Negative lookahead with reluctant quantifier. +assert.throws(SyntaxError, function() { + RegExp("(?!.)*?", "u"); +}, 'RegExp("(?!.)*?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.)+?", "u"); +}, 'RegExp("(?!.)+?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.)??", "u"); +}, 'RegExp("(?!.)??", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.){1}?", "u"); +}, 'RegExp("(?!.){1}?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.){1,}?", "u"); +}, 'RegExp("(?!.){1,}?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("(?!.){1,2}?", "u"); +}, 'RegExp("(?!.){1,2}?", "u"): '); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/unicode_restricted_quantifier_without_atom.js b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_quantifier_without_atom.js new file mode 100644 index 0000000000..a1ff9ff463 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/unicode_restricted_quantifier_without_atom.js @@ -0,0 +1,54 @@ +// Copyright (C) 2015 André Bargull. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +description: B.1.4 is not applied for Unicode RegExp - Quantifier without matching Atom +info: | + The compatibility extensions defined in B.1.4 Regular Expressions Patterns + are not applied for Unicode RegExp. + Tested extension: "Atom[U] :: PatternCharacter" +es6id: 21.1.2 +---*/ + +// Quantifier without atom. +assert.throws(SyntaxError, function() { + RegExp("*", "u"); +}, 'RegExp("*", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("+", "u"); +}, 'RegExp("+", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("?", "u"); +}, 'RegExp("?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{1}", "u"); +}, 'RegExp("{1}", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{1,}", "u"); +}, 'RegExp("{1,}", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{1,2}", "u"); +}, 'RegExp("{1,2}", "u"): '); + + +// Reluctant quantifier without atom. +assert.throws(SyntaxError, function() { + RegExp("*?", "u"); +}, 'RegExp("*?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("+?", "u"); +}, 'RegExp("+?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("??", "u"); +}, 'RegExp("??", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{1}?", "u"); +}, 'RegExp("{1}?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{1,}?", "u"); +}, 'RegExp("{1,}?", "u"): '); +assert.throws(SyntaxError, function() { + RegExp("{1,2}?", "u"); +}, 'RegExp("{1,2}?", "u"): '); + +reportCompare(0, 0); diff --git a/js/src/tests/test262/built-ins/RegExp/valid-flags-y.js b/js/src/tests/test262/built-ins/RegExp/valid-flags-y.js new file mode 100644 index 0000000000..ede3ef6175 --- /dev/null +++ b/js/src/tests/test262/built-ins/RegExp/valid-flags-y.js @@ -0,0 +1,26 @@ +// Copyright (C) 2015 the V8 project authors. All rights reserved. +// This code is governed by the BSD license found in the LICENSE file. + +/*--- +es6id: 21.2.3.1 +description: The `y` flag is accepted by the RegExp constructor +info: | + [...] + 10. Return RegExpInitialize(O, P, F). + + 21.2.3.2.2 Runtime Semantics: RegExpInitialize ( obj, pattern, flags ) + + [...] + 7. If F contains any code unit other than "g", "i", "m", "u", or "y" or if + it contains the same code unit more than once, throw a SyntaxError + exception. +---*/ + +new RegExp('abc', 'y'); +new RegExp('abc', 'gy'); +new RegExp('abc', 'iy'); +new RegExp('abc', 'my'); +new RegExp('abc', 'uy'); +new RegExp('abc', 'gimuy'); + +reportCompare(0, 0); -- cgit v1.2.3