- 0, 1907, 1907, 1909, 1909, 1910, 1911, 1913, 1914, 1915,
- 1916, 1917, 1918, 1919, 1920, 1922, 1922, 1923, 1924, 1926,
- 1927, 1928, 1929, 1930, 1931, 1932, 1934, 1935, 1937, 1938,
- 1941, 1942, 1943, 1944, 1945, 1946, 1947, 1948, 1949, 1950,
- 1951, 1952, 1953, 1954, 1957, 1958, 1959, 1960, 1961, 1962,
- 1963, 1964, 1968, 1969, 1973, 1980, 1984, 1985, 1989, 1990,
- 1992, 1993, 1995, 2056, 2057, 2060, 2060, 2079, 2080, 2081,
- 2086, 2090, 2095, 2096, 2098, 2118, 2162, 2162, 2181, 2181,
- 2196, 2199, 2202, 2205, 2209, 2210, 2211, 2212, 2213, 2214,
- 2216, 2227, 2230, 2230, 2259, 2259, 2283, 2283, 2299, 2300,
- 2301, 2302, 2310, 2319, 2319, 2364, 2368, 2379, 2388, 2389,
- 2391, 2392, 2394, 2394, 2396, 2396, 2399, 2414, 2430, 2431,
- 2432, 2433, 2441, 2442, 2443, 2444, 2445, 2446, 2447, 2448,
- 2449, 2450, 2454, 2455, 2457, 2458, 2460, 2461, 2465, 2463,
- 2471, 2469, 2478, 2479, 2480, 2481, 2482, 2483, 2484, 2485,
- 2487, 2493, 2494, 2495, 2496, 2497, 2498, 2501, 2514, 2514,
- 2516, 2516, 2518, 2519, 2521, 2596, 2597, 2599, 2600, 2601,
- 2602, 2603, 2605, 2606, 2607, 2608, 2617, 2621, 2627, 2633,
- 2641, 2646, 2652, 2660, 2668, 2669, 2670, 2673, 2672, 2689,
- 2690, 2692, 2691, 2715, 2726, 2739, 2740, 2742, 2743, 2745,
- 2746, 2747, 2756, 2757, 2761, 2762, 2764, 2765, 2766, 2768,
- 2772, 2773, 2778, 2779, 2815, 2861, 2882, 2903, 2906, 2913,
- 2914, 2915, 2921, 2927, 2929, 2931, 2933, 2935, 2937, 2939,
- 2956, 2961, 2964, 2967, 2970, 2973, 2976, 2979, 2982, 2985,
- 2989, 2992, 2995, 2998, 3001, 3004, 3007, 3010, 3014, 3025,
- 3043, 3048, 3053, 3058, 3063, 3068, 3072, 3076, 3081, 3085,
- 3089, 3098, 3107, 3117, 3122, 3134, 3140, 3145, 3151, 3157,
- 3161, 3163, 3174, 3183, 3190, 3191, 3193, 3199, 3208, 3215,
- 3227, 3233, 3239, 3245, 3251, 3257, 3263, 3269, 3282, 3293,
- 3300, 3313, 3340, 3354, 3368, 3382, 3397, 3404, 3411, 3418,
- 3425, 3436, 3470, 3591, 3597, 3600, 3603, 3606
+ 0, 1993, 1993, 1995, 1995, 1996, 1997, 1999, 2000, 2001,
+ 2002, 2003, 2004, 2005, 2006, 2008, 2008, 2009, 2010, 2012,
+ 2013, 2014, 2015, 2016, 2017, 2018, 2020, 2021, 2023, 2024,
+ 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036,
+ 2037, 2038, 2039, 2040, 2043, 2044, 2045, 2046, 2047, 2048,
+ 2049, 2050, 2054, 2055, 2059, 2066, 2070, 2071, 2075, 2076,
+ 2078, 2079, 2081, 2142, 2143, 2146, 2146, 2165, 2166, 2167,
+ 2172, 2176, 2181, 2182, 2184, 2204, 2252, 2252, 2271, 2271,
+ 2286, 2289, 2292, 2295, 2299, 2300, 2301, 2302, 2303, 2304,
+ 2306, 2317, 2320, 2320, 2349, 2349, 2373, 2373, 2389, 2390,
+ 2391, 2392, 2400, 2409, 2409, 2454, 2458, 2469, 2478, 2479,
+ 2481, 2482, 2484, 2484, 2486, 2486, 2489, 2505, 2522, 2523,
+ 2524, 2525, 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540,
+ 2541, 2542, 2546, 2547, 2549, 2550, 2552, 2553, 2557, 2555,
+ 2563, 2561, 2570, 2571, 2572, 2573, 2574, 2575, 2576, 2577,
+ 2579, 2585, 2586, 2587, 2588, 2589, 2590, 2593, 2606, 2606,
+ 2608, 2608, 2610, 2611, 2613, 2688, 2689, 2691, 2692, 2693,
+ 2694, 2695, 2697, 2698, 2699, 2700, 2712, 2716, 2722, 2728,
+ 2736, 2741, 2747, 2755, 2763, 2764, 2765, 2768, 2767, 2784,
+ 2785, 2787, 2786, 2810, 2826, 2841, 2842, 2844, 2845, 2847,
+ 2848, 2849, 2858, 2859, 2863, 2864, 2866, 2867, 2868, 2870,
+ 2874, 2875, 2880, 2881, 2917, 2963, 2984, 3005, 3008, 3015,
+ 3016, 3017, 3023, 3029, 3031, 3033, 3035, 3037, 3039, 3041,
+ 3058, 3063, 3066, 3069, 3072, 3075, 3078, 3081, 3084, 3087,
+ 3091, 3094, 3097, 3100, 3103, 3106, 3109, 3112, 3116, 3127,
+ 3145, 3150, 3155, 3160, 3165, 3170, 3174, 3178, 3183, 3187,
+ 3191, 3200, 3209, 3219, 3224, 3236, 3242, 3247, 3253, 3259,
+ 3263, 3265, 3276, 3285, 3292, 3293, 3295, 3301, 3310, 3317,
+ 3329, 3335, 3341, 3347, 3353, 3359, 3365, 3371, 3384, 3395,
+ 3402, 3415, 3442, 3456, 3470, 3484, 3499, 3506, 3513, 3520,
+ 3527, 3538, 3588, 3693, 3699, 3702, 3705, 3708
-#line 3437 "parser.y"
- {(yyval.value).c = (yyvsp[(1) - (3)].value).c;
- classinfo_t*t = (yyvsp[(1) - (3)].value).t;
- char is_static = 0;
- if(TYPE_IS_CLASS(t) && t->data) {
- t = t->data;
- is_static = 1;
- }
- if(t) {
- memberinfo_t*f = registry_findmember_nsset(t, state->active_namespaces, (yyvsp[(3) - (3)].id), 1);
- char noslot = 0;
- if(f && !is_static != !(f->flags&FLAG_STATIC))
- noslot=1;
- if(f && f->slot && !noslot) {
- (yyval.value).c = abc_getslot((yyval.value).c, f->slot);
- } else {
- MEMBER_MULTINAME(m, f, (yyvsp[(3) - (3)].id));
- (yyval.value).c = abc_getproperty2((yyval.value).c, &m);
- }
- /* determine type */
- (yyval.value).t = slotinfo_gettype((slotinfo_t*)f);
- if(!(yyval.value).t)
- (yyval.value).c = abc_coerce_a((yyval.value).c);
- } else {
- /* 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 */
- 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);
- (yyval.value).t = registry_getanytype();
- }
- }
+#line 3538 "parser.y"
+ {
+ (yyval.value).c = (yyvsp[(1) - (3)].value).c;
+ classinfo_t*t = (yyvsp[(1) - (3)].value).t;
+ char is_static = 0;
+ if(TYPE_IS_CLASS(t) && t->data) {
+ t = t->data;
+ is_static = 1;
+ }
+ if(t) {
+ if(t->subtype==0xff) {
+ syntaxerror("syntaxerror: trying to resolve property '%s' on incomplete object '%s'", (yyvsp[(3) - (3)].id), t->name);
+ }
+ memberinfo_t*f = registry_findmember_nsset(t, state->active_namespaces, (yyvsp[(3) - (3)].id), 1);
+ char noslot = 0;
+ if(f && !is_static != !(f->flags&FLAG_STATIC))
+ noslot=1;
+ if(f && f->slot && !noslot) {
+ (yyval.value).c = abc_getslot((yyval.value).c, f->slot);
+ } else {
+ MEMBER_MULTINAME(m, f, (yyvsp[(3) - (3)].id));
+ (yyval.value).c = abc_getproperty2((yyval.value).c, &m);
+ }
+ /* determine type */
+ (yyval.value).t = slotinfo_gettype((slotinfo_t*)f);
+ if(!(yyval.value).t)
+ (yyval.value).c = abc_coerce_a((yyval.value).c);
+ } 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)) {
+ (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);
+ }
+ } else {
+ /* 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 */
+ 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);
+ (yyval.value).t = registry_getanytype();
+ }
+}