/* Copy the second part of user declarations. */
/* Line 273 of skeleton.m4 */
-#line 265 "parser.y"
+#line 266 "parser.y"
static int a3_error(char*s)
static namespace_list_t nl1 = {&ns1,&nl2};
static namespace_set_t nopackage_namespace_set = {&nl1};
+dict_t*conditionals=0;
+void as3_set_definition(const char*c)
+{
+ if(!conditionals)
+ conditionals = dict_new();
+ if(!dict_contains(conditionals,c))
+ dict_put(conditionals,c,0);
+}
+
static void new_state()
{
NEW(state_t, s);
v->is_parameter = 1;
}
}
- if(m->uses_slots) {
- dict_dump(m->slots, stdout, "");
- }
methodstate_list_t*l = m->innerfunctions;
while(l) {
//class method
memberinfo_t* m = registry_findmember(state->cls->info, ns.name, name, 0);
if(m) {
- printf("%s.%s | %s.%s\n",
- m->package, m->name,
- ns.name, name);
syntaxerror("class already contains a %s '%s'", infotypename((slotinfo_t*)m), m->name);
}
minfo = methodinfo_register_onclass(state->cls->info, ns.access, ns.name, name);
as3_error("can't convert type %s%s%s to %s%s%s",
from->package, from->package?".":"", from->name,
to->package, to->package?".":"", to->name);
+
return c;
}
#define PASS1 }} if(as3_pass == 1) {{
#define PASS1END }} if(as3_pass == 2) {{
#define PASS2 }} if(as3_pass == 2) {{
-#define PASS12 }} {{
+#define PASS12 }} if(as3_pass == 1 || as3_pass == 2) {{
#define PASS12END }} if(as3_pass == 2) {{
+#define PASS_ALWAYS }} {{
/* Line 273 of skeleton.m4 */
-#line 2146 "parser.tab.c"
+#line 2151 "parser.tab.c"
#ifdef short
# undef short
/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 2124, 2124, 2126, 2126, 2127, 2128, 2130, 2131, 2132,
- 2133, 2134, 2135, 2136, 2137, 2139, 2139, 2140, 2141, 2143,
- 2144, 2145, 2146, 2147, 2148, 2149, 2151, 2152, 2154, 2155,
- 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167,
- 2168, 2169, 2170, 2171, 2174, 2175, 2176, 2177, 2178, 2179,
- 2180, 2181, 2185, 2186, 2190, 2197, 2201, 2202, 2206, 2207,
- 2209, 2210, 2212, 2273, 2274, 2277, 2277, 2296, 2297, 2298,
- 2303, 2307, 2312, 2313, 2315, 2335, 2383, 2383, 2402, 2402,
- 2417, 2420, 2423, 2426, 2430, 2431, 2432, 2433, 2434, 2435,
- 2437, 2448, 2451, 2451, 2482, 2482, 2507, 2507, 2523, 2524,
- 2525, 2526, 2534, 2543, 2543, 2592, 2596, 2607, 2617, 2634,
- 2635, 2636, 2638, 2639, 2641, 2641, 2643, 2643, 2646, 2660,
- 2676, 2677, 2678, 2679, 2686, 2687, 2688, 2689, 2690, 2691,
- 2692, 2693, 2694, 2695, 2699, 2700, 2702, 2703, 2705, 2706,
- 2710, 2708, 2716, 2714, 2723, 2724, 2725, 2726, 2727, 2728,
- 2729, 2730, 2732, 2738, 2739, 2740, 2741, 2742, 2743, 2746,
- 2759, 2759, 2761, 2761, 2763, 2764, 2766, 2841, 2842, 2844,
- 2845, 2846, 2847, 2848, 2850, 2851, 2852, 2853, 2865, 2869,
- 2875, 2881, 2889, 2894, 2900, 2908, 2916, 2917, 2918, 2921,
- 2920, 2937, 2938, 2940, 2939, 2963, 2982, 2996, 2997, 2999,
- 3000, 3002, 3003, 3004, 3013, 3014, 3018, 3019, 3021, 3022,
- 3023, 3025, 3029, 3030, 3035, 3036, 3072, 3118, 3139, 3160,
- 3163, 3170, 3171, 3172, 3178, 3184, 3186, 3188, 3190, 3192,
- 3194, 3196, 3213, 3218, 3221, 3224, 3227, 3230, 3233, 3236,
- 3239, 3242, 3246, 3249, 3252, 3255, 3258, 3261, 3264, 3267,
- 3271, 3282, 3300, 3305, 3310, 3315, 3320, 3325, 3329, 3333,
- 3338, 3342, 3346, 3355, 3364, 3374, 3379, 3391, 3397, 3402,
- 3408, 3414, 3418, 3420, 3431, 3440, 3447, 3448, 3450, 3456,
- 3465, 3472, 3484, 3490, 3496, 3502, 3508, 3514, 3520, 3526,
- 3539, 3550, 3557, 3570, 3597, 3611, 3625, 3639, 3654, 3661,
- 3668, 3675, 3682, 3693, 3745, 3854, 3861, 3868, 3875, 3890
+ 0, 2130, 2130, 2132, 2132, 2133, 2134, 2136, 2137, 2138,
+ 2139, 2140, 2141, 2142, 2143, 2145, 2145, 2146, 2147, 2149,
+ 2150, 2151, 2152, 2153, 2154, 2155, 2157, 2158, 2160, 2161,
+ 2164, 2165, 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173,
+ 2174, 2175, 2176, 2177, 2180, 2181, 2182, 2183, 2184, 2185,
+ 2186, 2187, 2191, 2192, 2196, 2203, 2215, 2216, 2220, 2221,
+ 2223, 2224, 2226, 2287, 2288, 2291, 2291, 2310, 2311, 2312,
+ 2317, 2321, 2326, 2327, 2329, 2349, 2397, 2397, 2416, 2416,
+ 2431, 2434, 2437, 2440, 2444, 2445, 2446, 2447, 2448, 2449,
+ 2451, 2462, 2465, 2465, 2496, 2496, 2521, 2521, 2537, 2538,
+ 2539, 2540, 2548, 2557, 2557, 2606, 2610, 2621, 2631, 2648,
+ 2649, 2650, 2652, 2653, 2655, 2655, 2657, 2657, 2660, 2674,
+ 2690, 2691, 2692, 2693, 2700, 2701, 2702, 2703, 2704, 2705,
+ 2706, 2707, 2708, 2709, 2713, 2714, 2716, 2717, 2719, 2720,
+ 2724, 2722, 2730, 2728, 2737, 2738, 2739, 2740, 2741, 2742,
+ 2743, 2744, 2746, 2752, 2753, 2754, 2755, 2756, 2757, 2760,
+ 2773, 2773, 2775, 2775, 2777, 2778, 2780, 2865, 2866, 2868,
+ 2869, 2870, 2871, 2872, 2874, 2875, 2876, 2877, 2889, 2893,
+ 2899, 2905, 2913, 2918, 2924, 2932, 2940, 2941, 2942, 2945,
+ 2944, 2961, 2962, 2964, 2963, 2987, 3006, 3020, 3021, 3023,
+ 3024, 3026, 3027, 3028, 3037, 3038, 3042, 3043, 3045, 3046,
+ 3047, 3049, 3053, 3054, 3059, 3060, 3096, 3142, 3163, 3184,
+ 3187, 3194, 3195, 3196, 3202, 3208, 3209, 3210, 3211, 3212,
+ 3214, 3216, 3233, 3238, 3241, 3244, 3247, 3250, 3253, 3256,
+ 3259, 3262, 3266, 3269, 3272, 3275, 3278, 3281, 3284, 3287,
+ 3291, 3302, 3320, 3325, 3330, 3335, 3340, 3345, 3349, 3353,
+ 3358, 3362, 3366, 3375, 3384, 3394, 3399, 3411, 3417, 3422,
+ 3428, 3434, 3438, 3440, 3451, 3460, 3467, 3468, 3470, 3476,
+ 3485, 3492, 3504, 3510, 3516, 3522, 3528, 3534, 3540, 3546,
+ 3559, 3570, 3577, 3590, 3617, 3631, 3645, 3659, 3674, 3681,
+ 3688, 3695, 3702, 3717, 3774, 3883, 3890, 3897, 3904, 3919
};
#endif
switch (yyn)
{
+ case 13:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2142 "parser.y"
+ {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
+ }
+ break;
+
+
+
+ case 24:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2154 "parser.y"
+ {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
+ }
+ break;
+
+
+
case 26:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2151 "parser.y"
+#line 2157 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2152 "parser.y"
+#line 2158 "parser.y"
{(yyval.code)=code_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2154 "parser.y"
+#line 2160 "parser.y"
{(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2155 "parser.y"
+#line 2161 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2170 "parser.y"
+#line 2176 "parser.y"
{(yyval.code)=(yyvsp[(2) - (3)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2171 "parser.y"
+#line 2177 "parser.y"
{(yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2174 "parser.y"
+#line 2180 "parser.y"
{(yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2181 "parser.y"
- {(yyval.code)=(yyvsp[(3) - (4)].code);}
+#line 2187 "parser.y"
+ {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2185 "parser.y"
+#line 2191 "parser.y"
{(yyval.code)=(yyvsp[(1) - (2)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2186 "parser.y"
+#line 2192 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2190 "parser.y"
+#line 2196 "parser.y"
{
code_t**cc = &global->init->method->body->code;
*cc = code_append(*cc, (yyvsp[(1) - (1)].code));
+ case 55:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2203 "parser.y"
+ {
+ PASS12
+ (yyval.number_int)=as3_pass;
+ char*key = concat3((yyvsp[(1) - (3)].id),"::",(yyvsp[(3) - (3)].id));
+ if(!conditionals || !dict_contains(conditionals, key)) {
+ as3_pass=0;
+ }
+ free(key);
+}
+ }
+ break;
+
+
+
case 56:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2201 "parser.y"
+#line 2215 "parser.y"
{(yyval.value)=(yyvsp[(2) - (2)].value);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2202 "parser.y"
+#line 2216 "parser.y"
{(yyval.value).c=abc_pushundefined(0);
(yyval.value).t=TYPE_ANY;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2206 "parser.y"
+#line 2220 "parser.y"
{(yyval.code)=(yyvsp[(2) - (2)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2207 "parser.y"
+#line 2221 "parser.y"
{(yyval.code)=(yyvsp[(2) - (2)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2209 "parser.y"
+#line 2223 "parser.y"
{(yyval.code) = (yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2210 "parser.y"
+#line 2224 "parser.y"
{(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2213 "parser.y"
+#line 2227 "parser.y"
{
PASS12
if(variable_exists((yyvsp[(1) - (3)].id)))
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2273 "parser.y"
+#line 2287 "parser.y"
{(yyval.code) = code_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2274 "parser.y"
+#line 2288 "parser.y"
{(yyval.code)=(yyvsp[(2) - (2)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2277 "parser.y"
+#line 2291 "parser.y"
{PASS12 new_state();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2277 "parser.y"
+#line 2291 "parser.y"
{
(yyval.code) = code_new();
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2296 "parser.y"
+#line 2310 "parser.y"
{(yyval.code)=code_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2303 "parser.y"
+#line 2317 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2307 "parser.y"
+#line 2321 "parser.y"
{
PASS12
(yyval.id)=(yyvsp[(1) - (1)].id);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2312 "parser.y"
+#line 2326 "parser.y"
{PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (2)].id);(yyval.for_start).each=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2313 "parser.y"
+#line 2327 "parser.y"
{PASS12 new_state();(yyval.for_start).name=(yyvsp[(1) - (3)].id);(yyval.for_start).each=1;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2315 "parser.y"
+#line 2329 "parser.y"
{
if((yyvsp[(1) - (8)].for_start).each) syntaxerror("invalid syntax: ; not allowed in for each statement");
(yyval.code) = code_new();
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2335 "parser.y"
+#line 2349 "parser.y"
{
variable_t*var = find_variable(state, (yyvsp[(2) - (6)].id));
if(!var) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2383 "parser.y"
+#line 2397 "parser.y"
{PASS12 new_state();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2383 "parser.y"
+#line 2397 "parser.y"
{
(yyval.code) = code_new();
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2402 "parser.y"
+#line 2416 "parser.y"
{PASS12 new_state();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2402 "parser.y"
+#line 2416 "parser.y"
{
(yyval.code) = code_new();
code_t*loopstart = (yyval.code) = abc_label((yyval.code));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2417 "parser.y"
+#line 2431 "parser.y"
{
(yyval.code) = abc___break__(0, "");
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2420 "parser.y"
+#line 2434 "parser.y"
{
(yyval.code) = abc___break__(0, (yyvsp[(2) - (2)].id));
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2423 "parser.y"
+#line 2437 "parser.y"
{
(yyval.code) = abc___continue__(0, "");
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2426 "parser.y"
+#line 2440 "parser.y"
{
(yyval.code) = abc___continue__(0, (yyvsp[(2) - (2)].id));
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2430 "parser.y"
+#line 2444 "parser.y"
{(yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2431 "parser.y"
+#line 2445 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2432 "parser.y"
+#line 2446 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2433 "parser.y"
+#line 2447 "parser.y"
{(yyval.code)=code_append((yyvsp[(1) - (2)].code),(yyvsp[(2) - (2)].code));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2434 "parser.y"
+#line 2448 "parser.y"
{(yyval.code)=(yyvsp[(1) - (1)].code);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2435 "parser.y"
+#line 2449 "parser.y"
{(yyval.code)=code_append((yyval.code),(yyvsp[(2) - (2)].code));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2437 "parser.y"
+#line 2451 "parser.y"
{
(yyval.code) = abc_getlocal(0, state->switch_var);
(yyval.code) = code_append((yyval.code), (yyvsp[(2) - (4)].value).c);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2448 "parser.y"
+#line 2462 "parser.y"
{
(yyval.code) = (yyvsp[(3) - (3)].code);
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2451 "parser.y"
+#line 2465 "parser.y"
{PASS12 new_state();state->switch_var=alloc_local();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2451 "parser.y"
+#line 2465 "parser.y"
{
(yyval.code)=(yyvsp[(4) - (8)].value).c;
(yyval.code) = abc_setlocal((yyval.code), state->switch_var);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2482 "parser.y"
+#line 2496 "parser.y"
{PASS12 new_state();
state->exception_name=(yyvsp[(3) - (5)].id);
PASS1 new_variable((yyvsp[(3) - (5)].id), 0, 0, 0);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2487 "parser.y"
+#line 2501 "parser.y"
{
namespace_t name_ns = {ACCESS_PACKAGE, ""};
multiname_t name = {QNAME, &name_ns, 0, (yyvsp[(3) - (9)].id)};
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2507 "parser.y"
+#line 2521 "parser.y"
{PASS12 new_state();state->exception_name=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2507 "parser.y"
+#line 2521 "parser.y"
{
(yyvsp[(4) - (5)].code) = var_block((yyvsp[(4) - (5)].code));
if(!(yyvsp[(4) - (5)].code)) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2523 "parser.y"
+#line 2537 "parser.y"
{(yyval.catch_list).l=list_new();(yyval.catch_list).finally=0;list_append((yyval.catch_list).l,(yyvsp[(1) - (1)].exception));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2524 "parser.y"
+#line 2538 "parser.y"
{(yyval.catch_list)=(yyvsp[(1) - (2)].catch_list);list_append((yyval.catch_list).l,(yyvsp[(2) - (2)].exception));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2525 "parser.y"
+#line 2539 "parser.y"
{(yyval.catch_list)=(yyvsp[(1) - (1)].catch_list);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2526 "parser.y"
+#line 2540 "parser.y"
{
(yyval.catch_list) = (yyvsp[(1) - (2)].catch_list);
(yyval.catch_list).finally = 0;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2534 "parser.y"
+#line 2548 "parser.y"
{
(yyval.catch_list).l=list_new();
(yyval.catch_list).finally = 0;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2543 "parser.y"
+#line 2557 "parser.y"
{PASS12 new_state();
state->method->has_exceptions=1;
state->method->late_binding=1;//for invariant scope_code
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2546 "parser.y"
+#line 2560 "parser.y"
{
code_t*out = abc_nop(0);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2592 "parser.y"
+#line 2606 "parser.y"
{
(yyval.code)=(yyvsp[(2) - (2)].value).c;
(yyval.code)=abc_throw((yyval.code));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2596 "parser.y"
+#line 2610 "parser.y"
{
if(!state->exception_name)
syntaxerror("re-throw only possible within a catch block");
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2607 "parser.y"
+#line 2621 "parser.y"
{
new_state();
if(state->method->has_exceptions) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2617 "parser.y"
+#line 2631 "parser.y"
{
/* remove getlocal;pushwith from scope code again */
state->method->scope_code = code_cutlast(code_cutlast(state->method->scope_code));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2635 "parser.y"
+#line 2649 "parser.y"
{PASS12 (yyval.id)="package";}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2636 "parser.y"
+#line 2650 "parser.y"
{PASS12 (yyval.id)=(yyvsp[(1) - (1)].id);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2638 "parser.y"
+#line 2652 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2639 "parser.y"
+#line 2653 "parser.y"
{PASS12 (yyval.id)=strdup((yyvsp[(1) - (1)].id));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2641 "parser.y"
+#line 2655 "parser.y"
{PASS12 startpackage((yyvsp[(2) - (3)].id));free((yyvsp[(2) - (3)].id));(yyvsp[(2) - (3)].id)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2642 "parser.y"
+#line 2656 "parser.y"
{PASS12 endpackage();(yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2643 "parser.y"
+#line 2657 "parser.y"
{PASS12 startpackage("");}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2644 "parser.y"
+#line 2658 "parser.y"
{PASS12 endpackage();(yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2646 "parser.y"
+#line 2660 "parser.y"
{
PASS12
slotinfo_t*s = registry_find((yyvsp[(2) - (2)].classinfo)->package, (yyvsp[(2) - (2)].classinfo)->name);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2660 "parser.y"
+#line 2674 "parser.y"
{
PASS12
if(strncmp("flash.", (yyvsp[(2) - (4)].id), 6) && as3_pass==1) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2676 "parser.y"
+#line 2690 "parser.y"
{PASS12 (yyval.flags).flags=0;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2677 "parser.y"
+#line 2691 "parser.y"
{PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2678 "parser.y"
+#line 2692 "parser.y"
{PASS12 (yyval.flags)=(yyvsp[(1) - (1)].flags);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2679 "parser.y"
+#line 2693 "parser.y"
{
PASS12
(yyval.flags).flags=(yyvsp[(1) - (2)].flags).flags|(yyvsp[(2) - (2)].flags).flags;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2686 "parser.y"
+#line 2700 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_PUBLIC;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2687 "parser.y"
+#line 2701 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_PRIVATE;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2688 "parser.y"
+#line 2702 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_PROTECTED;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2689 "parser.y"
+#line 2703 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_STATIC;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2690 "parser.y"
+#line 2704 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_DYNAMIC;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2691 "parser.y"
+#line 2705 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_FINAL;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2692 "parser.y"
+#line 2706 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_OVERRIDE;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2693 "parser.y"
+#line 2707 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_NATIVE;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2694 "parser.y"
+#line 2708 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_PACKAGEINTERNAL;(yyval.flags).ns=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2695 "parser.y"
+#line 2709 "parser.y"
{PASS12 (yyval.flags).flags=FLAG_NAMESPACE;
(yyval.flags).ns=(yyvsp[(1) - (1)].id);
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2699 "parser.y"
+#line 2713 "parser.y"
{PASS12 (yyval.classinfo)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2700 "parser.y"
+#line 2714 "parser.y"
{PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2702 "parser.y"
+#line 2716 "parser.y"
{PASS12 (yyval.classinfo_list)=list_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2703 "parser.y"
+#line 2717 "parser.y"
{PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2705 "parser.y"
+#line 2719 "parser.y"
{PASS12 (yyval.classinfo_list)=list_new();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2706 "parser.y"
+#line 2720 "parser.y"
{PASS12 (yyval.classinfo_list)=(yyvsp[(2) - (2)].classinfo_list);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2710 "parser.y"
+#line 2724 "parser.y"
{PASS12 startclass(&(yyvsp[(1) - (6)].flags),(yyvsp[(3) - (6)].id),(yyvsp[(4) - (6)].classinfo),(yyvsp[(5) - (6)].classinfo_list));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2712 "parser.y"
+#line 2726 "parser.y"
{PASS12 endclass();(yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2716 "parser.y"
+#line 2730 "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));}
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2719 "parser.y"
+#line 2733 "parser.y"
{PASS12 endclass();(yyval.code)=0;}
}
break;
+ case 149:
+ if(as3_pass==2) {
+
+/* Line 1464 of skeleton.m4 */
+#line 2742 "parser.y"
+ {PASS_ALWAYS as3_pass=(yyvsp[(1) - (4)].number_int);}
+ }
+ break;
+
+
+
case 152:
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2732 "parser.y"
+#line 2746 "parser.y"
{
code_t*c = state->cls->static_init->header;
c = code_append(c, (yyvsp[(1) - (1)].code));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2743 "parser.y"
+#line 2757 "parser.y"
{
syntaxerror("variable declarations not allowed in interfaces");
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2746 "parser.y"
+#line 2760 "parser.y"
{
PASS12
(yyvsp[(1) - (8)].flags).flags |= FLAG_PUBLIC;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2761 "parser.y"
- {setslotstate(&(yyvsp[(1) - (2)].flags),(yyvsp[(2) - (2)].token));}
+#line 2775 "parser.y"
+ {PASS12 setslotstate(&(yyvsp[(1) - (2)].flags),(yyvsp[(2) - (2)].token));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2761 "parser.y"
- {(yyval.code)=(yyvsp[(4) - (4)].code);setslotstate(0, 0);}
+#line 2775 "parser.y"
+ {PASS12 (yyval.code)=(yyvsp[(4) - (4)].code);setslotstate(0, 0);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2763 "parser.y"
- {(yyval.code) = (yyvsp[(1) - (1)].code);}
+#line 2777 "parser.y"
+ {PASS12 (yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2764 "parser.y"
- {(yyval.code) = code_append((yyvsp[(1) - (3)].code), (yyvsp[(3) - (3)].code));}
+#line 2778 "parser.y"
+ {PASS12 (yyval.code)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2767 "parser.y"
+#line 2781 "parser.y"
{
+PASS12
int flags = slotstate_flags->flags;
namespace_t ns = modifiers2access(slotstate_flags);
- varinfo_t* info = 0;
- if(state->cls) {
- memberinfo_t*i = registry_findmember(state->cls->info, ns.name, (yyvsp[(1) - (3)].id), 1);
- if(i) {
- check_override(i, flags);
- }
- info = varinfo_register_onclass(state->cls->info, ns.access, ns.name, (yyvsp[(1) - (3)].id));
- } else {
- slotinfo_t*i = registry_find(state->package, (yyvsp[(1) - (3)].id));
- if(i) {
- syntaxerror("package %s already contains '%s'", state->package, (yyvsp[(1) - (3)].id));
- }
- if(ns.name && ns.name[0]) {
- syntaxerror("namespaces not allowed on package-level variables");
- }
- info = varinfo_register_global(ns.access, state->package, (yyvsp[(1) - (3)].id));
- }
+ if(as3_pass == 1) {
- info->type = (yyvsp[(2) - (3)].classinfo);
- info->flags = flags;
+ varinfo_t* info = 0;
+ if(state->cls) {
+ memberinfo_t*i = registry_findmember(state->cls->info, ns.name, (yyvsp[(1) - (3)].id), 1);
+ if(i) {
+ check_override(i, flags);
+ }
+ info = varinfo_register_onclass(state->cls->info, ns.access, ns.name, (yyvsp[(1) - (3)].id));
+ } else {
+ slotinfo_t*i = registry_find(state->package, (yyvsp[(1) - (3)].id));
+ if(i) {
+ syntaxerror("package %s already contains '%s'", state->package, (yyvsp[(1) - (3)].id));
+ }
+ if(ns.name && ns.name[0]) {
+ syntaxerror("namespaces not allowed on package-level variables");
+ }
+ info = varinfo_register_global(ns.access, state->package, (yyvsp[(1) - (3)].id));
+ }
- /* slot name */
- multiname_t mname = {QNAME, &ns, 0, (yyvsp[(1) - (3)].id)};
-
- trait_list_t**traits;
- code_t**code;
- if(!state->cls) {
- // global variable
- ns.name = state->package;
- traits = &global->init->traits;
- code = &global->init->method->body->code;
- } else if(flags&FLAG_STATIC) {
- // static variable
- traits = &state->cls->abc->static_traits;
- code = &state->cls->static_init->header;
- } else {
- // instance variable
- traits = &state->cls->abc->traits;
- code = &state->cls->init->header;
- }
-
- trait_t*t=0;
- if((yyvsp[(2) - (3)].classinfo)) {
- MULTINAME(m, (yyvsp[(2) - (3)].classinfo));
- t = trait_new_member(traits, multiname_clone(&m), multiname_clone(&mname), 0);
- } else {
- t = trait_new_member(traits, 0, multiname_clone(&mname), 0);
- }
- info->slot = t->slot_id;
-
- /* initalization code (if needed) */
- code_t*c = 0;
- if((yyvsp[(3) - (3)].value).c && !is_pushundefined((yyvsp[(3) - (3)].value).c)) {
- c = abc_getlocal_0(c);
- c = code_append(c, (yyvsp[(3) - (3)].value).c);
- c = converttype(c, (yyvsp[(3) - (3)].value).t, (yyvsp[(2) - (3)].classinfo));
- c = abc_setslot(c, t->slot_id);
+ info->type = (yyvsp[(2) - (3)].classinfo);
+ info->flags = flags;
+
+ dict_put(global->token2info, (void*)(ptroff_t)as3_tokencount, info);
}
- *code = code_append(*code, c);
+ if(as3_pass == 2) {
+ varinfo_t*info = dict_lookup(global->token2info, (void*)(ptroff_t)as3_tokencount);
+
+ /* slot name */
+ multiname_t mname = {QNAME, &ns, 0, (yyvsp[(1) - (3)].id)};
+
+ trait_list_t**traits;
+ code_t**code;
+ if(!state->cls) {
+ // global variable
+ ns.name = state->package;
+ traits = &global->init->traits;
+ code = &global->init->method->body->code;
+ } else if(flags&FLAG_STATIC) {
+ // static variable
+ traits = &state->cls->abc->static_traits;
+ code = &state->cls->static_init->header;
+ } else {
+ // instance variable
+ traits = &state->cls->abc->traits;
+ code = &state->cls->init->header;
+ }
+
+ trait_t*t=0;
+ if((yyvsp[(2) - (3)].classinfo)) {
+ MULTINAME(m, (yyvsp[(2) - (3)].classinfo));
+ t = trait_new_member(traits, multiname_clone(&m), multiname_clone(&mname), 0);
+ } else {
+ t = trait_new_member(traits, 0, multiname_clone(&mname), 0);
+ }
+ info->slot = t->slot_id;
+
+ /* initalization code (if needed) */
+ code_t*c = 0;
+ if((yyvsp[(3) - (3)].value).c && !is_pushundefined((yyvsp[(3) - (3)].value).c)) {
+ c = abc_getlocal_0(c);
+ c = code_append(c, (yyvsp[(3) - (3)].value).c);
+ c = converttype(c, (yyvsp[(3) - (3)].value).t, (yyvsp[(2) - (3)].classinfo));
+ c = abc_setslot(c, t->slot_id);
+ }
+
+ *code = code_append(*code, c);
- if(slotstate_varconst==KW_CONST) {
- t->kind= TRAIT_CONST;
+ if(slotstate_varconst==KW_CONST) {
+ t->kind= TRAIT_CONST;
+ }
}
(yyval.code)=0;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2841 "parser.y"
+#line 2865 "parser.y"
{(yyval.constant)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2842 "parser.y"
+#line 2866 "parser.y"
{(yyval.constant)=(yyvsp[(2) - (2)].constant);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2844 "parser.y"
+#line 2868 "parser.y"
{(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_uint));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2845 "parser.y"
+#line 2869 "parser.y"
{(yyval.constant) = constant_new_int((yyvsp[(1) - (1)].number_int));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2846 "parser.y"
+#line 2870 "parser.y"
{(yyval.constant) = constant_new_uint((yyvsp[(1) - (1)].number_uint));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2847 "parser.y"
+#line 2871 "parser.y"
{(yyval.constant) = constant_new_float((yyvsp[(1) - (1)].number_float));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2848 "parser.y"
+#line 2872 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2850 "parser.y"
+#line 2874 "parser.y"
{(yyval.constant) = constant_new_true((yyvsp[(1) - (1)].token));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2851 "parser.y"
+#line 2875 "parser.y"
{(yyval.constant) = constant_new_false((yyvsp[(1) - (1)].token));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2852 "parser.y"
+#line 2876 "parser.y"
{(yyval.constant) = constant_new_null((yyvsp[(1) - (1)].token));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2853 "parser.y"
+#line 2877 "parser.y"
{
if(!strcmp((yyvsp[(1) - (1)].id), "NaN")) {
(yyval.constant) = constant_new_float(__builtin_nan(""));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2865 "parser.y"
+#line 2889 "parser.y"
{
PASS12
memset(&(yyval.params),0,sizeof((yyval.params)));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2869 "parser.y"
+#line 2893 "parser.y"
{
PASS12
(yyval.params)=(yyvsp[(1) - (1)].params);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2875 "parser.y"
+#line 2899 "parser.y"
{
PASS12
memset(&(yyval.params),0,sizeof((yyval.params)));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2881 "parser.y"
+#line 2905 "parser.y"
{
PASS12
(yyval.params) =(yyvsp[(1) - (4)].params);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2889 "parser.y"
+#line 2913 "parser.y"
{
PASS12
(yyval.params) = (yyvsp[(1) - (3)].params);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2894 "parser.y"
+#line 2918 "parser.y"
{
PASS12
memset(&(yyval.params),0,sizeof((yyval.params)));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2900 "parser.y"
+#line 2924 "parser.y"
{
PASS12
(yyval.param) = rfx_calloc(sizeof(param_t));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2908 "parser.y"
+#line 2932 "parser.y"
{
PASS12
(yyval.param) = rfx_calloc(sizeof(param_t));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2918 "parser.y"
+#line 2942 "parser.y"
{PASS12 (yyval.token)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2921 "parser.y"
+#line 2945 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2922 "parser.y"
+#line 2946 "parser.y"
{
PASS1
endfunction(&(yyvsp[(1) - (12)].flags),(yyvsp[(3) - (12)].token),(yyvsp[(4) - (12)].id),&(yyvsp[(6) - (12)].params),0,0);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2938 "parser.y"
+#line 2962 "parser.y"
{PASS12 (yyval.id)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2940 "parser.y"
+#line 2964 "parser.y"
{PASS12 innerfunction((yyvsp[(2) - (7)].id),&(yyvsp[(4) - (7)].params),(yyvsp[(6) - (7)].classinfo));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2941 "parser.y"
+#line 2965 "parser.y"
{
PASS1
endfunction(0,0,(yyvsp[(2) - (10)].id),&(yyvsp[(4) - (10)].params),0,0);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2963 "parser.y"
+#line 2987 "parser.y"
{
PASS1 NEW(unresolvedinfo_t,c);
memset(c, 0, sizeof(*c));
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, $1);
+ as3_schedule_class_noerror(state->package, (yyvsp[(1) - (1)].id));
}
(yyval.classinfo) = (classinfo_t*)c;
PASS2
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2982 "parser.y"
+#line 3006 "parser.y"
{
PASS1 NEW(unresolvedinfo_t,c);
memset(c, 0, sizeof(*c));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 2999 "parser.y"
+#line 3023 "parser.y"
{PASS12 (yyval.classinfo_list)=list_new();list_append((yyval.classinfo_list), (yyvsp[(1) - (1)].classinfo));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3000 "parser.y"
+#line 3024 "parser.y"
{PASS12 (yyval.classinfo_list)=(yyvsp[(1) - (3)].classinfo_list);list_append((yyval.classinfo_list),(yyvsp[(3) - (3)].classinfo));}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3002 "parser.y"
+#line 3026 "parser.y"
{PASS12 (yyval.classinfo)=(yyvsp[(1) - (1)].classinfo);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3003 "parser.y"
+#line 3027 "parser.y"
{PASS12 (yyval.classinfo)=registry_getanytype();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3004 "parser.y"
+#line 3028 "parser.y"
{PASS12 (yyval.classinfo)=registry_getanytype();}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3013 "parser.y"
+#line 3037 "parser.y"
{PASS12 (yyval.classinfo)=(yyvsp[(2) - (2)].classinfo);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3014 "parser.y"
+#line 3038 "parser.y"
{PASS12 (yyval.classinfo)=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3018 "parser.y"
+#line 3042 "parser.y"
{(yyval.value_list).cc=0;(yyval.value_list).number=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3019 "parser.y"
+#line 3043 "parser.y"
{(yyval.value_list)=(yyvsp[(2) - (3)].value_list);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3021 "parser.y"
+#line 3045 "parser.y"
{(yyval.value_list).cc=0;(yyval.value_list).number=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3025 "parser.y"
+#line 3049 "parser.y"
{(yyval.value_list).number=1;
(yyval.value_list).cc = (yyvsp[(1) - (1)].value).c;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3029 "parser.y"
+#line 3053 "parser.y"
{(yyval.value_list) = (yyvsp[(1) - (2)].value_list);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3030 "parser.y"
+#line 3054 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3036 "parser.y"
+#line 3060 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3072 "parser.y"
+#line 3096 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (4)].value).c;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3118 "parser.y"
+#line 3142 "parser.y"
{
if(!state->cls) syntaxerror("super() not allowed outside of a class");
if(!state->method) syntaxerror("super() not allowed outside of a function");
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3139 "parser.y"
+#line 3163 "parser.y"
{
(yyval.value).c = (yyvsp[(2) - (2)].value).c;
if((yyval.value).c->opcode == OPCODE_COERCE_A) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3160 "parser.y"
+#line 3184 "parser.y"
{
(yyval.code) = abc_returnvoid(0);
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3163 "parser.y"
+#line 3187 "parser.y"
{
(yyval.code) = (yyvsp[(2) - (2)].value).c;
(yyval.code) = abc_returnvalue((yyval.code));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3170 "parser.y"
+#line 3194 "parser.y"
{(yyval.value)=(yyvsp[(1) - (1)].value);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3171 "parser.y"
+#line 3195 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3172 "parser.y"
+#line 3196 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (3)].value).c;
(yyval.value).c = cut_last_push((yyval.value).c);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3178 "parser.y"
+#line 3202 "parser.y"
{
(yyval.code)=cut_last_push((yyvsp[(1) - (1)].value).c);
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3184 "parser.y"
+#line 3208 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3188 "parser.y"
+#line 3210 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3190 "parser.y"
+#line 3211 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3192 "parser.y"
+#line 3212 "parser.y"
{(yyval.value) = (yyvsp[(1) - (1)].value);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3196 "parser.y"
+#line 3216 "parser.y"
{
(yyval.value).c = 0;
namespace_t ns = {ACCESS_PACKAGE, ""};
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3213 "parser.y"
+#line 3233 "parser.y"
{(yyval.value).c = abc_pushbyte(0, (yyvsp[(1) - (1)].number_uint));
//MULTINAME(m, registry_getintclass());
//$$.c = abc_coerce2($$.c, &m); // FIXME
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3218 "parser.y"
+#line 3238 "parser.y"
{(yyval.value).c = abc_pushshort(0, (yyvsp[(1) - (1)].number_uint));
(yyval.value).t = TYPE_INT;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3221 "parser.y"
+#line 3241 "parser.y"
{(yyval.value).c = abc_pushint(0, (yyvsp[(1) - (1)].number_int));
(yyval.value).t = TYPE_INT;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3224 "parser.y"
+#line 3244 "parser.y"
{(yyval.value).c = abc_pushuint(0, (yyvsp[(1) - (1)].number_uint));
(yyval.value).t = TYPE_UINT;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3227 "parser.y"
+#line 3247 "parser.y"
{(yyval.value).c = abc_pushdouble(0, (yyvsp[(1) - (1)].number_float));
(yyval.value).t = TYPE_FLOAT;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3230 "parser.y"
+#line 3250 "parser.y"
{(yyval.value).c = abc_pushstring2(0, &(yyvsp[(1) - (1)].str));free((char*)(yyvsp[(1) - (1)].str).str);
(yyval.value).t = TYPE_STRING;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3233 "parser.y"
+#line 3253 "parser.y"
{(yyval.value).c = abc_pushundefined(0);
(yyval.value).t = TYPE_ANY;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3236 "parser.y"
+#line 3256 "parser.y"
{(yyval.value).c = abc_pushtrue(0);
(yyval.value).t = TYPE_BOOLEAN;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3239 "parser.y"
+#line 3259 "parser.y"
{(yyval.value).c = abc_pushfalse(0);
(yyval.value).t = TYPE_BOOLEAN;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3242 "parser.y"
+#line 3262 "parser.y"
{(yyval.value).c = abc_pushnull(0);
(yyval.value).t = TYPE_NULL;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3246 "parser.y"
+#line 3266 "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;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3249 "parser.y"
+#line 3269 "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;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3252 "parser.y"
+#line 3272 "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;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3255 "parser.y"
+#line 3275 "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;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3258 "parser.y"
+#line 3278 "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;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3261 "parser.y"
+#line 3281 "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;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3264 "parser.y"
+#line 3284 "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;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3267 "parser.y"
+#line 3287 "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;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3271 "parser.y"
+#line 3291 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3282 "parser.y"
+#line 3302 "parser.y"
{
(yyval.value).t = join_types((yyvsp[(1) - (3)].value).t, (yyvsp[(3) - (3)].value).t, 'A');
/*printf("%08x:\n",$1.t);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3300 "parser.y"
+#line 3320 "parser.y"
{(yyval.value).c=(yyvsp[(2) - (2)].value).c;
(yyval.value).c = abc_not((yyval.value).c);
(yyval.value).t = TYPE_BOOLEAN;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3305 "parser.y"
+#line 3325 "parser.y"
{(yyval.value).c=(yyvsp[(2) - (2)].value).c;
(yyval.value).c = abc_bitnot((yyval.value).c);
(yyval.value).t = TYPE_INT;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3310 "parser.y"
+#line 3330 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3315 "parser.y"
+#line 3335 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3320 "parser.y"
+#line 3340 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3325 "parser.y"
+#line 3345 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3329 "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_urshift((yyval.value).c);
(yyval.value).t = TYPE_INT;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3333 "parser.y"
+#line 3353 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3338 "parser.y"
+#line 3358 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3342 "parser.y"
+#line 3362 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3346 "parser.y"
+#line 3366 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3355 "parser.y"
+#line 3375 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3364 "parser.y"
+#line 3384 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3374 "parser.y"
+#line 3394 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3379 "parser.y"
+#line 3399 "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));
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3392 "parser.y"
+#line 3412 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3397 "parser.y"
+#line 3417 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3402 "parser.y"
+#line 3422 "parser.y"
{
(yyval.value).c = (yyvsp[(3) - (4)].value).c;
(yyval.value).c = abc_typeof((yyval.value).c);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3408 "parser.y"
+#line 3428 "parser.y"
{
(yyval.value).c = cut_last_push((yyvsp[(2) - (2)].value).c);
(yyval.value).c = abc_pushundefined((yyval.value).c);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3414 "parser.y"
+#line 3434 "parser.y"
{ (yyval.value).c = abc_pushundefined(0);
(yyval.value).t = TYPE_ANY;
}
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3418 "parser.y"
+#line 3438 "parser.y"
{(yyval.value)=(yyvsp[(2) - (3)].value);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3420 "parser.y"
+#line 3440 "parser.y"
{
(yyval.value)=(yyvsp[(2) - (2)].value);
if(IS_INT((yyvsp[(2) - (2)].value).t)) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3431 "parser.y"
+#line 3451 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (4)].value).c;
(yyval.value).c = code_append((yyval.value).c, (yyvsp[(3) - (4)].value).c);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3440 "parser.y"
+#line 3460 "parser.y"
{
(yyval.value).c = code_new();
(yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3447 "parser.y"
+#line 3467 "parser.y"
{(yyval.value_list).cc=0;(yyval.value_list).number=0;}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3448 "parser.y"
+#line 3468 "parser.y"
{(yyval.value_list)=(yyvsp[(1) - (1)].value_list);}
}
break;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3450 "parser.y"
+#line 3470 "parser.y"
{
(yyval.value_list).cc = 0;
(yyval.value_list).cc = code_append((yyval.value_list).cc, (yyvsp[(1) - (3)].value).c);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3456 "parser.y"
+#line 3476 "parser.y"
{
(yyval.value_list).cc = (yyvsp[(1) - (5)].value_list).cc;
(yyval.value_list).number = (yyvsp[(1) - (5)].value_list).number+2;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3465 "parser.y"
+#line 3485 "parser.y"
{
(yyval.value).c = code_new();
(yyval.value).c = code_append((yyval.value).c, (yyvsp[(2) - (3)].value_list).cc);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3472 "parser.y"
+#line 3492 "parser.y"
{
code_t*c = (yyvsp[(3) - (3)].value).c;
if(BOTH_INT((yyvsp[(1) - (3)].value).t,(yyvsp[(3) - (3)].value).t)) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3484 "parser.y"
+#line 3504 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3490 "parser.y"
+#line 3510 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3496 "parser.y"
+#line 3516 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3502 "parser.y"
+#line 3522 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3508 "parser.y"
+#line 3528 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3514 "parser.y"
+#line 3534 "parser.y"
{
code_t*c = abc_bitor((yyvsp[(3) - (3)].value).c);
c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3520 "parser.y"
+#line 3540 "parser.y"
{
code_t*c = abc_bitxor((yyvsp[(3) - (3)].value).c);
c=converttype(c, TYPE_INT, (yyvsp[(1) - (3)].value).t);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3526 "parser.y"
+#line 3546 "parser.y"
{
code_t*c = (yyvsp[(3) - (3)].value).c;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3539 "parser.y"
+#line 3559 "parser.y"
{ code_t*c = (yyvsp[(3) - (3)].value).c;
if(TYPE_IS_INT((yyvsp[(1) - (3)].value).t)) {
c=abc_subtract_i(c);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3550 "parser.y"
+#line 3570 "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);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3557 "parser.y"
+#line 3577 "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;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3570 "parser.y"
+#line 3590 "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))) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3597 "parser.y"
+#line 3617 "parser.y"
{ code_t*c = 0;
classinfo_t*type = (yyvsp[(1) - (2)].value).t;
if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3611 "parser.y"
+#line 3631 "parser.y"
{ code_t*c = 0;
classinfo_t*type = (yyvsp[(2) - (2)].value).t;
if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3625 "parser.y"
+#line 3645 "parser.y"
{ code_t*c = 0;
classinfo_t*type = (yyvsp[(2) - (2)].value).t;
if(TYPE_IS_INT(type) || TYPE_IS_UINT(type)) {
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3640 "parser.y"
+#line 3660 "parser.y"
{ if(!state->cls->info)
syntaxerror("super keyword not allowed outside a class");
classinfo_t*t = state->cls->info->superclass;
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3654 "parser.y"
+#line 3674 "parser.y"
{
// attribute TODO
(yyval.value).c = abc_pushundefined(0);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3661 "parser.y"
+#line 3681 "parser.y"
{
// child attribute TODO
(yyval.value).c = abc_pushundefined(0);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3668 "parser.y"
+#line 3688 "parser.y"
{
// namespace declaration TODO
(yyval.value).c = abc_pushundefined(0);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3675 "parser.y"
+#line 3695 "parser.y"
{
// descendants TODO
(yyval.value).c = abc_pushundefined(0);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3682 "parser.y"
+#line 3702 "parser.y"
{
// filter TODO
(yyval.value).c = abc_pushundefined(0);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3693 "parser.y"
+#line 3717 "parser.y"
{
(yyval.value).c = (yyvsp[(1) - (3)].value).c;
classinfo_t*t = (yyvsp[(1) - (3)].value).t;
if(f && f->slot && !noslot) {
(yyval.value).c = abc_getslot((yyval.value).c, f->slot);
} else {
+ if(!f) {
+ as3_warning("Access of undefined property '%s' in %s", (yyvsp[(3) - (3)].id), t->name);
+ }
+
MEMBER_MULTINAME(m, f, (yyvsp[(3) - (3)].id));
(yyval.value).c = abc_getproperty2((yyval.value).c, &m);
}
/* when resolving a property on an unknown type, we do know the
name of the property (and don't seem to need the package), but
we need to make avm2 try out all access modes */
+ as3_warning("Resolving %s on unknown type", (yyvsp[(3) - (3)].id));
multiname_t m = {MULTINAME, 0, &nopackage_namespace_set, (yyvsp[(3) - (3)].id)};
(yyval.value).c = abc_getproperty2((yyval.value).c, &m);
(yyval.value).c = abc_coerce_a((yyval.value).c);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3745 "parser.y"
+#line 3774 "parser.y"
{
PASS1
/* Queue unresolved identifiers for checking against the parent
/* 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, $1);
+ as3_schedule_class_noerror(state->package, (yyvsp[(1) - (1)].id));
PASS2
(yyval.value).t = 0;
static properties of a class */
state->method->late_binding = 1;
(yyval.value).t = f->type;
- namespace_t ns = {f->access, ""};
+ namespace_t ns = {f->access, f->package};
multiname_t m = {QNAME, &ns, 0, (yyvsp[(1) - (1)].id)};
(yyval.value).c = abc_findpropstrict2((yyval.value).c, &m);
(yyval.value).c = abc_getproperty2((yyval.value).c, &m);
(yyval.value).c = abc_getslot((yyval.value).c, f->slot);
break;
} else {
- namespace_t ns = {f->access, ""};
+ namespace_t ns = {f->access, f->package};
multiname_t m = {QNAME, &ns, 0, (yyvsp[(1) - (1)].id)};
(yyval.value).c = abc_getlocal_0((yyval.value).c);
(yyval.value).c = abc_getproperty2((yyval.value).c, &m);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3854 "parser.y"
+#line 3883 "parser.y"
{
PASS12
NEW(namespace_decl_t,n);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3861 "parser.y"
+#line 3890 "parser.y"
{
PASS12
NEW(namespace_decl_t,n);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3868 "parser.y"
+#line 3897 "parser.y"
{
PASS12
NEW(namespace_decl_t,n);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3875 "parser.y"
+#line 3904 "parser.y"
{
PASS12
trie_put(active_namespaces, (yyvsp[(2) - (2)].namespace_decl)->name, (void*)(yyvsp[(2) - (2)].namespace_decl)->url);
if(as3_pass==2) {
/* Line 1464 of skeleton.m4 */
-#line 3890 "parser.y"
+#line 3919 "parser.y"
{
-
+ PASS12
const char*url = (yyvsp[(3) - (3)].classinfo)->name;
+
varinfo_t*s = (varinfo_t*)(yyvsp[(3) - (3)].classinfo);
+ if(s->kind == INFOTYPE_UNRESOLVED) {
+ s = (varinfo_t*)registry_resolve((slotinfo_t*)s);
+ if(!s)
+ syntaxerror("Couldn't resolve namespace %s", (yyvsp[(3) - (3)].classinfo)->name);
+ }
+
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))
/* Line 1464 of skeleton.m4 */
-#line 8271 "parser.tab.c"
+#line 8350 "parser.tab.c"
default: break;
}
YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);