added more test cases
[swftools.git] / lib / as3 / import.c
index 2d4af0e..dd42cfb 100644 (file)
@@ -108,8 +108,9 @@ static classinfo_t*resolve_class(char*what, multiname_t*n)
     return c;
 }
 
-void as3_import_code(abc_file_t*abc)
+void as3_import_code(void*_abc)
 {
+    abc_file_t*abc = _abc;
     int t;
     for(t=0;t<abc->classes->num;t++) {
         abc_class_t*cls = array_getvalue(abc->classes, t);
@@ -159,23 +160,22 @@ void as3_import_code(abc_file_t*abc)
             if(access==ACCESS_PRIVATE)
                 goto cont;
             const char*name = trait->name->name;
-            if(registry_findmember(c, name, 0))
+            char* ns= ACCESS_NAMESPACE?strdup(trait->name->ns->name):"";
+            if(registry_findmember(c, ns, name, 0))
                 goto cont;
             name = strdup(name);
 
             memberinfo_t*s = 0;
             if(trait->kind == TRAIT_METHOD) {
-                s = (memberinfo_t*)methodinfo_register_onclass(c, access, name);
+                s = (memberinfo_t*)methodinfo_register_onclass(c, access, ns, name);
                 s->return_type = resolve_class("return type", trait->method->return_type);
             } else if(trait->kind == TRAIT_SLOT ||
                       trait->kind == TRAIT_GETTER) {
-                s = (memberinfo_t*)varinfo_register_onclass(c, access, name);
+                s = (memberinfo_t*)varinfo_register_onclass(c, access, ns, name);
                 s->type = resolve_class("type", trait->type_name);
             } else {
                 goto cont;
             }
-            if(access==ACCESS_NAMESPACE)
-                s->package = strdup(trait->name->ns->name);
 
             s->flags = is_static?FLAG_STATIC:0;
             s->flags |= FLAG_BUILTIN;