]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
GIR parser: Skip checks not relevant for bindings
authorJürg Billeter <j@bitron.ch>
Wed, 29 Jul 2009 15:44:00 +0000 (17:44 +0200)
committerJürg Billeter <j@bitron.ch>
Wed, 29 Jul 2009 15:44:00 +0000 (17:44 +0200)
vala/valamethod.vala
vala/valasignal.vala
vapigen/valagirparser.vala

index 7fad756854d0aa2ab0594ecca71fa4457a03befd..d1f51724e7cc97e68728d02139eefa28077b6437 100644 (file)
@@ -690,7 +690,7 @@ public class Vala.Method : Member {
 
                if (is_abstract && body != null) {
                        Report.error (source_reference, "Abstract methods cannot have bodies");
-               } else if ((is_abstract || is_virtual) && external && !external_package) {
+               } else if ((is_abstract || is_virtual) && external && !external_package && !parent_symbol.external) {
                        Report.error (source_reference, "Extern methods cannot be abstract or virtual");
                } else if (external && body != null) {
                        Report.error (source_reference, "Extern methods cannot have bodies");
index 3a69f598fc842e16b37267f02e0073aaa339a95d..79ede7374386dff2663a338ae39e57e46983096c 100644 (file)
@@ -248,6 +248,7 @@ public class Vala.Signal : Member, Lockable {
                if (is_virtual) {
                        default_handler = new Method (name, return_type, source_reference);
                        default_handler.access = access;
+                       default_handler.external = external;
                        default_handler.is_virtual = true;
                        default_handler.vfunc_name = name;
                        default_handler.signal_reference = this;
index 1e4812096feed1659a9e5f36668316dc0acf2990..ea4388fdf2cab8f3ad2366b738f41686213d46db 100644 (file)
@@ -264,6 +264,7 @@ public class Vala.GirParser : CodeVisitor {
                var st = new Struct (reader.get_attribute ("name"), get_current_src ());
                st.access = SymbolAccessibility.PUBLIC;
                st.base_type = parse_type_from_name (reader.get_attribute ("target"));
+               st.external = true;
                next ();
                end_element ("alias");
                return st;
@@ -496,6 +497,7 @@ public class Vala.GirParser : CodeVisitor {
        Struct parse_record () {
                start_element ("record");
                var st = new Struct (reader.get_attribute ("name"), get_current_src ());
+               st.external = true;
 
                string glib_is_gtype_struct_for = reader.get_attribute ("glib:is-gtype-struct-for");
 
@@ -558,6 +560,7 @@ public class Vala.GirParser : CodeVisitor {
                start_element ("class");
                var cl = new Class (reader.get_attribute ("name"), get_current_src ());
                cl.access = SymbolAccessibility.PUBLIC;
+               cl.external = true;
 
                string cname = reader.get_attribute ("c:type");
                if (cname != null) {
@@ -980,6 +983,7 @@ public class Vala.GirParser : CodeVisitor {
                }
                var sig = new Signal (name, return_type);
                sig.access = SymbolAccessibility.PUBLIC;
+               sig.external = true;
                if (current_token == MarkupTokenType.START_ELEMENT && reader.name == "parameters") {
                        start_element ("parameters");
                        next ();
@@ -996,6 +1000,7 @@ public class Vala.GirParser : CodeVisitor {
                start_element ("glib:boxed");
                var st = new Struct (reader.get_attribute ("glib:name"));
                st.access = SymbolAccessibility.PUBLIC;
+               st.external = true;
 
                string cname = reader.get_attribute ("c:type");
                if (cname != null) {
@@ -1026,6 +1031,7 @@ public class Vala.GirParser : CodeVisitor {
                start_element ("union");
                var st = new Struct (reader.get_attribute ("name"));
                st.access = SymbolAccessibility.PUBLIC;
+               st.external = true;
                next ();
 
                while (current_token == MarkupTokenType.START_ELEMENT) {