[svn:parrot] r42031 - in trunk: . compilers/imcc t/op
whiteknight at svn.parrot.org
whiteknight at svn.parrot.org
Fri Oct 23 01:03:25 UTC 2009
Author: whiteknight
Date: Fri Oct 23 01:03:24 2009
New Revision: 42031
URL: https://trac.parrot.org/parrot/changeset/42031
Log:
[pcc] Add some tests for :call_sig that show how the proof-of-concept works. Also, wrote these tests in PIR so moved the old tests in Perl5 to cc_params_old.t
Added:
trunk/t/op/cc_params_old.t
Modified:
trunk/MANIFEST
trunk/compilers/imcc/imcc.y
trunk/compilers/imcc/imcparser.c
trunk/t/op/cc_params.t
Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST Fri Oct 23 01:00:40 2009 (r42030)
+++ trunk/MANIFEST Fri Oct 23 01:03:24 2009 (r42031)
@@ -1741,6 +1741,7 @@
t/op/box.t [test]
t/op/calling.t [test]
t/op/cc_params.t [test]
+t/op/cc_params_old.t [test]
t/op/cc_state.t [test]
t/op/cmp-nonbranch.t [test]
t/op/comp.t [test]
Modified: trunk/compilers/imcc/imcc.y
==============================================================================
--- trunk/compilers/imcc/imcc.y Fri Oct 23 01:00:40 2009 (r42030)
+++ trunk/compilers/imcc/imcc.y Fri Oct 23 01:03:24 2009 (r42031)
@@ -2229,8 +2229,9 @@
;
argtype:
- ADV_FLAT { $$ = VT_FLAT; }
- | ADV_NAMED { $$ = VT_NAMED; }
+ ADV_FLAT { $$ = VT_FLAT; }
+ | ADV_NAMED { $$ = VT_NAMED; }
+ | ADV_CALL_SIG { $$ = VT_CALL_SIG; }
/* don't free $3 here; adv_named_set uses the pointer directly */
| ADV_NAMED '(' USTRINGC ')' { adv_named_set_u(interp, $3); $$ = 0; }
Modified: trunk/compilers/imcc/imcparser.c
==============================================================================
--- trunk/compilers/imcc/imcparser.c Fri Oct 23 01:00:40 2009 (r42030)
+++ trunk/compilers/imcc/imcparser.c Fri Oct 23 01:03:24 2009 (r42031)
@@ -1638,16 +1638,16 @@
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 31
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 651
+#define YYLAST 659
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 139
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 126
/* YYNRULES -- Number of rules. */
-#define YYNRULES 338
+#define YYNRULES 339
/* YYNRULES -- Number of states. */
-#define YYNSTATES 544
+#define YYNSTATES 545
/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
#define YYUNDEFTOK 2
@@ -1732,12 +1732,12 @@
710, 712, 714, 716, 718, 720, 722, 724, 729, 731,
733, 735, 737, 741, 745, 749, 753, 754, 760, 761,
765, 767, 773, 777, 781, 784, 785, 788, 790, 792,
- 797, 802, 805, 809, 815, 817, 821, 822, 824, 826,
- 833, 839, 844, 849, 856, 862, 864, 866, 868, 870,
- 872, 874, 876, 878, 880, 882, 883, 885, 889, 891,
- 893, 898, 902, 904, 906, 908, 910, 912, 914, 916,
- 918, 920, 922, 924, 925, 928, 929, 932, 934, 938,
- 940, 942, 944, 946, 948, 950, 952, 954, 956
+ 794, 799, 804, 807, 811, 817, 819, 823, 824, 826,
+ 828, 835, 841, 846, 851, 858, 864, 866, 868, 870,
+ 872, 874, 876, 878, 880, 882, 884, 885, 887, 891,
+ 893, 895, 900, 904, 906, 908, 910, 912, 914, 916,
+ 918, 920, 922, 924, 926, 927, 930, 931, 934, 936,
+ 940, 942, 944, 946, 948, 950, 952, 954, 956, 958
};
/* YYRHS -- A `-1'-separated list of the rules' RHS. */
@@ -1822,23 +1822,23 @@
-1, 237, 72, 238, -1, 238, -1, 237, 72, 113,
21, 256, -1, 256, 21, 256, -1, 113, 21, 256,
-1, 256, 239, -1, -1, 239, 240, -1, 16, -1,
- 20, -1, 20, 126, 116, 127, -1, 20, 126, 113,
- 127, -1, 248, 195, -1, 242, 72, 241, -1, 242,
- 72, 113, 21, 248, -1, 241, -1, 113, 21, 248,
- -1, -1, 245, -1, 244, -1, 12, 256, 247, 256,
- 9, 254, -1, 12, 13, 256, 9, 254, -1, 12,
- 256, 246, 254, -1, 11, 256, 246, 254, -1, 11,
- 256, 247, 256, 9, 254, -1, 11, 13, 256, 9,
- 254, -1, 72, -1, 9, -1, 57, -1, 58, -1,
- 59, -1, 60, -1, 61, -1, 62, -1, 118, -1,
- 263, -1, -1, 250, -1, 250, 72, 251, -1, 251,
- -1, 255, -1, 248, 124, 257, 125, -1, 124, 259,
- 125, -1, 253, -1, 113, -1, 116, -1, 109, -1,
- 117, -1, 109, -1, 117, -1, 254, -1, 256, -1,
- 248, -1, 264, -1, -1, 258, 261, -1, -1, 260,
- 261, -1, 262, -1, 261, 138, 262, -1, 256, -1,
- 105, -1, 106, -1, 107, -1, 108, -1, 110, -1,
- 114, -1, 115, -1, 113, -1, 116, -1
+ 20, -1, 24, -1, 20, 126, 116, 127, -1, 20,
+ 126, 113, 127, -1, 248, 195, -1, 242, 72, 241,
+ -1, 242, 72, 113, 21, 248, -1, 241, -1, 113,
+ 21, 248, -1, -1, 245, -1, 244, -1, 12, 256,
+ 247, 256, 9, 254, -1, 12, 13, 256, 9, 254,
+ -1, 12, 256, 246, 254, -1, 11, 256, 246, 254,
+ -1, 11, 256, 247, 256, 9, 254, -1, 11, 13,
+ 256, 9, 254, -1, 72, -1, 9, -1, 57, -1,
+ 58, -1, 59, -1, 60, -1, 61, -1, 62, -1,
+ 118, -1, 263, -1, -1, 250, -1, 250, 72, 251,
+ -1, 251, -1, 255, -1, 248, 124, 257, 125, -1,
+ 124, 259, 125, -1, 253, -1, 113, -1, 116, -1,
+ 109, -1, 117, -1, 109, -1, 117, -1, 254, -1,
+ 256, -1, 248, -1, 264, -1, -1, 258, 261, -1,
+ -1, 260, 261, -1, 262, -1, 261, 138, 262, -1,
+ 256, -1, 105, -1, 106, -1, 107, -1, 108, -1,
+ 110, -1, 114, -1, 115, -1, 113, -1, 116, -1
};
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
@@ -1871,13 +1871,13 @@
2081, 2087, 2086, 2098, 2103, 2104, 2105, 2106, 2107, 2108,
2109, 2110, 2111, 2112, 2113, 2114, 2115, 2120, 2131, 2132,
2133, 2134, 2140, 2154, 2160, 2166, 2172, 2171, 2180, 2181,
- 2191, 2201, 2208, 2213, 2223, 2227, 2228, 2232, 2233, 2236,
- 2237, 2241, 2245, 2255, 2261, 2271, 2276, 2280, 2281, 2285,
- 2289, 2293, 2300, 2304, 2308, 2315, 2316, 2320, 2321, 2322,
- 2323, 2324, 2325, 2329, 2330, 2334, 2335, 2339, 2340, 2344,
- 2345, 2352, 2359, 2360, 2361, 2365, 2366, 2370, 2371, 2375,
- 2376, 2380, 2381, 2385, 2385, 2397, 2397, 2409, 2410, 2418,
- 2425, 2426, 2427, 2428, 2429, 2433, 2434, 2435, 2436
+ 2191, 2201, 2208, 2213, 2223, 2227, 2228, 2232, 2233, 2234,
+ 2237, 2238, 2242, 2246, 2256, 2262, 2272, 2277, 2281, 2282,
+ 2286, 2290, 2294, 2301, 2305, 2309, 2316, 2317, 2321, 2322,
+ 2323, 2324, 2325, 2326, 2330, 2331, 2335, 2336, 2340, 2341,
+ 2345, 2346, 2353, 2360, 2361, 2362, 2366, 2367, 2371, 2372,
+ 2376, 2377, 2381, 2382, 2386, 2386, 2398, 2398, 2410, 2411,
+ 2419, 2426, 2427, 2428, 2429, 2430, 2434, 2435, 2436, 2437
};
#endif
@@ -1987,12 +1987,12 @@
232, 232, 232, 232, 232, 232, 232, 233, 234, 234,
234, 234, 234, 234, 234, 234, 236, 235, 237, 237,
237, 237, 237, 237, 238, 239, 239, 240, 240, 240,
- 240, 241, 242, 242, 242, 242, 242, 243, 243, 244,
- 244, 244, 245, 245, 245, 246, 246, 247, 247, 247,
- 247, 247, 247, 248, 248, 249, 249, 250, 250, 251,
- 251, 251, 252, 252, 252, 253, 253, 254, 254, 255,
- 255, 256, 256, 258, 257, 260, 259, 261, 261, 262,
- 263, 263, 263, 263, 263, 264, 264, 264, 264
+ 240, 240, 241, 242, 242, 242, 242, 242, 243, 243,
+ 244, 244, 244, 245, 245, 245, 246, 246, 247, 247,
+ 247, 247, 247, 247, 248, 248, 249, 249, 250, 250,
+ 251, 251, 251, 252, 252, 252, 253, 253, 254, 254,
+ 255, 255, 256, 256, 258, 257, 260, 259, 261, 261,
+ 262, 263, 263, 263, 263, 263, 264, 264, 264, 264
};
/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -2025,13 +2025,13 @@
1, 0, 5, 3, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 4, 1, 1,
1, 1, 3, 3, 3, 3, 0, 5, 0, 3,
- 1, 5, 3, 3, 2, 0, 2, 1, 1, 4,
- 4, 2, 3, 5, 1, 3, 0, 1, 1, 6,
- 5, 4, 4, 6, 5, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 0, 1, 3, 1, 1,
- 4, 3, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 0, 2, 0, 2, 1, 3, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1
+ 1, 5, 3, 3, 2, 0, 2, 1, 1, 1,
+ 4, 4, 2, 3, 5, 1, 3, 0, 1, 1,
+ 6, 5, 4, 4, 6, 5, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 0, 1, 3, 1,
+ 1, 4, 3, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 0, 2, 0, 2, 1, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -2041,59 +2041,59 @@
{
0, 12, 0, 0, 0, 0, 51, 19, 0, 44,
0, 0, 2, 3, 10, 11, 0, 6, 8, 5,
- 7, 18, 0, 0, 323, 0, 0, 0, 0, 165,
+ 7, 18, 0, 0, 324, 0, 0, 0, 0, 165,
9, 1, 4, 13, 0, 16, 50, 0, 0, 48,
- 315, 313, 314, 316, 52, 312, 197, 198, 199, 200,
+ 316, 314, 315, 317, 52, 313, 197, 198, 199, 200,
0, 14, 21, 169, 0, 32, 31, 35, 34, 165,
- 27, 0, 33, 36, 166, 168, 0, 49, 330, 331,
- 332, 333, 334, 337, 335, 336, 338, 303, 321, 329,
- 324, 327, 304, 322, 91, 0, 0, 0, 30, 28,
+ 27, 0, 33, 36, 166, 168, 0, 49, 331, 332,
+ 333, 334, 335, 338, 336, 337, 339, 304, 322, 330,
+ 325, 328, 305, 323, 91, 0, 0, 0, 30, 28,
45, 0, 0, 38, 0, 0, 167, 15, 0, 97,
95, 96, 98, 99, 66, 100, 0, 101, 0, 64,
0, 71, 68, 102, 103, 104, 105, 106, 107, 108,
0, 92, 93, 0, 0, 0, 40, 0, 91, 29,
- 305, 328, 0, 0, 73, 0, 0, 0, 0, 53,
- 94, 20, 317, 318, 319, 0, 320, 0, 0, 0,
- 325, 37, 321, 43, 306, 308, 309, 25, 26, 0,
- 0, 0, 76, 77, 79, 78, 80, 81, 323, 0,
+ 306, 329, 0, 0, 73, 0, 0, 0, 0, 53,
+ 94, 20, 318, 319, 320, 0, 321, 0, 0, 0,
+ 326, 37, 322, 43, 307, 309, 310, 25, 26, 0,
+ 0, 0, 76, 77, 79, 78, 80, 81, 324, 0,
75, 0, 0, 0, 0, 55, 0, 0, 41, 39,
- 0, 0, 323, 0, 67, 63, 62, 0, 0, 61,
- 65, 70, 72, 69, 56, 158, 22, 24, 311, 326,
- 0, 307, 82, 74, 58, 0, 0, 162, 161, 163,
- 164, 0, 0, 158, 0, 156, 310, 0, 0, 160,
+ 0, 0, 324, 0, 67, 63, 62, 0, 0, 61,
+ 65, 70, 72, 69, 56, 158, 22, 24, 312, 327,
+ 0, 308, 82, 74, 58, 0, 0, 162, 161, 163,
+ 164, 0, 0, 158, 0, 156, 311, 0, 0, 160,
57, 54, 157, 0, 196, 159, 59, 0, 0, 171,
0, 0, 0, 0, 179, 0, 183, 186, 149, 0,
- 150, 241, 0, 0, 0, 258, 259, 260, 305, 209,
+ 150, 241, 0, 0, 0, 258, 259, 260, 306, 209,
185, 193, 194, 195, 136, 0, 0, 177, 211, 212,
- 213, 266, 192, 178, 288, 287, 261, 124, 17, 189,
+ 213, 266, 192, 178, 289, 288, 261, 124, 17, 189,
0, 0, 0, 0, 191, 0, 0, 0, 0, 0,
- 188, 261, 0, 85, 134, 137, 190, 286, 147, 170,
+ 188, 261, 0, 85, 134, 137, 190, 287, 147, 170,
0, 244, 245, 246, 247, 250, 251, 252, 253, 249,
- 248, 254, 255, 256, 0, 0, 323, 0, 60, 0,
- 296, 297, 298, 299, 300, 301, 302, 295, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 286, 116,
- 139, 142, 0, 284, 0, 124, 151, 268, 264, 263,
- 265, 262, 214, 337, 338, 305, 0, 215, 216, 217,
- 0, 208, 321, 202, 0, 243, 126, 127, 128, 129,
- 133, 132, 125, 0, 292, 0, 0, 291, 0, 175,
+ 248, 254, 255, 256, 0, 0, 324, 0, 60, 0,
+ 297, 298, 299, 300, 301, 302, 303, 296, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 287, 116,
+ 139, 142, 0, 285, 0, 124, 151, 268, 264, 263,
+ 265, 262, 214, 338, 339, 306, 0, 215, 216, 217,
+ 0, 208, 322, 202, 0, 243, 126, 127, 128, 129,
+ 133, 132, 125, 0, 293, 0, 0, 292, 0, 175,
180, 172, 181, 182, 0, 0, 0, 89, 0, 0,
- 0, 0, 0, 281, 337, 0, 152, 275, 337, 0,
+ 0, 0, 0, 282, 338, 0, 152, 275, 338, 0,
270, 275, 257, 201, 0, 203, 223, 232, 233, 237,
226, 227, 228, 229, 230, 231, 224, 234, 235, 236,
- 225, 323, 240, 218, 219, 220, 221, 222, 238, 239,
- 0, 0, 0, 294, 0, 290, 0, 176, 174, 0,
+ 225, 324, 240, 218, 219, 220, 221, 222, 238, 239,
+ 0, 0, 0, 295, 0, 291, 0, 176, 174, 0,
0, 0, 242, 0, 0, 0, 0, 140, 0, 135,
- 0, 143, 0, 138, 0, 285, 0, 282, 0, 0,
- 0, 148, 274, 0, 0, 267, 0, 323, 0, 204,
- 0, 0, 0, 293, 289, 173, 184, 187, 118, 0,
+ 0, 143, 0, 138, 0, 286, 0, 283, 0, 0,
+ 0, 148, 274, 0, 0, 267, 0, 324, 0, 204,
+ 0, 0, 0, 294, 290, 173, 184, 187, 118, 0,
0, 0, 0, 87, 117, 275, 141, 275, 144, 0,
- 0, 153, 337, 154, 277, 278, 276, 273, 337, 269,
- 272, 0, 205, 206, 130, 131, 90, 0, 0, 0,
- 0, 119, 0, 145, 146, 283, 268, 0, 0, 0,
- 207, 110, 0, 111, 113, 0, 112, 0, 0, 88,
- 0, 155, 0, 0, 271, 0, 0, 0, 122, 0,
- 86, 0, 210, 280, 279, 109, 115, 114, 0, 124,
- 120, 0, 121, 123
+ 0, 153, 338, 154, 277, 278, 279, 276, 273, 338,
+ 269, 272, 0, 205, 206, 130, 131, 90, 0, 0,
+ 0, 0, 119, 0, 145, 146, 284, 268, 0, 0,
+ 0, 207, 110, 0, 111, 113, 0, 112, 0, 0,
+ 88, 0, 155, 0, 0, 271, 0, 0, 0, 122,
+ 0, 86, 0, 210, 281, 280, 109, 115, 114, 0,
+ 124, 120, 0, 121, 123
};
/* YYDEFGOTO[NTERM-NUM]. */
@@ -2103,95 +2103,95 @@
58, 86, 87, 159, 59, 60, 94, 95, 128, 151,
18, 29, 61, 19, 25, 20, 26, 84, 175, 195,
211, 217, 226, 113, 114, 115, 116, 117, 118, 119,
- 169, 170, 212, 251, 329, 501, 435, 120, 121, 122,
- 473, 377, 436, 518, 531, 538, 308, 362, 252, 330,
+ 169, 170, 212, 251, 329, 502, 435, 120, 121, 122,
+ 473, 377, 436, 519, 532, 539, 308, 362, 252, 330,
253, 331, 378, 379, 440, 444, 254, 336, 255, 385,
213, 214, 215, 63, 64, 65, 225, 370, 371, 428,
256, 275, 278, 279, 50, 394, 257, 287, 350, 420,
258, 282, 259, 307, 260, 261, 262, 290, 389, 390,
- 452, 486, 333, 334, 263, 264, 265, 318, 319, 78,
+ 452, 487, 333, 334, 263, 264, 265, 318, 319, 78,
153, 154, 155, 44, 45, 144, 156, 146, 37, 38,
180, 181, 80, 81, 82, 83
};
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
-#define YYPACT_NINF -397
+#define YYPACT_NINF -424
static const yytype_int16 yypact[] =
{
- 219, -397, -79, -65, -54, -16, -397, -397, -25, -397,
- 62, 148, 219, -397, -397, -397, 90, -397, -397, -397,
- -397, -397, 91, 171, 59, 182, 159, 149, 184, 70,
- -397, -397, -397, -397, 79, -397, -397, 73, 431, -397,
- -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
- 97, -397, 86, -397, 204, -397, -397, -397, -397, 160,
- -397, 125, -397, 152, 108, -397, 229, -397, -397, -397,
- -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
- 98, -397, -397, -397, 421, 112, 124, 127, -397, -397,
- -397, 431, 132, -397, 244, 134, -397, -397, 431, -397,
- -397, -397, -397, -397, 123, -397, 128, -397, 129, 130,
- 137, 144, 147, -397, -397, -397, -397, -397, -397, -397,
- 254, 421, -397, 188, 417, 417, -397, 202, 421, -397,
- 336, -397, 33, -29, 279, 164, 165, 33, 33, -397,
- -397, -397, -397, -397, -397, 168, -397, 169, 172, 181,
- -397, -397, 183, -397, 234, -397, -397, -397, -397, 186,
- 190, 191, -397, -397, -397, -397, -397, -397, -397, -64,
- -397, 192, 194, 196, 198, 304, 33, 33, -397, -397,
- 185, 431, -397, 336, -397, -397, -397, 201, 279, -397,
- -397, -397, -397, -397, -397, 49, -397, -397, -397, 98,
- 203, -397, -397, -397, -397, 214, 325, -397, -397, -397,
- -397, 337, 269, 60, 8, -397, -397, 149, 273, -397,
- -397, -397, -397, 345, 230, -397, -397, 241, 188, -397,
- -47, 106, 253, 431, -397, 48, -36, -397, -397, 501,
- -397, -397, 358, 360, 366, -397, -397, -397, 336, -397,
- -397, -397, -397, -397, -397, 246, 385, -397, -397, -397,
- -397, -397, -397, -397, -397, -397, 338, -397, -397, -397,
- 431, 228, 431, 228, -397, 149, 301, 318, 149, 149,
- -397, 270, 267, -397, -397, -397, -397, 515, -397, -397,
- 268, -397, -397, -397, -397, -397, -397, -397, -397, -397,
- -397, -397, -397, -397, 379, 22, -397, 431, 5, 388,
- -397, -397, -397, -397, -397, -397, -397, -397, -47, 431,
- 389, -47, 431, 290, 247, 247, 293, 296, 515, -397,
- -397, -397, 386, -397, -58, -397, 445, 459, -397, -397,
- -397, -397, -397, 280, 282, 336, 300, -397, -397, -397,
- 431, -397, 52, 369, 289, -397, -397, -397, -397, 291,
- -397, -397, -397, -47, -397, 412, -47, -397, 414, 323,
- 362, -397, -397, -397, 312, 313, -41, 0, 2, 11,
- 247, 524, 324, 5, 427, -30, -397, -397, 434, -24,
- -397, 435, -397, -397, 333, -397, -397, -397, -397, -397,
- -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
- -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
- 431, 335, 102, -397, -47, -397, -47, -397, -397, 290,
- 188, 188, -397, 431, 431, -37, 460, -397, 431, -397,
- 461, -397, 431, -397, 462, -397, 442, -397, 501, 431,
- 473, -397, 167, 431, 487, -397, 431, -397, 342, -397,
- 431, 343, 346, -397, -397, -397, -397, -397, -397, 468,
- 431, 431, 533, 108, -397, -397, -397, -397, -397, 247,
- 349, -397, 455, -397, -397, 352, -397, -397, 469, -397,
- -397, 355, -397, -397, -397, -397, -397, 26, 477, 28,
- 32, -397, 478, 167, 167, -397, 459, 431, 115, 431,
- -397, -397, 431, -397, -397, 431, -397, 431, 94, -397,
- -22, -397, 356, 367, -397, 494, 514, 525, -397, 247,
- -397, 536, -397, -397, -397, -397, -397, -397, 149, -397,
- -397, 290, 5, -397
+ 219, -424, -86, -55, -62, -58, -424, -424, -8, -424,
+ 82, 163, 219, -424, -424, -424, 169, -424, -424, -424,
+ -424, -424, 93, 171, 58, 184, 95, 166, 188, 70,
+ -424, -424, -424, -424, 90, -424, -424, 81, 439, -424,
+ -424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
+ 100, -424, 109, -424, 220, -424, -424, -424, -424, 160,
+ -424, 129, -424, 67, 133, -424, 232, -424, -424, -424,
+ -424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
+ 99, -424, -424, -424, 421, 117, 131, 135, -424, -424,
+ -424, 439, 136, -424, 250, 134, -424, -424, 439, -424,
+ -424, -424, -424, -424, 130, -424, 132, -424, 137, 142,
+ 146, 147, 149, -424, -424, -424, -424, -424, -424, -424,
+ 251, 421, -424, 115, 425, 425, -424, 204, 421, -424,
+ 350, -424, 48, -19, 161, 164, 165, 48, 48, -424,
+ -424, -424, -424, -424, -424, 159, -424, 177, 182, 200,
+ -424, -424, 179, -424, 234, -424, -424, -424, -424, 180,
+ 181, 183, -424, -424, -424, -424, -424, -424, -424, -64,
+ -424, 186, 190, 191, 192, 300, 48, 48, -424, -424,
+ 196, 439, -424, 350, -424, -424, -424, 198, 161, -424,
+ -424, -424, -424, -424, -424, 49, -424, -424, -424, 99,
+ 199, -424, -424, -424, -424, 213, 323, -424, -424, -424,
+ -424, 324, 256, 60, 8, -424, -424, 166, 259, -424,
+ -424, -424, -424, 328, 230, -424, -424, 224, 115, -424,
+ -67, 253, 270, 439, -424, 71, 42, -424, -424, 509,
+ -424, -424, 330, 337, 338, -424, -424, -424, 350, -424,
+ -424, -424, -424, -424, -424, 223, 341, -424, -424, -424,
+ -424, -424, -424, -424, -424, -424, 405, -424, -424, -424,
+ 439, 229, 439, 229, -424, 166, 278, 290, 166, 166,
+ -424, 243, 244, -424, -424, -424, -424, 523, -424, -424,
+ 246, -424, -424, -424, -424, -424, -424, -424, -424, -424,
+ -424, -424, -424, -424, 379, 22, -424, 439, 5, 364,
+ -424, -424, -424, -424, -424, -424, -424, -424, -67, 439,
+ 365, -67, 439, 272, 247, 247, 280, 281, 523, -424,
+ -424, -424, 358, -424, -39, -424, 453, 467, -424, -424,
+ -424, -424, -424, 261, 265, 350, 283, -424, -424, -424,
+ 439, -424, 28, 369, 268, -424, -424, -424, -424, 271,
+ -424, -424, -424, -67, -424, 385, -67, -424, 389, 298,
+ 329, -424, -424, -424, 282, 284, -36, 0, 27, 11,
+ 247, 532, 285, 5, 382, -27, -424, -424, 388, -24,
+ -424, 393, -424, -424, 293, -424, -424, -424, -424, -424,
+ -424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
+ -424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
+ 439, 301, 85, -424, -67, -424, -67, -424, -424, 272,
+ 115, 115, -424, 439, 439, -37, 402, -424, 439, -424,
+ 417, -424, 439, -424, 419, -424, 413, -424, 509, 439,
+ 481, -424, 162, 439, 495, -424, 439, -424, 310, -424,
+ 439, 309, 322, -424, -424, -424, -424, -424, -424, 457,
+ 439, 439, 541, 133, -424, -424, -424, -424, -424, 247,
+ 336, -424, 450, -424, -424, 347, -424, -424, -424, 455,
+ -424, -424, 352, -424, -424, -424, -424, -424, 10, 475,
+ 12, 26, -424, 477, 162, 162, -424, 467, 439, 86,
+ 439, -424, -424, 439, -424, -424, 439, -424, 439, 94,
+ -424, -23, -424, 355, 356, -424, 486, 490, 494, -424,
+ 247, -424, 514, -424, -424, -424, -424, -424, -424, 166,
+ -424, -424, 272, 5, -424
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -397, -397, -397, 516, -1, -168, -397, -397, -397, -397,
- 319, -397, -397, -86, -397, 483, -397, -397, -397, 209,
- -397, -397, -397, 12, -397, -397, -397, -397, -397, -397,
- -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
- -397, 368, -397, -397, -397, -397, -397, 420, -397, 436,
- -397, -397, -397, -397, -397, -397, -330, -397, -397, -397,
- -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
- -397, -397, 357, 348, -397, -63, -397, -397, -396, -397,
- -397, -397, -397, -397, -214, -397, -397, -397, -397, -397,
- -397, -397, -397, -397, -397, 120, -226, -397, 65, -292,
- -368, -397, 195, 256, -397, -397, -397, 309, 317, -128,
- 350, -397, 402, -397, 292, -219, 30, -38, -164, -397,
- -397, -397, 418, 506, -397, -116
+ -424, -424, -424, 510, -1, -161, -424, -424, -424, -424,
+ 299, -424, -424, -68, -424, 465, -424, -424, -424, 203,
+ -424, -424, -424, 3, -424, -424, -424, -424, -424, -424,
+ -424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
+ -424, 339, -424, -424, -424, -424, -424, 397, -424, 415,
+ -424, -424, -424, -424, -424, -424, -330, -424, -424, -424,
+ -424, -424, -424, -424, -424, -424, -424, -424, -424, -424,
+ -424, -424, 343, 348, -424, -63, -424, -424, -423, -424,
+ -424, -424, -424, -424, -214, -424, -424, -424, -424, -424,
+ -424, -424, -424, -424, -424, 89, -226, -424, 43, -292,
+ -329, -424, 170, 236, -424, -424, -424, 292, 297, -128,
+ 331, -424, 395, -424, 286, -219, -47, -38, -164, -424,
+ -424, -424, 403, 478, -424, -116
};
/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -2201,142 +2201,142 @@
#define YYTABLE_NINF -262
static const yytype_int16 yytable[] =
{
- 79, 96, 152, 227, 187, 383, 437, 141, 188, 223,
- 433, 269, -165, 280, 381, 441, 438, -165, 200, -165,
- -165, -165, 356, 357, 358, 359, 442, 209, 57, 360,
- 511, 381, 514, 465, 21, 342, 516, -165, -165, -165,
- 470, 62, 450, -165, 386, 209, 471, 472, 454, 22,
- 454, 173, 174, 126, 204, 152, 3, 4, 57, 23,
- 79, 323, 142, 189, 326, 327, 30, 3, 4, 382,
- 143, 62, -165, -165, -165, -165, 2, -23, -21, 351,
- 160, 205, 439, -165, 161, 434, 432, -165, 28, -165,
- 196, 197, 205, 443, 33, 5, 266, 451, 512, 364,
- 515, 52, 367, 455, 517, 532, 361, 503, 24, 504,
- 53, 281, 268, -165, -165, -165, -165, -165, -165, 270,
- 152, -165, -83, 528, -165, -165, -165, 68, 69, 70,
+ 79, 96, 152, 227, 187, 383, 465, 141, 188, 223,
+ 433, 269, -165, 280, 512, 441, 515, -165, 200, -165,
+ -165, -165, 356, 357, 358, 359, 442, 21, 57, 360,
+ 517, 437, 62, 381, 209, 342, 381, -165, -165, -165,
+ 470, 438, 142, -165, 386, 450, 471, 472, 454, 454,
+ 143, 23, 209, 126, 204, 152, 3, 4, 57, 22,
+ 79, 323, 62, 189, 326, 327, 24, 3, 4, 173,
+ 174, -42, -165, -165, -165, -165, 2, 145, 147, 351,
+ 91, 205, 513, -165, 516, 434, 30, -165, 382, -165,
+ 160, 432, 205, 443, 161, 5, 266, 92, 518, 364,
+ 451, 52, 367, 455, 533, 28, 361, 439, 196, 197,
+ 53, 281, 268, -165, -165, -165, -165, -165, -165, 544,
+ 152, -165, -83, 529, -165, -165, -165, 68, 69, 70,
71, 245, 72, -84, -165, 343, 74, 75, 344, 345,
- 77, 468, 354, 79, 423, 543, 157, 425, 31, 158,
- 346, 347, 348, 349, 145, 147, -42, 529, 483, 335,
- 206, 276, 489, 34, 277, 91, 2, 8, 207, 208,
- 530, 206, 53, 304, -46, 35, 340, 352, -261, 207,
- 208, 54, 92, 484, 36, 5, 39, 485, 51, 55,
- 56, 52, 66, 271, 273, 274, 372, 373, 67, -23,
- 335, 46, 47, 48, 49, 463, 85, 464, 88, 542,
- 53, 68, 69, 70, 71, 461, 72, 152, 462, 73,
- 74, 75, 76, 1, 77, 2, 3, 4, 522, 90,
- 93, 523, 309, 97, 320, 123, 98, 310, 124, 230,
- 125, 231, 232, 233, 5, 127, 6, 458, 129, 132,
- 7, 130, 445, 335, 133, 134, 135, 8, 139, 234,
- 235, 236, 53, 136, -47, 237, 272, 353, 40, 355,
- 137, 54, 41, 138, 148, 42, 43, 171, 172, 55,
- 56, 365, 178, 179, 368, 311, 312, 313, 314, 315,
- 316, 176, 177, 491, 238, 239, 240, 241, 387, 391,
- 317, 73, 74, 75, 76, 242, 183, 182, 194, 243,
- 198, 244, 395, 184, 466, 467, 8, 185, 186, 190,
- 281, 191, 9, 192, 541, 193, 202, 218, 216, 219,
- 10, 162, 163, 164, 165, 68, 69, 70, 71, 245,
- 72, 220, 221, 246, 500, 228, 247, 248, 77, 229,
- 267, 505, 68, 69, 70, 71, 249, 72, 68, 69,
- 70, 71, 283, 72, 284, 77, 73, 74, 75, 76,
- 285, 77, 288, 324, 291, 292, 293, 294, 295, 296,
- 297, 298, 459, 299, 300, 301, 302, 303, 166, 289,
- 325, 304, 167, 328, 337, 387, 469, 363, 366, 369,
- 475, 539, 374, 168, 477, 375, -259, 380, -260, 393,
- 502, 481, 387, 396, 421, 487, 387, 422, 490, 397,
- 398, 424, 493, 426, 427, 399, 400, 401, 402, 403,
- 404, 405, 497, 498, 429, 430, 431, 406, 407, 408,
- 409, 68, 69, 70, 71, 142, 72, 448, 449, 73,
- 74, 75, 76, 143, 77, 453, 456, 457, 460, 304,
- 150, 305, 306, 479, 474, 476, 478, 492, 391, 521,
- 494, 524, 496, 495, 525, 506, 507, 526, 508, 527,
- 510, 513, 519, 533, 68, 69, 70, 71, 40, 72,
- 509, 410, 338, 411, 534, 339, 43, 77, 535, 412,
+ 77, 468, 354, 79, 423, 93, 504, 425, 505, 304,
+ 346, 347, 348, 349, -261, -23, -21, 530, 483, 335,
+ 206, 157, 490, 31, 158, 34, 2, 8, 207, 208,
+ 531, 206, 53, 33, -46, 35, 340, 352, 484, 207,
+ 208, 54, 485, 36, 276, 5, 486, 277, 39, 55,
+ 56, 52, 51, 271, 273, 274, 372, 373, 461, 523,
+ 335, 462, 524, 66, 40, 463, 67, 464, 41, 85,
+ 543, 42, 43, 162, 163, 164, 165, 152, 46, 47,
+ 48, 49, -23, 1, 88, 2, 3, 4, 73, 74,
+ 75, 76, 309, 90, 320, 53, 97, 98, 310, 230,
+ 123, 231, 232, 233, 5, 124, 6, 458, 125, 127,
+ 7, 130, 445, 335, 129, 139, 132, 8, 133, 234,
+ 235, 236, 53, 134, -47, 237, 270, 353, 135, 355,
+ 166, 54, 136, 137, 167, 138, 148, 171, 172, 55,
+ 56, 365, 176, 272, 368, 168, 311, 312, 313, 314,
+ 315, 316, 178, 492, 238, 239, 240, 241, 387, 391,
+ 177, 317, 179, 182, 194, 242, 183, 184, 185, 243,
+ 186, 244, 395, 190, 466, 467, 8, 191, 192, 193,
+ 281, 198, 9, 202, 216, 542, 218, 219, 220, 221,
+ 10, 228, 229, 267, 283, 68, 69, 70, 71, 245,
+ 72, 284, 285, 246, 501, 289, 247, 248, 77, 288,
+ 324, 506, 68, 69, 70, 71, 249, 72, 68, 69,
+ 70, 71, 325, 72, 304, 77, 73, 74, 75, 76,
+ 328, 77, 337, 363, 366, 68, 69, 70, 71, 380,
+ 72, 369, 459, 73, 74, 75, 76, -259, 77, 374,
+ 375, -260, 393, 421, 424, 387, 469, 422, 426, 427,
+ 475, 429, 540, 449, 477, 430, 474, 431, 448, 453,
+ 503, 481, 387, 396, 456, 488, 387, 457, 491, 397,
+ 398, 476, 494, 478, 460, 399, 400, 401, 402, 403,
+ 404, 405, 498, 499, 479, 493, 495, 406, 407, 408,
+ 409, 291, 292, 293, 294, 295, 296, 297, 298, 496,
+ 299, 300, 301, 302, 303, 68, 69, 70, 71, 142,
+ 72, 497, 507, 73, 74, 75, 76, 143, 77, 391,
+ 522, 508, 525, 509, 150, 526, 510, 511, 527, 514,
+ 528, 520, 534, 535, 68, 69, 70, 71, 40, 72,
+ 536, 410, 338, 411, 537, 339, 43, 77, 538, 412,
413, 414, 415, 416, 417, 418, 419, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 536, 110,
- 111, 112, 68, 69, 70, 71, 142, 72, 32, 537,
- 73, 74, 75, 76, 143, 77, 68, 69, 70, 71,
- 540, 72, 89, 250, 73, 74, 75, 76, 149, 77,
- 68, 69, 70, 71, 392, 72, 203, 140, 384, 74,
- 75, 76, 224, 77, 68, 69, 70, 71, 480, 72,
- 222, 520, 388, 74, 75, 76, 447, 77, 68, 69,
- 70, 71, 321, 72, 376, 201, 482, 74, 75, 76,
- 322, 77, 68, 69, 70, 71, 341, 72, 286, 199,
- 488, 74, 75, 76, 131, 77, 68, 69, 70, 71,
- 245, 72, 0, 0, 246, 0, 0, 247, 0, 77,
- 68, 69, 70, 71, 0, 72, 0, 0, 332, 68,
- 69, 70, 71, 77, 72, 0, 0, 446, 68, 69,
- 70, 71, 77, 72, 0, 0, 499, 0, 0, 0,
- 0, 77
+ 102, 103, 104, 105, 106, 107, 108, 109, 541, 110,
+ 111, 112, 32, 250, 89, 149, 304, 203, 305, 306,
+ 68, 69, 70, 71, 142, 72, 140, 480, 73, 74,
+ 75, 76, 143, 77, 68, 69, 70, 71, 392, 72,
+ 521, 447, 73, 74, 75, 76, 222, 77, 68, 69,
+ 70, 71, 224, 72, 376, 321, 384, 74, 75, 76,
+ 322, 77, 68, 69, 70, 71, 131, 72, 201, 286,
+ 388, 74, 75, 76, 199, 77, 68, 69, 70, 71,
+ 341, 72, 0, 0, 482, 74, 75, 76, 0, 77,
+ 68, 69, 70, 71, 0, 72, 0, 0, 489, 74,
+ 75, 76, 0, 77, 68, 69, 70, 71, 245, 72,
+ 0, 0, 246, 0, 0, 247, 0, 77, 68, 69,
+ 70, 71, 0, 72, 0, 0, 332, 68, 69, 70,
+ 71, 77, 72, 0, 0, 446, 68, 69, 70, 71,
+ 77, 72, 0, 0, 500, 0, 0, 0, 0, 77
};
static const yytype_int16 yycheck[] =
{
- 38, 64, 130, 217, 168, 335, 4, 123, 72, 1,
- 10, 230, 4, 239, 72, 4, 14, 9, 182, 11,
- 12, 13, 17, 18, 19, 20, 15, 195, 29, 24,
- 4, 72, 4, 429, 113, 13, 4, 29, 30, 31,
- 77, 29, 72, 35, 336, 213, 83, 84, 72, 114,
- 72, 137, 138, 91, 5, 183, 7, 8, 59, 113,
- 98, 275, 109, 127, 278, 279, 4, 7, 8, 127,
- 117, 59, 64, 65, 66, 67, 6, 113, 114, 305,
- 109, 32, 80, 75, 113, 85, 127, 79, 113, 81,
- 176, 177, 32, 82, 4, 25, 224, 127, 72, 318,
- 72, 31, 321, 127, 72, 127, 101, 475, 124, 477,
- 102, 239, 228, 105, 106, 107, 108, 109, 110, 13,
+ 38, 64, 130, 217, 168, 335, 429, 123, 72, 1,
+ 10, 230, 4, 239, 4, 4, 4, 9, 182, 11,
+ 12, 13, 17, 18, 19, 20, 15, 113, 29, 24,
+ 4, 4, 29, 72, 195, 13, 72, 29, 30, 31,
+ 77, 14, 109, 35, 336, 72, 83, 84, 72, 72,
+ 117, 113, 213, 91, 5, 183, 7, 8, 59, 114,
+ 98, 275, 59, 127, 278, 279, 124, 7, 8, 137,
+ 138, 4, 64, 65, 66, 67, 6, 124, 125, 305,
+ 13, 32, 72, 75, 72, 85, 4, 79, 127, 81,
+ 109, 127, 32, 82, 113, 25, 224, 30, 72, 318,
+ 127, 31, 321, 127, 127, 113, 101, 80, 176, 177,
+ 102, 239, 228, 105, 106, 107, 108, 109, 110, 542,
248, 113, 73, 29, 116, 117, 118, 105, 106, 107,
108, 109, 110, 73, 126, 113, 114, 115, 116, 117,
- 118, 433, 306, 181, 363, 541, 113, 366, 0, 116,
- 128, 129, 130, 131, 124, 125, 4, 63, 450, 287,
- 111, 113, 454, 72, 116, 13, 6, 97, 119, 120,
- 76, 111, 102, 121, 104, 4, 304, 305, 126, 119,
- 120, 111, 30, 16, 125, 25, 4, 20, 4, 119,
- 120, 31, 113, 231, 232, 233, 324, 325, 125, 113,
- 328, 52, 53, 54, 55, 424, 109, 426, 4, 539,
- 102, 105, 106, 107, 108, 113, 110, 345, 116, 113,
- 114, 115, 116, 4, 118, 6, 7, 8, 113, 104,
- 78, 116, 270, 4, 272, 123, 138, 9, 114, 9,
- 113, 11, 12, 13, 25, 113, 27, 411, 4, 126,
- 31, 117, 380, 381, 126, 126, 126, 97, 4, 29,
- 30, 31, 102, 126, 104, 35, 13, 305, 109, 307,
- 126, 111, 113, 126, 72, 116, 117, 113, 113, 119,
- 120, 319, 110, 102, 322, 57, 58, 59, 60, 61,
- 62, 123, 123, 457, 64, 65, 66, 67, 336, 337,
- 72, 113, 114, 115, 116, 75, 72, 124, 4, 79,
- 125, 81, 350, 127, 430, 431, 97, 127, 127, 127,
- 448, 127, 103, 127, 538, 127, 125, 113, 125, 4,
- 111, 52, 53, 54, 55, 105, 106, 107, 108, 109,
- 110, 4, 73, 113, 472, 72, 116, 117, 118, 4,
- 109, 479, 105, 106, 107, 108, 126, 110, 105, 106,
- 107, 108, 4, 110, 4, 118, 113, 114, 115, 116,
- 4, 118, 126, 72, 36, 37, 38, 39, 40, 41,
- 42, 43, 420, 45, 46, 47, 48, 49, 109, 4,
- 72, 121, 113, 126, 126, 433, 434, 9, 9, 109,
- 438, 529, 109, 124, 442, 109, 126, 21, 126, 109,
- 473, 449, 450, 44, 125, 453, 454, 126, 456, 50,
- 51, 9, 460, 9, 101, 56, 57, 58, 59, 60,
- 61, 62, 470, 471, 72, 123, 123, 68, 69, 70,
- 71, 105, 106, 107, 108, 109, 110, 123, 21, 113,
- 114, 115, 116, 117, 118, 21, 21, 124, 123, 121,
- 124, 123, 124, 21, 4, 4, 4, 125, 506, 507,
- 127, 509, 4, 127, 512, 126, 21, 515, 126, 517,
- 125, 4, 4, 127, 105, 106, 107, 108, 109, 110,
- 21, 122, 113, 124, 127, 116, 117, 118, 4, 130,
+ 118, 433, 306, 181, 363, 78, 475, 366, 477, 121,
+ 128, 129, 130, 131, 126, 113, 114, 63, 450, 287,
+ 111, 113, 454, 0, 116, 72, 6, 97, 119, 120,
+ 76, 111, 102, 4, 104, 4, 304, 305, 16, 119,
+ 120, 111, 20, 125, 113, 25, 24, 116, 4, 119,
+ 120, 31, 4, 231, 232, 233, 324, 325, 113, 113,
+ 328, 116, 116, 113, 109, 424, 125, 426, 113, 109,
+ 540, 116, 117, 52, 53, 54, 55, 345, 52, 53,
+ 54, 55, 113, 4, 4, 6, 7, 8, 113, 114,
+ 115, 116, 270, 104, 272, 102, 4, 138, 9, 9,
+ 123, 11, 12, 13, 25, 114, 27, 411, 113, 113,
+ 31, 117, 380, 381, 4, 4, 126, 97, 126, 29,
+ 30, 31, 102, 126, 104, 35, 13, 305, 126, 307,
+ 109, 111, 126, 126, 113, 126, 72, 113, 113, 119,
+ 120, 319, 123, 13, 322, 124, 57, 58, 59, 60,
+ 61, 62, 110, 457, 64, 65, 66, 67, 336, 337,
+ 123, 72, 102, 124, 4, 75, 72, 127, 127, 79,
+ 127, 81, 350, 127, 430, 431, 97, 127, 127, 127,
+ 448, 125, 103, 125, 125, 539, 113, 4, 4, 73,
+ 111, 72, 4, 109, 4, 105, 106, 107, 108, 109,
+ 110, 4, 4, 113, 472, 4, 116, 117, 118, 126,
+ 72, 479, 105, 106, 107, 108, 126, 110, 105, 106,
+ 107, 108, 72, 110, 121, 118, 113, 114, 115, 116,
+ 126, 118, 126, 9, 9, 105, 106, 107, 108, 21,
+ 110, 109, 420, 113, 114, 115, 116, 126, 118, 109,
+ 109, 126, 109, 125, 9, 433, 434, 126, 9, 101,
+ 438, 72, 530, 21, 442, 123, 4, 123, 123, 21,
+ 473, 449, 450, 44, 21, 453, 454, 124, 456, 50,
+ 51, 4, 460, 4, 123, 56, 57, 58, 59, 60,
+ 61, 62, 470, 471, 21, 125, 127, 68, 69, 70,
+ 71, 36, 37, 38, 39, 40, 41, 42, 43, 127,
+ 45, 46, 47, 48, 49, 105, 106, 107, 108, 109,
+ 110, 4, 126, 113, 114, 115, 116, 117, 118, 507,
+ 508, 21, 510, 126, 124, 513, 21, 125, 516, 4,
+ 518, 4, 127, 127, 105, 106, 107, 108, 109, 110,
+ 4, 122, 113, 124, 4, 116, 117, 118, 4, 130,
131, 132, 133, 134, 135, 136, 137, 86, 87, 88,
89, 90, 91, 92, 93, 94, 95, 96, 4, 98,
- 99, 100, 105, 106, 107, 108, 109, 110, 12, 4,
- 113, 114, 115, 116, 117, 118, 105, 106, 107, 108,
- 4, 110, 59, 224, 113, 114, 115, 116, 128, 118,
- 105, 106, 107, 108, 345, 110, 188, 121, 113, 114,
- 115, 116, 214, 118, 105, 106, 107, 108, 448, 110,
- 213, 506, 113, 114, 115, 116, 381, 118, 105, 106,
- 107, 108, 273, 110, 328, 183, 113, 114, 115, 116,
- 273, 118, 105, 106, 107, 108, 304, 110, 248, 181,
- 113, 114, 115, 116, 98, 118, 105, 106, 107, 108,
- 109, 110, -1, -1, 113, -1, -1, 116, -1, 118,
- 105, 106, 107, 108, -1, 110, -1, -1, 113, 105,
- 106, 107, 108, 118, 110, -1, -1, 113, 105, 106,
- 107, 108, 118, 110, -1, -1, 113, -1, -1, -1,
- -1, 118
+ 99, 100, 12, 224, 59, 128, 121, 188, 123, 124,
+ 105, 106, 107, 108, 109, 110, 121, 448, 113, 114,
+ 115, 116, 117, 118, 105, 106, 107, 108, 345, 110,
+ 507, 381, 113, 114, 115, 116, 213, 118, 105, 106,
+ 107, 108, 214, 110, 328, 273, 113, 114, 115, 116,
+ 273, 118, 105, 106, 107, 108, 98, 110, 183, 248,
+ 113, 114, 115, 116, 181, 118, 105, 106, 107, 108,
+ 304, 110, -1, -1, 113, 114, 115, 116, -1, 118,
+ 105, 106, 107, 108, -1, 110, -1, -1, 113, 114,
+ 115, 116, -1, 118, 105, 106, 107, 108, 109, 110,
+ -1, -1, 113, -1, -1, 116, -1, 118, 105, 106,
+ 107, 108, -1, 110, -1, -1, 113, 105, 106, 107,
+ 108, 118, 110, -1, -1, 113, 105, 106, 107, 108,
+ 118, 110, -1, -1, 113, -1, -1, -1, -1, 118
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -2391,13 +2391,13 @@
72, 127, 239, 21, 72, 127, 21, 124, 257, 256,
123, 113, 116, 254, 254, 217, 264, 264, 238, 256,
77, 83, 84, 189, 4, 256, 4, 256, 4, 21,
- 234, 256, 113, 238, 16, 20, 240, 256, 113, 238,
- 256, 257, 125, 256, 127, 127, 4, 256, 256, 113,
- 248, 184, 214, 239, 239, 248, 126, 21, 126, 21,
- 125, 4, 72, 4, 4, 72, 4, 72, 192, 4,
- 237, 256, 113, 116, 256, 256, 256, 256, 29, 63,
- 76, 193, 127, 127, 127, 4, 4, 4, 194, 248,
- 4, 223, 195, 217
+ 234, 256, 113, 238, 16, 20, 24, 240, 256, 113,
+ 238, 256, 257, 125, 256, 127, 127, 4, 256, 256,
+ 113, 248, 184, 214, 239, 239, 248, 126, 21, 126,
+ 21, 125, 4, 72, 4, 4, 72, 4, 72, 192,
+ 4, 237, 256, 113, 116, 256, 256, 256, 256, 29,
+ 63, 76, 193, 127, 127, 127, 4, 4, 4, 194,
+ 248, 4, 223, 195, 217
};
#define yyerrok (yyerrstatus = 0)
@@ -4870,31 +4870,36 @@
case 277:
#line 2232 "compilers/imcc/imcc.y"
- { (yyval.t) = VT_FLAT; }
+ { (yyval.t) = VT_FLAT; }
break;
case 278:
#line 2233 "compilers/imcc/imcc.y"
- { (yyval.t) = VT_NAMED; }
+ { (yyval.t) = VT_NAMED; }
break;
case 279:
-#line 2236 "compilers/imcc/imcc.y"
- { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
+#line 2234 "compilers/imcc/imcc.y"
+ { (yyval.t) = VT_CALL_SIG; }
break;
case 280:
#line 2237 "compilers/imcc/imcc.y"
- { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
+ { adv_named_set_u(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
case 281:
-#line 2241 "compilers/imcc/imcc.y"
- { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
+#line 2238 "compilers/imcc/imcc.y"
+ { adv_named_set(interp, (yyvsp[(3) - (4)].s)); (yyval.t) = 0; }
break;
case 282:
-#line 2246 "compilers/imcc/imcc.y"
+#line 2242 "compilers/imcc/imcc.y"
+ { (yyval.sr) = (yyvsp[(1) - (2)].sr); (yyval.sr)->type |= (yyvsp[(2) - (2)].t); }
+ break;
+
+ case 283:
+#line 2247 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4906,8 +4911,8 @@
}
break;
- case 283:
-#line 2256 "compilers/imcc/imcc.y"
+ case 284:
+#line 2257 "compilers/imcc/imcc.y"
{
add_pcc_named_result(IMCC_INFO(interp)->cur_call,
mk_const(interp, (yyvsp[(3) - (5)].s), 'S'), (yyvsp[(5) - (5)].sr));
@@ -4915,8 +4920,8 @@
}
break;
- case 284:
-#line 2262 "compilers/imcc/imcc.y"
+ case 285:
+#line 2263 "compilers/imcc/imcc.y"
{
(yyval.sr) = 0;
if (IMCC_INFO(interp)->adv_named_id) {
@@ -4928,22 +4933,17 @@
}
break;
- case 285:
-#line 2272 "compilers/imcc/imcc.y"
+ case 286:
+#line 2273 "compilers/imcc/imcc.y"
{
add_pcc_named_result(IMCC_INFO(interp)->cur_call, mk_const(interp, (yyvsp[(1) - (3)].s), 'S'), (yyvsp[(3) - (3)].sr));
mem_sys_free((yyvsp[(1) - (3)].s));
}
break;
- case 286:
-#line 2276 "compilers/imcc/imcc.y"
- { (yyval.sr) = 0; }
- break;
-
case 287:
-#line 2280 "compilers/imcc/imcc.y"
- { (yyval.i) = (yyvsp[(1) - (1)].i); }
+#line 2277 "compilers/imcc/imcc.y"
+ { (yyval.sr) = 0; }
break;
case 288:
@@ -4952,50 +4952,50 @@
break;
case 289:
-#line 2286 "compilers/imcc/imcc.y"
- {
- (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
- }
+#line 2282 "compilers/imcc/imcc.y"
+ { (yyval.i) = (yyvsp[(1) - (1)].i); }
break;
case 290:
-#line 2290 "compilers/imcc/imcc.y"
+#line 2287 "compilers/imcc/imcc.y"
{
- (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
+ (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, inv_op((yyvsp[(3) - (6)].s)), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
}
break;
case 291:
-#line 2294 "compilers/imcc/imcc.y"
+#line 2291 "compilers/imcc/imcc.y"
{
- (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
+ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
}
break;
case 292:
-#line 2301 "compilers/imcc/imcc.y"
+#line 2295 "compilers/imcc/imcc.y"
{
- (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
+ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "unless", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
}
break;
case 293:
-#line 2305 "compilers/imcc/imcc.y"
+#line 2302 "compilers/imcc/imcc.y"
{
- (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
+ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if", 2, (yyvsp[(2) - (4)].sr), (yyvsp[(4) - (4)].sr));
}
break;
case 294:
-#line 2309 "compilers/imcc/imcc.y"
+#line 2306 "compilers/imcc/imcc.y"
{
- (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
+ (yyval.i) =MK_I(interp, IMCC_INFO(interp)->cur_unit, (yyvsp[(3) - (6)].s), 3, (yyvsp[(2) - (6)].sr), (yyvsp[(4) - (6)].sr), (yyvsp[(6) - (6)].sr));
}
break;
case 295:
-#line 2315 "compilers/imcc/imcc.y"
- { (yyval.t) = 0; }
+#line 2310 "compilers/imcc/imcc.y"
+ {
+ (yyval.i) = MK_I(interp, IMCC_INFO(interp)->cur_unit, "if_null", 2, (yyvsp[(3) - (5)].sr), (yyvsp[(5) - (5)].sr));
+ }
break;
case 296:
@@ -5004,57 +5004,62 @@
break;
case 297:
-#line 2320 "compilers/imcc/imcc.y"
- { (yyval.s) = (char *)"eq"; }
+#line 2317 "compilers/imcc/imcc.y"
+ { (yyval.t) = 0; }
break;
case 298:
#line 2321 "compilers/imcc/imcc.y"
- { (yyval.s) = (char *)"ne"; }
+ { (yyval.s) = (char *)"eq"; }
break;
case 299:
#line 2322 "compilers/imcc/imcc.y"
- { (yyval.s) = (char *)"gt"; }
+ { (yyval.s) = (char *)"ne"; }
break;
case 300:
#line 2323 "compilers/imcc/imcc.y"
- { (yyval.s) = (char *)"ge"; }
+ { (yyval.s) = (char *)"gt"; }
break;
case 301:
#line 2324 "compilers/imcc/imcc.y"
- { (yyval.s) = (char *)"lt"; }
+ { (yyval.s) = (char *)"ge"; }
break;
case 302:
#line 2325 "compilers/imcc/imcc.y"
- { (yyval.s) = (char *)"le"; }
+ { (yyval.s) = (char *)"lt"; }
break;
- case 305:
-#line 2334 "compilers/imcc/imcc.y"
- { (yyval.sr) = NULL; }
+ case 303:
+#line 2326 "compilers/imcc/imcc.y"
+ { (yyval.s) = (char *)"le"; }
break;
case 306:
#line 2335 "compilers/imcc/imcc.y"
- { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
+ { (yyval.sr) = NULL; }
break;
case 307:
-#line 2339 "compilers/imcc/imcc.y"
+#line 2336 "compilers/imcc/imcc.y"
+ { (yyval.sr) = (yyvsp[(1) - (1)].sr); }
+ break;
+
+ case 308:
+#line 2340 "compilers/imcc/imcc.y"
{ (yyval.sr) = IMCC_INFO(interp)->regs[0]; }
break;
- case 309:
-#line 2344 "compilers/imcc/imcc.y"
+ case 310:
+#line 2345 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (1)].sr); }
break;
- case 310:
-#line 2346 "compilers/imcc/imcc.y"
+ case 311:
+#line 2347 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(1) - (4)].sr);
IMCC_INFO(interp) -> keyvec |= KEY_BIT(IMCC_INFO(interp)->nargs);
@@ -5063,27 +5068,22 @@
}
break;
- case 311:
-#line 2353 "compilers/imcc/imcc.y"
+ case 312:
+#line 2354 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp) -> regs[IMCC_INFO(interp)->nargs++] = (yyvsp[(2) - (3)].sr);
(yyval.sr) = (yyvsp[(2) - (3)].sr);
}
break;
- case 313:
-#line 2360 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
- break;
-
case 314:
#line 2361 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+ { (yyval.sr) = mk_sub_address_fromc(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 315:
-#line 2365 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 2362 "compilers/imcc/imcc.y"
+ { (yyval.sr) = mk_sub_address_u(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 316:
@@ -5092,8 +5092,8 @@
break;
case 317:
-#line 2370 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 2367 "compilers/imcc/imcc.y"
+ { (yyval.sr) = mk_sub_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 318:
@@ -5101,15 +5101,20 @@
{ (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
- case 323:
-#line 2385 "compilers/imcc/imcc.y"
+ case 319:
+#line 2372 "compilers/imcc/imcc.y"
+ { (yyval.sr) = mk_label_address(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+ break;
+
+ case 324:
+#line 2386 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
}
break;
- case 324:
-#line 2389 "compilers/imcc/imcc.y"
+ case 325:
+#line 2390 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
IMCC_INFO(interp)->nkeys,
@@ -5117,15 +5122,15 @@
}
break;
- case 325:
-#line 2397 "compilers/imcc/imcc.y"
+ case 326:
+#line 2398 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->nkeys = 0;
}
break;
- case 326:
-#line 2401 "compilers/imcc/imcc.y"
+ case 327:
+#line 2402 "compilers/imcc/imcc.y"
{
(yyval.sr) = link_keys(interp,
IMCC_INFO(interp)->nkeys,
@@ -5133,74 +5138,74 @@
}
break;
- case 327:
-#line 2409 "compilers/imcc/imcc.y"
+ case 328:
+#line 2410 "compilers/imcc/imcc.y"
{ IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(1) - (1)].sr); }
break;
- case 328:
-#line 2411 "compilers/imcc/imcc.y"
+ case 329:
+#line 2412 "compilers/imcc/imcc.y"
{
IMCC_INFO(interp)->keys[IMCC_INFO(interp)->nkeys++] = (yyvsp[(3) - (3)].sr);
(yyval.sr) = IMCC_INFO(interp)->keys[0];
}
break;
- case 329:
-#line 2419 "compilers/imcc/imcc.y"
+ case 330:
+#line 2420 "compilers/imcc/imcc.y"
{
(yyval.sr) = (yyvsp[(1) - (1)].sr);
}
break;
- case 330:
-#line 2425 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
- break;
-
case 331:
#line 2426 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
+ { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'I'); }
break;
case 332:
#line 2427 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
+ { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'N'); }
break;
case 333:
#line 2428 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
+ { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'S'); }
break;
case 334:
#line 2429 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
+ { (yyval.sr) = mk_symreg(interp, (yyvsp[(1) - (1)].s), 'P'); }
break;
case 335:
-#line 2433 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
+#line 2430 "compilers/imcc/imcc.y"
+ { (yyval.sr) = mk_pasm_reg(interp, (yyvsp[(1) - (1)].s)); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 336:
#line 2434 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
+ { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'I'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 337:
#line 2435 "compilers/imcc/imcc.y"
- { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
+ { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'N'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
case 338:
#line 2436 "compilers/imcc/imcc.y"
+ { (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'S'); mem_sys_free((yyvsp[(1) - (1)].s)); }
+ break;
+
+ case 339:
+#line 2437 "compilers/imcc/imcc.y"
{ (yyval.sr) = mk_const(interp, (yyvsp[(1) - (1)].s), 'U'); mem_sys_free((yyvsp[(1) - (1)].s)); }
break;
/* Line 1267 of yacc.c. */
-#line 5193 "compilers/imcc/imcparser.c"
+#line 5198 "compilers/imcc/imcparser.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5414,7 +5419,7 @@
}
-#line 2442 "compilers/imcc/imcc.y"
+#line 2443 "compilers/imcc/imcc.y"
/* I need this prototype somewhere... */
Modified: trunk/t/op/cc_params.t
==============================================================================
--- trunk/t/op/cc_params.t Fri Oct 23 01:00:40 2009 (r42030)
+++ trunk/t/op/cc_params.t Fri Oct 23 01:03:24 2009 (r42031)
@@ -1,20 +1,10 @@
-#!perl
-# Copyright (C) 2007, Parrot Foundation.
-# $Id$
-
-use strict;
-use warnings;
-use lib qw( . lib ../lib ../../lib );
-use Test::More;
-use Parrot::Test 'no_plan';
-
=head1 NAME
t/op/cc_params.t - Parrot Calling Conventions parameter matching tests
=head1 SYNOPSIS
- % prove t/op/cc_params.t
+% prove t/op/cc_params.t
=head1 DESCRIPTION
@@ -22,200 +12,44 @@
=cut
-my $t_testbody = <<'TESTBODY';
-.sub 'test' :main
- .include 'errors.pasm'
- errorson .PARROT_ERRORS_PARAM_COUNT_FLAG
- errorson .PARROT_ERRORS_RESULT_COUNT_FLAG
-
- at INIT_ARGS@
- at INIT_RESULTS@
+.sub test_main :main
+ .include 'test_more.pir'
+ plan(11)
+ 'call_sig_with_no_args'()
+ 'call_sig_with_positionals'(1, 2, 3)
+ 'call_sig_with_named'(4 :named("x"), 5 :named("y"))
+.end
- (@LIST_RESULTS@) = '@FUNC@'(@LIST_ARGS@)
- print "ok\n"
+.sub call_sig_with_no_args
+ .param pmc sig :call_sig
+ $S0 = typeof sig
+ is('CallSignature', $S0)
+ $I0 = elements sig
+ is(0, $I0)
.end
-.sub '@FUNC@'
- at INIT_PARAMS@
- at INIT_RETURNS@
- at CHECK_PARAMS@
- .return(@LIST_RETURNS@)
+.sub call_sig_with_positionals
+ .param pmc sig :call_sig
+ $S0 = typeof sig
+ is('CallSignature', $S0)
+ $I0 = elements sig
+ is(3, $I0)
+ $I1 = sig[0]
+ is(1, $I1)
+ $I2 = sig[1]
+ is(2, $I2)
+ $I3 = sig[2]
+ is(3, $I3)
.end
-TESTBODY
-my $t_expbody = <<'EXPBODY';
- at CHECK_RESULTS@
-EXPBODY
-
-## loop over test cases
-## expected in
-for my $c_args ( 0 .. 1 ) {
- ## expected out
- for my $c_results ( 0 .. 1 ) {
- ## got in
- for my $c_params ( 0 .. ( $c_args ? 2 : 1 ) ) {
- ## got out
- for my $c_returns ( 0 .. ( $c_results ? 2 : 1 ) ) {
- my $td = TemplateData->new;
-
- ## initialize template keys
- for ( $t_testbody =~ m/@(\w+)@/g ) { $td->addkey($_) }
-
- for ( $t_expbody =~ m/@(\w+)@/g ) { $td->addkey($_) }
-
- ## initialize template data
- $td->initialize( $c_args, $c_params, $c_returns, $c_results );
-
- ## generate tests and results
- my $testbody = $td->generate($t_testbody);
- my $expbody = $td->generate($t_expbody);
- my $testhead = create_test_header( $c_args, $c_results, $c_params, $c_returns, );
-
- ## execute tests
- if ( $expbody eq "ok\n" ) {
- pir_output_like( $testbody, "/$expbody/", $testhead );
- }
- else {
- pir_error_output_like( $testbody, "/$expbody/", $testhead );
- }
- }
- }
- }
-}
-
-exit;
-
-sub create_test_header {
- return 'param mismatch: args:'
- . shift()
- . ' results:'
- . shift()
- . ' params:'
- . shift()
- . ' returns:'
- . shift();
-
-}
-
-package TemplateData;
-
-sub new { bless {} => shift; }
-sub addkey { my $self = shift; $self->{$_} = '' for @_ }
-
-sub create_args {
- my $self = shift;
- my $num = shift;
-
- $self->{C_ARGS} = $num;
-
- if ( $self->{C_ARGS} ) {
- $self->{_ARGS} = [ map { 'arg' . $_ } 1 .. $num ];
- $self->{LIST_ARGS} = join ', ' => @{ $self->{_ARGS} };
- $self->{INIT_ARGS} = ' .local int ' . $self->{LIST_ARGS} . $/;
- $self->{INIT_ARGS} .= " ${ $self->{_ARGS} }[$_] = $_$/" for 0 .. $#{ $self->{_ARGS} };
- }
-}
-
-sub create_params {
- my $self = shift;
- my $num = shift;
-
- $self->{C_PARAMS} = $num;
-
- if ( $self->{C_PARAMS} ) {
- $self->{_PARAMS} = [ map { 'param' . $_ } 1 .. $num ];
- $self->{LIST_PARAMS} = join ', ' => @{ $self->{_PARAMS} };
- $self->{INIT_PARAMS} =
- join( "\n" => map { ' .param int ' . ${ $self->{_PARAMS} }[$_] }
- 0 .. $#{ $self->{_PARAMS} } );
- }
- else {
- $self->{INIT_PARAMS} = q{ get_params '()'};
- }
-}
-
-sub create_returns {
- my $self = shift;
- my $num = shift;
-
- $self->{C_RETURNS} = $num;
-
- if ( $self->{C_RETURNS} ) {
- $self->{_RETURNS} = [ map { 'return' . $_ } 1 .. $num ];
- $self->{LIST_RETURNS} = join ', ' => @{ $self->{_RETURNS} };
- $self->{INIT_RETURNS} = ' .local int ' . $self->{LIST_RETURNS} . $/;
- $self->{INIT_RETURNS} .= " ${ $self->{_RETURNS} }[$_] = $_$/"
- for 0 .. $#{ $self->{_RETURNS} };
- }
-}
-
-sub create_results {
- my $self = shift;
- my $num = shift;
-
- $self->{C_RESULTS} = $num;
-
- if ( $self->{C_RESULTS} ) {
- $self->{_RESULTS} = [ map { 'result' . $_ } 1 .. $num ];
- $self->{LIST_RESULTS} = join ', ' => @{ $self->{_RESULTS} };
- $self->{INIT_RESULTS} =
- join "\n" => ( map { ' .local int ' . $_ } @{ $self->{_RESULTS} } );
- }
-}
-
-sub create_func {
- my $self = shift;
- my ( $c_args, $c_params, $c_returns, $c_results ) = @_;
-
- $self->{FUNC} =
- 'args' . $c_args
- . '_results'
- . $c_results
- . '__params'
- . $c_params
- . '_returns'
- . $c_returns;
-}
-
-sub create_check_results {
- my $self = shift;
- my ( $c_args, $c_params, $c_returns, $c_results ) = @_;
-
- $self->{CHECK_RESULTS} =
- ( ( $c_args == $c_params ) and ( $c_results == $c_returns ) )
- ? 'ok'
- : 'too (many|few) ((positional|named) (arguments|returns)).*';
-}
-
-sub initialize {
- my $self = shift;
- my ( $c_args, $c_params, $c_returns, $c_results ) = @_;
-
- $self->create_args($c_args);
- $self->create_params($c_params);
- $self->create_returns($c_returns);
- $self->create_results($c_results);
-
- $self->create_func( $c_args, $c_params, $c_returns, $c_results );
-
- $self->create_check_results( $c_args, $c_params, $c_returns, $c_results );
-}
-
-sub generate {
- my $self = shift;
- my ($template) = @_;
-
- for ( $template =~ m/@(\w+)@/g ) {
- my $replacement = ( exists $self->{$_} and defined $self->{$_} ) ? $self->{$_} : '';
-
- $template =~ s/@(\w+)@/$replacement/;
- }
- return $template;
-}
-
-# Local Variables:
-# mode: cperl
-# cperl-indent-level: 4
-# fill-column: 100
-# End:
-# vim: expandtab shiftwidth=4:
+.sub call_sig_with_named
+ .param pmc sig :call_sig
+ $S0 = typeof sig
+ is('CallSignature', $S0)
+ $I0 = elements sig
+ is(0, $I0)
+ $I1 = sig["x"]
+ is(4, $I1)
+ $I2 = sig["y"]
+ is(5, $I2)
+.end
\ No newline at end of file
Added: trunk/t/op/cc_params_old.t
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/t/op/cc_params_old.t Fri Oct 23 01:03:24 2009 (r42031)
@@ -0,0 +1,221 @@
+#!perl
+# Copyright (C) 2007, Parrot Foundation.
+# $Id: cc_params.t 41972 2009-10-21 16:54:18Z allison $
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+use Test::More;
+use Parrot::Test 'no_plan';
+
+=head1 NAME
+
+t/op/cc_params.t - Parrot Calling Conventions parameter matching tests
+
+=head1 SYNOPSIS
+
+ % prove t/op/cc_params.t
+
+=head1 DESCRIPTION
+
+Tests Parrot calling conventions for parameter matching and mismatching.
+
+=cut
+
+my $t_testbody = <<'TESTBODY';
+.sub 'test' :main
+ .include 'errors.pasm'
+ errorson .PARROT_ERRORS_PARAM_COUNT_FLAG
+ errorson .PARROT_ERRORS_RESULT_COUNT_FLAG
+
+ at INIT_ARGS@
+ at INIT_RESULTS@
+
+ (@LIST_RESULTS@) = '@FUNC@'(@LIST_ARGS@)
+ print "ok\n"
+.end
+
+.sub '@FUNC@'
+ at INIT_PARAMS@
+ at INIT_RETURNS@
+ at CHECK_PARAMS@
+ .return(@LIST_RETURNS@)
+.end
+TESTBODY
+
+my $t_expbody = <<'EXPBODY';
+ at CHECK_RESULTS@
+EXPBODY
+
+## loop over test cases
+## expected in
+for my $c_args ( 0 .. 1 ) {
+ ## expected out
+ for my $c_results ( 0 .. 1 ) {
+ ## got in
+ for my $c_params ( 0 .. ( $c_args ? 2 : 1 ) ) {
+ ## got out
+ for my $c_returns ( 0 .. ( $c_results ? 2 : 1 ) ) {
+ my $td = TemplateData->new;
+
+ ## initialize template keys
+ for ( $t_testbody =~ m/@(\w+)@/g ) { $td->addkey($_) }
+
+ for ( $t_expbody =~ m/@(\w+)@/g ) { $td->addkey($_) }
+
+ ## initialize template data
+ $td->initialize( $c_args, $c_params, $c_returns, $c_results );
+
+ ## generate tests and results
+ my $testbody = $td->generate($t_testbody);
+ my $expbody = $td->generate($t_expbody);
+ my $testhead = create_test_header( $c_args, $c_results, $c_params, $c_returns, );
+
+ ## execute tests
+ if ( $expbody eq "ok\n" ) {
+ pir_output_like( $testbody, "/$expbody/", $testhead );
+ }
+ else {
+ pir_error_output_like( $testbody, "/$expbody/", $testhead );
+ }
+ }
+ }
+ }
+}
+
+exit;
+
+sub create_test_header {
+ return 'param mismatch: args:'
+ . shift()
+ . ' results:'
+ . shift()
+ . ' params:'
+ . shift()
+ . ' returns:'
+ . shift();
+
+}
+
+package TemplateData;
+
+sub new { bless {} => shift; }
+sub addkey { my $self = shift; $self->{$_} = '' for @_ }
+
+sub create_args {
+ my $self = shift;
+ my $num = shift;
+
+ $self->{C_ARGS} = $num;
+
+ if ( $self->{C_ARGS} ) {
+ $self->{_ARGS} = [ map { 'arg' . $_ } 1 .. $num ];
+ $self->{LIST_ARGS} = join ', ' => @{ $self->{_ARGS} };
+ $self->{INIT_ARGS} = ' .local int ' . $self->{LIST_ARGS} . $/;
+ $self->{INIT_ARGS} .= " ${ $self->{_ARGS} }[$_] = $_$/" for 0 .. $#{ $self->{_ARGS} };
+ }
+}
+
+sub create_params {
+ my $self = shift;
+ my $num = shift;
+
+ $self->{C_PARAMS} = $num;
+
+ if ( $self->{C_PARAMS} ) {
+ $self->{_PARAMS} = [ map { 'param' . $_ } 1 .. $num ];
+ $self->{LIST_PARAMS} = join ', ' => @{ $self->{_PARAMS} };
+ $self->{INIT_PARAMS} =
+ join( "\n" => map { ' .param int ' . ${ $self->{_PARAMS} }[$_] }
+ 0 .. $#{ $self->{_PARAMS} } );
+ }
+ else {
+ $self->{INIT_PARAMS} = q{ get_params '()'};
+ }
+}
+
+sub create_returns {
+ my $self = shift;
+ my $num = shift;
+
+ $self->{C_RETURNS} = $num;
+
+ if ( $self->{C_RETURNS} ) {
+ $self->{_RETURNS} = [ map { 'return' . $_ } 1 .. $num ];
+ $self->{LIST_RETURNS} = join ', ' => @{ $self->{_RETURNS} };
+ $self->{INIT_RETURNS} = ' .local int ' . $self->{LIST_RETURNS} . $/;
+ $self->{INIT_RETURNS} .= " ${ $self->{_RETURNS} }[$_] = $_$/"
+ for 0 .. $#{ $self->{_RETURNS} };
+ }
+}
+
+sub create_results {
+ my $self = shift;
+ my $num = shift;
+
+ $self->{C_RESULTS} = $num;
+
+ if ( $self->{C_RESULTS} ) {
+ $self->{_RESULTS} = [ map { 'result' . $_ } 1 .. $num ];
+ $self->{LIST_RESULTS} = join ', ' => @{ $self->{_RESULTS} };
+ $self->{INIT_RESULTS} =
+ join "\n" => ( map { ' .local int ' . $_ } @{ $self->{_RESULTS} } );
+ }
+}
+
+sub create_func {
+ my $self = shift;
+ my ( $c_args, $c_params, $c_returns, $c_results ) = @_;
+
+ $self->{FUNC} =
+ 'args' . $c_args
+ . '_results'
+ . $c_results
+ . '__params'
+ . $c_params
+ . '_returns'
+ . $c_returns;
+}
+
+sub create_check_results {
+ my $self = shift;
+ my ( $c_args, $c_params, $c_returns, $c_results ) = @_;
+
+ $self->{CHECK_RESULTS} =
+ ( ( $c_args == $c_params ) and ( $c_results == $c_returns ) )
+ ? 'ok'
+ : 'too (many|few) ((positional|named) (arguments|returns)).*';
+}
+
+sub initialize {
+ my $self = shift;
+ my ( $c_args, $c_params, $c_returns, $c_results ) = @_;
+
+ $self->create_args($c_args);
+ $self->create_params($c_params);
+ $self->create_returns($c_returns);
+ $self->create_results($c_results);
+
+ $self->create_func( $c_args, $c_params, $c_returns, $c_results );
+
+ $self->create_check_results( $c_args, $c_params, $c_returns, $c_results );
+}
+
+sub generate {
+ my $self = shift;
+ my ($template) = @_;
+
+ for ( $template =~ m/@(\w+)@/g ) {
+ my $replacement = ( exists $self->{$_} and defined $self->{$_} ) ? $self->{$_} : '';
+
+ $template =~ s/@(\w+)@/$replacement/;
+ }
+ return $template;
+}
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:
More information about the parrot-commits
mailing list