X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fas3%2Fparser.y;h=1e4b2d1902af344de463dd7a4f6611a4d6f2fb0f;hb=1c209a442f0e16d9a4854b84e78175e527bfcd49;hp=70d2be20bfd300df41f8f5924f0c56abbdfdd380;hpb=0d15764f645b83c605015c06abc685245824adab;p=swftools.git diff --git a/lib/as3/parser.y b/lib/as3/parser.y index 70d2be2..1e4b2d1 100644 --- a/lib/as3/parser.y +++ b/lib/as3/parser.y @@ -950,6 +950,7 @@ static void startfunction(token_t*ns, int flags, enum yytokentype getset, char*n name = "__as3_constructor__"; if(as3_pass == 1) { + return_type = 0; state->method->info = registerfunction(getset, flags, name, params, return_type, 0); } @@ -958,6 +959,7 @@ static void startfunction(token_t*ns, int flags, enum yytokentype getset, char*n TODO: better getter/setter support? */ if(!state->cls) state->method->info = registry_findclass(state->package, name)->function; else state->method->info = registry_findmember(state->cls->info, name, 0); + state->method->info->return_type = return_type; global->variable_count = 0; /* state->vars is initialized by state_new */ @@ -2006,8 +2008,8 @@ MODIFIER : KW_PUBLIC {PASS12 $$=FLAG_PUBLIC;} EXTENDS : {$$=registry_getobjectclass();} EXTENDS : KW_EXTENDS QNAME {$$=$2;} -EXTENDS_LIST : {$$=list_new();} -EXTENDS_LIST : KW_EXTENDS QNAME_LIST {$$=$2;} +EXTENDS_LIST : {PASS12 $$=list_new();} +EXTENDS_LIST : KW_EXTENDS QNAME_LIST {PASS12 $$=$2;} IMPLEMENTS_LIST : {PASS12 $$=list_new();} IMPLEMENTS_LIST : KW_IMPLEMENTS QNAME_LIST {PASS12 $$=$2;} @@ -2650,7 +2652,7 @@ E : '-' E { E : E '[' E ']' { $$.c = $1.c; $$.c = code_append($$.c, $3.c); - + MULTINAME_LATE(m, $1.t?$1.t->access:ACCESS_PACKAGE, ""); $$.c = abc_getproperty2($$.c, &m); $$.t = 0; // array elements have unknown type