diff options
Diffstat (limited to 'src/prebuilt/wasm-ast-parser-gen.c')
-rw-r--r-- | src/prebuilt/wasm-ast-parser-gen.c | 702 |
1 files changed, 378 insertions, 324 deletions
diff --git a/src/prebuilt/wasm-ast-parser-gen.c b/src/prebuilt/wasm-ast-parser-gen.c index 5039616a..4cab08bf 100644 --- a/src/prebuilt/wasm-ast-parser-gen.c +++ b/src/prebuilt/wasm-ast-parser-gen.c @@ -138,6 +138,11 @@ static WasmResult parse_const(WasmType type, WasmLiteralType literal_type, static void dup_text_list(WasmAllocator*, WasmTextList* text_list, void** out_data, size_t* out_size); +static WasmBool is_empty_signature(WasmFuncSignature* sig); + +static void append_implicit_func_declaration(WasmAllocator*, WasmLocation*, + WasmModule*, WasmFuncDeclaration*); + typedef struct BinaryErrorCallbackData { WasmLocation* loc; WasmAstLexer* lexer; @@ -150,7 +155,7 @@ static void on_read_binary_error(uint32_t offset, const char* error, #define wasm_ast_parser_lex wasm_ast_lexer_lex -#line 154 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:339 */ +#line 159 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -281,7 +286,7 @@ int wasm_ast_parser_parse (WasmAstLexer* lexer, WasmAstParser* parser); /* Copy the second part of user declarations. */ -#line 285 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:358 */ +#line 290 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:358 */ #ifdef short # undef short @@ -586,19 +591,19 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 187, 187, 193, 206, 207, 213, 214, 218, 222, - 229, 233, 237, 244, 256, 263, 264, 270, 274, 290, - 297, 298, 302, 303, 313, 314, 325, 328, 331, 336, - 341, 347, 353, 361, 366, 372, 378, 384, 389, 393, - 400, 407, 413, 419, 426, 430, 435, 442, 450, 462, - 467, 473, 479, 485, 490, 493, 497, 503, 504, 507, - 511, 519, 520, 525, 526, 532, 538, 548, 554, 560, - 570, 573, 634, 643, 653, 661, 673, 674, 681, 685, - 698, 706, 707, 714, 726, 737, 743, 752, 756, 763, - 767, 774, 782, 789, 800, 807, 813, 816, 852, 870, - 887, 895, 903, 921, 929, 940, 945, 954, 978, 984, - 991, 997, 1005, 1012, 1022, 1023, 1031, 1043, 1044, 1047, - 1048, 1055, 1064 + 0, 192, 192, 198, 211, 212, 218, 219, 223, 227, + 234, 238, 242, 249, 261, 268, 269, 275, 279, 295, + 302, 303, 307, 308, 318, 319, 330, 333, 336, 341, + 346, 352, 358, 366, 371, 377, 383, 389, 394, 398, + 405, 412, 418, 424, 431, 435, 440, 447, 455, 467, + 472, 478, 484, 490, 495, 498, 502, 508, 509, 512, + 516, 524, 525, 530, 531, 537, 543, 553, 559, 565, + 575, 578, 633, 642, 652, 659, 670, 671, 678, 682, + 695, 703, 704, 711, 723, 734, 740, 749, 753, 760, + 764, 771, 779, 785, 795, 802, 808, 811, 850, 871, + 888, 896, 904, 922, 930, 941, 975, 984, 1008, 1014, + 1021, 1027, 1035, 1042, 1052, 1053, 1061, 1073, 1074, 1077, + 1078, 1085, 1094 }; #endif @@ -1392,201 +1397,201 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio switch (yytype) { case 59: /* text_list */ -#line 154 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 159 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_text_list(parser->allocator, &((*yyvaluep).text_list)); } -#line 1398 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1403 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 60: /* value_type_list */ -#line 157 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 162 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_type_vector(parser->allocator, &((*yyvaluep).types)); } -#line 1404 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1409 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 61: /* func_type */ -#line 167 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 172 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_func_signature(parser->allocator, &((*yyvaluep).func_sig)); } -#line 1410 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1415 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 62: /* literal */ -#line 156 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 161 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).literal).text); } -#line 1416 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1421 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 63: /* var */ -#line 158 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 163 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_var(parser->allocator, &((*yyvaluep).var)); } -#line 1422 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1427 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 64: /* var_list */ -#line 159 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 164 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_var_vector_and_elements(parser->allocator, &((*yyvaluep).vars)); } -#line 1428 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1433 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 65: /* bind_var */ -#line 155 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 160 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).text)); } -#line 1434 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1439 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 66: /* quoted_text */ -#line 155 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 160 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).text)); } -#line 1440 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1445 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 67: /* segment_contents */ -#line 164 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 169 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_segment(parser->allocator, &((*yyvaluep).segment)); } -#line 1446 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1451 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 68: /* labeling */ -#line 155 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 160 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).text)); } -#line 1452 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1457 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 71: /* expr */ -#line 160 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 165 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr(parser->allocator, ((*yyvaluep).expr)); } -#line 1458 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1463 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 72: /* expr1 */ -#line 160 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 165 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr(parser->allocator, ((*yyvaluep).expr)); } -#line 1464 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1469 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 73: /* expr_opt */ -#line 160 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 165 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr(parser->allocator, ((*yyvaluep).expr)); } -#line 1470 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1475 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 74: /* non_empty_expr_list */ -#line 161 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 166 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr_list(parser->allocator, ((*yyvaluep).expr_list).first); } -#line 1476 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1481 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 75: /* expr_list */ -#line 161 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 166 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_expr_list(parser->allocator, ((*yyvaluep).expr_list).first); } -#line 1482 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1487 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 76: /* func_fields */ -#line 162 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 167 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_func_fields(parser->allocator, ((*yyvaluep).func_fields)); } -#line 1488 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1493 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 77: /* func_body */ -#line 162 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 167 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_func_fields(parser->allocator, ((*yyvaluep).func_fields)); } -#line 1494 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1499 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 79: /* func_info */ -#line 163 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 168 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_func(parser->allocator, ((*yyvaluep).func)); wasm_free(parser->allocator, ((*yyvaluep).func)); } -#line 1500 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1505 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 80: /* func */ -#line 171 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 176 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_exported_func(parser->allocator, &((*yyvaluep).exported_func)); } -#line 1506 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1511 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 84: /* segment */ -#line 164 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 169 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_segment(parser->allocator, &((*yyvaluep).segment)); } -#line 1512 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1517 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 85: /* segment_list */ -#line 165 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 170 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_segment_vector_and_elements(parser->allocator, &((*yyvaluep).segments)); } -#line 1518 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1523 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 88: /* memory */ -#line 166 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 171 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_memory(parser->allocator, &((*yyvaluep).memory)); } -#line 1524 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1529 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 89: /* type_def */ -#line 168 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 173 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_func_type(parser->allocator, &((*yyvaluep).func_type)); } -#line 1530 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1535 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 90: /* table */ -#line 159 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 164 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_var_vector_and_elements(parser->allocator, &((*yyvaluep).vars)); } -#line 1536 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1541 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 91: /* import */ -#line 169 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 174 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_import(parser->allocator, ((*yyvaluep).import)); wasm_free(parser->allocator, ((*yyvaluep).import)); } -#line 1542 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1547 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 92: /* export */ -#line 170 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 175 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_export(parser->allocator, &((*yyvaluep).export_)); } -#line 1548 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1553 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 94: /* module_fields */ -#line 172 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 177 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_module(parser->allocator, ((*yyvaluep).module)); wasm_free(parser->allocator, ((*yyvaluep).module)); } -#line 1554 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1559 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 95: /* raw_module */ -#line 173 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 178 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_raw_module(parser->allocator, &((*yyvaluep).raw_module)); } -#line 1560 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1565 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 96: /* module */ -#line 172 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 177 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_module(parser->allocator, ((*yyvaluep).module)); wasm_free(parser->allocator, ((*yyvaluep).module)); } -#line 1566 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1571 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 97: /* cmd */ -#line 175 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 180 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_command(parser->allocator, ((*yyvaluep).command)); wasm_free(parser->allocator, ((*yyvaluep).command)); } -#line 1572 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1577 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 98: /* cmd_list */ -#line 176 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 181 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_command_vector_and_elements(parser->allocator, &((*yyvaluep).commands)); } -#line 1578 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1583 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 101: /* const_list */ -#line 174 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 179 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_const_vector(parser->allocator, &((*yyvaluep).consts)); } -#line 1584 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1589 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; case 102: /* script */ -#line 177 "src/wasm-ast-parser.y" /* yacc.c:1257 */ +#line 182 "src/wasm-ast-parser.y" /* yacc.c:1257 */ { wasm_destroy_script(&((*yyvaluep).script)); } -#line 1590 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ +#line 1595 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1257 */ break; @@ -1878,18 +1883,18 @@ yyreduce: switch (yyn) { case 2: -#line 187 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 192 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WasmTextListNode* node = new_text_list_node(parser->allocator); DUPTEXT(node->text, (yyvsp[0].text)); node->next = NULL; (yyval.text_list).first = (yyval.text_list).last = node; } -#line 1889 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1894 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 3: -#line 193 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 198 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.text_list) = (yyvsp[-1].text_list); WasmTextListNode* node = new_text_list_node(parser->allocator); @@ -1898,83 +1903,83 @@ yyreduce: (yyval.text_list).last->next = node; (yyval.text_list).last = node; } -#line 1902 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1907 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 4: -#line 206 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 211 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.types)); } -#line 1908 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1913 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 5: -#line 207 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 212 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.types) = (yyvsp[-1].types); wasm_append_type_value(parser->allocator, &(yyval.types), &(yyvsp[0].type)); } -#line 1917 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1922 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 6: -#line 213 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 218 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.func_sig)); } -#line 1923 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1928 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 7: -#line 214 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 219 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_sig).result_type = WASM_TYPE_VOID; (yyval.func_sig).param_types = (yyvsp[-1].types); } -#line 1932 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1937 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 8: -#line 218 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 223 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_sig).result_type = (yyvsp[-1].type); (yyval.func_sig).param_types = (yyvsp[-5].types); } -#line 1941 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1946 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 9: -#line 222 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 227 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.func_sig)); (yyval.func_sig).result_type = (yyvsp[-1].type); } -#line 1947 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1952 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 10: -#line 229 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 234 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.literal).type = (yyvsp[0].literal).type; DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text); } -#line 1956 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1961 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 11: -#line 233 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 238 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.literal).type = (yyvsp[0].literal).type; DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text); } -#line 1965 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1970 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 12: -#line 237 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 242 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.literal).type = (yyvsp[0].literal).type; DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text); } -#line 1974 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1979 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 13: -#line 244 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 249 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.var).loc = (yylsp[0]); (yyval.var).type = WASM_VAR_TYPE_INDEX; @@ -1987,42 +1992,42 @@ yyreduce: } (yyval.var).index = index; } -#line 1991 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 1996 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 14: -#line 256 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 261 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.var).loc = (yylsp[0]); (yyval.var).type = WASM_VAR_TYPE_NAME; DUPTEXT((yyval.var).name, (yyvsp[0].text)); } -#line 2001 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2006 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 15: -#line 263 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 268 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.vars)); } -#line 2007 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2012 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 16: -#line 264 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 269 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.vars) = (yyvsp[-1].vars); wasm_append_var_value(parser->allocator, &(yyval.vars), &(yyvsp[0].var)); } -#line 2016 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2021 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 17: -#line 270 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 275 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { DUPTEXT((yyval.text), (yyvsp[0].text)); } -#line 2022 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2027 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 18: -#line 274 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 279 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WasmTextListNode node; node.text = (yyvsp[0].text); @@ -2036,38 +2041,38 @@ yyreduce: (yyval.text).start = data; (yyval.text).length = size; } -#line 2040 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2045 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 19: -#line 290 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 295 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { dup_text_list(parser->allocator, &(yyvsp[0].text_list), &(yyval.segment).data, &(yyval.segment).size); wasm_destroy_text_list(parser->allocator, &(yyvsp[0].text_list)); } -#line 2049 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2054 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 20: -#line 297 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 302 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.text)); } -#line 2055 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2060 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 21: -#line 298 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 303 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.text) = (yyvsp[0].text); } -#line 2061 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2066 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 22: -#line 302 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 307 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.u64) = 0; } -#line 2067 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2072 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 23: -#line 303 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 308 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_int64((yyvsp[0].text).start, (yyvsp[0].text).start + (yyvsp[0].text).length, &(yyval.u64), WASM_PARSE_SIGNED_AND_UNSIGNED))) { @@ -2076,17 +2081,17 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].text))); } } -#line 2080 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2085 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 24: -#line 313 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 318 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.u32) = USE_NATURAL_ALIGNMENT; } -#line 2086 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2091 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 25: -#line 314 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 319 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_int32((yyvsp[0].text).start, (yyvsp[0].text).start + (yyvsp[0].text).length, &(yyval.u32), WASM_PARSE_UNSIGNED_ONLY))) { @@ -2095,67 +2100,67 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].text))); } } -#line 2099 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2104 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 26: -#line 325 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 330 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = (yyvsp[-1].expr); (yyval.expr)->loc = (yylsp[-2]); } -#line 2105 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2110 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 27: -#line 328 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 333 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_empty_expr(parser->allocator, WASM_EXPR_TYPE_NOP); } -#line 2113 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2118 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 28: -#line 331 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 336 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_block_expr(parser->allocator); (yyval.expr)->block.label = (yyvsp[-1].text); (yyval.expr)->block.first = (yyvsp[0].expr_list).first; } -#line 2123 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2128 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 29: -#line 336 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 341 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_if_expr(parser->allocator); (yyval.expr)->if_.cond = (yyvsp[-1].expr); (yyval.expr)->if_.true_.first = (yyvsp[0].expr); } -#line 2133 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2138 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 30: -#line 341 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 346 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_if_expr(parser->allocator); (yyval.expr)->if_.cond = (yyvsp[-5].expr); (yyval.expr)->if_.true_.label = (yyvsp[-2].text); (yyval.expr)->if_.true_.first = (yyvsp[-1].expr_list).first; } -#line 2144 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2149 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 31: -#line 347 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 352 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_if_else_expr(parser->allocator); (yyval.expr)->if_else.cond = (yyvsp[-2].expr); (yyval.expr)->if_else.true_.first = (yyvsp[-1].expr); (yyval.expr)->if_else.false_.first = (yyvsp[0].expr); } -#line 2155 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2160 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 32: -#line 353 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 358 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_if_else_expr(parser->allocator); (yyval.expr)->if_else.cond = (yyvsp[-10].expr); @@ -2164,73 +2169,73 @@ yyreduce: (yyval.expr)->if_else.false_.label = (yyvsp[-2].text); (yyval.expr)->if_else.false_.first = (yyvsp[-1].expr_list).first; } -#line 2168 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2173 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 33: -#line 361 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 366 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_if_expr(parser->allocator); (yyval.expr)->br_if.var = (yyvsp[-1].var); (yyval.expr)->br_if.cond = (yyvsp[0].expr); } -#line 2178 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2183 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 34: -#line 366 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 371 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_if_expr(parser->allocator); (yyval.expr)->br_if.var = (yyvsp[-2].var); (yyval.expr)->br_if.expr = (yyvsp[-1].expr); (yyval.expr)->br_if.cond = (yyvsp[0].expr); } -#line 2189 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2194 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 35: -#line 372 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 377 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_loop_expr(parser->allocator); WASM_ZERO_MEMORY((yyval.expr)->loop.outer); (yyval.expr)->loop.inner = (yyvsp[-1].text); (yyval.expr)->loop.first = (yyvsp[0].expr_list).first; } -#line 2200 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2205 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 36: -#line 378 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 383 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_loop_expr(parser->allocator); (yyval.expr)->loop.outer = (yyvsp[-2].text); (yyval.expr)->loop.inner = (yyvsp[-1].text); (yyval.expr)->loop.first = (yyvsp[0].expr_list).first; } -#line 2211 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2216 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 37: -#line 384 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 389 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_expr(parser->allocator); (yyval.expr)->br.var = (yyvsp[-1].var); (yyval.expr)->br.expr = (yyvsp[0].expr); } -#line 2221 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2226 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 38: -#line 389 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 394 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_return_expr(parser->allocator); (yyval.expr)->return_.expr = (yyvsp[0].expr); } -#line 2230 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2235 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 39: -#line 393 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 398 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_table_expr(parser->allocator); (yyval.expr)->br_table.key = (yyvsp[0].expr); @@ -2238,11 +2243,11 @@ yyreduce: (yyval.expr)->br_table.targets = (yyvsp[-2].vars); (yyval.expr)->br_table.default_target = (yyvsp[-1].var); } -#line 2242 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2247 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 40: -#line 400 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 405 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_br_table_expr(parser->allocator); (yyval.expr)->br_table.key = (yyvsp[0].expr); @@ -2250,33 +2255,33 @@ yyreduce: (yyval.expr)->br_table.targets = (yyvsp[-3].vars); (yyval.expr)->br_table.default_target = (yyvsp[-2].var); } -#line 2254 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2259 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 41: -#line 407 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 412 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_call_expr(parser->allocator); (yyval.expr)->call.var = (yyvsp[-1].var); (yyval.expr)->call.first_arg = (yyvsp[0].expr_list).first; (yyval.expr)->call.num_args = (yyvsp[0].expr_list).size; } -#line 2265 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2270 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 42: -#line 413 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 418 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_call_import_expr(parser->allocator); (yyval.expr)->call.var = (yyvsp[-1].var); (yyval.expr)->call.first_arg = (yyvsp[0].expr_list).first; (yyval.expr)->call.num_args = (yyvsp[0].expr_list).size; } -#line 2276 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2281 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 43: -#line 419 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 424 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_call_indirect_expr(parser->allocator); (yyval.expr)->call_indirect.var = (yyvsp[-2].var); @@ -2284,30 +2289,30 @@ yyreduce: (yyval.expr)->call_indirect.first_arg = (yyvsp[0].expr_list).first; (yyval.expr)->call_indirect.num_args = (yyvsp[0].expr_list).size; } -#line 2288 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2293 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 44: -#line 426 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 431 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_get_local_expr(parser->allocator); (yyval.expr)->get_local.var = (yyvsp[0].var); } -#line 2297 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2302 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 45: -#line 430 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 435 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_set_local_expr(parser->allocator); (yyval.expr)->set_local.var = (yyvsp[-1].var); (yyval.expr)->set_local.expr = (yyvsp[0].expr); } -#line 2307 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2312 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 46: -#line 435 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 440 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_load_expr(parser->allocator); (yyval.expr)->load.opcode = (yyvsp[-3].opcode); @@ -2315,11 +2320,11 @@ yyreduce: (yyval.expr)->load.align = (yyvsp[-1].u32); (yyval.expr)->load.addr = (yyvsp[0].expr); } -#line 2319 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2324 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 47: -#line 442 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 447 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_store_expr(parser->allocator); (yyval.expr)->store.opcode = (yyvsp[-4].opcode); @@ -2328,11 +2333,11 @@ yyreduce: (yyval.expr)->store.addr = (yyvsp[-1].expr); (yyval.expr)->store.value = (yyvsp[0].expr); } -#line 2332 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2337 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 48: -#line 450 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 455 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_const_expr(parser->allocator); (yyval.expr)->const_.loc = (yylsp[-1]); @@ -2345,144 +2350,144 @@ yyreduce: } wasm_free(parser->allocator, (char*)(yyvsp[0].literal).text.start); } -#line 2349 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2354 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 49: -#line 462 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 467 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_unary_expr(parser->allocator); (yyval.expr)->unary.opcode = (yyvsp[-1].opcode); (yyval.expr)->unary.expr = (yyvsp[0].expr); } -#line 2359 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2364 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 50: -#line 467 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 472 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_binary_expr(parser->allocator); (yyval.expr)->binary.opcode = (yyvsp[-2].opcode); (yyval.expr)->binary.left = (yyvsp[-1].expr); (yyval.expr)->binary.right = (yyvsp[0].expr); } -#line 2370 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2375 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 51: -#line 473 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 478 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_select_expr(parser->allocator); (yyval.expr)->select.true_ = (yyvsp[-2].expr); (yyval.expr)->select.false_ = (yyvsp[-1].expr); (yyval.expr)->select.cond = (yyvsp[0].expr); } -#line 2381 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2386 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 52: -#line 479 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 484 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_compare_expr(parser->allocator); (yyval.expr)->compare.opcode = (yyvsp[-2].opcode); (yyval.expr)->compare.left = (yyvsp[-1].expr); (yyval.expr)->compare.right = (yyvsp[0].expr); } -#line 2392 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2397 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 53: -#line 485 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 490 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_convert_expr(parser->allocator); (yyval.expr)->convert.opcode = (yyvsp[-1].opcode); (yyval.expr)->convert.expr = (yyvsp[0].expr); } -#line 2402 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2407 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 54: -#line 490 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 495 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_empty_expr(parser->allocator, WASM_EXPR_TYPE_UNREACHABLE); } -#line 2410 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2415 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 55: -#line 493 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 498 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_empty_expr(parser->allocator, WASM_EXPR_TYPE_CURRENT_MEMORY); } -#line 2419 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2424 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 56: -#line 497 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 502 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = wasm_new_grow_memory_expr(parser->allocator); (yyval.expr)->grow_memory.expr = (yyvsp[0].expr); } -#line 2428 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2433 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 57: -#line 503 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 508 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr) = NULL; } -#line 2434 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2439 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 59: -#line 507 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 512 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list).first = (yyval.expr_list).last = (yyvsp[0].expr); (yyval.expr_list).size = 1; } -#line 2443 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2448 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 60: -#line 511 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 516 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.expr_list) = (yyvsp[-1].expr_list); (yyval.expr_list).last->next = (yyvsp[0].expr); (yyval.expr_list).last = (yyvsp[0].expr); (yyval.expr_list).size++; } -#line 2454 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2459 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 61: -#line 519 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 524 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.expr_list)); } -#line 2460 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2465 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 64: -#line 526 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 531 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_fields) = new_func_field(parser->allocator); (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_RESULT_TYPE; (yyval.func_fields)->result_type = (yyvsp[-2].type); (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2471 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2476 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 65: -#line 532 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 537 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_fields) = new_func_field(parser->allocator); (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_PARAM_TYPES; (yyval.func_fields)->types = (yyvsp[-2].types); (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2482 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2487 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 66: -#line 538 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 543 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_fields) = new_func_field(parser->allocator); (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_BOUND_PARAM; @@ -2491,33 +2496,33 @@ yyreduce: (yyval.func_fields)->bound_type.type = (yyvsp[-2].type); (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2495 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2500 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 67: -#line 548 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 553 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_fields) = new_func_field(parser->allocator); (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_EXPRS; (yyval.func_fields)->first_expr = (yyvsp[0].expr_list).first; (yyval.func_fields)->next = NULL; } -#line 2506 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2511 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 68: -#line 554 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 559 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_fields) = new_func_field(parser->allocator); (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_LOCAL_TYPES; (yyval.func_fields)->types = (yyvsp[-2].types); (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2517 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2522 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 69: -#line 560 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 565 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_fields) = new_func_field(parser->allocator); (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_BOUND_LOCAL; @@ -2526,29 +2531,23 @@ yyreduce: (yyval.func_fields)->bound_type.type = (yyvsp[-2].type); (yyval.func_fields)->next = (yyvsp[0].func_fields); } -#line 2530 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2535 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 70: -#line 570 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 575 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.var) = (yyvsp[-1].var); } -#line 2536 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2541 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 71: -#line 573 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 578 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func) = new_func(parser->allocator); WasmFuncField* field = (yyvsp[0].func_fields); + while (field) { WasmFuncField* next = field->next; - - if (field->type == WASM_FUNC_FIELD_TYPE_PARAM_TYPES || - field->type == WASM_FUNC_FIELD_TYPE_BOUND_PARAM || - field->type == WASM_FUNC_FIELD_TYPE_RESULT_TYPE) { - (yyval.func)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; - } - switch (field->type) { case WASM_FUNC_FIELD_TYPE_EXPRS: (yyval.func)->first_expr = field->first_expr; @@ -2596,11 +2595,11 @@ yyreduce: field = next; } } -#line 2600 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2599 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 72: -#line 634 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 633 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.exported_func).func = (yyvsp[-1].func); (yyval.exported_func).func->loc = (yylsp[-4]); @@ -2610,11 +2609,11 @@ yyreduce: (yyval.exported_func).export_.var.type = WASM_VAR_TYPE_INDEX; (yyval.exported_func).export_.var.index = -1; } -#line 2614 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2613 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 73: -#line 643 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 642 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.exported_func).func = (yyvsp[-1].func); (yyval.exported_func).func->loc = (yylsp[-5]); @@ -2625,50 +2624,48 @@ yyreduce: (yyval.exported_func).export_.var.type = WASM_VAR_TYPE_INDEX; (yyval.exported_func).export_.var.index = -1; } -#line 2629 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2628 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 74: -#line 653 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 652 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.exported_func).func = (yyvsp[-1].func); (yyval.exported_func).func->loc = (yylsp[-3]); - (yyval.exported_func).func->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; (yyval.exported_func).export_.name = (yyvsp[-2].text); (yyval.exported_func).export_.var.type = WASM_VAR_TYPE_INDEX; (yyval.exported_func).export_.var.index = -1; } -#line 2642 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2640 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 75: -#line 661 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 659 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.exported_func).func = (yyvsp[-1].func); (yyval.exported_func).func->loc = (yylsp[-4]); - (yyval.exported_func).func->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; (yyval.exported_func).func->name = (yyvsp[-2].text); (yyval.exported_func).export_.name = (yyvsp[-3].text); (yyval.exported_func).export_.var.type = WASM_VAR_TYPE_INDEX; (yyval.exported_func).export_.var.index = -1; } -#line 2656 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2653 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 76: -#line 673 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 670 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.text)); } -#line 2662 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2659 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 78: -#line 681 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 678 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.var) = (yyvsp[-1].var); } -#line 2668 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2665 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 79: -#line 685 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 682 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_int32((yyvsp[0].literal).text.start, (yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u32), @@ -2679,37 +2676,37 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text)); } } -#line 2683 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2680 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 80: -#line 698 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 695 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.segment).loc = (yylsp[-3]); (yyval.segment).data = (yyvsp[-1].segment).data; (yyval.segment).size = (yyvsp[-1].segment).size; (yyval.segment).addr = (yyvsp[-2].u32); } -#line 2694 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2691 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 81: -#line 706 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 703 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.segments)); } -#line 2700 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2697 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 82: -#line 707 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 704 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.segments) = (yyvsp[-1].segments); wasm_append_segment_value(parser->allocator, &(yyval.segments), &(yyvsp[0].segment)); } -#line 2709 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2706 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 83: -#line 714 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 711 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_uint64((yyvsp[0].literal).text.start, (yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u64)))) { @@ -2719,11 +2716,11 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text)); } } -#line 2723 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2720 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 84: -#line 726 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 723 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { if (WASM_FAILED(wasm_parse_uint64((yyvsp[0].literal).text.start, (yyvsp[0].literal).text.start + (yyvsp[0].literal).text.length, &(yyval.u64)))) { @@ -2732,57 +2729,57 @@ yyreduce: WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text)); } } -#line 2736 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2733 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 85: -#line 737 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 734 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.memory).loc = (yylsp[-4]); (yyval.memory).initial_pages = (yyvsp[-3].u64); (yyval.memory).max_pages = (yyvsp[-2].u64); (yyval.memory).segments = (yyvsp[-1].segments); } -#line 2747 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2744 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 86: -#line 743 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 740 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.memory).loc = (yylsp[-3]); (yyval.memory).initial_pages = (yyvsp[-2].u64); (yyval.memory).max_pages = (yyval.memory).initial_pages; (yyval.memory).segments = (yyvsp[-1].segments); } -#line 2758 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2755 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 87: -#line 752 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 749 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.func_type)); (yyval.func_type).sig = (yyvsp[-2].func_sig); } -#line 2767 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2764 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 88: -#line 756 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 753 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.func_type).name = (yyvsp[-5].text); (yyval.func_type).sig = (yyvsp[-2].func_sig); } -#line 2776 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2773 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 89: -#line 763 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 760 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.vars) = (yyvsp[-1].vars); } -#line 2782 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2779 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 90: -#line 767 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 764 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); (yyval.import)->module_name = (yyvsp[-3].text); @@ -2790,11 +2787,11 @@ yyreduce: (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE; (yyval.import)->decl.type_var = (yyvsp[-1].var); } -#line 2794 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2791 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 91: -#line 774 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 771 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); (yyval.import)->name = (yyvsp[-4].text); @@ -2803,61 +2800,59 @@ yyreduce: (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE; (yyval.import)->decl.type_var = (yyvsp[-1].var); } -#line 2807 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2804 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 92: -#line 782 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 779 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); (yyval.import)->module_name = (yyvsp[-3].text); (yyval.import)->func_name = (yyvsp[-2].text); - (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; (yyval.import)->decl.sig = (yyvsp[-1].func_sig); } -#line 2819 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2815 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 93: -#line 789 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 785 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.import) = new_import(parser->allocator); (yyval.import)->name = (yyvsp[-4].text); (yyval.import)->module_name = (yyvsp[-3].text); (yyval.import)->func_name = (yyvsp[-2].text); - (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE; (yyval.import)->decl.sig = (yyvsp[-1].func_sig); } -#line 2832 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2827 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 94: -#line 800 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 795 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.export_).name = (yyvsp[-2].text); (yyval.export_).var = (yyvsp[-1].var); } -#line 2841 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2836 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 95: -#line 807 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 802 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.export_memory).name = (yyvsp[-2].text); } -#line 2849 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2844 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 96: -#line 813 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 808 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = new_module(parser->allocator); } -#line 2857 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2852 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 97: -#line 816 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 811 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2866,6 +2861,9 @@ yyreduce: field->func = *(yyvsp[0].exported_func).func; wasm_free(parser->allocator, (yyvsp[0].exported_func).func); + append_implicit_func_declaration(parser->allocator, &(yylsp[0]), (yyval.module), + &field->func.decl); + WasmFunc* func_ptr = &field->func; wasm_append_func_ptr_value(parser->allocator, &(yyval.module)->funcs, &func_ptr); if (field->func.name.start) { @@ -2894,11 +2892,11 @@ yyreduce: binding->index = (yyval.module)->exports.size - 1; } } -#line 2898 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2896 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 98: -#line 852 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 850 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2907,6 +2905,9 @@ yyreduce: field->import = *(yyvsp[0].import); wasm_free(parser->allocator, (yyvsp[0].import)); + append_implicit_func_declaration(parser->allocator, &(yylsp[0]), (yyval.module), + &field->import.decl); + WasmImport* import_ptr = &field->import; wasm_append_import_ptr_value(parser->allocator, &(yyval.module)->imports, &import_ptr); @@ -2917,11 +2918,11 @@ yyreduce: binding->index = (yyval.module)->imports.size - 1; } } -#line 2921 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2922 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 99: -#line 870 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 871 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2939,11 +2940,11 @@ yyreduce: binding->index = (yyval.module)->exports.size - 1; } } -#line 2943 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2944 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 100: -#line 887 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 888 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2952,11 +2953,11 @@ yyreduce: field->export_memory = (yyvsp[0].export_memory); (yyval.module)->export_memory = &field->export_memory; } -#line 2956 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2957 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 101: -#line 895 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 896 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2965,11 +2966,11 @@ yyreduce: field->table = (yyvsp[0].vars); (yyval.module)->table = &field->table; } -#line 2969 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2970 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 102: -#line 903 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 904 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -2988,11 +2989,11 @@ yyreduce: binding->index = (yyval.module)->func_types.size - 1; } } -#line 2992 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 2993 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 103: -#line 921 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 922 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3001,11 +3002,11 @@ yyreduce: field->memory = (yyvsp[0].memory); (yyval.module)->memory = &field->memory; } -#line 3005 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3006 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 104: -#line 929 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 930 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.module) = (yyvsp[-1].module); WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module)); @@ -3014,32 +3015,61 @@ yyreduce: field->start = (yyvsp[0].var); (yyval.module)->start = &field->start; } -#line 3018 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3019 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 105: -#line 940 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 941 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.raw_module).type = WASM_RAW_MODULE_TYPE_TEXT; (yyval.raw_module).text = (yyvsp[-1].module); (yyval.raw_module).loc = (yylsp[-2]); + + /* resolve func type variables where the signature was not specified + * explicitly */ + size_t i; + for (i = 0; i < (yyvsp[-1].module)->funcs.size; ++i) { + WasmFunc* func = (yyvsp[-1].module)->funcs.data[i]; + if (wasm_decl_has_func_type(&func->decl) && + is_empty_signature(&func->decl.sig)) { + WasmFuncType* func_type = + wasm_get_func_type_by_var((yyvsp[-1].module), &func->decl.type_var); + if (func_type) { + func->decl.sig = func_type->sig; + func->decl.flags |= WASM_FUNC_DECLARATION_FLAG_SHARED_SIGNATURE; + } + } + } + + for (i = 0; i < (yyvsp[-1].module)->imports.size; ++i) { + WasmImport* import = (yyvsp[-1].module)->imports.data[i]; + if (wasm_decl_has_func_type(&import->decl) && + is_empty_signature(&import->decl.sig)) { + WasmFuncType* func_type = + wasm_get_func_type_by_var((yyvsp[-1].module), &import->decl.type_var); + if (func_type) { + import->decl.sig = func_type->sig; + import->decl.flags |= WASM_FUNC_DECLARATION_FLAG_SHARED_SIGNATURE; + } + } + } } -#line 3028 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3058 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 106: -#line 945 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 975 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.raw_module).type = WASM_RAW_MODULE_TYPE_BINARY; (yyval.raw_module).loc = (yylsp[-2]); dup_text_list(parser->allocator, &(yyvsp[-1].text_list), &(yyval.raw_module).binary.data, &(yyval.raw_module).binary.size); wasm_destroy_text_list(parser->allocator, &(yyvsp[-1].text_list)); } -#line 3039 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3069 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 107: -#line 954 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 984 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { if ((yyvsp[0].raw_module).type == WASM_RAW_MODULE_TYPE_TEXT) { (yyval.module) = (yyvsp[0].raw_module).text; @@ -3059,22 +3089,22 @@ yyreduce: wasm_free(parser->allocator, (yyvsp[0].raw_module).binary.data); } } -#line 3063 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3093 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 108: -#line 978 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1008 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_MODULE; (yyval.command)->module = *(yyvsp[0].module); wasm_free(parser->allocator, (yyvsp[0].module)); } -#line 3074 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3104 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 109: -#line 984 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1014 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_INVOKE; @@ -3082,22 +3112,22 @@ yyreduce: (yyval.command)->invoke.name = (yyvsp[-2].text); (yyval.command)->invoke.args = (yyvsp[-1].consts); } -#line 3086 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3116 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 110: -#line 991 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1021 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_INVALID; (yyval.command)->assert_invalid.module = (yyvsp[-2].raw_module); (yyval.command)->assert_invalid.text = (yyvsp[-1].text); } -#line 3097 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3127 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 111: -#line 997 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1027 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_RETURN; @@ -3106,11 +3136,11 @@ yyreduce: (yyval.command)->assert_return.invoke.args = (yyvsp[-3].consts); (yyval.command)->assert_return.expected = (yyvsp[-1].const_); } -#line 3110 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3140 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 112: -#line 1005 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1035 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_RETURN_NAN; @@ -3118,11 +3148,11 @@ yyreduce: (yyval.command)->assert_return_nan.invoke.name = (yyvsp[-3].text); (yyval.command)->assert_return_nan.invoke.args = (yyvsp[-2].consts); } -#line 3122 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3152 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 113: -#line 1012 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1042 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.command) = new_command(parser->allocator); (yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_TRAP; @@ -3131,27 +3161,27 @@ yyreduce: (yyval.command)->assert_trap.invoke.args = (yyvsp[-3].consts); (yyval.command)->assert_trap.text = (yyvsp[-1].text); } -#line 3135 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3165 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 114: -#line 1022 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1052 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.commands)); } -#line 3141 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3171 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 115: -#line 1023 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1053 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.commands) = (yyvsp[-1].commands); wasm_append_command_value(parser->allocator, &(yyval.commands), (yyvsp[0].command)); wasm_free(parser->allocator, (yyvsp[0].command)); } -#line 3151 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3181 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 116: -#line 1031 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1061 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.const_).loc = (yylsp[-2]); if (WASM_FAILED(parse_const((yyvsp[-2].type), (yyvsp[-1].literal).type, (yyvsp[-1].literal).text.start, @@ -3162,41 +3192,41 @@ yyreduce: } wasm_free(parser->allocator, (char*)(yyvsp[-1].literal).text.start); } -#line 3166 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3196 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 117: -#line 1043 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1073 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.const_).type = WASM_TYPE_VOID; } -#line 3172 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3202 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 119: -#line 1047 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1077 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { WASM_ZERO_MEMORY((yyval.consts)); } -#line 3178 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3208 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 120: -#line 1048 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1078 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.consts) = (yyvsp[-1].consts); wasm_append_const_value(parser->allocator, &(yyval.consts), &(yyvsp[0].const_)); } -#line 3187 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3217 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; case 121: -#line 1055 "src/wasm-ast-parser.y" /* yacc.c:1646 */ +#line 1085 "src/wasm-ast-parser.y" /* yacc.c:1646 */ { (yyval.script).commands = (yyvsp[0].commands); parser->script = (yyval.script); } -#line 3196 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3226 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ break; -#line 3200 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ +#line 3230 "src/prebuilt/wasm-ast-parser-gen.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3431,7 +3461,7 @@ yyreturn: #endif return yyresult; } -#line 1067 "src/wasm-ast-parser.y" /* yacc.c:1906 */ +#line 1097 "src/wasm-ast-parser.y" /* yacc.c:1906 */ static WasmResult parse_const(WasmType type, @@ -3533,6 +3563,30 @@ static void dup_text_list(WasmAllocator* allocator, *out_size = dest - result; } +static WasmBool is_empty_signature(WasmFuncSignature* sig) { + return sig->result_type == WASM_TYPE_VOID && sig->param_types.size == 0; +} + +static void append_implicit_func_declaration(WasmAllocator* allocator, + WasmLocation* loc, + WasmModule* module, + WasmFuncDeclaration* decl) { + if (wasm_decl_has_func_type(decl)) + return; + + int sig_index = wasm_get_func_type_index_by_decl(module, decl); + if (sig_index == -1) { + wasm_append_implicit_func_type(allocator, loc, module, &decl->sig); + } else { + /* signature already exists, share that one and destroy this one */ + wasm_destroy_func_signature(allocator, &decl->sig); + WasmFuncSignature* sig = &module->func_types.data[sig_index]->sig; + decl->sig = *sig; + } + + decl->flags |= WASM_FUNC_DECLARATION_FLAG_SHARED_SIGNATURE; +} + WasmResult wasm_parse_ast(WasmAstLexer* lexer, struct WasmScript* out_script, WasmSourceErrorHandler* error_handler) { |