tidied up parameter passing
[swftools.git] / lib / as3 / import.c
index 4353202..62c5152 100644 (file)
@@ -103,7 +103,9 @@ static int compare_traits(const void*v1, const void*v2)
 static classinfo_t*resolve_class(char*filename, char*what, multiname_t*n)
 {
     if(!n) return 0;
-    if(!n->name[0] || !strcmp(n->name, "void")) return 0;
+    if(!n->name[0]) return 0;
+    if(!strcmp(n->name, "void")) 
+        return &voidclass;
 
     classinfo_t*c = 0;
     if(n->ns && n->ns->name) {
@@ -188,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