X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fas3%2Fparser.tab.c;h=59f539707e3d682f18c9af9b5756d198694d40a3;hb=36a1fac8ea3a7457f25b1b4209b5fc918cc6af44;hp=f4565e570d8fb525e243dbd07e64ffb653be78a5;hpb=71c8242a8242eeb6e8b6dcf57239550a6f35c88a;p=swftools.git diff --git a/lib/as3/parser.tab.c b/lib/as3/parser.tab.c index f4565e5..59f5397 100644 --- a/lib/as3/parser.tab.c +++ b/lib/as3/parser.tab.c @@ -378,6 +378,8 @@ typedef struct _state { import_list_t*wildcard_imports; dict_t*import_toplevel_packages; dict_t*imports; + + namespace_list_t*active_namespace_urls; char has_own_imports; char new_vars; // e.g. transition between two functions @@ -469,6 +471,9 @@ static void new_state() state->new_vars = 0; trie_remember(active_namespaces); + + if(oldstate) + state->active_namespace_urls = list_clone(oldstate->active_namespace_urls); } static void state_has_imports() { @@ -510,6 +515,9 @@ static void state_destroy(state_t*state) dict_destroy(state->vars);state->vars=0; } + list_free(state->active_namespace_urls) + state->active_namespace_urls = 0; + free(state); } @@ -531,7 +539,7 @@ static void old_state() free(leaving->cls); leaving->cls=0; } - + state_destroy(leaving); } @@ -872,6 +880,7 @@ static namespace_t modifiers2access(modifiers_t*mod) if(!url) { /* shouldn't happen- the tokenizer only reports something as a namespace if it was already registered */ + trie_dump(active_namespaces); syntaxerror("unknown namespace: %s", mod->ns); } ns.name = url; @@ -894,10 +903,16 @@ static namespace_t modifiers2access(modifiers_t*mod) } static slotinfo_t* find_class(const char*name); -memberinfo_t* findmember_nsset(classinfo_t*cls, const char*name, char recurse) +static memberinfo_t* findmember_nsset(classinfo_t*cls, const char*name, char recurse) +{ + return registry_findmember_nsset(cls, state->active_namespace_urls, name, recurse); +} + +void add_active_url(const char*url) { - /* FIXME- we need to loop through namespaces here */ - return registry_findmember(cls, "", name, recurse); + NEW(namespace_t,n); + n->name = url; + list_append(state->active_namespace_urls, n); } static void function_initvars(methodstate_t*m, params_t*params, int flags, char var0) @@ -2099,7 +2114,7 @@ code_t* insert_finally(code_t*c, code_t*finally, int tempvar) /* Line 273 of skeleton.m4 */ -#line 2103 "parser.tab.c" +#line 2118 "parser.tab.c" #ifdef short # undef short @@ -2512,37 +2527,37 @@ static const yytype_int16 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 2081, 2081, 2083, 2083, 2084, 2085, 2087, 2088, 2089, - 2090, 2091, 2092, 2093, 2094, 2096, 2096, 2097, 2098, 2100, - 2101, 2102, 2103, 2104, 2105, 2106, 2108, 2109, 2111, 2112, - 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, - 2125, 2126, 2127, 2128, 2131, 2132, 2133, 2134, 2135, 2136, - 2137, 2138, 2142, 2143, 2147, 2154, 2158, 2159, 2163, 2164, - 2166, 2167, 2169, 2230, 2231, 2234, 2234, 2253, 2254, 2255, - 2260, 2264, 2269, 2270, 2272, 2292, 2340, 2340, 2359, 2359, - 2374, 2377, 2380, 2383, 2387, 2388, 2389, 2390, 2391, 2392, - 2394, 2405, 2408, 2408, 2439, 2439, 2464, 2464, 2480, 2481, - 2482, 2483, 2491, 2500, 2500, 2549, 2553, 2564, 2574, 2591, - 2592, 2593, 2595, 2596, 2598, 2598, 2600, 2600, 2603, 2619, - 2636, 2637, 2638, 2639, 2646, 2647, 2648, 2649, 2650, 2651, - 2652, 2653, 2654, 2655, 2659, 2660, 2662, 2663, 2665, 2666, - 2670, 2668, 2676, 2674, 2683, 2684, 2685, 2686, 2687, 2688, - 2689, 2690, 2692, 2698, 2699, 2700, 2701, 2702, 2703, 2706, - 2719, 2719, 2721, 2721, 2723, 2724, 2726, 2801, 2802, 2804, - 2805, 2806, 2807, 2808, 2810, 2811, 2812, 2813, 2825, 2829, - 2835, 2841, 2849, 2854, 2860, 2868, 2876, 2877, 2878, 2881, - 2880, 2897, 2898, 2900, 2899, 2923, 2942, 2956, 2957, 2959, - 2960, 2962, 2963, 2964, 2973, 2974, 2978, 2979, 2981, 2982, - 2983, 2985, 2989, 2990, 2995, 2996, 3032, 3078, 3099, 3120, - 3123, 3130, 3131, 3132, 3138, 3144, 3146, 3148, 3150, 3152, - 3154, 3156, 3173, 3178, 3181, 3184, 3187, 3190, 3193, 3196, - 3199, 3202, 3206, 3209, 3212, 3215, 3218, 3221, 3224, 3227, - 3231, 3242, 3260, 3265, 3270, 3275, 3280, 3285, 3289, 3293, - 3298, 3302, 3306, 3315, 3324, 3334, 3339, 3351, 3357, 3362, - 3368, 3374, 3378, 3380, 3391, 3400, 3407, 3408, 3410, 3416, - 3425, 3432, 3444, 3450, 3456, 3462, 3468, 3474, 3480, 3486, - 3499, 3510, 3517, 3530, 3557, 3571, 3585, 3599, 3614, 3621, - 3628, 3635, 3642, 3653, 3703, 3808, 3815, 3822, 3829, 3844 + 0, 2096, 2096, 2098, 2098, 2099, 2100, 2102, 2103, 2104, + 2105, 2106, 2107, 2108, 2109, 2111, 2111, 2112, 2113, 2115, + 2116, 2117, 2118, 2119, 2120, 2121, 2123, 2124, 2126, 2127, + 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, + 2140, 2141, 2142, 2143, 2146, 2147, 2148, 2149, 2150, 2151, + 2152, 2153, 2157, 2158, 2162, 2169, 2173, 2174, 2178, 2179, + 2181, 2182, 2184, 2245, 2246, 2249, 2249, 2268, 2269, 2270, + 2275, 2279, 2284, 2285, 2287, 2307, 2355, 2355, 2374, 2374, + 2389, 2392, 2395, 2398, 2402, 2403, 2404, 2405, 2406, 2407, + 2409, 2420, 2423, 2423, 2454, 2454, 2479, 2479, 2495, 2496, + 2497, 2498, 2506, 2515, 2515, 2564, 2568, 2579, 2589, 2606, + 2607, 2608, 2610, 2611, 2613, 2613, 2615, 2615, 2618, 2634, + 2651, 2652, 2653, 2654, 2661, 2662, 2663, 2664, 2665, 2666, + 2667, 2668, 2669, 2670, 2674, 2675, 2677, 2678, 2680, 2681, + 2685, 2683, 2691, 2689, 2698, 2699, 2700, 2701, 2702, 2703, + 2704, 2705, 2707, 2713, 2714, 2715, 2716, 2717, 2718, 2721, + 2734, 2734, 2736, 2736, 2738, 2739, 2741, 2816, 2817, 2819, + 2820, 2821, 2822, 2823, 2825, 2826, 2827, 2828, 2840, 2844, + 2850, 2856, 2864, 2869, 2875, 2883, 2891, 2892, 2893, 2896, + 2895, 2912, 2913, 2915, 2914, 2938, 2957, 2971, 2972, 2974, + 2975, 2977, 2978, 2979, 2988, 2989, 2993, 2994, 2996, 2997, + 2998, 3000, 3004, 3005, 3010, 3011, 3047, 3093, 3114, 3135, + 3138, 3145, 3146, 3147, 3153, 3159, 3161, 3163, 3165, 3167, + 3169, 3171, 3188, 3193, 3196, 3199, 3202, 3205, 3208, 3211, + 3214, 3217, 3221, 3224, 3227, 3230, 3233, 3236, 3239, 3242, + 3246, 3257, 3275, 3280, 3285, 3290, 3295, 3300, 3304, 3308, + 3313, 3317, 3321, 3330, 3339, 3349, 3354, 3366, 3372, 3377, + 3383, 3389, 3393, 3395, 3406, 3415, 3422, 3423, 3425, 3431, + 3440, 3447, 3459, 3465, 3471, 3477, 3483, 3489, 3495, 3501, + 3514, 3525, 3532, 3545, 3572, 3586, 3600, 3614, 3629, 3636, + 3643, 3650, 3657, 3668, 3720, 3826, 3833, 3840, 3847, 3862 }; #endif @@ -4337,7 +4352,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2108 "parser.y" +#line 2123 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; @@ -4348,7 +4363,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2109 "parser.y" +#line 2124 "parser.y" {(yyval.code)=code_new();} } break; @@ -4359,7 +4374,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2111 "parser.y" +#line 2126 "parser.y" {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));} } break; @@ -4370,7 +4385,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2112 "parser.y" +#line 2127 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; @@ -4381,7 +4396,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2127 "parser.y" +#line 2142 "parser.y" {(yyval.code)=(yyvsp[(2) - (3)].code);} } break; @@ -4392,7 +4407,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2128 "parser.y" +#line 2143 "parser.y" {(yyval.code)=0;} } break; @@ -4403,7 +4418,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2131 "parser.y" +#line 2146 "parser.y" {(yyval.code)=0;} } break; @@ -4414,7 +4429,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2138 "parser.y" +#line 2153 "parser.y" {(yyval.code)=(yyvsp[(3) - (4)].code);} } break; @@ -4425,7 +4440,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2142 "parser.y" +#line 2157 "parser.y" {(yyval.code)=(yyvsp[(1) - (2)].code);} } break; @@ -4436,7 +4451,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2143 "parser.y" +#line 2158 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; @@ -4447,7 +4462,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2147 "parser.y" +#line 2162 "parser.y" { code_t**cc = &global->init->method->body->code; *cc = code_append(*cc, (yyvsp[(1) - (1)].code)); @@ -4461,7 +4476,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2158 "parser.y" +#line 2173 "parser.y" {(yyval.value)=(yyvsp[(2) - (2)].value);} } break; @@ -4472,7 +4487,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2159 "parser.y" +#line 2174 "parser.y" {(yyval.value).c=abc_pushundefined(0); (yyval.value).t=TYPE_ANY; } @@ -4485,7 +4500,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2163 "parser.y" +#line 2178 "parser.y" {(yyval.code)=(yyvsp[(2) - (2)].code);} } break; @@ -4496,7 +4511,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2164 "parser.y" +#line 2179 "parser.y" {(yyval.code)=(yyvsp[(2) - (2)].code);} } break; @@ -4507,7 +4522,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2166 "parser.y" +#line 2181 "parser.y" {(yyval.code) = (yyvsp[(1) - (1)].code);} } break; @@ -4518,7 +4533,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2167 "parser.y" +#line 2182 "parser.y" {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} } break; @@ -4529,7 +4544,7 @@ yyreduce: if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2170 "parser.y" +#line 2185 "parser.y" { PASS12 if(variable_exists((yyvsp[(1) - (3)].id))) @@ -4596,7 +4611,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2230 "parser.y" +#line 2245 "parser.y" {(yyval.code) = code_new();} } break; @@ -4607,7 +4622,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2231 "parser.y" +#line 2246 "parser.y" {(yyval.code)=(yyvsp[(2) - (2)].code);} } break; @@ -4618,7 +4633,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2234 "parser.y" +#line 2249 "parser.y" {PASS12 new_state();} } break; @@ -4629,7 +4644,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2234 "parser.y" +#line 2249 "parser.y" { (yyval.code) = code_new(); @@ -4657,7 +4672,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2253 "parser.y" +#line 2268 "parser.y" {(yyval.code)=code_new();} } break; @@ -4668,7 +4683,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2260 "parser.y" +#line 2275 "parser.y" { PASS1 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),0,1,0); PASS2 (yyval.id)=(yyvsp[(2) - (3)].id);new_variable((yyvsp[(2) - (3)].id),(yyvsp[(3) - (3)].classinfo),1,0); @@ -4682,7 +4697,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2264 "parser.y" +#line 2279 "parser.y" { PASS12 (yyval.id)=(yyvsp[(1) - (1)].id); @@ -4696,7 +4711,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2269 "parser.y" +#line 2284 "parser.y" {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;} } break; @@ -4707,7 +4722,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2270 "parser.y" +#line 2285 "parser.y" {PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;} } break; @@ -4718,7 +4733,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2272 "parser.y" +#line 2287 "parser.y" { if((yyvsp[(1) - (8)].for_start).each) syntaxerror("invalid syntax: ; not allowed in for each statement"); (yyval.code) = code_new(); @@ -4747,7 +4762,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2292 "parser.y" +#line 2307 "parser.y" { variable_t*var = find_variable(state, (yyvsp[(2) - (6)].id)); if(!var) { @@ -4804,7 +4819,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2340 "parser.y" +#line 2355 "parser.y" {PASS12 new_state();} } break; @@ -4815,7 +4830,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2340 "parser.y" +#line 2355 "parser.y" { (yyval.code) = code_new(); @@ -4843,7 +4858,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2359 "parser.y" +#line 2374 "parser.y" {PASS12 new_state();} } break; @@ -4854,7 +4869,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2359 "parser.y" +#line 2374 "parser.y" { (yyval.code) = code_new(); code_t*loopstart = (yyval.code) = abc_label((yyval.code)); @@ -4878,7 +4893,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2374 "parser.y" +#line 2389 "parser.y" { (yyval.code) = abc___break__(0, ""); } @@ -4891,7 +4906,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2377 "parser.y" +#line 2392 "parser.y" { (yyval.code) = abc___break__(0, (yyvsp[(2) - (2)].id)); } @@ -4904,7 +4919,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2380 "parser.y" +#line 2395 "parser.y" { (yyval.code) = abc___continue__(0, ""); } @@ -4917,7 +4932,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2383 "parser.y" +#line 2398 "parser.y" { (yyval.code) = abc___continue__(0, (yyvsp[(2) - (2)].id)); } @@ -4930,7 +4945,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2387 "parser.y" +#line 2402 "parser.y" {(yyval.code)=0;} } break; @@ -4941,7 +4956,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2388 "parser.y" +#line 2403 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; @@ -4952,7 +4967,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2389 "parser.y" +#line 2404 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; @@ -4963,7 +4978,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2390 "parser.y" +#line 2405 "parser.y" {(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));} } break; @@ -4974,7 +4989,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2391 "parser.y" +#line 2406 "parser.y" {(yyval.code)=(yyvsp[(1) - (1)].code);} } break; @@ -4985,7 +5000,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2392 "parser.y" +#line 2407 "parser.y" {(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));} } break; @@ -4996,7 +5011,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2394 "parser.y" +#line 2409 "parser.y" { (yyval.code) = abc_getlocal(0, state->switch_var); (yyval.code) = code_append((yyval.code), (yyvsp[(2) - (4)].value).c); @@ -5017,7 +5032,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2405 "parser.y" +#line 2420 "parser.y" { (yyval.code) = (yyvsp[(3) - (3)].code); } @@ -5030,7 +5045,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2408 "parser.y" +#line 2423 "parser.y" {PASS12 new_state();state->switch_var=alloc_local();} } break; @@ -5041,7 +5056,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2408 "parser.y" +#line 2423 "parser.y" { (yyval.code)=(yyvsp[(4) - (8)].value).c; (yyval.code) = abc_setlocal((yyval.code), state->switch_var); @@ -5079,7 +5094,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2439 "parser.y" +#line 2454 "parser.y" {PASS12 new_state(); state->exception_name=(yyvsp[(3) - (5)].id); PASS1 new_variable((yyvsp[(3) - (5)].id), 0, 0, 0); @@ -5094,7 +5109,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2444 "parser.y" +#line 2459 "parser.y" { namespace_t name_ns = {ACCESS_PACKAGE, ""}; multiname_t name = {QNAME, &name_ns, 0, (yyvsp[(3) - (9)].id)}; @@ -5124,7 +5139,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2464 "parser.y" +#line 2479 "parser.y" {PASS12 new_state();state->exception_name=0;} } break; @@ -5135,7 +5150,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2464 "parser.y" +#line 2479 "parser.y" { (yyvsp[(4) - (5)].code) = var_block((yyvsp[(4) - (5)].code)); if(!(yyvsp[(4) - (5)].code)) { @@ -5160,7 +5175,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2480 "parser.y" +#line 2495 "parser.y" {(yyval.catch_list).l=list_new();(yyval.catch_list).finally=0;list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));} } break; @@ -5171,7 +5186,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2481 "parser.y" +#line 2496 "parser.y" {(yyval.catch_list)=(yyvsp[(1) - (2)].catch_list);list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));} } break; @@ -5182,7 +5197,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2482 "parser.y" +#line 2497 "parser.y" {(yyval.catch_list)=(yyvsp[(1) - (1)].catch_list);} } break; @@ -5193,7 +5208,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2483 "parser.y" +#line 2498 "parser.y" { (yyval.catch_list) = (yyvsp[(1) - (2)].catch_list); (yyval.catch_list).finally = 0; @@ -5211,7 +5226,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2491 "parser.y" +#line 2506 "parser.y" { (yyval.catch_list).l=list_new(); (yyval.catch_list).finally = 0; @@ -5229,7 +5244,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2500 "parser.y" +#line 2515 "parser.y" {PASS12 new_state(); state->method->has_exceptions=1; state->method->late_binding=1;//for invariant scope_code @@ -5243,7 +5258,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2503 "parser.y" +#line 2518 "parser.y" { code_t*out = abc_nop(0); @@ -5296,7 +5311,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2549 "parser.y" +#line 2564 "parser.y" { (yyval.code)=(yyvsp[(2) - (2)].value).c; (yyval.code)=abc_throw((yyval.code)); @@ -5310,7 +5325,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2553 "parser.y" +#line 2568 "parser.y" { if(!state->exception_name) syntaxerror("re-throw only possible within a catch block"); @@ -5328,7 +5343,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2564 "parser.y" +#line 2579 "parser.y" { new_state(); if(state->method->has_exceptions) { @@ -5348,7 +5363,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2574 "parser.y" +#line 2589 "parser.y" { /* remove getlocal;pushwith from scope code again */ state->method->scope_code = code_cutlast(code_cutlast(state->method->scope_code)); @@ -5372,7 +5387,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2592 "parser.y" +#line 2607 "parser.y" {PASS12 (yyval.id)="package";} } break; @@ -5383,7 +5398,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2593 "parser.y" +#line 2608 "parser.y" {PASS12 (yyval.id)=(yyvsp[(1) - (1)].id);} } break; @@ -5394,7 +5409,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2595 "parser.y" +#line 2610 "parser.y" {PASS12 (yyval.id) = concat3((yyvsp[(1) - (3)].id),".",(yyvsp[(3) - (3)].id));free((yyvsp[(1) - (3)].id));(yyvsp[(1) - (3)].id)=0;} } break; @@ -5405,7 +5420,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2596 "parser.y" +#line 2611 "parser.y" {PASS12 (yyval.id)=strdup((yyvsp[(1) - (1)].id));} } break; @@ -5416,7 +5431,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2598 "parser.y" +#line 2613 "parser.y" {PASS12 startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;} } break; @@ -5427,7 +5442,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2599 "parser.y" +#line 2614 "parser.y" {PASS12 endpackage();(yyval.code)=0;} } break; @@ -5438,7 +5453,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2600 "parser.y" +#line 2615 "parser.y" {PASS12 startpackage("");} } break; @@ -5449,7 +5464,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2601 "parser.y" +#line 2616 "parser.y" {PASS12 endpackage();(yyval.code)=0;} } break; @@ -5460,7 +5475,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2603 "parser.y" +#line 2618 "parser.y" { PASS12 slotinfo_t*s = registry_find((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name); @@ -5486,7 +5501,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2619 "parser.y" +#line 2634 "parser.y" { PASS12 if(strncmp("flash.", (yyvsp[(2) - (4)].id), 6) && as3_pass==1) { @@ -5510,7 +5525,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2636 "parser.y" +#line 2651 "parser.y" {PASS12 (yyval.flags).flags=0;(yyval.flags).ns=0;} } break; @@ -5521,7 +5536,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2637 "parser.y" +#line 2652 "parser.y" {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);} } break; @@ -5532,7 +5547,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2638 "parser.y" +#line 2653 "parser.y" {PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);} } break; @@ -5543,7 +5558,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2639 "parser.y" +#line 2654 "parser.y" { PASS12 (yyval.flags).flags=(yyvsp[(1) - (2)].flags).flags|(yyvsp[(2) - (2)].flags).flags; @@ -5560,7 +5575,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2646 "parser.y" +#line 2661 "parser.y" {PASS12 (yyval.flags).flags=FLAG_PUBLIC;(yyval.flags).ns=0;} } break; @@ -5571,7 +5586,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2647 "parser.y" +#line 2662 "parser.y" {PASS12 (yyval.flags).flags=FLAG_PRIVATE;(yyval.flags).ns=0;} } break; @@ -5582,7 +5597,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2648 "parser.y" +#line 2663 "parser.y" {PASS12 (yyval.flags).flags=FLAG_PROTECTED;(yyval.flags).ns=0;} } break; @@ -5593,7 +5608,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2649 "parser.y" +#line 2664 "parser.y" {PASS12 (yyval.flags).flags=FLAG_STATIC;(yyval.flags).ns=0;} } break; @@ -5604,7 +5619,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2650 "parser.y" +#line 2665 "parser.y" {PASS12 (yyval.flags).flags=FLAG_DYNAMIC;(yyval.flags).ns=0;} } break; @@ -5615,7 +5630,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2651 "parser.y" +#line 2666 "parser.y" {PASS12 (yyval.flags).flags=FLAG_FINAL;(yyval.flags).ns=0;} } break; @@ -5626,7 +5641,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2652 "parser.y" +#line 2667 "parser.y" {PASS12 (yyval.flags).flags=FLAG_OVERRIDE;(yyval.flags).ns=0;} } break; @@ -5637,7 +5652,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2653 "parser.y" +#line 2668 "parser.y" {PASS12 (yyval.flags).flags=FLAG_NATIVE;(yyval.flags).ns=0;} } break; @@ -5648,7 +5663,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2654 "parser.y" +#line 2669 "parser.y" {PASS12 (yyval.flags).flags=FLAG_PACKAGEINTERNAL;(yyval.flags).ns=0;} } break; @@ -5659,7 +5674,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2655 "parser.y" +#line 2670 "parser.y" {PASS12 (yyval.flags).flags=FLAG_NAMESPACE; (yyval.flags).ns=(yyvsp[(1) - (1)].id); } @@ -5672,7 +5687,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2659 "parser.y" +#line 2674 "parser.y" {PASS12 (yyval.classinfo)=0;} } break; @@ -5683,7 +5698,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2660 "parser.y" +#line 2675 "parser.y" {PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);} } break; @@ -5694,7 +5709,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2662 "parser.y" +#line 2677 "parser.y" {PASS12 (yyval.classinfo_list)=list_new();} } break; @@ -5705,7 +5720,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2663 "parser.y" +#line 2678 "parser.y" {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);} } break; @@ -5716,7 +5731,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2665 "parser.y" +#line 2680 "parser.y" {PASS12 (yyval.classinfo_list)=list_new();} } break; @@ -5727,7 +5742,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2666 "parser.y" +#line 2681 "parser.y" {PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);} } break; @@ -5738,7 +5753,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2670 "parser.y" +#line 2685 "parser.y" {PASS12 startclass(&(yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list));} } break; @@ -5749,7 +5764,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2672 "parser.y" +#line 2687 "parser.y" {PASS12 endclass();(yyval.code)=0;} } break; @@ -5760,7 +5775,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2676 "parser.y" +#line 2691 "parser.y" {PASS12 (yyvsp[(1) - (5)].flags).flags|=FLAG_INTERFACE; startclass(&(yyvsp[(1) - (5)].flags),(yyvsp[(3) - (5)].id),0,(yyvsp[(4) - (5)].classinfo_list));} } @@ -5772,7 +5787,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2679 "parser.y" +#line 2694 "parser.y" {PASS12 endclass();(yyval.code)=0;} } break; @@ -5783,7 +5798,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2692 "parser.y" +#line 2707 "parser.y" { code_t*c = state->cls->static_init->header; c = code_append(c, (yyvsp[(1) - (1)].code)); @@ -5798,7 +5813,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2703 "parser.y" +#line 2718 "parser.y" { syntaxerror("variable declarations not allowed in interfaces"); } @@ -5811,7 +5826,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2706 "parser.y" +#line 2721 "parser.y" { PASS12 (yyvsp[(1) - (8)].flags).flags |= FLAG_PUBLIC; @@ -5831,7 +5846,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2721 "parser.y" +#line 2736 "parser.y" {setslotstate(&(yyvsp[(1) - (2)].flags),(yyvsp[(2) - (2)].token));} } break; @@ -5842,7 +5857,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2721 "parser.y" +#line 2736 "parser.y" {(yyval.code)=(yyvsp[(4) - (4)].code);setslotstate(0, 0);} } break; @@ -5853,7 +5868,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2723 "parser.y" +#line 2738 "parser.y" {(yyval.code) = (yyvsp[(1) - (1)].code);} } break; @@ -5864,7 +5879,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2724 "parser.y" +#line 2739 "parser.y" {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));} } break; @@ -5875,7 +5890,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2727 "parser.y" +#line 2742 "parser.y" { int flags = slotstate_flags->flags; namespace_t ns = modifiers2access(slotstate_flags); @@ -5956,7 +5971,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2801 "parser.y" +#line 2816 "parser.y" {(yyval.constant)=0;} } break; @@ -5967,7 +5982,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2802 "parser.y" +#line 2817 "parser.y" {(yyval.constant)=(yyvsp[(2) - (2)].constant);} } break; @@ -5978,7 +5993,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2804 "parser.y" +#line 2819 "parser.y" {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_uint));} } break; @@ -5989,7 +6004,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2805 "parser.y" +#line 2820 "parser.y" {(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));} } break; @@ -6000,7 +6015,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2806 "parser.y" +#line 2821 "parser.y" {(yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));} } break; @@ -6011,7 +6026,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2807 "parser.y" +#line 2822 "parser.y" {(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));} } break; @@ -6022,7 +6037,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2808 "parser.y" +#line 2823 "parser.y" {(yyval.constant) = constant_new_string2((yyvsp[(1) - (1)].str).str,(yyvsp[(1) - (1)].str).len);free((char*)(yyvsp[(1) - (1)].str).str);} } break; @@ -6033,7 +6048,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2810 "parser.y" +#line 2825 "parser.y" {(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));} } break; @@ -6044,7 +6059,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2811 "parser.y" +#line 2826 "parser.y" {(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));} } break; @@ -6055,7 +6070,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2812 "parser.y" +#line 2827 "parser.y" {(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));} } break; @@ -6066,7 +6081,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2813 "parser.y" +#line 2828 "parser.y" { if(!strcmp((yyvsp[(1) - (1)].id), "NaN")) { (yyval.constant) = constant_new_float(__builtin_nan("")); @@ -6084,7 +6099,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2825 "parser.y" +#line 2840 "parser.y" { PASS12 memset(&(yyval.params),0,sizeof((yyval.params))); @@ -6098,7 +6113,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2829 "parser.y" +#line 2844 "parser.y" { PASS12 (yyval.params)=(yyvsp[(1) - (1)].params); @@ -6112,7 +6127,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2835 "parser.y" +#line 2850 "parser.y" { PASS12 memset(&(yyval.params),0,sizeof((yyval.params))); @@ -6128,7 +6143,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2841 "parser.y" +#line 2856 "parser.y" { PASS12 (yyval.params) =(yyvsp[(1) - (4)].params); @@ -6144,7 +6159,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2849 "parser.y" +#line 2864 "parser.y" { PASS12 (yyval.params) = (yyvsp[(1) - (3)].params); @@ -6159,7 +6174,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2854 "parser.y" +#line 2869 "parser.y" { PASS12 memset(&(yyval.params),0,sizeof((yyval.params))); @@ -6174,7 +6189,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2860 "parser.y" +#line 2875 "parser.y" { PASS12 (yyval.param) = rfx_calloc(sizeof(param_t)); @@ -6192,7 +6207,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2868 "parser.y" +#line 2883 "parser.y" { PASS12 (yyval.param) = rfx_calloc(sizeof(param_t)); @@ -6210,7 +6225,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2878 "parser.y" +#line 2893 "parser.y" {PASS12 (yyval.token)=0;} } break; @@ -6221,7 +6236,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2881 "parser.y" +#line 2896 "parser.y" {PASS12 startfunction(&(yyvsp[(1) - (9)].flags),(yyvsp[(3) - (9)].token),(yyvsp[(4) - (9)].id),&(yyvsp[(6) - (9)].params),(yyvsp[(8) - (9)].classinfo));} } break; @@ -6232,7 +6247,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2882 "parser.y" +#line 2897 "parser.y" { PASS1 endfunction(&(yyvsp[(1) - (12)].flags),(yyvsp[(3) - (12)].token),(yyvsp[(4) - (12)].id),&(yyvsp[(6) - (12)].params),0,0); @@ -6256,7 +6271,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2898 "parser.y" +#line 2913 "parser.y" {PASS12 (yyval.id)=0;} } break; @@ -6267,7 +6282,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2900 "parser.y" +#line 2915 "parser.y" {PASS12 innerfunction((yyvsp[(2) - (7)].id),&(yyvsp[(4) - (7)].params),(yyvsp[(6) - (7)].classinfo));} } break; @@ -6278,7 +6293,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2901 "parser.y" +#line 2916 "parser.y" { PASS1 endfunction(0,0,(yyvsp[(2) - (10)].id),&(yyvsp[(4) - (10)].params),0,0); @@ -6306,7 +6321,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2923 "parser.y" +#line 2938 "parser.y" { PASS1 NEW(unresolvedinfo_t,c); memset(c, 0, sizeof(*c)); @@ -6317,7 +6332,7 @@ PASS2 c->nsset = get_current_imports(); /* make the compiler look for this class in the current directory, just in case: */ - as3_schedule_class_noerror(state->package, (yyvsp[(1) - (1)].id)); + //as3_schedule_class_noerror(state->package, $1); } (yyval.classinfo) = (classinfo_t*)c; PASS2 @@ -6334,7 +6349,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2942 "parser.y" +#line 2957 "parser.y" { PASS1 NEW(unresolvedinfo_t,c); memset(c, 0, sizeof(*c)); @@ -6357,7 +6372,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2959 "parser.y" +#line 2974 "parser.y" {PASS12 (yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));} } break; @@ -6368,7 +6383,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2960 "parser.y" +#line 2975 "parser.y" {PASS12 (yyval.classinfo_list)=(yyvsp[(1) - (3)].classinfo_list);list_append((yyval.classinfo_list),(yyvsp[(3) - (3)].classinfo));} } break; @@ -6379,7 +6394,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2962 "parser.y" +#line 2977 "parser.y" {PASS12 (yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);} } break; @@ -6390,7 +6405,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2963 "parser.y" +#line 2978 "parser.y" {PASS12 (yyval.classinfo)=registry_getanytype();} } break; @@ -6401,7 +6416,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2964 "parser.y" +#line 2979 "parser.y" {PASS12 (yyval.classinfo)=registry_getanytype();} } break; @@ -6412,7 +6427,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2973 "parser.y" +#line 2988 "parser.y" {PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);} } break; @@ -6423,7 +6438,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2974 "parser.y" +#line 2989 "parser.y" {PASS12 (yyval.classinfo)=0;} } break; @@ -6434,7 +6449,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2978 "parser.y" +#line 2993 "parser.y" {(yyval.value_list).cc=0;(yyval.value_list).number=0;} } break; @@ -6445,7 +6460,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2979 "parser.y" +#line 2994 "parser.y" {(yyval.value_list)=(yyvsp[(2) - (3)].value_list);} } break; @@ -6456,7 +6471,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2981 "parser.y" +#line 2996 "parser.y" {(yyval.value_list).cc=0;(yyval.value_list).number=0;} } break; @@ -6467,7 +6482,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2985 "parser.y" +#line 3000 "parser.y" {(yyval.value_list).number=1; (yyval.value_list).cc = (yyvsp[(1) - (1)].value).c; } @@ -6480,7 +6495,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2989 "parser.y" +#line 3004 "parser.y" {(yyval.value_list) = (yyvsp[(1) - (2)].value_list);} } break; @@ -6491,7 +6506,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2990 "parser.y" +#line 3005 "parser.y" { (yyval.value_list).number= (yyvsp[(1) - (2)].value_list).number+1; (yyval.value_list).cc = code_append((yyvsp[(1) - (2)].value_list).cc, (yyvsp[(2) - (2)].value).c); @@ -6505,7 +6520,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 2996 "parser.y" +#line 3011 "parser.y" { (yyval.value).c = (yyvsp[(2) - (4)].value).c; if((yyval.value).c->opcode == OPCODE_COERCE_A) (yyval.value).c = code_cutlast((yyval.value).c); @@ -6546,7 +6561,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3032 "parser.y" +#line 3047 "parser.y" { (yyval.value).c = (yyvsp[(1) - (4)].value).c; @@ -6601,7 +6616,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3078 "parser.y" +#line 3093 "parser.y" { if(!state->cls) syntaxerror("super() not allowed outside of a class"); if(!state->method) syntaxerror("super() not allowed outside of a function"); @@ -6631,7 +6646,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3099 "parser.y" +#line 3114 "parser.y" { (yyval.value).c = (yyvsp[(2) - (2)].value).c; if((yyval.value).c->opcode == OPCODE_COERCE_A) { @@ -6661,7 +6676,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3120 "parser.y" +#line 3135 "parser.y" { (yyval.code) = abc_returnvoid(0); } @@ -6674,7 +6689,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3123 "parser.y" +#line 3138 "parser.y" { (yyval.code) = (yyvsp[(2) - (2)].value).c; (yyval.code) = abc_returnvalue((yyval.code)); @@ -6688,7 +6703,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3130 "parser.y" +#line 3145 "parser.y" {(yyval.value)=(yyvsp[(1) - (1)].value);} } break; @@ -6699,7 +6714,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3131 "parser.y" +#line 3146 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; @@ -6710,7 +6725,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3132 "parser.y" +#line 3147 "parser.y" { (yyval.value).c = (yyvsp[(1) - (3)].value).c; (yyval.value).c = cut_last_push((yyval.value).c); @@ -6726,7 +6741,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3138 "parser.y" +#line 3153 "parser.y" { (yyval.code)=cut_last_push((yyvsp[(1) - (1)].value).c); } @@ -6739,7 +6754,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3144 "parser.y" +#line 3159 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; @@ -6750,7 +6765,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3148 "parser.y" +#line 3163 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; @@ -6761,7 +6776,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3150 "parser.y" +#line 3165 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; @@ -6772,7 +6787,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3152 "parser.y" +#line 3167 "parser.y" {(yyval.value) = (yyvsp[(1) - (1)].value);} } break; @@ -6783,7 +6798,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3156 "parser.y" +#line 3171 "parser.y" { (yyval.value).c = 0; namespace_t ns = {ACCESS_PACKAGE, ""}; @@ -6809,7 +6824,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3173 "parser.y" +#line 3188 "parser.y" {(yyval.value).c = abc_pushbyte(0, (yyvsp[(1) - (1)].number_uint)); //MULTINAME(m, registry_getintclass()); //$$.c = abc_coerce2($$.c, &m); // FIXME @@ -6824,7 +6839,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3178 "parser.y" +#line 3193 "parser.y" {(yyval.value).c = abc_pushshort(0, (yyvsp[(1) - (1)].number_uint)); (yyval.value).t = TYPE_INT; } @@ -6837,7 +6852,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3181 "parser.y" +#line 3196 "parser.y" {(yyval.value).c = abc_pushint(0, (yyvsp[(1) - (1)].number_int)); (yyval.value).t = TYPE_INT; } @@ -6850,7 +6865,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3184 "parser.y" +#line 3199 "parser.y" {(yyval.value).c = abc_pushuint(0, (yyvsp[(1) - (1)].number_uint)); (yyval.value).t = TYPE_UINT; } @@ -6863,7 +6878,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3187 "parser.y" +#line 3202 "parser.y" {(yyval.value).c = abc_pushdouble(0, (yyvsp[(1) - (1)].number_float)); (yyval.value).t = TYPE_FLOAT; } @@ -6876,7 +6891,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3190 "parser.y" +#line 3205 "parser.y" {(yyval.value).c = abc_pushstring2(0, &(yyvsp[(1) - (1)].str));free((char*)(yyvsp[(1) - (1)].str).str); (yyval.value).t = TYPE_STRING; } @@ -6889,7 +6904,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3193 "parser.y" +#line 3208 "parser.y" {(yyval.value).c = abc_pushundefined(0); (yyval.value).t = TYPE_ANY; } @@ -6902,7 +6917,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3196 "parser.y" +#line 3211 "parser.y" {(yyval.value).c = abc_pushtrue(0); (yyval.value).t = TYPE_BOOLEAN; } @@ -6915,7 +6930,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3199 "parser.y" +#line 3214 "parser.y" {(yyval.value).c = abc_pushfalse(0); (yyval.value).t = TYPE_BOOLEAN; } @@ -6928,7 +6943,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3202 "parser.y" +#line 3217 "parser.y" {(yyval.value).c = abc_pushnull(0); (yyval.value).t = TYPE_NULL; } @@ -6941,7 +6956,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3206 "parser.y" +#line 3221 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterequals((yyval.value).c);(yyval.value).c=abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6954,7 +6969,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3209 "parser.y" +#line 3224 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterthan((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6967,7 +6982,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3212 "parser.y" +#line 3227 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterthan((yyval.value).c);(yyval.value).c=abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6980,7 +6995,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3215 "parser.y" +#line 3230 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_greaterequals((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -6993,7 +7008,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3218 "parser.y" +#line 3233 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_equals((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -7006,7 +7021,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3221 "parser.y" +#line 3236 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_strictequals((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -7019,7 +7034,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3224 "parser.y" +#line 3239 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_strictequals((yyval.value).c);(yyval.value).c = abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -7032,7 +7047,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3227 "parser.y" +#line 3242 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c);(yyval.value).c = abc_equals((yyval.value).c);(yyval.value).c = abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; } @@ -7045,7 +7060,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3231 "parser.y" +#line 3246 "parser.y" {(yyval.value).t = join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'O'); (yyval.value).c = (yyvsp[(1) - (3)].value).c; (yyval.value).c = converttype((yyval.value).c, (yyvsp[(1) - (3)].value).t, (yyval.value).t); @@ -7066,7 +7081,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3242 "parser.y" +#line 3257 "parser.y" { (yyval.value).t = join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'A'); /*printf("%08x:\n",$1.t); @@ -7093,7 +7108,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3260 "parser.y" +#line 3275 "parser.y" {(yyval.value).c=(yyvsp[(2) - (2)].value).c; (yyval.value).c = abc_not((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; @@ -7107,7 +7122,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3265 "parser.y" +#line 3280 "parser.y" {(yyval.value).c=(yyvsp[(2) - (2)].value).c; (yyval.value).c = abc_bitnot((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -7121,7 +7136,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3270 "parser.y" +#line 3285 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_bitand((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -7135,7 +7150,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3275 "parser.y" +#line 3290 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_bitxor((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -7149,7 +7164,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3280 "parser.y" +#line 3295 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_bitor((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -7163,7 +7178,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3285 "parser.y" +#line 3300 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_rshift((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -7177,7 +7192,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3289 "parser.y" +#line 3304 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_urshift((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -7191,7 +7206,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3293 "parser.y" +#line 3308 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_lshift((yyval.value).c); (yyval.value).t = TYPE_INT; @@ -7205,7 +7220,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3298 "parser.y" +#line 3313 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_divide((yyval.value).c); (yyval.value).t = TYPE_NUMBER; @@ -7219,7 +7234,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3302 "parser.y" +#line 3317 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_modulo((yyval.value).c); (yyval.value).t = TYPE_NUMBER; @@ -7233,7 +7248,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3306 "parser.y" +#line 3321 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); if(BOTH_INT((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t)) { (yyval.value).c = abc_add_i((yyval.value).c); @@ -7252,7 +7267,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3315 "parser.y" +#line 3330 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); if(BOTH_INT((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t)) { (yyval.value).c = abc_subtract_i((yyval.value).c); @@ -7271,7 +7286,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3324 "parser.y" +#line 3339 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); if(BOTH_INT((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t)) { (yyval.value).c = abc_multiply_i((yyval.value).c); @@ -7290,7 +7305,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3334 "parser.y" +#line 3349 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c,(yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_in((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; @@ -7304,7 +7319,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3339 "parser.y" +#line 3354 "parser.y" {char use_astype=0; // flash player's astype works differently than astypelate if(use_astype && TYPE_IS_CLASS((yyvsp[(3) - (3)].value).t) && (yyvsp[(3) - (3)].value).t->data) { MULTINAME(m, (classinfo_t*)((yyvsp[(3) - (3)].value).t->data)); @@ -7325,7 +7340,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3352 "parser.y" +#line 3367 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c, (yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_instanceof((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; @@ -7339,7 +7354,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3357 "parser.y" +#line 3372 "parser.y" {(yyval.value).c = code_append((yyvsp[(1) - (3)].value).c, (yyvsp[(3) - (3)].value).c); (yyval.value).c = abc_istypelate((yyval.value).c); (yyval.value).t = TYPE_BOOLEAN; @@ -7353,7 +7368,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3362 "parser.y" +#line 3377 "parser.y" { (yyval.value).c = (yyvsp[(3) - (4)].value).c; (yyval.value).c = abc_typeof((yyval.value).c); @@ -7368,7 +7383,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3368 "parser.y" +#line 3383 "parser.y" { (yyval.value).c = cut_last_push((yyvsp[(2) - (2)].value).c); (yyval.value).c = abc_pushundefined((yyval.value).c); @@ -7383,7 +7398,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3374 "parser.y" +#line 3389 "parser.y" { (yyval.value).c = abc_pushundefined(0); (yyval.value).t = TYPE_ANY; } @@ -7396,7 +7411,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3378 "parser.y" +#line 3393 "parser.y" {(yyval.value)=(yyvsp[(2) - (3)].value);} } break; @@ -7407,7 +7422,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3380 "parser.y" +#line 3395 "parser.y" { (yyval.value)=(yyvsp[(2) - (2)].value); if(IS_INT((yyvsp[(2) - (2)].value).t)) { @@ -7427,7 +7442,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3391 "parser.y" +#line 3406 "parser.y" { (yyval.value).c = (yyvsp[(1) - (4)].value).c; (yyval.value).c = code_append((yyval.value).c, (yyvsp[(3) - (4)].value).c); @@ -7445,7 +7460,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3400 "parser.y" +#line 3415 "parser.y" { (yyval.value).c = code_new(); (yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc); @@ -7461,7 +7476,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3407 "parser.y" +#line 3422 "parser.y" {(yyval.value_list).cc=0;(yyval.value_list).number=0;} } break; @@ -7472,7 +7487,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3408 "parser.y" +#line 3423 "parser.y" {(yyval.value_list)=(yyvsp[(1) - (1)].value_list);} } break; @@ -7483,7 +7498,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3410 "parser.y" +#line 3425 "parser.y" { (yyval.value_list).cc = 0; (yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(1) - (3)].value).c); @@ -7499,7 +7514,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3416 "parser.y" +#line 3431 "parser.y" { (yyval.value_list).cc = (yyvsp[(1) - (5)].value_list).cc; (yyval.value_list).number = (yyvsp[(1) - (5)].value_list).number+2; @@ -7515,7 +7530,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3425 "parser.y" +#line 3440 "parser.y" { (yyval.value).c = code_new(); (yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc); @@ -7531,7 +7546,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3432 "parser.y" +#line 3447 "parser.y" { code_t*c = (yyvsp[(3) - (3)].value).c; if(BOTH_INT((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t)) { @@ -7552,7 +7567,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3444 "parser.y" +#line 3459 "parser.y" { code_t*c = abc_modulo((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '%'), (yyvsp[(1) - (3)].value).t); @@ -7568,7 +7583,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3450 "parser.y" +#line 3465 "parser.y" { code_t*c = abc_lshift((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '<'), (yyvsp[(1) - (3)].value).t); @@ -7584,7 +7599,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3456 "parser.y" +#line 3471 "parser.y" { code_t*c = abc_rshift((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '>'), (yyvsp[(1) - (3)].value).t); @@ -7600,7 +7615,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3462 "parser.y" +#line 3477 "parser.y" { code_t*c = abc_urshift((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'U'), (yyvsp[(1) - (3)].value).t); @@ -7616,7 +7631,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3468 "parser.y" +#line 3483 "parser.y" { code_t*c = abc_divide((yyvsp[(3) - (3)].value).c); c=converttype(c, join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, '/'), (yyvsp[(1) - (3)].value).t); @@ -7632,7 +7647,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3474 "parser.y" +#line 3489 "parser.y" { code_t*c = abc_bitor((yyvsp[(3) - (3)].value).c); c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t); @@ -7648,7 +7663,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3480 "parser.y" +#line 3495 "parser.y" { code_t*c = abc_bitxor((yyvsp[(3) - (3)].value).c); c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t); @@ -7664,7 +7679,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3486 "parser.y" +#line 3501 "parser.y" { code_t*c = (yyvsp[(3) - (3)].value).c; @@ -7687,7 +7702,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3499 "parser.y" +#line 3514 "parser.y" { code_t*c = (yyvsp[(3) - (3)].value).c; if(TYPE_IS_INT((yyvsp[(1) - (3)].value).t)) { c=abc_subtract_i(c); @@ -7708,7 +7723,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3510 "parser.y" +#line 3525 "parser.y" { code_t*c = 0; c = code_append(c, (yyvsp[(3) - (3)].value).c); c = converttype(c, (yyvsp[(3) - (3)].value).t, (yyvsp[(1) - (3)].value).t); @@ -7724,7 +7739,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3517 "parser.y" +#line 3532 "parser.y" { (yyval.value).t = join_types((yyvsp[(3) - (5)].value).t,(yyvsp[(5) - (5)].value).t,'?'); (yyval.value).c = (yyvsp[(1) - (5)].value).c; @@ -7746,7 +7761,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3530 "parser.y" +#line 3545 "parser.y" { code_t*c = 0; classinfo_t*type = (yyvsp[(1) - (2)].value).t; if(is_getlocal((yyvsp[(1) - (2)].value).c) && (TYPE_IS_INT((yyvsp[(1) - (2)].value).t) || TYPE_IS_NUMBER((yyvsp[(1) - (2)].value).t))) { @@ -7781,7 +7796,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3557 "parser.y" +#line 3572 "parser.y" { code_t*c = 0; classinfo_t*type = (yyvsp[(1) - (2)].value).t; if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) { @@ -7804,7 +7819,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3571 "parser.y" +#line 3586 "parser.y" { code_t*c = 0; classinfo_t*type = (yyvsp[(2) - (2)].value).t; if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) { @@ -7827,7 +7842,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3585 "parser.y" +#line 3600 "parser.y" { code_t*c = 0; classinfo_t*type = (yyvsp[(2) - (2)].value).t; if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) { @@ -7850,7 +7865,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3600 "parser.y" +#line 3615 "parser.y" { if(!state->cls->info) syntaxerror("super keyword not allowed outside a class"); classinfo_t*t = state->cls->info->superclass; @@ -7873,7 +7888,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3614 "parser.y" +#line 3629 "parser.y" { // attribute TODO (yyval.value).c = abc_pushundefined(0); @@ -7889,7 +7904,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3621 "parser.y" +#line 3636 "parser.y" { // child attribute TODO (yyval.value).c = abc_pushundefined(0); @@ -7905,7 +7920,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3628 "parser.y" +#line 3643 "parser.y" { // namespace declaration TODO (yyval.value).c = abc_pushundefined(0); @@ -7921,7 +7936,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3635 "parser.y" +#line 3650 "parser.y" { // descendants TODO (yyval.value).c = abc_pushundefined(0); @@ -7937,7 +7952,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3642 "parser.y" +#line 3657 "parser.y" { // filter TODO (yyval.value).c = abc_pushundefined(0); @@ -7953,7 +7968,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3653 "parser.y" +#line 3668 "parser.y" { (yyval.value).c = (yyvsp[(1) - (3)].value).c; classinfo_t*t = (yyvsp[(1) - (3)].value).t; @@ -7983,15 +7998,17 @@ PASS2 } else if((yyvsp[(1) - (3)].value).c && (yyvsp[(1) - (3)].value).c->opcode == OPCODE___PUSHPACKAGE__) { string_t*package = (yyvsp[(1) - (3)].value).c->data[0]; char*package2 = concat3(package->str, ".", (yyvsp[(3) - (3)].id)); - if(dict_contains(state->import_toplevel_packages, package2)) { + + slotinfo_t*a = registry_find(package->str, (yyvsp[(3) - (3)].id)); + if(a) { + (yyval.value) = push_class(a); + } else if(dict_contains(state->import_toplevel_packages, package2) || + registry_ispackage(package2)) { (yyval.value).c = (yyvsp[(1) - (3)].value).c; (yyval.value).c->data[0] = string_new4(package2); (yyval.value).t = 0; } else { - slotinfo_t*a = registry_find(package->str, (yyvsp[(3) - (3)].id)); - if(!a) - syntaxerror("couldn't resolve %s", package2); - (yyval.value) = push_class(a); + syntaxerror("couldn't resolve %s", package2); } } else { /* when resolving a property on an unknown type, we do know the @@ -8012,7 +8029,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3703 "parser.y" +#line 3720 "parser.y" { PASS1 /* Queue unresolved identifiers for checking against the parent @@ -8026,9 +8043,9 @@ PASS2 unknown_variable((yyvsp[(1) - (1)].id)); } - /* let the compiler know that it might check the current directory/package + /* let the compiler know that it might want to check the current directory/package for this identifier- maybe there's a file $1.as defining $1. */ - as3_schedule_class_noerror(state->package, (yyvsp[(1) - (1)].id)); + //as3_schedule_class_noerror(state->package, $1); PASS2 (yyval.value).t = 0; @@ -8096,7 +8113,8 @@ PASS2 } /* look through package prefixes */ - if(dict_contains(state->import_toplevel_packages, (yyvsp[(1) - (1)].id))) { + if(dict_contains(state->import_toplevel_packages, (yyvsp[(1) - (1)].id)) || + registry_ispackage((yyvsp[(1) - (1)].id))) { (yyval.value).c = abc___pushpackage__((yyval.value).c, (yyvsp[(1) - (1)].id)); (yyval.value).t = 0; break; @@ -8124,7 +8142,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3808 "parser.y" +#line 3826 "parser.y" { PASS12 NEW(namespace_decl_t,n); @@ -8141,7 +8159,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3815 "parser.y" +#line 3833 "parser.y" { PASS12 NEW(namespace_decl_t,n); @@ -8158,7 +8176,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3822 "parser.y" +#line 3840 "parser.y" { PASS12 NEW(namespace_decl_t,n); @@ -8175,7 +8193,7 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3829 "parser.y" +#line 3847 "parser.y" { PASS12 trie_put(active_namespaces, (yyvsp[(2) - (2)].namespace_decl)->name, (void*)(yyvsp[(2) - (2)].namespace_decl)->url); @@ -8199,11 +8217,19 @@ PASS2 if(as3_pass==2) { /* Line 1464 of skeleton.m4 */ -#line 3844 "parser.y" +#line 3862 "parser.y" { - PASS12 - char*url = 0; - trie_put(active_namespaces, (yyvsp[(3) - (3)].classinfo)->name, url); + + const char*url = (yyvsp[(3) - (3)].classinfo)->name; + varinfo_t*s = (varinfo_t*)(yyvsp[(3) - (3)].classinfo); + if(!s || s->kind != INFOTYPE_SLOT) + syntaxerror("%s.%s is not a public namespace (%d)", (yyvsp[(3) - (3)].classinfo)->package, (yyvsp[(3) - (3)].classinfo)->name, s?s->kind:-1); + if(!s->value || !NS_TYPE(s->value->type)) + syntaxerror("%s.%s is not a namespace", (yyvsp[(3) - (3)].classinfo)->package, (yyvsp[(3) - (3)].classinfo)->name); + url = s->value->ns->name; + + trie_put(active_namespaces, (yyvsp[(3) - (3)].classinfo)->name, (void*)url); + add_active_url(url); (yyval.code)=0; } } @@ -8213,7 +8239,7 @@ PASS2 /* Line 1464 of skeleton.m4 */ -#line 8217 "parser.tab.c" +#line 8243 "parser.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);