X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=inline;f=lib%2Fas3%2Fimport.c;h=62c515203428900639a59a60c83972d01eee49b7;hb=006f7afc9efc533175af7eba679998af948adfa3;hp=bec20be533c010a67aa31942c0f1a80061512ffa;hpb=e4687b3aa2aed49fb16ba9e9561344d808750297;p=swftools.git diff --git a/lib/as3/import.c b/lib/as3/import.c index bec20be..62c5152 100644 --- a/lib/as3/import.c +++ b/lib/as3/import.c @@ -190,29 +190,31 @@ static void import_code(void*_abc, char*filename, int pass) if(access==ACCESS_PRIVATE) goto cont; const char*name = trait->name->name; - char* ns= ACCESS_NAMESPACE?strdup(trait->name->ns->name):""; - if(registry_findmember(c, ns, name, 0)) + char* ns = access==ACCESS_NAMESPACE?strdup(trait->name->ns->name):""; + + if(registry_findmember(c, ns, name, 0, is_static)) goto cont; + name = strdup(name); memberinfo_t*s = 0; if(trait->kind == TRAIT_METHOD) { - s = (memberinfo_t*)methodinfo_register_onclass(c, access, ns, name); + s = (memberinfo_t*)methodinfo_register_onclass(c, access, ns, name, is_static); s->return_type = resolve_class(filename, "return type", trait->method->return_type); dict_put(names, name, 0); } else if(trait->kind == TRAIT_SLOT) { - s = (memberinfo_t*)varinfo_register_onclass(c, access, ns, name); + s = (memberinfo_t*)varinfo_register_onclass(c, access, ns, name, is_static); s->type = resolve_class(filename, "type", trait->type_name); dict_put(names, name, 0); } else if(trait->kind == TRAIT_GETTER) { - s = (memberinfo_t*)varinfo_register_onclass(c, access, ns, name); + s = (memberinfo_t*)varinfo_register_onclass(c, access, ns, name, is_static); s->type = resolve_class(filename, "type", trait->method->return_type); dict_put(names, name, 0); } else if(trait->kind == TRAIT_CONST) { /* some variables (e.g. XML.length) are apparently both a method and a slot. needs split of static/non-static first */ if(!dict_contains(names, name)) { - varinfo_t*v = (varinfo_t*)varinfo_register_onclass(c, access, ns, name); + varinfo_t*v = (varinfo_t*)varinfo_register_onclass(c, access, ns, name, is_static); v->type = resolve_class(filename, "type", trait->type_name); v->flags |= FLAG_CONST; /* leave this alone for now- it blows up the file too much