MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

consolidate function parsing

+35 -22
+35 -22
src/ant.c
··· 1519 1519 return obj; 1520 1520 } 1521 1521 1522 - static jsval_t js_func_literal(struct js *js, bool is_async) { 1523 - uint8_t flags = js->flags; 1524 - js->consumed = 1; 1525 - jsoff_t name_off = 0, name_len = 0; 1526 - if (next(js) == TOK_IDENTIFIER) { 1527 - name_off = js->toff; 1528 - name_len = js->tlen; 1529 - js->consumed = 1; 1530 - } 1531 - 1532 - EXPECT(TOK_LPAREN, js->flags = flags); 1533 - jsoff_t pos = js->pos - 1; 1522 + static bool parse_func_params(struct js *js, uint8_t *flags) { 1534 1523 for (bool comma = false; next(js) != TOK_EOF; comma = true) { 1535 1524 if (!comma && next(js) == TOK_RPAREN) break; 1536 1525 ··· 1542 1531 } 1543 1532 1544 1533 if (next(js) != TOK_IDENTIFIER) { 1545 - js->flags = flags; 1546 - return js_mkerr(js, "identifier expected"); 1534 + if (flags) js->flags = *flags; 1535 + js_mkerr(js, "identifier expected"); 1536 + return false; 1547 1537 } 1548 1538 js->consumed = 1; 1549 1539 1550 1540 if (is_rest && next(js) != TOK_RPAREN) { 1551 - js->flags = flags; 1552 - return js_mkerr(js, "rest parameter must be last"); 1541 + if (flags) js->flags = *flags; 1542 + js_mkerr(js, "rest parameter must be last"); 1543 + return false; 1553 1544 } 1554 1545 if (next(js) == TOK_RPAREN) break; 1555 - EXPECT(TOK_COMMA, js->flags = flags); 1546 + 1547 + if (next(js) != TOK_COMMA) { 1548 + if (flags) js->flags = *flags; 1549 + js_mkerr(js, "parse error"); 1550 + return false; 1551 + } 1552 + js->consumed = 1; 1553 + } 1554 + return true; 1555 + } 1556 + 1557 + static jsval_t js_func_literal(struct js *js, bool is_async) { 1558 + uint8_t flags = js->flags; 1559 + js->consumed = 1; 1560 + jsoff_t name_off = 0, name_len = 0; 1561 + if (next(js) == TOK_IDENTIFIER) { 1562 + name_off = js->toff; 1563 + name_len = js->tlen; 1564 + js->consumed = 1; 1565 + } 1566 + 1567 + EXPECT(TOK_LPAREN, js->flags = flags); 1568 + jsoff_t pos = js->pos - 1; 1569 + if (!parse_func_params(js, &flags)) { 1570 + js->flags = flags; 1571 + return js_mkerr(js, "invalid parameters"); 1556 1572 } 1557 1573 1558 1574 EXPECT(TOK_RPAREN, js->flags = flags); ··· 2429 2445 js->consumed = 1; 2430 2446 EXPECT(TOK_LPAREN, ); 2431 2447 jsoff_t pos = js->pos - 1; 2432 - for (bool comma = false; next(js) != TOK_EOF; comma = true) { 2433 - if (!comma && next(js) == TOK_RPAREN) break; 2434 - EXPECT(TOK_IDENTIFIER, ); 2435 - if (next(js) == TOK_RPAREN) break; 2436 - EXPECT(TOK_COMMA, ); 2448 + if (!parse_func_params(js, NULL)) { 2449 + return js_mkerr(js, "invalid parameters"); 2437 2450 } 2438 2451 EXPECT(TOK_RPAREN, ); 2439 2452 EXPECT(TOK_LBRACE, );