···5454DEF(word_boundary_i, 1)
5555DEF(not_word_boundary, 1)
5656DEF(not_word_boundary_i, 1)
5757-DEF(back_reference, 2)
5757+DEF(back_reference, 2) /* variable length */
5858DEF(back_reference_i, 2) /* must come after */
5959DEF(backward_back_reference, 2) /* must come after */
6060DEF(backward_back_reference_i, 2) /* must come after */
+194-85
vendor/git/quickjs-c/libregexp.c
···7777 BOOL ignore_case;
7878 BOOL multi_line;
7979 BOOL dotall;
8080+ uint8_t group_name_scope;
8081 int capture_count;
8182 int total_capture_count; /* -1 = not computed yet */
8283 int has_named_captures; /* -1 = don't know, 0 = no, 1 = yes */
···478479 if (i != 1)
479480 printf(",");
480481 printf("<%s>", p);
481481- p += strlen(p) + 1;
482482+ p += strlen(p) + LRE_GROUP_NAME_TRAILER_LEN;
482483 }
483484 printf("\n");
484485 assert(p == (char *)(buf + buf_len));
···547548 break;
548549 case REOP_save_start:
549550 case REOP_save_end:
551551+ printf(" %u", buf[pos + 1]);
552552+ break;
550553 case REOP_back_reference:
551554 case REOP_back_reference_i:
552555 case REOP_backward_back_reference:
553556 case REOP_backward_back_reference_i:
554554- printf(" %u", buf[pos + 1]);
557557+ {
558558+ int n, i;
559559+ n = buf[pos + 1];
560560+ len += n;
561561+ for(i = 0; i < n; i++) {
562562+ if (i != 0)
563563+ printf(",");
564564+ printf(" %u", buf[pos + 2 + i]);
565565+ }
566566+ }
555567 break;
556568 case REOP_save_reset:
557569 printf(" %u %u", buf[pos + 1], buf[pos + 2]);
···15311543 return -1;
15321544}
1533154515341534-/* Return:
15351535- - true if the opcodes may not advance the char pointer
15361536- - false if the opcodes always advance the char pointer
15461546+/* need_check_adv: false if the opcodes always advance the char pointer
15471547+ need_capture_init: true if all the captures in the atom are not set
15371548*/
15381538-static BOOL re_need_check_advance(const uint8_t *bc_buf, int bc_buf_len)
15491549+static BOOL re_need_check_adv_and_capture_init(BOOL *pneed_capture_init,
15501550+ const uint8_t *bc_buf, int bc_buf_len)
15391551{
15401552 int pos, opcode, len;
15411553 uint32_t val;
15421542- BOOL ret;
15541554+ BOOL need_check_adv, need_capture_init;
1543155515441544- ret = TRUE;
15561556+ need_check_adv = TRUE;
15571557+ need_capture_init = FALSE;
15451558 pos = 0;
15461559 while (pos < bc_buf_len) {
15471560 opcode = bc_buf[pos];
···15511564 case REOP_range_i:
15521565 val = get_u16(bc_buf + pos + 1);
15531566 len += val * 4;
15541554- goto simple_char;
15671567+ need_check_adv = FALSE;
15681568+ break;
15551569 case REOP_range32:
15561570 case REOP_range32_i:
15571571 val = get_u16(bc_buf + pos + 1);
15581572 len += val * 8;
15591559- goto simple_char;
15731573+ need_check_adv = FALSE;
15741574+ break;
15601575 case REOP_char:
15611576 case REOP_char_i:
15621577 case REOP_char32:
15631578 case REOP_char32_i:
15641579 case REOP_dot:
15651580 case REOP_any:
15661566- simple_char:
15671567- ret = FALSE;
15811581+ need_check_adv = FALSE;
15681582 break;
15691583 case REOP_line_start:
15701584 case REOP_line_start_m:
···15821596 case REOP_save_start:
15831597 case REOP_save_end:
15841598 case REOP_save_reset:
15991599+ break;
15851600 case REOP_back_reference:
15861601 case REOP_back_reference_i:
15871602 case REOP_backward_back_reference:
15881603 case REOP_backward_back_reference_i:
16041604+ val = bc_buf[pos + 1];
16051605+ len += val;
16061606+ need_capture_init = TRUE;
15891607 break;
15901608 default:
15911609 /* safe behavior: we cannot predict the outcome */
15921592- return TRUE;
16101610+ need_capture_init = TRUE;
16111611+ goto done;
15931612 }
15941613 pos += len;
15951614 }
15961596- return ret;
16151615+ done:
16161616+ *pneed_capture_init = need_capture_init;
16171617+ return need_check_adv;
15971618}
1598161915991620/* '*pp' is the first char after '<' */
···16521673}
1653167416541675/* if capture_name = NULL: return the number of captures + 1.
16551655- Otherwise, return the capture index corresponding to capture_name
16561656- or -1 if none */
16761676+ Otherwise, return the number of matching capture groups */
16571677static int re_parse_captures(REParseState *s, int *phas_named_captures,
16581658- const char *capture_name)
16781678+ const char *capture_name, BOOL emit_group_index)
16591679{
16601680 const uint8_t *p;
16611661- int capture_index;
16811681+ int capture_index, n;
16621682 char name[TMP_BUF_SIZE];
1663168316641684 capture_index = 1;
16851685+ n = 0;
16651686 *phas_named_captures = 0;
16661687 for (p = s->buf_start; p < s->buf_end; p++) {
16671688 switch (*p) {
···16731694 if (capture_name) {
16741695 p += 3;
16751696 if (re_parse_group_name(name, sizeof(name), &p) == 0) {
16761676- if (!strcmp(name, capture_name))
16771677- return capture_index;
16971697+ if (!strcmp(name, capture_name)) {
16981698+ if (emit_group_index)
16991699+ dbuf_putc(&s->byte_code, capture_index);
17001700+ n++;
17011701+ }
16781702 }
16791703 }
16801704 capture_index++;
···16991723 }
17001724 }
17011725 done:
17021702- if (capture_name)
17031703- return -1;
17041704- else
17261726+ if (capture_name) {
17271727+ return n;
17281728+ } else {
17051729 return capture_index;
17301730+ }
17061731}
1707173217081733static int re_count_captures(REParseState *s)
17091734{
17101735 if (s->total_capture_count < 0) {
17111736 s->total_capture_count = re_parse_captures(s, &s->has_named_captures,
17121712- NULL);
17371737+ NULL, FALSE);
17131738 }
17141739 return s->total_capture_count;
17151740}
···17211746 return s->has_named_captures;
17221747}
1723174817241724-static int find_group_name(REParseState *s, const char *name)
17491749+static int find_group_name(REParseState *s, const char *name, BOOL emit_group_index)
17251750{
17261751 const char *p, *buf_end;
17271752 size_t len, name_len;
17281728- int capture_index;
17531753+ int capture_index, n;
1729175417301755 p = (char *)s->group_names.buf;
17311731- if (!p) return -1;
17561756+ if (!p)
17571757+ return 0;
17321758 buf_end = (char *)s->group_names.buf + s->group_names.size;
17331759 name_len = strlen(name);
17341760 capture_index = 1;
17611761+ n = 0;
17351762 while (p < buf_end) {
17361763 len = strlen(p);
17371737- if (len == name_len && memcmp(name, p, name_len) == 0)
17381738- return capture_index;
17391739- p += len + 1;
17641764+ if (len == name_len && memcmp(name, p, name_len) == 0) {
17651765+ if (emit_group_index)
17661766+ dbuf_putc(&s->byte_code, capture_index);
17671767+ n++;
17681768+ }
17691769+ p += len + LRE_GROUP_NAME_TRAILER_LEN;
17401770 capture_index++;
17411771 }
17421742- return -1;
17721772+ return n;
17731773+}
17741774+17751775+static BOOL is_duplicate_group_name(REParseState *s, const char *name, int scope)
17761776+{
17771777+ const char *p, *buf_end;
17781778+ size_t len, name_len;
17791779+ int scope1;
17801780+17811781+ p = (char *)s->group_names.buf;
17821782+ if (!p)
17831783+ return 0;
17841784+ buf_end = (char *)s->group_names.buf + s->group_names.size;
17851785+ name_len = strlen(name);
17861786+ while (p < buf_end) {
17871787+ len = strlen(p);
17881788+ if (len == name_len && memcmp(name, p, name_len) == 0) {
17891789+ scope1 = (uint8_t)p[len + 1];
17901790+ if (scope == scope1)
17911791+ return TRUE;
17921792+ }
17931793+ p += len + LRE_GROUP_NAME_TRAILER_LEN;
17941794+ }
17951795+ return FALSE;
17431796}
1744179717451798static int re_parse_disjunction(REParseState *s, BOOL is_backward_dir);
···17831836{
17841837 const uint8_t *p;
17851838 int c, last_atom_start, quant_min, quant_max, last_capture_count;
17861786- BOOL greedy, add_zero_advance_check, is_neg, is_backward_lookahead;
18391839+ BOOL greedy, is_neg, is_backward_lookahead;
17871840 REStringList cr_s, *cr = &cr_s;
1788184117891842 last_atom_start = -1;
···19221975 &p)) {
19231976 return re_parse_error(s, "invalid group name");
19241977 }
19251925- if (find_group_name(s, s->u.tmp_buf) > 0) {
19781978+ /* poor's man method to test duplicate group
19791979+ names. */
19801980+ /* XXX: this method does not catch all the errors*/
19811981+ if (is_duplicate_group_name(s, s->u.tmp_buf, s->group_name_scope)) {
19261982 return re_parse_error(s, "duplicate group name");
19271983 }
19281984 /* group name with a trailing zero */
19291985 dbuf_put(&s->group_names, (uint8_t *)s->u.tmp_buf,
19301986 strlen(s->u.tmp_buf) + 1);
19871987+ dbuf_putc(&s->group_names, s->group_name_scope);
19311988 s->has_named_captures = 1;
19321989 goto parse_capture;
19331990 } else {
···19381995 p++;
19391996 /* capture without group name */
19401997 dbuf_putc(&s->group_names, 0);
19981998+ dbuf_putc(&s->group_names, 0);
19411999 parse_capture:
19422000 if (s->capture_count >= CAPTURE_COUNT_MAX)
19432001 return re_parse_error(s, "too many captures");
···19732031 case 'k':
19742032 {
19752033 const uint8_t *p1;
19761976- int dummy_res;
19771977-20342034+ int dummy_res, n;
20352035+ BOOL is_forward;
20362036+19782037 p1 = p;
19792038 if (p1[2] != '<') {
19802039 /* annex B: we tolerate invalid group names in non
···19932052 else
19942053 goto parse_class_atom;
19952054 }
19961996- c = find_group_name(s, s->u.tmp_buf);
19971997- if (c < 0) {
20552055+ is_forward = FALSE;
20562056+ n = find_group_name(s, s->u.tmp_buf, FALSE);
20572057+ if (n == 0) {
19982058 /* no capture name parsed before, try to look
19992059 after (inefficient, but hopefully not common */
20002000- c = re_parse_captures(s, &dummy_res, s->u.tmp_buf);
20012001- if (c < 0) {
20602060+ n = re_parse_captures(s, &dummy_res, s->u.tmp_buf, FALSE);
20612061+ if (n == 0) {
20022062 if (s->is_unicode || re_has_named_captures(s))
20032063 return re_parse_error(s, "group name not defined");
20042064 else
20052065 goto parse_class_atom;
20062066 }
20672067+ is_forward = TRUE;
20682068+ }
20692069+ last_atom_start = s->byte_code.size;
20702070+ last_capture_count = s->capture_count;
20712071+20722072+ /* emit back references to all the captures indexes matching the group name */
20732073+ re_emit_op_u8(s, REOP_back_reference + 2 * is_backward_dir + s->ignore_case, n);
20742074+ if (is_forward) {
20752075+ re_parse_captures(s, &dummy_res, s->u.tmp_buf, TRUE);
20762076+ } else {
20772077+ find_group_name(s, s->u.tmp_buf, TRUE);
20072078 }
20082079 p = p1;
20092080 }
20102010- goto emit_back_reference;
20812081+ break;
20112082 case '0':
20122083 p += 2;
20132084 c = 0;
···20532124 }
20542125 return re_parse_error(s, "back reference out of range in regular expression");
20552126 }
20562056- emit_back_reference:
20572127 last_atom_start = s->byte_code.size;
20582128 last_capture_count = s->capture_count;
2059212920602060- re_emit_op_u8(s, REOP_back_reference + 2 * is_backward_dir + s->ignore_case, c);
21302130+ re_emit_op_u8(s, REOP_back_reference + 2 * is_backward_dir + s->ignore_case, 1);
21312131+ dbuf_putc(&s->byte_code, c);
20612132 }
20622133 break;
20632134 default:
···21662237 if (last_atom_start < 0) {
21672238 return re_parse_error(s, "nothing to repeat");
21682239 }
21692169- /* the spec tells that if there is no advance when
21702170- running the atom after the first quant_min times,
21712171- then there is no match. We remove this test when we
21722172- are sure the atom always advances the position. */
21732173- add_zero_advance_check = re_need_check_advance(s->byte_code.buf + last_atom_start,
21742174- s->byte_code.size - last_atom_start);
21752175-21762240 {
22412241+ BOOL need_capture_init, add_zero_advance_check;
21772242 int len, pos;
22432243+22442244+ /* the spec tells that if there is no advance when
22452245+ running the atom after the first quant_min times,
22462246+ then there is no match. We remove this test when we
22472247+ are sure the atom always advances the position. */
22482248+ add_zero_advance_check =
22492249+ re_need_check_adv_and_capture_init(&need_capture_init,
22502250+ s->byte_code.buf + last_atom_start,
22512251+ s->byte_code.size - last_atom_start);
22522252+22532253+ /* general case: need to reset the capture at each
22542254+ iteration. We don't do it if there are no captures
22552255+ in the atom or if we are sure all captures are
22562256+ initialized in the atom. If quant_min = 0, we still
22572257+ need to reset once the captures in case the atom
22582258+ does not match. */
22592259+ if (need_capture_init && last_capture_count != s->capture_count) {
22602260+ if (dbuf_insert(&s->byte_code, last_atom_start, 3))
22612261+ goto out_of_memory;
22622262+ int pos = last_atom_start;
22632263+ s->byte_code.buf[pos++] = REOP_save_reset;
22642264+ s->byte_code.buf[pos++] = last_capture_count;
22652265+ s->byte_code.buf[pos++] = s->capture_count - 1;
22662266+ }
22672267+21782268 len = s->byte_code.size - last_atom_start;
21792269 if (quant_min == 0) {
21802270 /* need to reset the capture in case the atom is
21812271 not executed */
21822182- if (last_capture_count != s->capture_count) {
22722272+ if (!need_capture_init && last_capture_count != s->capture_count) {
21832273 if (dbuf_insert(&s->byte_code, last_atom_start, 3))
21842274 goto out_of_memory;
21852275 s->byte_code.buf[last_atom_start++] = REOP_save_reset;
···2320241023212411 pos = re_emit_op_u32(s, REOP_goto, 0);
2322241224132413+ s->group_name_scope++;
24142414+23232415 if (re_parse_alternative(s, is_backward_dir))
23242416 return -1;
23252417···23822474 val = get_u16(bc_buf + pos + 1);
23832475 len += val * 8;
23842476 break;
24772477+ case REOP_back_reference:
24782478+ case REOP_back_reference_i:
24792479+ case REOP_backward_back_reference:
24802480+ case REOP_backward_back_reference_i:
24812481+ val = bc_buf[pos + 1];
24822482+ len += val;
24832483+ break;
23852484 }
23862485 pos += len;
23872486 }
···24812580 s->byte_code.size - RE_HEADER_LEN);
2482258124832582 /* add the named groups if needed */
24842484- if (s->group_names.size > (s->capture_count - 1)) {
25832583+ if (s->group_names.size > (s->capture_count - 1) * LRE_GROUP_NAME_TRAILER_LEN) {
24852584 dbuf_put(&s->byte_code, s->group_names.buf, s->group_names.size);
24862585 put_u16(s->byte_code.buf + RE_HEADER_FLAGS,
24872586 lre_get_flags(s->byte_code.buf) | LRE_FLAG_NAMED_GROUPS);
···30573156 case REOP_backward_back_reference_i:
30583157 {
30593158 const uint8_t *cptr1, *cptr1_end, *cptr1_start;
31593159+ const uint8_t *pc1;
30603160 uint32_t c1, c2;
31613161+ int i, n;
3061316230623062- val = *pc++;
30633063- if (val >= s->capture_count)
30643064- goto no_match;
30653065- cptr1_start = capture[2 * val];
30663066- cptr1_end = capture[2 * val + 1];
30673067- if (!cptr1_start || !cptr1_end)
30683068- break;
30693069- if (opcode == REOP_back_reference ||
30703070- opcode == REOP_back_reference_i) {
30713071- cptr1 = cptr1_start;
30723072- while (cptr1 < cptr1_end) {
30733073- if (cptr >= cbuf_end)
30743074- goto no_match;
30753075- GET_CHAR(c1, cptr1, cptr1_end, cbuf_type);
30763076- GET_CHAR(c2, cptr, cbuf_end, cbuf_type);
30773077- if (opcode == REOP_back_reference_i) {
30783078- c1 = lre_canonicalize(c1, s->is_unicode);
30793079- c2 = lre_canonicalize(c2, s->is_unicode);
30803080- }
30813081- if (c1 != c2)
30823082- goto no_match;
30833083- }
30843084- } else {
30853085- cptr1 = cptr1_end;
30863086- while (cptr1 > cptr1_start) {
30873087- if (cptr == s->cbuf)
30883088- goto no_match;
30893089- GET_PREV_CHAR(c1, cptr1, cptr1_start, cbuf_type);
30903090- GET_PREV_CHAR(c2, cptr, s->cbuf, cbuf_type);
30913091- if (opcode == REOP_backward_back_reference_i) {
30923092- c1 = lre_canonicalize(c1, s->is_unicode);
30933093- c2 = lre_canonicalize(c2, s->is_unicode);
31633163+ n = *pc++;
31643164+ pc1 = pc;
31653165+ pc += n;
31663166+31673167+ for(i = 0; i < n; i++) {
31683168+ val = pc1[i];
31693169+ if (val >= s->capture_count)
31703170+ goto no_match;
31713171+ cptr1_start = capture[2 * val];
31723172+ cptr1_end = capture[2 * val + 1];
31733173+ /* test the first not empty capture */
31743174+ if (cptr1_start && cptr1_end) {
31753175+ if (opcode == REOP_back_reference ||
31763176+ opcode == REOP_back_reference_i) {
31773177+ cptr1 = cptr1_start;
31783178+ while (cptr1 < cptr1_end) {
31793179+ if (cptr >= cbuf_end)
31803180+ goto no_match;
31813181+ GET_CHAR(c1, cptr1, cptr1_end, cbuf_type);
31823182+ GET_CHAR(c2, cptr, cbuf_end, cbuf_type);
31833183+ if (opcode == REOP_back_reference_i) {
31843184+ c1 = lre_canonicalize(c1, s->is_unicode);
31853185+ c2 = lre_canonicalize(c2, s->is_unicode);
31863186+ }
31873187+ if (c1 != c2)
31883188+ goto no_match;
31893189+ }
31903190+ } else {
31913191+ cptr1 = cptr1_end;
31923192+ while (cptr1 > cptr1_start) {
31933193+ if (cptr == s->cbuf)
31943194+ goto no_match;
31953195+ GET_PREV_CHAR(c1, cptr1, cptr1_start, cbuf_type);
31963196+ GET_PREV_CHAR(c2, cptr, s->cbuf, cbuf_type);
31973197+ if (opcode == REOP_backward_back_reference_i) {
31983198+ c1 = lre_canonicalize(c1, s->is_unicode);
31993199+ c2 = lre_canonicalize(c2, s->is_unicode);
32003200+ }
32013201+ if (c1 != c2)
32023202+ goto no_match;
32033203+ }
30943204 }
30953095- if (c1 != c2)
30963096- goto no_match;
32053205+ break;
30973206 }
30983207 }
30993208 }
+3
vendor/git/quickjs-c/libregexp.h
···4040#define LRE_RET_MEMORY_ERROR (-1)
4141#define LRE_RET_TIMEOUT (-2)
42424343+/* trailer length after the group name including the trailing '\0' */
4444+#define LRE_GROUP_NAME_TRAILER_LEN 2
4545+4346uint8_t *lre_compile(int *plen, char *error_msg, int error_msg_size,
4447 const char *buf, size_t buf_len, int re_flags,
4548 void *opaque);
+34-17
vendor/git/quickjs-c/quickjs.c
···4740547405 int64_t last_index;
4740647406 const char *group_name_ptr;
4740747407 JSObject *p_obj;
4740847408-4740847408+ JSAtom group_name;
4740947409+4740947410 if (!re)
4741047411 return JS_EXCEPTION;
4741147412···4741947420 indices = JS_UNDEFINED;
4742047421 indices_groups = JS_UNDEFINED;
4742147422 capture = NULL;
4742247422-4742347423+ group_name = JS_ATOM_NULL;
4742447424+4742347425 if (js_regexp_get_lastIndex(ctx, &last_index, this_val))
4742447426 goto fail;
4742547427···4750147503 goto fail;
47502475044750347505 for(i = 0; i < capture_count; i++) {
4750447504- const char *name = NULL;
4750547506 uint8_t **match = &capture[2 * i];
4750647507 int start = -1;
4750747508 int end = -1;
4750847509 JSValue val;
47509475104751047511 if (group_name_ptr && i > 0) {
4751147511- if (*group_name_ptr) name = group_name_ptr;
4751247512- group_name_ptr += strlen(group_name_ptr) + 1;
4751247512+ if (*group_name_ptr) {
4751347513+ /* XXX: slow, should create a shape when the regexp is
4751447514+ compiled */
4751547515+ group_name = JS_NewAtom(ctx, group_name_ptr);
4751647516+ if (group_name == JS_ATOM_NULL)
4751747517+ goto fail;
4751847518+ }
4751947519+ group_name_ptr += strlen(group_name_ptr) + LRE_GROUP_NAME_TRAILER_LEN;
4751347520 }
47514475214751547522 if (match[0] && match[1]) {
···4753647543 goto fail;
4753747544 }
4753847545 }
4753947539- if (name && !JS_IsUndefined(indices_groups)) {
4754047540- val = JS_DupValue(ctx, val);
4754147541- if (JS_DefinePropertyValueStr(ctx, indices_groups,
4754247542- name, val, prop_flags) < 0) {
4754347543- JS_FreeValue(ctx, val);
4754447544- goto fail;
4754647546+ if (group_name != JS_ATOM_NULL) {
4754747547+ /* JS_HasProperty() cannot fail here */
4754847548+ if (!JS_IsUndefined(val) ||
4754947549+ !JS_HasProperty(ctx, indices_groups, group_name)) {
4755047550+ if (JS_DefinePropertyValue(ctx, indices_groups,
4755147551+ group_name, JS_DupValue(ctx, val), prop_flags) < 0) {
4755247552+ JS_FreeValue(ctx, val);
4755347553+ goto fail;
4755447554+ }
4754547555 }
4754647556 }
4754747557 if (JS_DefinePropertyValueUint32(ctx, indices, i, val,
···4755747567 goto fail;
4755847568 }
47559475694756047560- if (name) {
4756147561- if (JS_DefinePropertyValueStr(ctx, groups, name,
4756247562- JS_DupValue(ctx, val),
4756347563- prop_flags) < 0) {
4756447564- JS_FreeValue(ctx, val);
4756547565- goto fail;
4757047570+ if (group_name != JS_ATOM_NULL) {
4757147571+ /* JS_HasProperty() cannot fail here */
4757247572+ if (!JS_IsUndefined(val) ||
4757347573+ !JS_HasProperty(ctx, groups, group_name)) {
4757447574+ if (JS_DefinePropertyValue(ctx, groups, group_name,
4757547575+ JS_DupValue(ctx, val),
4757647576+ prop_flags) < 0) {
4757747577+ JS_FreeValue(ctx, val);
4757847578+ goto fail;
4757947579+ }
4756647580 }
4758147581+ JS_FreeAtom(ctx, group_name);
4758247582+ group_name = JS_ATOM_NULL;
4756747583 }
4756847584 p_obj->u.array.u.values[p_obj->u.array.count++] = val;
4756947585 }
···4758447600 ret = obj;
4758547601 obj = JS_UNDEFINED;
4758647602fail:
4760347603+ JS_FreeAtom(ctx, group_name);
4758747604 JS_FreeValue(ctx, indices_groups);
4758847605 JS_FreeValue(ctx, indices);
4758947606 JS_FreeValue(ctx, str_val);
···3131test262/test/staging/sm/Function/implicit-this-in-parameter-expression.js:12: Test262Error: Expected SameValue(«[object Object]», «undefined») to be true
3232test262/test/staging/sm/Function/invalid-parameter-list.js:13: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
3333test262/test/staging/sm/Function/invalid-parameter-list.js:13: strict mode: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all
3434-test262/test/staging/sm/RegExp/regress-613820-1.js:12: Test262Error: Actual [aaa, aa, a] and expected [aa, a, a] should have the same contents.
3535-test262/test/staging/sm/RegExp/regress-613820-1.js:12: strict mode: Test262Error: Actual [aaa, aa, a] and expected [aa, a, a] should have the same contents.
3636-test262/test/staging/sm/RegExp/regress-613820-2.js:12: Test262Error: Actual [foobar, f, o, o, b, a, r] and expected [foobar, undefined, undefined, undefined, b, a, r] should have the same contents.
3737-test262/test/staging/sm/RegExp/regress-613820-2.js:12: strict mode: Test262Error: Actual [foobar, f, o, o, b, a, r] and expected [foobar, undefined, undefined, undefined, b, a, r] should have the same contents.
3838-test262/test/staging/sm/RegExp/regress-613820-3.js:12: Test262Error: Actual [aab, a, undefined, ab] and expected [aa, undefined, a, undefined] should have the same contents.
3939-test262/test/staging/sm/RegExp/regress-613820-3.js:12: strict mode: Test262Error: Actual [aab, a, undefined, ab] and expected [aa, undefined, a, undefined] should have the same contents.
4034test262/test/staging/sm/String/string-upper-lower-mapping.js:16: Test262Error: Expected SameValue(«""», «""») to be true
4135test262/test/staging/sm/String/string-upper-lower-mapping.js:16: strict mode: Test262Error: Expected SameValue(«""», «""») to be true
4236test262/test/staging/sm/TypedArray/constructor-buffer-sequence.js:29: Test262Error: Expected a ExpectedError but got a Error