-#line 2118 "parser.tab.c"
+#line 2085 "parser.tab.c"
+/* Unqualified %code blocks. */
+
+/* Line 274 of skeleton.m4 */
+#line 2149 "parser.y"
+
+ char is_subtype_of(classinfo_t*type, classinfo_t*supertype)
+ {
+ return 1; // FIXME
+ }
+
+
+/* Line 274 of skeleton.m4 */
+#line 2601 "parser.y"
+
+ static void state_has_imports()
+ {
+ state->wildcard_imports = list_clone(state->wildcard_imports);
+ state->imports = dict_clone(state->imports);
+ state->has_own_imports = 1;
+ }
+ static void import_toplevel(const char*package)
+ {
+ char* s = strdup(package);
+ while(1) {
+ dict_put(state->import_toplevel_packages, s, 0);
+ char*x = strrchr(s, '.');
+ if(!x)
+ break;
+ *x = 0;
+ }
+ free(s);
+ }
+
+
+/* Line 274 of skeleton.m4 */
+#line 2734 "parser.y"
+
+ static int slotstate_varconst = 0;
+ static modifiers_t*slotstate_flags = 0;
+ static void setslotstate(modifiers_t* flags, int varconst)
+ {
+ slotstate_varconst = varconst;
+ slotstate_flags = flags;
+ if(state->cls) {
+ if(flags && flags->flags&FLAG_STATIC) {
+ state->method = state->cls->static_init;
+ } else {
+ state->method = state->cls->init;
+ }
+ } else {
+ parserassert(state->method);
+ }
+ }
+
+
+/* Line 274 of skeleton.m4 */
+#line 3899 "parser.y"
+
+ void add_active_url(const char*url)
+ {
+ NEW(namespace_t,n);
+ n->name = url;
+ list_append(state->active_namespace_urls, n);
+ }
+
+
+
+/* Line 274 of skeleton.m4 */
+#line 2154 "parser.tab.c"
- 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,
+ 0, 2064, 2064, 2066, 2066, 2067, 2068, 2070, 2071, 2072,
+ 2073, 2074, 2075, 2076, 2077, 2079, 2079, 2080, 2081, 2083,
+ 2084, 2085, 2086, 2087, 2088, 2089, 2091, 2092, 2094, 2095,
+ 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107,
+ 2108, 2109, 2110, 2111, 2114, 2115, 2116, 2117, 2118, 2119,
+ 2120, 2121, 2125, 2126, 2130, 2137, 2156, 2157, 2161, 2162,
+ 2164, 2165, 2167, 2228, 2229, 2232, 2232, 2251, 2252, 2253,
+ 2258, 2262, 2267, 2268, 2270, 2290, 2338, 2338, 2357, 2357,
+ 2372, 2375, 2378, 2381, 2385, 2386, 2387, 2388, 2389, 2390,
+ 2392, 2403, 2406, 2406, 2437, 2437, 2462, 2462, 2478, 2479,
+ 2480, 2481, 2489, 2498, 2498, 2547, 2551, 2562, 2572, 2589,
+ 2590, 2591, 2593, 2594, 2596, 2596, 2598, 2598, 2621, 2635,
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,
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
+ 2753, 2753, 2755, 2755, 2757, 2758, 2760, 2845, 2846, 2848,
+ 2849, 2850, 2851, 2852, 2854, 2855, 2856, 2857, 2869, 2873,
+ 2879, 2885, 2893, 2898, 2904, 2912, 2920, 2921, 2922, 2925,
+ 2924, 2941, 2942, 2944, 2943, 2967, 2986, 3000, 3001, 3003,
+ 3004, 3006, 3007, 3008, 3017, 3018, 3022, 3023, 3025, 3026,
+ 3027, 3029, 3033, 3034, 3039, 3040, 3076, 3122, 3143, 3164,
+ 3167, 3174, 3175, 3176, 3182, 3188, 3189, 3190, 3191, 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, 3697, 3754, 3863, 3870, 3877, 3884, 3908
- /* 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);
+ }