summaryrefslogtreecommitdiff
path: root/src/prebuilt/wasm-bison-parser.c
diff options
context:
space:
mode:
authorBen Smith <binji@chromium.org>2016-04-12 12:42:09 -0700
committerBen Smith <binji@chromium.org>2016-04-12 14:59:44 -0700
commitfb0f7da9c1ba977aa68f5e01346306ae13b8f59a (patch)
treef1ff7855186033fcb491dd2120f326a9db834397 /src/prebuilt/wasm-bison-parser.c
parent04140042f96a68f3610b4a24fdf456b5fac9792e (diff)
downloadwabt-fb0f7da9c1ba977aa68f5e01346306ae13b8f59a.tar.gz
wabt-fb0f7da9c1ba977aa68f5e01346306ae13b8f59a.tar.bz2
wabt-fb0f7da9c1ba977aa68f5e01346306ae13b8f59a.zip
share WasmFuncDeclaration with Func and Import
There was some duplicated code between WasmFunc and WasmImport; both allow you to specify a function signature or a function type. This change introduces a WasmFuncDeclaration which is shared by both. This also allows us to remove WasmTypeBindings.
Diffstat (limited to 'src/prebuilt/wasm-bison-parser.c')
-rw-r--r--src/prebuilt/wasm-bison-parser.c2130
1 files changed, 677 insertions, 1453 deletions
diff --git a/src/prebuilt/wasm-bison-parser.c b/src/prebuilt/wasm-bison-parser.c
index 48c614c1..30371fa1 100644
--- a/src/prebuilt/wasm-bison-parser.c
+++ b/src/prebuilt/wasm-bison-parser.c
@@ -120,6 +120,10 @@
#define USE_NATURAL_ALIGNMENT (~0)
+static WasmFuncField* new_func_field(WasmAllocator* allocator) {
+ return wasm_alloc_zero(allocator, sizeof(WasmFuncField), WASM_DEFAULT_ALIGN);
+}
+
static WasmFunc* new_func(WasmAllocator* allocator) {
return wasm_alloc_zero(allocator, sizeof(WasmFunc), WASM_DEFAULT_ALIGN);
}
@@ -147,10 +151,14 @@ static WasmExpr* new_block_expr_with_list(WasmAllocator* allocator,
WasmLabel* label,
WasmExprPtrVector* exprs);
+WasmResult copy_signature_from_func_type(WasmAllocator* allocator,
+ WasmModule* module,
+ WasmFuncDeclaration* decl);
+
#define wasm_parser_lex wasm_lexer_lex
-#line 154 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:339 */
+#line 162 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:339 */
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
@@ -280,7 +288,7 @@ int wasm_parser_parse (WasmLexer lexer, WasmParser* parser);
/* Copy the second part of user declarations. */
-#line 284 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:358 */
+#line 292 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:358 */
#ifdef short
# undef short
@@ -524,16 +532,16 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 7
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 617
+#define YYLAST 321
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 57
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 44
+#define YYNNTS 42
/* YYNRULES -- Number of rules. */
-#define YYNRULES 177
+#define YYNRULES 114
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 326
+#define YYNSTATES 264
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
@@ -585,24 +593,18 @@ static const yytype_uint8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 184, 184, 185, 191, 192, 196, 200, 207, 212,
- 220, 232, 240, 241, 247, 251, 261, 268, 269, 273,
- 274, 283, 284, 295, 298, 302, 306, 314, 323, 334,
- 347, 353, 360, 367, 374, 382, 388, 393, 400, 406,
- 412, 419, 424, 430, 438, 447, 460, 466, 473, 480,
- 487, 493, 497, 501, 508, 509, 512, 516, 522, 523,
- 529, 534, 543, 548, 559, 562, 567, 576, 581, 592,
- 595, 599, 604, 610, 617, 625, 634, 644, 653, 661,
- 670, 678, 685, 693, 702, 710, 717, 725, 732, 738,
- 745, 751, 758, 766, 775, 783, 790, 798, 805, 811,
- 818, 826, 833, 839, 844, 850, 857, 865, 874, 882,
- 889, 897, 904, 910, 917, 925, 932, 938, 945, 951,
- 956, 962, 969, 977, 984, 990, 997, 1003, 1008, 1014,
- 1021, 1027, 1032, 1038, 1045, 1051, 1055, 1068, 1076, 1077,
- 1084, 1096, 1108, 1114, 1123, 1127, 1134, 1138, 1145, 1153,
- 1160, 1171, 1178, 1184, 1187, 1196, 1205, 1213, 1221, 1229,
- 1237, 1245, 1255, 1362, 1368, 1375, 1382, 1390, 1397, 1407,
- 1408, 1416, 1428, 1429, 1432, 1433, 1440, 1449
+ 0, 191, 191, 192, 198, 199, 203, 207, 214, 219,
+ 227, 239, 247, 248, 254, 258, 268, 275, 276, 280,
+ 281, 290, 291, 302, 305, 309, 313, 321, 330, 341,
+ 354, 360, 367, 374, 381, 389, 395, 400, 407, 413,
+ 419, 426, 431, 437, 445, 454, 467, 473, 480, 487,
+ 494, 500, 504, 508, 515, 516, 519, 523, 529, 530,
+ 535, 542, 548, 556, 562, 568, 578, 581, 645, 651,
+ 658, 663, 674, 678, 691, 699, 700, 707, 719, 731,
+ 737, 746, 750, 757, 761, 768, 776, 783, 794, 801,
+ 807, 810, 819, 828, 836, 844, 852, 860, 868, 878,
+ 974, 980, 987, 994, 1002, 1009, 1019, 1020, 1028, 1040,
+ 1041, 1044, 1045, 1052, 1061
};
#endif
@@ -622,12 +624,12 @@ static const char *const yytname[] =
"ASSERT_RETURN_NAN", "ASSERT_TRAP", "INVOKE", "LOW", "$accept",
"value_type_list", "func_type", "literal", "var", "var_list", "bind_var",
"quoted_text", "string_contents", "labeling", "offset", "align", "expr",
- "expr1", "expr_opt", "non_empty_expr_list", "expr_list", "param_list",
- "result", "local_list", "type_use", "func_info", "func", "start",
- "segment_address", "segment", "segment_list", "initial_pages",
- "max_pages", "memory", "type_def", "table", "import", "export",
- "export_memory", "module_fields", "module", "cmd", "cmd_list", "const",
- "const_opt", "const_list", "script", "script_start", YY_NULLPTR
+ "expr1", "expr_opt", "non_empty_expr_list", "expr_list", "func_fields",
+ "type_use", "func_info", "func", "start", "segment_address", "segment",
+ "segment_list", "initial_pages", "max_pages", "memory", "type_def",
+ "table", "import", "export", "export_memory", "module_fields", "module",
+ "cmd", "cmd_list", "const", "const_opt", "const_list", "script",
+ "script_start", YY_NULLPTR
};
#endif
@@ -645,10 +647,10 @@ static const yytype_uint16 yytoknum[] =
};
# endif
-#define YYPACT_NINF -140
+#define YYPACT_NINF -130
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-140)))
+ (!!((Yystate) == (-130)))
#define YYTABLE_NINF -1
@@ -659,39 +661,33 @@ static const yytype_uint16 yytoknum[] =
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- -140, 1, -140, 20, -9, -140, -140, -140, -140, 25,
- 29, 31, 33, 42, 97, 17, 42, 8, 11, 23,
- -140, -140, 201, -140, -140, -140, -140, -140, -140, -140,
- -140, -140, 68, 42, 42, 42, 121, 0, 48, 27,
- 69, 123, 42, -140, -140, -140, -140, -140, 50, -140,
- -140, 348, -140, 90, -140, 94, 100, 103, 115, 119,
- 104, -140, -140, 116, 91, 129, -140, 130, 42, 42,
- 21, 105, 142, 150, 152, 162, -140, 141, 94, 141,
- 19, 48, -140, 48, 48, 48, 94, 48, 48, 132,
- 132, 162, 94, 94, 94, 94, 94, 48, 141, 134,
- 141, -140, -140, 94, 158, 94, 100, 103, 115, 119,
- 567, -140, 403, 94, 103, 115, 300, 94, 115, 485,
- 94, 444, 94, 100, 103, 115, -140, -140, 161, 140,
- -140, 169, -140, 42, 179, 183, 186, -140, -140, 192,
- 195, 42, -140, -140, 196, -140, 94, 199, 141, 94,
- 94, -140, -140, 94, 48, 94, 94, 94, -140, -140,
- 94, -140, 174, 174, -140, -140, 94, 94, -140, 94,
- 204, 43, 200, 208, 51, 209, -140, -140, 94, 103,
- 115, 94, 115, 94, 94, 100, 103, 115, 141, 94,
- 115, 94, 94, 141, 94, 103, 115, 94, 115, 94,
- 135, 213, 161, 175, -140, -140, 176, 179, -26, 216,
- 217, -140, -140, -140, 218, -140, 219, -140, 94, -140,
- 526, 94, 94, -140, -140, 94, 94, -140, -140, 94,
- -140, -140, 94, 94, -140, -140, 94, -140, -140, -140,
- 220, -140, -140, 221, 94, 115, 94, 94, 94, 103,
- 115, 94, 115, 94, 78, 227, 94, 80, 232, 94,
- 115, 94, 94, -140, 233, 222, 225, 240, -140, 226,
- 245, -140, -140, -140, -140, 141, -140, -140, -140, -140,
- -140, -140, 94, -140, -140, -140, 94, 94, 115, 94,
- 94, -140, 248, -140, 249, 94, 87, 250, -140, 251,
- -140, 198, -140, -140, 94, -140, 94, -140, -140, 253,
- -140, -140, -140, 255, 256, 228, -140, 254, 252, 262,
- 258, 141, -140, 94, 263, -140
+ -130, 4, -130, 9, 42, -130, -130, -130, -130, 12,
+ 31, 73, 80, 39, 28, 49, 39, 33, 45, 50,
+ -130, -130, 270, -130, -130, -130, -130, -130, -130, -130,
+ -130, -130, 104, 39, 39, 39, 115, 5, 46, 20,
+ 108, 116, 39, -130, -130, -130, -130, -130, 86, -130,
+ -130, 139, -130, 119, -130, 124, -130, -130, 128, 132,
+ -130, -130, 154, 146, 164, -130, 163, 39, 39, 13,
+ 82, 122, 126, 131, 134, -130, 167, 124, 167, 21,
+ 46, -130, 46, 46, 46, 124, 46, 46, 155, 155,
+ 134, 124, 124, 124, 124, 124, 46, 167, 175, 167,
+ -130, -130, 124, 181, 128, 182, 262, -130, 180, 189,
+ -130, -130, 191, 172, -130, 138, -130, 39, 196, 205,
+ 212, -130, -130, 214, 218, 39, -130, -130, 219, -130,
+ 124, 215, 167, 124, 124, -130, -130, 124, 46, 124,
+ 124, 124, -130, -130, 124, -130, 195, 195, -130, -130,
+ 124, 124, -130, 124, 222, 26, 216, 223, 43, 226,
+ -130, -130, 236, -130, -130, 107, 245, 191, 206, -130,
+ -130, 149, 196, 64, 253, 254, -130, -130, -130, 255,
+ -130, 256, -130, -130, 221, 124, 124, -130, -130, 124,
+ 124, -130, -130, 124, -130, -130, 124, 124, -130, -130,
+ 124, -130, 128, -130, 257, 128, 128, 258, -130, -130,
+ 259, 260, 261, 271, -130, 263, 277, -130, -130, -130,
+ -130, 167, -130, -130, -130, -130, -130, -130, 124, -130,
+ -130, 128, -130, -130, 128, 69, 286, -130, 287, -130,
+ 268, -130, -130, 124, -130, -130, -130, 295, -130, -130,
+ -130, 296, 297, 264, -130, 299, 290, 249, 301, 167,
+ -130, 124, 305, -130
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -699,59 +695,53 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 169, 176, 177, 0, 0, 163, 170, 1, 153, 0,
+ 106, 113, 114, 0, 0, 100, 107, 1, 90, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 15, 174, 0, 162, 154, 161, 160, 159, 158, 155,
- 156, 157, 0, 0, 0, 0, 0, 70, 0, 0,
- 0, 0, 0, 12, 165, 174, 174, 174, 0, 164,
- 175, 0, 14, 71, 56, 133, 119, 127, 131, 103,
- 0, 10, 11, 0, 0, 0, 140, 138, 0, 0,
- 0, 0, 0, 0, 0, 0, 24, 17, 0, 17,
- 54, 0, 12, 0, 0, 0, 54, 0, 0, 19,
- 19, 0, 0, 0, 0, 0, 0, 0, 2, 0,
- 2, 51, 52, 0, 0, 102, 90, 98, 88, 72,
- 0, 57, 0, 126, 120, 124, 0, 130, 128, 0,
- 132, 0, 118, 104, 112, 116, 134, 135, 4, 0,
- 141, 0, 138, 0, 4, 0, 0, 146, 13, 172,
- 0, 0, 8, 9, 0, 18, 58, 0, 18, 58,
- 54, 55, 34, 0, 0, 58, 58, 0, 36, 41,
- 0, 20, 21, 21, 45, 46, 0, 0, 50, 0,
- 0, 0, 0, 0, 0, 0, 53, 23, 97, 91,
- 95, 101, 99, 89, 87, 73, 81, 85, 2, 123,
- 121, 125, 129, 2, 111, 105, 109, 115, 113, 117,
- 0, 0, 4, 0, 143, 139, 0, 4, 0, 0,
- 0, 152, 151, 173, 0, 167, 0, 171, 59, 25,
- 0, 26, 58, 32, 35, 30, 13, 38, 39, 58,
- 42, 22, 0, 0, 47, 49, 0, 69, 60, 3,
- 0, 64, 65, 0, 94, 92, 96, 100, 80, 74,
- 78, 84, 82, 86, 0, 0, 122, 0, 0, 108,
- 106, 110, 114, 2, 0, 0, 0, 0, 142, 0,
- 0, 149, 147, 166, 168, 17, 28, 33, 31, 37,
- 40, 43, 0, 48, 61, 66, 93, 77, 75, 79,
- 83, 62, 0, 67, 0, 107, 0, 0, 144, 0,
- 136, 0, 150, 148, 58, 44, 76, 63, 68, 5,
- 7, 145, 16, 0, 0, 0, 137, 27, 0, 0,
- 0, 17, 6, 58, 0, 29
+ 15, 111, 0, 99, 91, 98, 97, 96, 95, 92,
+ 93, 94, 0, 0, 0, 0, 0, 58, 0, 0,
+ 0, 0, 0, 12, 102, 111, 111, 111, 0, 101,
+ 112, 0, 14, 58, 56, 59, 60, 67, 58, 0,
+ 10, 11, 0, 0, 0, 77, 75, 0, 0, 0,
+ 0, 0, 0, 0, 0, 24, 17, 0, 17, 54,
+ 0, 12, 0, 0, 0, 54, 0, 0, 19, 19,
+ 0, 0, 0, 0, 0, 0, 0, 2, 0, 2,
+ 51, 52, 0, 0, 58, 0, 0, 57, 0, 0,
+ 70, 72, 4, 0, 78, 0, 75, 0, 4, 0,
+ 0, 83, 13, 109, 0, 0, 8, 9, 0, 18,
+ 58, 0, 18, 58, 54, 55, 34, 0, 0, 58,
+ 58, 0, 36, 41, 0, 20, 21, 21, 45, 46,
+ 0, 0, 50, 0, 0, 0, 0, 0, 0, 0,
+ 53, 23, 0, 71, 68, 0, 0, 4, 0, 80,
+ 76, 0, 4, 0, 0, 0, 89, 88, 110, 0,
+ 104, 0, 108, 25, 0, 26, 58, 32, 35, 30,
+ 13, 38, 39, 58, 42, 22, 0, 0, 47, 49,
+ 0, 66, 58, 3, 0, 58, 58, 0, 69, 2,
+ 0, 0, 0, 0, 79, 0, 0, 86, 84, 103,
+ 105, 17, 28, 33, 31, 37, 40, 43, 0, 48,
+ 61, 58, 63, 64, 58, 0, 0, 81, 0, 73,
+ 0, 87, 85, 58, 44, 62, 65, 5, 7, 82,
+ 16, 0, 0, 0, 74, 27, 0, 0, 0, 17,
+ 6, 58, 0, 29
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -140, -94, -132, 178, 203, 188, 40, 117, -140, -78,
- 187, 122, -55, -140, -77, 157, -139, -48, -2, -38,
- -46, -140, -140, -140, -140, -140, 146, -140, -140, -140,
- -140, -140, -140, -140, -140, -140, 270, -140, -140, 153,
- -140, 70, -140, -140
+ -130, -94, -112, 176, -21, 233, -25, 3, -130, -78,
+ 229, 156, -52, -130, -65, -130, -129, -125, -51, -36,
+ -130, -130, -130, -130, 203, -130, -130, -130, -130, -130,
+ -130, -130, -130, -130, 311, -130, -130, 198, -130, 65,
+ -130, -130
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 171, 201, 144, 63, 71, 145, 21, 313, 146,
- 162, 232, 54, 104, 152, 218, 219, 56, 57, 58,
- 59, 60, 24, 25, 301, 205, 131, 67, 132, 26,
- 27, 28, 29, 30, 31, 14, 5, 6, 1, 50,
- 214, 36, 2, 3
+ -1, 155, 166, 128, 62, 70, 129, 21, 251, 130,
+ 146, 196, 54, 103, 136, 55, 56, 57, 58, 59,
+ 24, 25, 240, 170, 115, 66, 116, 26, 27, 28,
+ 29, 30, 31, 14, 5, 6, 1, 50, 179, 36,
+ 2, 3
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -759,173 +749,109 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_uint16 yytable[] =
{
- 111, 149, 209, 51, 4, 106, 174, 109, 52, 158,
- 223, 123, 97, 263, 264, 108, 227, 228, 115, 118,
- 7, 125, 110, 147, 61, 151, 61, 62, 15, 62,
- 64, 151, 17, 8, 18, 52, 19, 165, 166, 167,
- 168, 169, 9, 10, 11, 12, 13, 238, 176, 20,
- 111, 107, 239, 61, 114, 242, 62, 124, 111, 8,
- 239, 185, 111, 33, 135, 111, 34, 111, 180, 182,
- 266, 187, 44, 224, 66, 269, 190, 53, 35, 65,
- 75, 68, 291, 277, 293, 196, 198, 239, 210, 239,
- 280, 309, 221, 51, 254, 151, 239, 110, 225, 257,
- 22, 23, 229, 112, 179, 230, 116, 186, 126, 137,
- 61, 234, 235, 62, 236, 72, 73, 74, 119, 148,
- 127, 195, 121, 111, 48, 49, 111, 128, 111, 111,
- 20, 52, 129, 32, 111, 130, 111, 111, 172, 111,
- 175, 245, 111, 173, 111, 48, 139, 250, 252, 52,
- 45, 46, 47, 48, 140, 48, 141, 260, 69, 70,
- 161, 270, 177, 111, 200, 314, 276, 142, 143, 296,
- 278, 279, 203, 204, 263, 264, 202, 281, 282, 203,
- 268, 283, 208, 249, 324, 133, 134, 211, 222, 111,
- 212, 111, 111, 111, 55, 48, 111, 304, 111, 215,
- 217, 111, 220, 231, 111, 312, 111, 111, 237, 240,
- 105, 288, 241, 113, 117, 120, 122, 265, 243, 267,
- 271, 272, 273, 274, 284, 285, 298, 305, 255, 299,
- 302, 111, 111, 258, 111, 111, 292, 37, 38, 39,
- 111, 294, 297, 323, 40, 300, 41, 42, 43, 303,
- 207, 111, 307, 308, 310, 311, 315, 319, 216, 316,
- 317, 320, 322, 178, 181, 183, 184, 325, 318, 164,
- 154, 189, 191, 136, 138, 192, 321, 163, 206, 16,
- 194, 197, 199, 150, 153, 233, 155, 156, 157, 0,
- 159, 160, 213, 0, 0, 0, 0, 0, 0, 0,
- 170, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 76, 77, 78, 0, 0, 79, 80, 81, 82, 0,
- 83, 84, 85, 86, 87, 88, 89, 90, 0, 0,
- 91, 92, 93, 94, 95, 96, 244, 246, 0, 247,
- 0, 100, 248, 251, 253, 0, 0, 256, 101, 102,
- 103, 0, 259, 261, 0, 262, 0, 226, 76, 77,
- 78, 0, 0, 79, 80, 81, 82, 0, 83, 84,
- 85, 86, 87, 88, 89, 90, 0, 0, 91, 92,
- 93, 94, 95, 96, 0, 0, 97, 98, 99, 100,
- 0, 0, 0, 0, 0, 0, 101, 102, 103, 0,
- 0, 0, 286, 0, 0, 0, 287, 289, 0, 290,
- 0, 0, 0, 76, 77, 78, 0, 295, 79, 80,
- 81, 82, 0, 83, 84, 85, 86, 87, 88, 89,
- 90, 0, 0, 91, 92, 93, 94, 95, 96, 0,
- 0, 0, 188, 99, 100, 306, 0, 0, 0, 0,
- 0, 101, 102, 103, 76, 77, 78, 0, 0, 79,
- 80, 81, 82, 0, 83, 84, 85, 86, 87, 88,
- 89, 90, 0, 0, 91, 92, 93, 94, 95, 96,
- 0, 0, 0, 98, 99, 100, 0, 0, 0, 0,
- 0, 0, 101, 102, 103, 76, 77, 78, 0, 0,
- 79, 80, 81, 82, 0, 83, 84, 85, 86, 87,
- 88, 89, 90, 0, 0, 91, 92, 93, 94, 95,
- 96, 0, 0, 0, 0, 0, 193, 0, 0, 0,
- 0, 0, 0, 101, 102, 103, 76, 77, 78, 275,
- 0, 79, 80, 81, 82, 0, 83, 84, 85, 86,
- 87, 88, 89, 90, 0, 0, 91, 92, 93, 94,
- 95, 96, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 101, 102, 103, 76, 77, 78,
- 0, 0, 79, 80, 81, 82, 0, 83, 84, 85,
- 86, 87, 88, 89, 90, 0, 0, 91, 92, 93,
- 94, 95, 96, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 101, 102, 103
+ 133, 183, 104, 107, 187, 158, 174, 4, 51, 7,
+ 191, 192, 53, 52, 64, 15, 67, 105, 60, 32,
+ 142, 61, 109, 63, 106, 131, 60, 135, 52, 61,
+ 202, 22, 23, 135, 17, 203, 45, 46, 47, 149,
+ 150, 151, 152, 153, 68, 69, 20, 206, 120, 122,
+ 160, 60, 203, 132, 61, 212, 119, 223, 134, 137,
+ 215, 139, 140, 141, 226, 143, 144, 175, 162, 188,
+ 117, 118, 156, 247, 159, 154, 18, 230, 203, 185,
+ 232, 233, 135, 19, 8, 189, 121, 60, 33, 193,
+ 61, 8, 194, 9, 10, 11, 12, 13, 198, 199,
+ 34, 200, 96, 209, 210, 35, 245, 186, 44, 246,
+ 71, 72, 73, 65, 252, 235, 74, 190, 48, 49,
+ 172, 216, 51, 20, 52, 48, 123, 106, 181, 48,
+ 124, 108, 262, 222, 48, 125, 110, 224, 225, 126,
+ 127, 168, 169, 243, 227, 228, 209, 210, 229, 75,
+ 76, 77, 168, 214, 78, 79, 80, 81, 111, 82,
+ 83, 84, 85, 86, 87, 88, 89, 113, 114, 90,
+ 91, 92, 93, 94, 95, 52, 244, 96, 97, 98,
+ 99, 261, 112, 145, 157, 161, 163, 100, 101, 102,
+ 75, 76, 77, 164, 165, 78, 79, 80, 81, 173,
+ 82, 83, 84, 85, 86, 87, 88, 89, 167, 176,
+ 90, 91, 92, 93, 94, 95, 177, 48, 184, 97,
+ 98, 99, 180, 182, 195, 204, 201, 205, 100, 101,
+ 102, 75, 76, 77, 221, 207, 78, 79, 80, 81,
+ 208, 82, 83, 84, 85, 86, 87, 88, 89, 211,
+ 213, 90, 91, 92, 93, 94, 95, 217, 218, 219,
+ 220, 231, 234, 259, 237, 238, 148, 241, 236, 100,
+ 101, 102, 75, 76, 77, 250, 239, 78, 79, 80,
+ 81, 242, 82, 83, 84, 85, 86, 87, 88, 89,
+ 248, 249, 90, 91, 92, 93, 94, 95, 253, 258,
+ 254, 255, 257, 197, 256, 260, 37, 38, 39, 263,
+ 100, 101, 102, 40, 138, 41, 42, 43, 147, 171,
+ 16, 178
};
-static const yytype_int16 yycheck[] =
+static const yytype_uint16 yycheck[] =
{
- 55, 79, 134, 3, 3, 53, 100, 53, 8, 86,
- 149, 59, 38, 39, 40, 53, 155, 156, 56, 57,
- 0, 59, 3, 78, 5, 80, 5, 8, 3, 8,
- 3, 86, 3, 42, 3, 8, 3, 92, 93, 94,
- 95, 96, 51, 52, 53, 54, 55, 4, 103, 7,
- 105, 53, 9, 5, 56, 4, 8, 59, 113, 42,
- 9, 109, 117, 55, 43, 120, 55, 122, 106, 107,
- 202, 109, 4, 150, 5, 207, 114, 37, 55, 39,
- 30, 41, 4, 222, 4, 123, 124, 9, 134, 9,
- 229, 4, 147, 3, 188, 150, 9, 3, 153, 193,
- 3, 4, 157, 3, 106, 160, 3, 109, 4, 4,
- 5, 166, 167, 8, 169, 45, 46, 47, 3, 79,
- 4, 123, 3, 178, 3, 4, 181, 36, 183, 184,
- 7, 8, 3, 16, 189, 5, 191, 192, 98, 194,
- 100, 179, 197, 9, 199, 3, 4, 185, 186, 8,
- 33, 34, 35, 3, 4, 3, 4, 195, 41, 42,
- 28, 207, 4, 218, 3, 304, 221, 5, 6, 263,
- 225, 226, 3, 4, 39, 40, 36, 232, 233, 3,
- 4, 236, 3, 185, 323, 68, 69, 4, 148, 244,
- 4, 246, 247, 248, 37, 3, 251, 275, 253, 4,
- 4, 256, 3, 29, 259, 7, 261, 262, 4, 9,
- 53, 249, 4, 56, 57, 58, 59, 4, 9, 44,
- 4, 4, 4, 4, 4, 4, 4, 282, 188, 4,
- 4, 286, 287, 193, 289, 290, 9, 36, 37, 38,
- 295, 9, 9, 321, 43, 5, 45, 46, 47, 4,
- 133, 306, 4, 4, 4, 4, 3, 3, 141, 4,
- 4, 9, 4, 106, 107, 108, 109, 4, 40, 91,
- 82, 114, 115, 70, 71, 118, 14, 90, 132, 9,
- 123, 124, 125, 80, 81, 163, 83, 84, 85, -1,
- 87, 88, 139, -1, -1, -1, -1, -1, -1, -1,
- 97, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 10, 11, 12, -1, -1, 15, 16, 17, 18, -1,
- 20, 21, 22, 23, 24, 25, 26, 27, -1, -1,
- 30, 31, 32, 33, 34, 35, 179, 180, -1, 182,
- -1, 41, 185, 186, 187, -1, -1, 190, 48, 49,
- 50, -1, 195, 196, -1, 198, -1, 154, 10, 11,
- 12, -1, -1, 15, 16, 17, 18, -1, 20, 21,
- 22, 23, 24, 25, 26, 27, -1, -1, 30, 31,
- 32, 33, 34, 35, -1, -1, 38, 39, 40, 41,
- -1, -1, -1, -1, -1, -1, 48, 49, 50, -1,
- -1, -1, 245, -1, -1, -1, 249, 250, -1, 252,
- -1, -1, -1, 10, 11, 12, -1, 260, 15, 16,
- 17, 18, -1, 20, 21, 22, 23, 24, 25, 26,
- 27, -1, -1, 30, 31, 32, 33, 34, 35, -1,
- -1, -1, 39, 40, 41, 288, -1, -1, -1, -1,
- -1, 48, 49, 50, 10, 11, 12, -1, -1, 15,
- 16, 17, 18, -1, 20, 21, 22, 23, 24, 25,
- 26, 27, -1, -1, 30, 31, 32, 33, 34, 35,
- -1, -1, -1, 39, 40, 41, -1, -1, -1, -1,
- -1, -1, 48, 49, 50, 10, 11, 12, -1, -1,
- 15, 16, 17, 18, -1, 20, 21, 22, 23, 24,
- 25, 26, 27, -1, -1, 30, 31, 32, 33, 34,
- 35, -1, -1, -1, -1, -1, 41, -1, -1, -1,
- -1, -1, -1, 48, 49, 50, 10, 11, 12, 13,
- -1, 15, 16, 17, 18, -1, 20, 21, 22, 23,
- 24, 25, 26, 27, -1, -1, 30, 31, 32, 33,
- 34, 35, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 48, 49, 50, 10, 11, 12,
- -1, -1, 15, 16, 17, 18, -1, 20, 21, 22,
- 23, 24, 25, 26, 27, -1, -1, 30, 31, 32,
- 33, 34, 35, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 48, 49, 50
+ 78, 130, 53, 55, 133, 99, 118, 3, 3, 0,
+ 139, 140, 37, 8, 39, 3, 41, 53, 5, 16,
+ 85, 8, 58, 3, 3, 77, 5, 79, 8, 8,
+ 4, 3, 4, 85, 3, 9, 33, 34, 35, 91,
+ 92, 93, 94, 95, 41, 42, 7, 4, 69, 70,
+ 102, 5, 9, 78, 8, 167, 43, 186, 79, 80,
+ 172, 82, 83, 84, 193, 86, 87, 118, 104, 134,
+ 67, 68, 97, 4, 99, 96, 3, 202, 9, 131,
+ 205, 206, 134, 3, 42, 137, 4, 5, 55, 141,
+ 8, 42, 144, 51, 52, 53, 54, 55, 150, 151,
+ 55, 153, 38, 39, 40, 55, 231, 132, 4, 234,
+ 45, 46, 47, 5, 243, 209, 30, 138, 3, 4,
+ 117, 172, 3, 7, 8, 3, 4, 3, 125, 3,
+ 4, 3, 261, 185, 3, 4, 4, 189, 190, 5,
+ 6, 3, 4, 221, 196, 197, 39, 40, 200, 10,
+ 11, 12, 3, 4, 15, 16, 17, 18, 4, 20,
+ 21, 22, 23, 24, 25, 26, 27, 3, 5, 30,
+ 31, 32, 33, 34, 35, 8, 228, 38, 39, 40,
+ 41, 259, 36, 28, 9, 4, 4, 48, 49, 50,
+ 10, 11, 12, 4, 3, 15, 16, 17, 18, 3,
+ 20, 21, 22, 23, 24, 25, 26, 27, 36, 4,
+ 30, 31, 32, 33, 34, 35, 4, 3, 3, 39,
+ 40, 41, 4, 4, 29, 9, 4, 4, 48, 49,
+ 50, 10, 11, 12, 13, 9, 15, 16, 17, 18,
+ 4, 20, 21, 22, 23, 24, 25, 26, 27, 4,
+ 44, 30, 31, 32, 33, 34, 35, 4, 4, 4,
+ 4, 4, 4, 14, 4, 4, 90, 4, 9, 48,
+ 49, 50, 10, 11, 12, 7, 5, 15, 16, 17,
+ 18, 4, 20, 21, 22, 23, 24, 25, 26, 27,
+ 4, 4, 30, 31, 32, 33, 34, 35, 3, 9,
+ 4, 4, 3, 147, 40, 4, 36, 37, 38, 4,
+ 48, 49, 50, 43, 81, 45, 46, 47, 89, 116,
+ 9, 123
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 95, 99, 100, 3, 93, 94, 0, 42, 51,
- 52, 53, 54, 55, 92, 3, 93, 3, 3, 3,
- 7, 64, 3, 4, 79, 80, 86, 87, 88, 89,
- 90, 91, 64, 55, 55, 55, 98, 36, 37, 38,
+ 0, 93, 97, 98, 3, 91, 92, 0, 42, 51,
+ 52, 53, 54, 55, 90, 3, 91, 3, 3, 3,
+ 7, 64, 3, 4, 77, 78, 84, 85, 86, 87,
+ 88, 89, 64, 55, 55, 55, 96, 36, 37, 38,
43, 45, 46, 47, 4, 64, 64, 64, 3, 4,
- 96, 3, 8, 63, 69, 72, 74, 75, 76, 77,
- 78, 5, 8, 61, 3, 63, 5, 84, 63, 64,
- 64, 62, 98, 98, 98, 30, 10, 11, 12, 15,
- 16, 17, 18, 20, 21, 22, 23, 24, 25, 26,
- 27, 30, 31, 32, 33, 34, 35, 38, 39, 40,
- 41, 48, 49, 50, 70, 72, 74, 75, 76, 77,
- 3, 69, 3, 72, 75, 76, 3, 72, 76, 3,
- 72, 3, 72, 74, 75, 76, 4, 4, 36, 3,
- 5, 83, 85, 64, 64, 43, 61, 4, 61, 4,
- 4, 4, 5, 6, 60, 63, 66, 69, 63, 66,
- 61, 69, 71, 61, 62, 61, 61, 61, 71, 61,
- 61, 28, 67, 67, 60, 69, 69, 69, 69, 69,
- 61, 58, 63, 9, 58, 63, 69, 4, 72, 75,
- 76, 72, 76, 72, 72, 74, 75, 76, 39, 72,
- 76, 72, 72, 41, 72, 75, 76, 72, 76, 72,
- 3, 59, 36, 3, 4, 82, 83, 64, 3, 59,
- 77, 4, 4, 96, 97, 4, 64, 4, 72, 73,
- 3, 69, 63, 73, 71, 69, 61, 73, 73, 69,
- 69, 29, 68, 68, 69, 69, 69, 4, 4, 9,
- 9, 4, 4, 9, 72, 76, 72, 72, 72, 75,
- 76, 72, 76, 72, 58, 63, 72, 58, 63, 72,
- 76, 72, 72, 39, 40, 4, 59, 44, 4, 59,
- 77, 4, 4, 4, 4, 13, 69, 73, 69, 69,
- 73, 69, 69, 69, 4, 4, 72, 72, 76, 72,
- 72, 4, 9, 4, 9, 72, 58, 9, 4, 4,
- 5, 81, 4, 4, 66, 69, 72, 4, 4, 4,
- 4, 4, 7, 65, 73, 3, 4, 4, 40, 3,
- 9, 14, 4, 66, 73, 4
+ 94, 3, 8, 63, 69, 72, 73, 74, 75, 76,
+ 5, 8, 61, 3, 63, 5, 82, 63, 64, 64,
+ 62, 96, 96, 96, 30, 10, 11, 12, 15, 16,
+ 17, 18, 20, 21, 22, 23, 24, 25, 26, 27,
+ 30, 31, 32, 33, 34, 35, 38, 39, 40, 41,
+ 48, 49, 50, 70, 75, 76, 3, 69, 3, 76,
+ 4, 4, 36, 3, 5, 81, 83, 64, 64, 43,
+ 61, 4, 61, 4, 4, 4, 5, 6, 60, 63,
+ 66, 69, 63, 66, 61, 69, 71, 61, 62, 61,
+ 61, 61, 71, 61, 61, 28, 67, 67, 60, 69,
+ 69, 69, 69, 69, 61, 58, 63, 9, 58, 63,
+ 69, 4, 76, 4, 4, 3, 59, 36, 3, 4,
+ 80, 81, 64, 3, 59, 75, 4, 4, 94, 95,
+ 4, 64, 4, 73, 3, 69, 63, 73, 71, 69,
+ 61, 73, 73, 69, 69, 29, 68, 68, 69, 69,
+ 69, 4, 4, 9, 9, 4, 4, 9, 4, 39,
+ 40, 4, 59, 44, 4, 59, 75, 4, 4, 4,
+ 4, 13, 69, 73, 69, 69, 73, 69, 69, 69,
+ 74, 4, 74, 74, 4, 58, 9, 4, 4, 5,
+ 79, 4, 4, 66, 69, 74, 74, 4, 4, 4,
+ 7, 65, 73, 3, 4, 4, 40, 3, 9, 14,
+ 4, 66, 73, 4
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
@@ -937,18 +863,12 @@ static const yytype_uint8 yyr1[] =
70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
70, 70, 70, 70, 71, 71, 72, 72, 73, 73,
- 74, 74, 74, 74, 75, 76, 76, 76, 76, 77,
- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
- 78, 78, 78, 78, 79, 80, 81, 82, 83, 83,
- 84, 85, 86, 86, 87, 87, 88, 89, 89, 89,
- 89, 90, 91, 92, 92, 92, 92, 92, 92, 92,
- 92, 92, 93, 94, 94, 94, 94, 94, 94, 95,
- 95, 96, 97, 97, 98, 98, 99, 100
+ 74, 74, 74, 74, 74, 74, 75, 76, 77, 77,
+ 77, 77, 78, 79, 80, 81, 81, 82, 83, 84,
+ 84, 85, 85, 86, 87, 87, 87, 87, 88, 89,
+ 90, 90, 90, 90, 90, 90, 90, 90, 90, 91,
+ 92, 92, 92, 92, 92, 92, 93, 93, 94, 95,
+ 95, 96, 96, 97, 98
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
@@ -960,18 +880,12 @@ static const yytype_uint8 yyr2[] =
3, 4, 3, 4, 2, 3, 2, 4, 3, 3,
4, 2, 3, 4, 5, 2, 2, 3, 4, 3,
2, 1, 1, 2, 0, 1, 1, 2, 0, 1,
- 4, 5, 5, 6, 4, 4, 5, 5, 6, 4,
- 0, 1, 2, 3, 4, 5, 6, 5, 4, 5,
- 4, 3, 4, 5, 4, 3, 4, 3, 2, 3,
- 2, 3, 4, 5, 4, 3, 4, 3, 2, 3,
- 4, 3, 2, 1, 2, 3, 4, 5, 4, 3,
- 4, 3, 2, 3, 4, 3, 2, 3, 2, 1,
- 2, 3, 4, 3, 2, 3, 2, 1, 2, 3,
- 2, 1, 2, 1, 4, 4, 1, 5, 0, 2,
- 1, 1, 6, 5, 7, 8, 4, 6, 7, 6,
- 7, 5, 5, 0, 2, 2, 2, 2, 2, 2,
- 2, 2, 4, 1, 5, 5, 9, 8, 9, 0,
- 2, 4, 0, 1, 0, 2, 1, 1
+ 1, 5, 6, 5, 5, 6, 4, 1, 5, 6,
+ 4, 5, 4, 1, 5, 0, 2, 1, 1, 6,
+ 5, 7, 8, 4, 6, 7, 6, 7, 5, 5,
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 4,
+ 1, 5, 5, 9, 8, 9, 0, 2, 4, 0,
+ 1, 0, 2, 1, 1
};
@@ -1468,189 +1382,183 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
switch (yytype)
{
case 58: /* value_type_list */
-#line 154 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 161 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_type_vector(parser->allocator, &((*yyvaluep).types)); }
-#line 1474 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1388 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 59: /* func_type */
-#line 164 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 171 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_func_signature(parser->allocator, &((*yyvaluep).func_sig)); }
-#line 1480 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1394 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 60: /* literal */
-#line 153 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 160 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).literal).text); }
-#line 1486 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1400 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 61: /* var */
-#line 155 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 162 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_var(parser->allocator, &((*yyvaluep).var)); }
-#line 1492 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1406 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 62: /* var_list */
-#line 156 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 163 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_var_vector_and_elements(parser->allocator, &((*yyvaluep).vars)); }
-#line 1498 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1412 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 63: /* bind_var */
-#line 152 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).text)); }
-#line 1504 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1418 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 64: /* quoted_text */
-#line 152 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).text)); }
-#line 1510 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1424 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 65: /* string_contents */
-#line 161 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 168 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_segment(parser->allocator, &((*yyvaluep).segment)); }
-#line 1516 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1430 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 66: /* labeling */
-#line 152 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_string_slice(parser->allocator, &((*yyvaluep).text)); }
-#line 1522 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1436 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 69: /* expr */
-#line 157 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 164 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_expr_ptr(parser->allocator, &((*yyvaluep).expr)); }
-#line 1528 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1442 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 70: /* expr1 */
-#line 157 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 164 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_expr_ptr(parser->allocator, &((*yyvaluep).expr)); }
-#line 1534 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1448 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 71: /* expr_opt */
-#line 157 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 164 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_expr_ptr(parser->allocator, &((*yyvaluep).expr)); }
-#line 1540 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1454 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 72: /* non_empty_expr_list */
-#line 158 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 165 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_expr_ptr_vector_and_elements(parser->allocator, &((*yyvaluep).exprs)); }
-#line 1546 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1460 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
case 73: /* expr_list */
-#line 158 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+#line 165 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_expr_ptr_vector_and_elements(parser->allocator, &((*yyvaluep).exprs)); }
-#line 1552 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1466 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 74: /* param_list */
-#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */
- { wasm_destroy_type_bindings(parser->allocator, &((*yyvaluep).type_bindings)); }
-#line 1558 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
- break;
-
- case 76: /* local_list */
-#line 159 "src/wasm-bison-parser.y" /* yacc.c:1257 */
- { wasm_destroy_type_bindings(parser->allocator, &((*yyvaluep).type_bindings)); }
-#line 1564 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+ case 74: /* func_fields */
+#line 166 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ { wasm_destroy_func_fields(parser->allocator, ((*yyvaluep).func_fields)); }
+#line 1472 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 78: /* func_info */
-#line 160 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 76: /* func_info */
+#line 167 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_func(parser->allocator, ((*yyvaluep).func)); wasm_free(parser->allocator, ((*yyvaluep).func)); }
-#line 1570 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1478 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 79: /* func */
-#line 160 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 77: /* func */
+#line 167 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_func(parser->allocator, ((*yyvaluep).func)); wasm_free(parser->allocator, ((*yyvaluep).func)); }
-#line 1576 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1484 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 82: /* segment */
-#line 161 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 80: /* segment */
+#line 168 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_segment(parser->allocator, &((*yyvaluep).segment)); }
-#line 1582 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1490 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 83: /* segment_list */
-#line 162 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 81: /* segment_list */
+#line 169 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_segment_vector_and_elements(parser->allocator, &((*yyvaluep).segments)); }
-#line 1588 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1496 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 86: /* memory */
-#line 163 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 84: /* memory */
+#line 170 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_memory(parser->allocator, &((*yyvaluep).memory)); }
-#line 1594 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1502 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 87: /* type_def */
-#line 165 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 85: /* type_def */
+#line 172 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_func_type(parser->allocator, &((*yyvaluep).func_type)); }
-#line 1600 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1508 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 88: /* table */
-#line 156 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 86: /* table */
+#line 163 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_var_vector_and_elements(parser->allocator, &((*yyvaluep).vars)); }
-#line 1606 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1514 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 89: /* import */
-#line 166 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 87: /* import */
+#line 173 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_import(parser->allocator, ((*yyvaluep).import)); wasm_free(parser->allocator, ((*yyvaluep).import)); }
-#line 1612 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1520 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 90: /* export */
-#line 167 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 88: /* export */
+#line 174 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_export(parser->allocator, &((*yyvaluep).export_)); }
-#line 1618 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1526 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 92: /* module_fields */
-#line 168 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 90: /* module_fields */
+#line 175 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_module(parser->allocator, ((*yyvaluep).module)); wasm_free(parser->allocator, ((*yyvaluep).module)); }
-#line 1624 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1532 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 93: /* module */
-#line 168 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 91: /* module */
+#line 175 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_module(parser->allocator, ((*yyvaluep).module)); wasm_free(parser->allocator, ((*yyvaluep).module)); }
-#line 1630 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1538 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 94: /* cmd */
-#line 170 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 92: /* cmd */
+#line 177 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_command(parser->allocator, ((*yyvaluep).command)); wasm_free(parser->allocator, ((*yyvaluep).command)); }
-#line 1636 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1544 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 95: /* cmd_list */
-#line 171 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 93: /* cmd_list */
+#line 178 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_command_vector_and_elements(parser->allocator, &((*yyvaluep).commands)); }
-#line 1642 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1550 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 98: /* const_list */
-#line 169 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 96: /* const_list */
+#line 176 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_const_vector(parser->allocator, &((*yyvaluep).consts)); }
-#line 1648 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1556 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
- case 99: /* script */
-#line 172 "src/wasm-bison-parser.y" /* yacc.c:1257 */
+ case 97: /* script */
+#line 179 "src/wasm-bison-parser.y" /* yacc.c:1257 */
{ wasm_destroy_script(&((*yyvaluep).script)); }
-#line 1654 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
+#line 1562 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1257 */
break;
@@ -1942,72 +1850,72 @@ yyreduce:
switch (yyn)
{
case 2:
-#line 184 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 191 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ WASM_ZERO_MEMORY((yyval.types)); }
-#line 1948 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1856 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 3:
-#line 185 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 192 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.types) = (yyvsp[-1].types);
CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.types), &(yyvsp[0].type)));
}
-#line 1957 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1865 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 4:
-#line 191 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 198 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ WASM_ZERO_MEMORY((yyval.func_sig)); }
-#line 1963 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1871 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 5:
-#line 192 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 199 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.func_sig).result_type = WASM_TYPE_VOID;
(yyval.func_sig).param_types = (yyvsp[-1].types);
}
-#line 1972 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1880 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 6:
-#line 196 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 203 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.func_sig).result_type = (yyvsp[-1].type);
(yyval.func_sig).param_types = (yyvsp[-5].types);
}
-#line 1981 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1889 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 7:
-#line 200 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 207 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ WASM_ZERO_MEMORY((yyval.func_sig)); (yyval.func_sig).result_type = (yyvsp[-1].type); }
-#line 1987 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1895 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 8:
-#line 207 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 214 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.literal).type = (yyvsp[0].literal).type;
DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text);
CHECK_ALLOC_STR((yyval.literal).text);
}
-#line 1997 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1905 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 9:
-#line 212 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 219 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.literal).type = (yyvsp[0].literal).type;
DUPTEXT((yyval.literal).text, (yyvsp[0].literal).text);
CHECK_ALLOC_STR((yyval.literal).text);
}
-#line 2007 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1915 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 10:
-#line 220 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 227 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.var).loc = (yylsp[0]);
(yyval.var).type = WASM_VAR_TYPE_INDEX;
@@ -2020,43 +1928,43 @@ yyreduce:
}
(yyval.var).index = index;
}
-#line 2024 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1932 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 11:
-#line 232 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 239 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.var).loc = (yylsp[0]);
(yyval.var).type = WASM_VAR_TYPE_NAME;
DUPTEXT((yyval.var).name, (yyvsp[0].text));
CHECK_ALLOC_STR((yyval.var).name);
}
-#line 2035 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1943 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 12:
-#line 240 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 247 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ WASM_ZERO_MEMORY((yyval.vars)); }
-#line 2041 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1949 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 13:
-#line 241 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 248 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.vars) = (yyvsp[-1].vars);
CHECK_ALLOC(wasm_append_var_value(parser->allocator, &(yyval.vars), &(yyvsp[0].var)));
}
-#line 2050 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1958 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 14:
-#line 247 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 254 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ DUPTEXT((yyval.text), (yyvsp[0].text)); CHECK_ALLOC_STR((yyval.text)); }
-#line 2056 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1964 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 15:
-#line 251 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 258 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
void* data;
size_t size;
@@ -2064,38 +1972,38 @@ yyreduce:
(yyval.text).start = data;
(yyval.text).length = size;
}
-#line 2068 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1976 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 16:
-#line 261 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 268 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
CHECK_ALLOC(dup_string_contents(parser->allocator, &(yyvsp[0].text), &(yyval.segment).data,
&(yyval.segment).size));
}
-#line 2077 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1985 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 17:
-#line 268 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 275 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ WASM_ZERO_MEMORY((yyval.text)); }
-#line 2083 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1991 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 18:
-#line 269 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 276 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ (yyval.text) = (yyvsp[0].text); }
-#line 2089 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 1997 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 19:
-#line 273 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 280 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ (yyval.u64) = 0; }
-#line 2095 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2003 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 20:
-#line 274 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 281 "src/wasm-bison-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_parser_error(&(yylsp[0]), lexer, parser,
@@ -2103,17 +2011,17 @@ yyreduce:
WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].text)));
}
}
-#line 2107 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2015 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 21:
-#line 283 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 290 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ (yyval.u32) = USE_NATURAL_ALIGNMENT; }
-#line 2113 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2021 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 22:
-#line 284 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 291 "src/wasm-bison-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))) {
@@ -2122,35 +2030,35 @@ yyreduce:
WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].text)));
}
}
-#line 2126 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2034 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 23:
-#line 295 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 302 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ (yyval.expr) = (yyvsp[-1].expr); (yyval.expr)->loc = (yylsp[-2]); }
-#line 2132 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2040 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 24:
-#line 298 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 305 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_empty_expr(parser->allocator, WASM_EXPR_TYPE_NOP);
CHECK_ALLOC_NULL((yyval.expr));
}
-#line 2141 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2049 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 25:
-#line 302 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 309 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = new_block_expr_with_list(parser->allocator, &(yyvsp[-1].text), &(yyvsp[0].exprs));
CHECK_ALLOC_NULL((yyval.expr));
}
-#line 2150 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2058 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 26:
-#line 306 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 313 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_if_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2159,11 +2067,11 @@ yyreduce:
CHECK_ALLOC_NULL(true_block);
(yyval.expr)->if_.true_ = true_block;
}
-#line 2163 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2071 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 27:
-#line 314 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 321 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_if_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2173,11 +2081,11 @@ yyreduce:
CHECK_ALLOC_NULL(true_block);
(yyval.expr)->if_.true_ = true_block;
}
-#line 2177 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2085 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 28:
-#line 323 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 330 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_if_else_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2189,11 +2097,11 @@ yyreduce:
CHECK_ALLOC_NULL(false_block);
(yyval.expr)->if_else.false_ = false_block;
}
-#line 2193 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2101 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 29:
-#line 334 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 341 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_if_else_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2207,22 +2115,22 @@ yyreduce:
CHECK_ALLOC_NULL(false_block);
(yyval.expr)->if_else.false_ = false_block;
}
-#line 2211 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2119 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 30:
-#line 347 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 354 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_br_if_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->br_if.var = (yyvsp[-1].var);
(yyval.expr)->br_if.cond = (yyvsp[0].expr);
}
-#line 2222 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2130 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 31:
-#line 353 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 360 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_br_if_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2230,11 +2138,11 @@ yyreduce:
(yyval.expr)->br_if.expr = (yyvsp[-1].expr);
(yyval.expr)->br_if.cond = (yyvsp[0].expr);
}
-#line 2234 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2142 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 32:
-#line 360 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 367 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_loop_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2242,11 +2150,11 @@ yyreduce:
(yyval.expr)->loop.inner = (yyvsp[-1].text);
(yyval.expr)->loop.exprs = (yyvsp[0].exprs);
}
-#line 2246 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2154 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 33:
-#line 367 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 374 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_loop_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2254,11 +2162,11 @@ yyreduce:
(yyval.expr)->loop.inner = (yyvsp[-1].text);
(yyval.expr)->loop.exprs = (yyvsp[0].exprs);
}
-#line 2258 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2166 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 34:
-#line 374 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 381 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_br_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2267,32 +2175,32 @@ yyreduce:
(yyval.expr)->br.var.index = 0;
(yyval.expr)->br.expr = (yyvsp[0].expr);
}
-#line 2271 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2179 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 35:
-#line 382 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 389 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_br_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->br.var = (yyvsp[-1].var);
(yyval.expr)->br.expr = (yyvsp[0].expr);
}
-#line 2282 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2190 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 36:
-#line 388 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 395 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_return_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->return_.expr = (yyvsp[0].expr);
}
-#line 2292 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2200 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 37:
-#line 393 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 400 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_br_table_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2300,33 +2208,33 @@ yyreduce:
(yyval.expr)->br_table.targets = (yyvsp[-2].vars);
(yyval.expr)->br_table.default_target = (yyvsp[-1].var);
}
-#line 2304 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2212 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 38:
-#line 400 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 407 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_call_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->call.var = (yyvsp[-1].var);
(yyval.expr)->call.args = (yyvsp[0].exprs);
}
-#line 2315 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2223 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 39:
-#line 406 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 413 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_call_import_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->call.var = (yyvsp[-1].var);
(yyval.expr)->call.args = (yyvsp[0].exprs);
}
-#line 2326 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2234 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 40:
-#line 412 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 419 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_call_indirect_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2334,32 +2242,32 @@ yyreduce:
(yyval.expr)->call_indirect.expr = (yyvsp[-1].expr);
(yyval.expr)->call_indirect.args = (yyvsp[0].exprs);
}
-#line 2338 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2246 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 41:
-#line 419 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 426 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_get_local_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->get_local.var = (yyvsp[0].var);
}
-#line 2348 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2256 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 42:
-#line 424 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 431 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_set_local_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->set_local.var = (yyvsp[-1].var);
(yyval.expr)->set_local.expr = (yyvsp[0].expr);
}
-#line 2359 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2267 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 43:
-#line 430 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 437 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_load_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2368,11 +2276,11 @@ yyreduce:
(yyval.expr)->load.align = (yyvsp[-1].u32);
(yyval.expr)->load.addr = (yyvsp[0].expr);
}
-#line 2372 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2280 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 44:
-#line 438 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 445 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_store_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2382,11 +2290,11 @@ yyreduce:
(yyval.expr)->store.addr = (yyvsp[-1].expr);
(yyval.expr)->store.value = (yyvsp[0].expr);
}
-#line 2386 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2294 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 45:
-#line 447 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 454 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_const_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2400,22 +2308,22 @@ yyreduce:
}
wasm_free(parser->allocator, (char*)(yyvsp[0].literal).text.start);
}
-#line 2404 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2312 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 46:
-#line 460 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 467 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_unary_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->unary.opcode = (yyvsp[-1].opcode);
(yyval.expr)->unary.expr = (yyvsp[0].expr);
}
-#line 2415 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2323 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 47:
-#line 466 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 473 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_binary_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2423,11 +2331,11 @@ yyreduce:
(yyval.expr)->binary.left = (yyvsp[-1].expr);
(yyval.expr)->binary.right = (yyvsp[0].expr);
}
-#line 2427 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2335 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 48:
-#line 473 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 480 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_select_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2435,11 +2343,11 @@ yyreduce:
(yyval.expr)->select.false_ = (yyvsp[-1].expr);
(yyval.expr)->select.cond = (yyvsp[0].expr);
}
-#line 2439 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2347 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 49:
-#line 480 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 487 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_compare_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
@@ -2447,968 +2355,274 @@ yyreduce:
(yyval.expr)->compare.left = (yyvsp[-1].expr);
(yyval.expr)->compare.right = (yyvsp[0].expr);
}
-#line 2451 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2359 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 50:
-#line 487 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 494 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_convert_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->convert.opcode = (yyvsp[-1].opcode);
(yyval.expr)->convert.expr = (yyvsp[0].expr);
}
-#line 2462 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2370 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 51:
-#line 493 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 500 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_empty_expr(parser->allocator, WASM_EXPR_TYPE_UNREACHABLE);
CHECK_ALLOC_NULL((yyval.expr));
}
-#line 2471 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2379 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 52:
-#line 497 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 504 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_empty_expr(parser->allocator, WASM_EXPR_TYPE_MEMORY_SIZE);
CHECK_ALLOC_NULL((yyval.expr));
}
-#line 2480 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2388 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 53:
-#line 501 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 508 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.expr) = wasm_new_grow_memory_expr(parser->allocator);
CHECK_ALLOC_NULL((yyval.expr));
(yyval.expr)->grow_memory.expr = (yyvsp[0].expr);
}
-#line 2490 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2398 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 54:
-#line 508 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 515 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ (yyval.expr) = NULL; }
-#line 2496 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2404 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 56:
-#line 512 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 519 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
WASM_ZERO_MEMORY((yyval.exprs));
CHECK_ALLOC(wasm_append_expr_ptr_value(parser->allocator, &(yyval.exprs), &(yyvsp[0].expr)));
}
-#line 2505 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2413 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 57:
-#line 516 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 523 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.exprs) = (yyvsp[-1].exprs);
CHECK_ALLOC(wasm_append_expr_ptr_value(parser->allocator, &(yyval.exprs), &(yyvsp[0].expr)));
}
-#line 2514 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2422 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 58:
-#line 522 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 529 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ WASM_ZERO_MEMORY((yyval.exprs)); }
-#line 2520 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2428 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 60:
-#line 529 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 535 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- WASM_ZERO_MEMORY((yyval.type_bindings));
- CHECK_ALLOC(wasm_extend_types(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].types)));
- wasm_destroy_type_vector(parser->allocator, &(yyvsp[-1].types));
+ (yyval.func_fields) = new_func_field(parser->allocator);
+ CHECK_ALLOC_NULL((yyval.func_fields));
+ (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_EXPRS;
+ (yyval.func_fields)->exprs = (yyvsp[0].exprs);
+ (yyval.func_fields)->next = NULL;
}
-#line 2530 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2440 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 61:
-#line 534 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 542 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- WASM_ZERO_MEMORY((yyval.type_bindings));
- WasmBinding* binding =
- wasm_insert_binding(parser->allocator, &(yyval.type_bindings).bindings, &(yyvsp[-2].text));
- CHECK_ALLOC_NULL(binding);
- binding->loc = (yylsp[-3]);
- binding->index = (yyval.type_bindings).types.size;
- CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].type)));
+ (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 2544 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2451 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 62:
-#line 543 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 548 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- (yyval.type_bindings) = (yyvsp[-4].type_bindings);
- CHECK_ALLOC(wasm_extend_types(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].types)));
- wasm_destroy_type_vector(parser->allocator, &(yyvsp[-1].types));
+ (yyval.func_fields) = new_func_field(parser->allocator);
+ (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_BOUND_PARAM;
+ (yyval.func_fields)->bound_type.loc = (yylsp[-4]);
+ (yyval.func_fields)->bound_type.name = (yyvsp[-3].text);
+ (yyval.func_fields)->bound_type.type = (yyvsp[-2].type);
+ (yyval.func_fields)->next = (yyvsp[0].func_fields);
}
-#line 2554 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2464 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 63:
-#line 548 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+#line 556 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- (yyval.type_bindings) = (yyvsp[-5].type_bindings);
- WasmBinding* binding =
- wasm_insert_binding(parser->allocator, &(yyval.type_bindings).bindings, &(yyvsp[-2].text));
- CHECK_ALLOC_NULL(binding);
- binding->loc = (yylsp[-3]);
- binding->index = (yyval.type_bindings).types.size;
- CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].type)));
+ (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 2568 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2475 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
case 64:
-#line 559 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- { (yyval.type) = (yyvsp[-1].type); }
-#line 2574 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 65:
#line 562 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- WASM_ZERO_MEMORY((yyval.type_bindings));
- CHECK_ALLOC(wasm_extend_types(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].types)));
- wasm_destroy_type_vector(parser->allocator, &(yyvsp[-1].types));
+ (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 2584 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2486 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 66:
-#line 567 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- WASM_ZERO_MEMORY((yyval.type_bindings));
- WasmBinding* binding =
- wasm_insert_binding(parser->allocator, &(yyval.type_bindings).bindings, &(yyvsp[-2].text));
- CHECK_ALLOC_NULL(binding);
- binding->loc = (yylsp[-3]);
- binding->index = (yyval.type_bindings).types.size;
- CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].type)));
- }
-#line 2598 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 67:
-#line 576 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.type_bindings) = (yyvsp[-4].type_bindings);
- CHECK_ALLOC(wasm_extend_types(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].types)));
- wasm_destroy_type_vector(parser->allocator, &(yyvsp[-1].types));
- }
-#line 2608 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 68:
-#line 581 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 65:
+#line 568 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- (yyval.type_bindings) = (yyvsp[-5].type_bindings);
- WasmBinding* binding =
- wasm_insert_binding(parser->allocator, &(yyval.type_bindings).bindings, &(yyvsp[-2].text));
- CHECK_ALLOC_NULL(binding);
- binding->loc = (yylsp[-3]);
- binding->index = (yyval.type_bindings).types.size;
- CHECK_ALLOC(wasm_append_type_value(parser->allocator, &(yyval.type_bindings).types, &(yyvsp[-1].type)));
+ (yyval.func_fields) = new_func_field(parser->allocator);
+ (yyval.func_fields)->type = WASM_FUNC_FIELD_TYPE_BOUND_LOCAL;
+ (yyval.func_fields)->bound_type.loc = (yylsp[-4]);
+ (yyval.func_fields)->bound_type.name = (yyvsp[-3].text);
+ (yyval.func_fields)->bound_type.type = (yyvsp[-2].type);
+ (yyval.func_fields)->next = (yyvsp[0].func_fields);
}
-#line 2622 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2499 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 69:
-#line 592 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 66:
+#line 578 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ (yyval.var) = (yyvsp[-1].var); }
-#line 2628 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 70:
-#line 595 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- }
-#line 2637 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 71:
-#line 599 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[0].text);
- }
-#line 2647 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 72:
-#line 604 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE;
- (yyval.func)->name = (yyvsp[-1].text);
- (yyval.func)->type_var = (yyvsp[0].var);
- }
-#line 2658 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 73:
-#line 610 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->type_var = (yyvsp[-1].var);
- (yyval.func)->params = (yyvsp[0].type_bindings);
- }
-#line 2670 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 74:
-#line 617 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->result_type = (yyvsp[0].type);
- }
-#line 2683 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 75:
-#line 625 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-4].text);
- (yyval.func)->type_var = (yyvsp[-3].var);
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 2697 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 76:
-#line 634 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-5].text);
- (yyval.func)->type_var = (yyvsp[-4].var);
- (yyval.func)->params = (yyvsp[-3].type_bindings);
- (yyval.func)->result_type = (yyvsp[-2].type);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2712 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 77:
-#line 644 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-4].text);
- (yyval.func)->type_var = (yyvsp[-3].var);
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2726 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 78:
-#line 653 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 2739 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 79:
-#line 661 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-4].text);
- (yyval.func)->type_var = (yyvsp[-3].var);
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2753 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 80:
-#line 670 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2766 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 81:
-#line 678 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->type_var = (yyvsp[-1].var);
- (yyval.func)->result_type = (yyvsp[0].type);
- }
-#line 2778 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 82:
-#line 685 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 2791 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 83:
-#line 693 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-4].text);
- (yyval.func)->type_var = (yyvsp[-3].var);
- (yyval.func)->result_type = (yyvsp[-2].type);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2805 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 84:
-#line 702 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2818 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 85:
-#line 710 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE;
- (yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->type_var = (yyvsp[-1].var);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 2830 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 86:
-#line 717 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE;
- (yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2843 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2505 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 87:
-#line 725 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 67:
+#line 581 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE;
- (yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->type_var = (yyvsp[-1].var);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2855 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
+ CHECK_ALLOC_NULL((yyval.func));
+ WasmFuncField* field = (yyvsp[0].func_fields);
+ while (field) {
+ WasmFuncField* next = field->next;
- case 88:
-#line 732 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-1].text);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 2866 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
+ 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;
+ }
- case 89:
-#line 738 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2878 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
+ switch (field->type) {
+ case WASM_FUNC_FIELD_TYPE_EXPRS:
+ (yyval.func)->exprs = field->exprs;
+ break;
- case 90:
-#line 745 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-1].text);
- (yyval.func)->params = (yyvsp[0].type_bindings);
- }
-#line 2889 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
+ case WASM_FUNC_FIELD_TYPE_PARAM_TYPES:
+ case WASM_FUNC_FIELD_TYPE_LOCAL_TYPES: {
+ WasmTypeVector* types =
+ field->type == WASM_FUNC_FIELD_TYPE_PARAM_TYPES
+ ? &(yyval.func)->decl.sig.param_types
+ : &(yyval.func)->local_types;
+ CHECK_ALLOC(
+ wasm_extend_types(parser->allocator, types, &field->types));
+ wasm_destroy_type_vector(parser->allocator, &field->types);
+ break;
+ }
- case 91:
-#line 751 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->result_type = (yyvsp[0].type);
- }
-#line 2901 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
+ case WASM_FUNC_FIELD_TYPE_BOUND_PARAM:
+ case WASM_FUNC_FIELD_TYPE_BOUND_LOCAL: {
+ WasmTypeVector* types;
+ WasmBindingHash* bindings;
+ if (field->type == WASM_FUNC_FIELD_TYPE_BOUND_PARAM) {
+ types = &(yyval.func)->decl.sig.param_types;
+ bindings = &(yyval.func)->param_bindings;
+ } else {
+ types = &(yyval.func)->local_types;
+ bindings = &(yyval.func)->local_bindings;
+ }
- case 92:
-#line 758 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 2914 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
+ CHECK_ALLOC(wasm_append_type_value(parser->allocator, types,
+ &field->bound_type.type));
+ WasmBinding* binding = wasm_insert_binding(
+ parser->allocator, bindings, &field->bound_type.name);
+ CHECK_ALLOC_NULL(binding);
+ binding->loc = field->bound_type.loc;
+ binding->index = types->size - 1;
+ break;
+ }
- case 93:
-#line 766 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-4].text);
- (yyval.func)->params = (yyvsp[-3].type_bindings);
- (yyval.func)->result_type = (yyvsp[-2].type);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2928 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
+ case WASM_FUNC_FIELD_TYPE_RESULT_TYPE:
+ (yyval.func)->decl.sig.result_type = field->result_type;
+ break;
+ }
- case 94:
-#line 775 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->exprs = (yyvsp[0].exprs);
+ /* we steal memory from the func field, but not the linked list nodes */
+ wasm_free(parser->allocator, field);
+ field = next;
+ }
}
-#line 2941 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2572 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 95:
-#line 783 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 68:
+#line 645 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
+ (yyval.func) = (yyvsp[-1].func);
+ (yyval.func)->loc = (yylsp[-3]);
+ (yyval.func)->decl.flags |= WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE;
+ (yyval.func)->decl.type_var = (yyvsp[-2].var);
}
-#line 2953 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2583 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 96:
-#line 790 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 69:
+#line 651 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
+ (yyval.func) = (yyvsp[-1].func);
+ (yyval.func)->loc = (yylsp[-4]);
+ (yyval.func)->decl.flags |= WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE;
+ (yyval.func)->decl.type_var = (yyvsp[-2].var);
(yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
}
-#line 2966 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2595 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 97:
-#line 798 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 2978 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 98:
-#line 805 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-1].text);
- (yyval.func)->result_type = (yyvsp[0].type);
- }
-#line 2989 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 99:
-#line 811 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 70:
+#line 658 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
+ (yyval.func) = (yyvsp[-1].func);
+ (yyval.func)->loc = (yylsp[-2]);
+ (yyval.func)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE;
}
-#line 3001 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2605 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 100:
-#line 818 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-3].text);
- (yyval.func)->result_type = (yyvsp[-2].type);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3014 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 101:
-#line 826 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 71:
+#line 663 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
+ (yyval.func) = (yyvsp[-1].func);
+ (yyval.func)->loc = (yylsp[-3]);
+ (yyval.func)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE;
(yyval.func)->name = (yyvsp[-2].text);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3026 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 102:
-#line 833 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->name = (yyvsp[-1].text);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3037 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 103:
-#line 839 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE;
- (yyval.func)->type_var = (yyvsp[0].var);
- }
-#line 3047 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 104:
-#line 844 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-1].var);
- (yyval.func)->params = (yyvsp[0].type_bindings);
- }
-#line 3058 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 105:
-#line 850 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->result_type = (yyvsp[0].type);
- }
-#line 3070 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 106:
-#line 857 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-3].var);
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 3083 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 107:
-#line 865 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-4].var);
- (yyval.func)->params = (yyvsp[-3].type_bindings);
- (yyval.func)->result_type = (yyvsp[-2].type);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3097 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 108:
-#line 874 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-3].var);
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3110 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 109:
-#line 882 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 3122 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 110:
-#line 889 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-3].var);
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3135 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 111:
-#line 897 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3147 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 112:
-#line 904 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-1].var);
- (yyval.func)->result_type = (yyvsp[0].type);
- }
-#line 3158 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 113:
-#line 910 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 3170 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 114:
-#line 917 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-3].var);
- (yyval.func)->result_type = (yyvsp[-2].type);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3183 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 115:
-#line 925 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE | WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3195 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 116:
-#line 932 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE;
- (yyval.func)->type_var = (yyvsp[-1].var);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 3206 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 117:
-#line 938 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE;
- (yyval.func)->type_var = (yyvsp[-2].var);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3218 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 118:
-#line 945 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_FUNC_TYPE;
- (yyval.func)->type_var = (yyvsp[-1].var);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3229 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 119:
-#line 951 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->params = (yyvsp[0].type_bindings);
- }
-#line 3239 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 120:
-#line 956 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->result_type = (yyvsp[0].type);
}
-#line 3250 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2616 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 121:
-#line 962 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 3262 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 122:
-#line 969 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->params = (yyvsp[-3].type_bindings);
- (yyval.func)->result_type = (yyvsp[-2].type);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3275 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 123:
-#line 977 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3287 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 124:
-#line 984 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 3298 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 125:
-#line 990 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->params = (yyvsp[-2].type_bindings);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3310 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 126:
-#line 997 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->params = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3321 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 127:
-#line 1003 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->result_type = (yyvsp[0].type);
- }
-#line 3331 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 128:
-#line 1008 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 3342 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 129:
-#line 1014 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->result_type = (yyvsp[-2].type);
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3354 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 130:
-#line 1021 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->result_type = (yyvsp[-1].type);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3365 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 131:
-#line 1027 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->locals = (yyvsp[0].type_bindings);
- }
-#line 3375 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 132:
-#line 1032 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->locals = (yyvsp[-1].type_bindings);
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3386 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 133:
-#line 1038 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- {
- (yyval.func) = new_func(parser->allocator);
- (yyval.func)->flags = WASM_FUNC_FLAG_HAS_SIGNATURE;
- (yyval.func)->exprs = (yyvsp[0].exprs);
- }
-#line 3396 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 134:
-#line 1045 "src/wasm-bison-parser.y" /* yacc.c:1646 */
- { (yyval.func) = (yyvsp[-1].func); (yyval.func)->loc = (yylsp[-2]); }
-#line 3402 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
- break;
-
- case 135:
-#line 1051 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 72:
+#line 674 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ (yyval.var) = (yyvsp[-1].var); }
-#line 3408 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2622 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 136:
-#line 1055 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 73:
+#line 678 "src/wasm-bison-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),
@@ -3419,37 +2633,37 @@ yyreduce:
WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text));
}
}
-#line 3423 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2637 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 137:
-#line 1068 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 74:
+#line 691 "src/wasm-bison-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 3434 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2648 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 138:
-#line 1076 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 75:
+#line 699 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ WASM_ZERO_MEMORY((yyval.segments)); }
-#line 3440 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2654 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 139:
-#line 1077 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 76:
+#line 700 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.segments) = (yyvsp[-1].segments);
CHECK_ALLOC(wasm_append_segment_value(parser->allocator, &(yyval.segments), &(yyvsp[0].segment)));
}
-#line 3449 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2663 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 140:
-#line 1084 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 77:
+#line 707 "src/wasm-bison-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),
@@ -3459,11 +2673,11 @@ yyreduce:
WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text));
}
}
-#line 3463 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2677 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 141:
-#line 1096 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 78:
+#line 719 "src/wasm-bison-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),
@@ -3473,132 +2687,132 @@ yyreduce:
WASM_PRINTF_STRING_SLICE_ARG((yyvsp[0].literal).text));
}
}
-#line 3477 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2691 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 142:
-#line 1108 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 79:
+#line 731 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.memory).loc = (yylsp[-4]);
(yyval.memory).initial_pages = (yyvsp[-3].u32);
(yyval.memory).max_pages = (yyvsp[-2].u32);
(yyval.memory).segments = (yyvsp[-1].segments);
}
-#line 3488 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2702 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 143:
-#line 1114 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 80:
+#line 737 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.memory).loc = (yylsp[-3]);
(yyval.memory).initial_pages = (yyvsp[-2].u32);
(yyval.memory).max_pages = (yyval.memory).initial_pages;
(yyval.memory).segments = (yyvsp[-1].segments);
}
-#line 3499 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2713 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 144:
-#line 1123 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 81:
+#line 746 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
WASM_ZERO_MEMORY((yyval.func_type));
(yyval.func_type).sig = (yyvsp[-2].func_sig);
}
-#line 3508 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2722 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 145:
-#line 1127 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 82:
+#line 750 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.func_type).name = (yyvsp[-5].text);
(yyval.func_type).sig = (yyvsp[-2].func_sig);
}
-#line 3517 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2731 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 146:
-#line 1134 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 83:
+#line 757 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ (yyval.vars) = (yyvsp[-1].vars); }
-#line 3523 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2737 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 147:
-#line 1138 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 84:
+#line 761 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new_import(parser->allocator);
- (yyval.import)->import_type = WASM_IMPORT_HAS_TYPE;
(yyval.import)->module_name = (yyvsp[-3].text);
(yyval.import)->func_name = (yyvsp[-2].text);
- (yyval.import)->type_var = (yyvsp[-1].var);
+ (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE;
+ (yyval.import)->decl.type_var = (yyvsp[-1].var);
}
-#line 3535 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2749 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 148:
-#line 1145 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 85:
+#line 768 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new_import(parser->allocator);
- (yyval.import)->import_type = WASM_IMPORT_HAS_TYPE;
(yyval.import)->name = (yyvsp[-4].text);
(yyval.import)->module_name = (yyvsp[-3].text);
(yyval.import)->func_name = (yyvsp[-2].text);
- (yyval.import)->type_var = (yyvsp[-1].var);
+ (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_FUNC_TYPE;
+ (yyval.import)->decl.type_var = (yyvsp[-1].var);
}
-#line 3548 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2762 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 149:
-#line 1153 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 86:
+#line 776 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new_import(parser->allocator);
- (yyval.import)->import_type = WASM_IMPORT_HAS_FUNC_SIGNATURE;
(yyval.import)->module_name = (yyvsp[-3].text);
(yyval.import)->func_name = (yyvsp[-2].text);
- (yyval.import)->func_sig = (yyvsp[-1].func_sig);
+ (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE;
+ (yyval.import)->decl.sig = (yyvsp[-1].func_sig);
}
-#line 3560 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2774 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 150:
-#line 1160 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 87:
+#line 783 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.import) = new_import(parser->allocator);
- (yyval.import)->import_type = WASM_IMPORT_HAS_FUNC_SIGNATURE;
(yyval.import)->name = (yyvsp[-4].text);
(yyval.import)->module_name = (yyvsp[-3].text);
(yyval.import)->func_name = (yyvsp[-2].text);
- (yyval.import)->func_sig = (yyvsp[-1].func_sig);
+ (yyval.import)->decl.flags = WASM_FUNC_DECLARATION_FLAG_HAS_SIGNATURE;
+ (yyval.import)->decl.sig = (yyvsp[-1].func_sig);
}
-#line 3573 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2787 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 151:
-#line 1171 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 88:
+#line 794 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.export_).name = (yyvsp[-2].text);
(yyval.export_).var = (yyvsp[-1].var);
}
-#line 3582 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2796 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 152:
-#line 1178 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 89:
+#line 801 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.export_memory).name = (yyvsp[-2].text);
}
-#line 3590 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2804 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 153:
-#line 1184 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 90:
+#line 807 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = new_module(parser->allocator);
}
-#line 3598 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2812 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 154:
-#line 1187 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 91:
+#line 810 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module));
@@ -3608,11 +2822,11 @@ yyreduce:
field->func = *(yyvsp[0].func);
wasm_free(parser->allocator, (yyvsp[0].func));
}
-#line 3612 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2826 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 155:
-#line 1196 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 92:
+#line 819 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module));
@@ -3622,11 +2836,11 @@ yyreduce:
field->import = *(yyvsp[0].import);
wasm_free(parser->allocator, (yyvsp[0].import));
}
-#line 3626 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2840 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 156:
-#line 1205 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 93:
+#line 828 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module));
@@ -3635,11 +2849,11 @@ yyreduce:
field->type = WASM_MODULE_FIELD_TYPE_EXPORT;
field->export_ = (yyvsp[0].export_);
}
-#line 3639 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2853 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 157:
-#line 1213 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 94:
+#line 836 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module));
@@ -3648,11 +2862,11 @@ yyreduce:
field->type = WASM_MODULE_FIELD_TYPE_EXPORT_MEMORY;
field->export_memory = (yyvsp[0].export_memory);
}
-#line 3652 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2866 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 158:
-#line 1221 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 95:
+#line 844 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module));
@@ -3661,11 +2875,11 @@ yyreduce:
field->type = WASM_MODULE_FIELD_TYPE_TABLE;
field->table = (yyvsp[0].vars);
}
-#line 3665 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2879 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 159:
-#line 1229 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 96:
+#line 852 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module));
@@ -3674,11 +2888,11 @@ yyreduce:
field->type = WASM_MODULE_FIELD_TYPE_FUNC_TYPE;
field->func_type = (yyvsp[0].func_type);
}
-#line 3678 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2892 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 160:
-#line 1237 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 97:
+#line 860 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module));
@@ -3687,11 +2901,11 @@ yyreduce:
field->type = WASM_MODULE_FIELD_TYPE_MEMORY;
field->memory = (yyvsp[0].memory);
}
-#line 3691 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2905 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 161:
-#line 1245 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 98:
+#line 868 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
WasmModuleField* field = wasm_append_module_field(parser->allocator, (yyval.module));
@@ -3700,11 +2914,11 @@ yyreduce:
field->type = WASM_MODULE_FIELD_TYPE_START;
field->start = (yyvsp[0].var);
}
-#line 3704 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 2918 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 162:
-#line 1255 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 99:
+#line 878 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.module) = (yyvsp[-1].module);
(yyval.module)->loc = (yylsp[-2]);
@@ -3782,46 +2996,35 @@ yyreduce:
}
}
- /* if a function only defines a func type (and no explicit signature),
- * copy the signature over for convenience */
size_t i;
for (i = 0; i < (yyval.module)->funcs.size; ++i) {
WasmFunc* func = (yyval.module)->funcs.data[i];
- if (func->flags == WASM_FUNC_FLAG_HAS_FUNC_TYPE) {
- int index = wasm_get_func_type_index_by_var((yyval.module), &func->type_var);
- if (index >= 0 && (size_t)index < (yyval.module)->func_types.size) {
- WasmFuncType* func_type = (yyval.module)->func_types.data[index];
- func->result_type = func_type->sig.result_type;
- CHECK_ALLOC(wasm_extend_types(parser->allocator,
- &func->params.types,
- &func_type->sig.param_types));
- }
- }
+ CHECK_ALLOC(
+ copy_signature_from_func_type(parser->allocator, (yyval.module), &func->decl));
+ }
- /* now that func->params is set, we can easily create params_and_locals
- * as well */
- CHECK_ALLOC(wasm_extend_type_bindings(
- parser->allocator, &func->params_and_locals, &func->params));
- CHECK_ALLOC(wasm_extend_type_bindings(
- parser->allocator, &func->params_and_locals, &func->locals));
+ for (i = 0; i < (yyval.module)->imports.size; ++i) {
+ WasmImport* import = (yyval.module)->imports.data[i];
+ CHECK_ALLOC(copy_signature_from_func_type(parser->allocator, (yyval.module),
+ &import->decl));
}
}
-#line 3810 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3013 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 163:
-#line 1362 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 100:
+#line 974 "src/wasm-bison-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 3821 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3024 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 164:
-#line 1368 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 101:
+#line 980 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new_command(parser->allocator);
(yyval.command)->type = WASM_COMMAND_TYPE_INVOKE;
@@ -3829,11 +3032,11 @@ yyreduce:
(yyval.command)->invoke.name = (yyvsp[-2].text);
(yyval.command)->invoke.args = (yyvsp[-1].consts);
}
-#line 3833 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3036 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 165:
-#line 1375 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 102:
+#line 987 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new_command(parser->allocator);
(yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_INVALID;
@@ -3841,11 +3044,11 @@ yyreduce:
(yyval.command)->assert_invalid.text = (yyvsp[-1].text);
wasm_free(parser->allocator, (yyvsp[-2].module));
}
-#line 3845 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3048 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 166:
-#line 1382 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 103:
+#line 994 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new_command(parser->allocator);
(yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_RETURN;
@@ -3854,11 +3057,11 @@ yyreduce:
(yyval.command)->assert_return.invoke.args = (yyvsp[-3].consts);
(yyval.command)->assert_return.expected = (yyvsp[-1].const_);
}
-#line 3858 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3061 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 167:
-#line 1390 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 104:
+#line 1002 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new_command(parser->allocator);
(yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_RETURN_NAN;
@@ -3866,11 +3069,11 @@ yyreduce:
(yyval.command)->assert_return_nan.invoke.name = (yyvsp[-3].text);
(yyval.command)->assert_return_nan.invoke.args = (yyvsp[-2].consts);
}
-#line 3870 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3073 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 168:
-#line 1397 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 105:
+#line 1009 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.command) = new_command(parser->allocator);
(yyval.command)->type = WASM_COMMAND_TYPE_ASSERT_TRAP;
@@ -3879,27 +3082,27 @@ yyreduce:
(yyval.command)->assert_trap.invoke.args = (yyvsp[-3].consts);
(yyval.command)->assert_trap.text = (yyvsp[-1].text);
}
-#line 3883 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3086 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 169:
-#line 1407 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 106:
+#line 1019 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ WASM_ZERO_MEMORY((yyval.commands)); }
-#line 3889 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3092 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 170:
-#line 1408 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 107:
+#line 1020 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.commands) = (yyvsp[-1].commands);
CHECK_ALLOC(wasm_append_command_value(parser->allocator, &(yyval.commands), (yyvsp[0].command)));
wasm_free(parser->allocator, (yyvsp[0].command));
}
-#line 3899 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3102 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 171:
-#line 1416 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 108:
+#line 1028 "src/wasm-bison-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,
@@ -3910,41 +3113,41 @@ yyreduce:
}
wasm_free(parser->allocator, (char*)(yyvsp[-1].literal).text.start);
}
-#line 3914 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3117 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 172:
-#line 1428 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 109:
+#line 1040 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ (yyval.const_).type = WASM_TYPE_VOID; }
-#line 3920 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3123 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 174:
-#line 1432 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 111:
+#line 1044 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{ WASM_ZERO_MEMORY((yyval.consts)); }
-#line 3926 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3129 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 175:
-#line 1433 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 112:
+#line 1045 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.consts) = (yyvsp[-1].consts);
CHECK_ALLOC(wasm_append_const_value(parser->allocator, &(yyval.consts), &(yyvsp[0].const_)));
}
-#line 3935 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3138 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
- case 176:
-#line 1440 "src/wasm-bison-parser.y" /* yacc.c:1646 */
+ case 113:
+#line 1052 "src/wasm-bison-parser.y" /* yacc.c:1646 */
{
(yyval.script).commands = (yyvsp[0].commands);
parser->script = (yyval.script);
}
-#line 3944 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3147 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
break;
-#line 3948 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
+#line 3151 "src/prebuilt/wasm-bison-parser.c" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -4179,7 +3382,7 @@ yyreturn:
#endif
return yyresult;
}
-#line 1452 "src/wasm-bison-parser.y" /* yacc.c:1906 */
+#line 1064 "src/wasm-bison-parser.y" /* yacc.c:1906 */
void wasm_parser_error(WasmLocation* loc,
@@ -4322,3 +3525,24 @@ WasmExpr* new_block_expr_with_list(WasmAllocator* allocator,
block->block.exprs = *exprs;
return block;
}
+
+WasmResult copy_signature_from_func_type(WasmAllocator* allocator,
+ WasmModule* module,
+ WasmFuncDeclaration* decl) {
+ /* if a function or import only defines a func type (and no explicit
+ * signature), copy the signature over for convenience */
+ if (wasm_decl_has_func_type(decl) && !wasm_decl_has_signature(decl)) {
+ int index = wasm_get_func_type_index_by_var(module, &decl->type_var);
+ if (index >= 0 && (size_t)index < module->func_types.size) {
+ WasmFuncType* func_type = module->func_types.data[index];
+ decl->sig.result_type = func_type->sig.result_type;
+ return wasm_extend_types(allocator, &decl->sig.param_types,
+ &func_type->sig.param_types);
+ } else {
+ /* technically not OK, but we'll catch this error later in the AST
+ * checker */
+ return WASM_OK;
+ }
+ }
+ return WASM_OK;
+}