]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Add type declaration for errors and error domains as needed
authorRico Tzschichholz <ricotz@ubuntu.com>
Wed, 21 Nov 2018 14:33:24 +0000 (15:33 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Wed, 21 Nov 2018 18:15:20 +0000 (19:15 +0100)
codegen/valaccodebasemodule.vala
codegen/valagerrormodule.vala

index aabcd9b936fb0cc6f8fe00cdb7c7e7f673fda341..a1fe8b3a07704e9c2301eb795e670cef45b2800d 100644 (file)
@@ -325,6 +325,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
        public DataType delegate_target_type;
        public DelegateType delegate_target_destroy_type;
        Delegate destroy_notify;
+       Class gerror;
 
        public bool in_plugin = false;
        public string module_init_param_name;
@@ -475,6 +476,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        gthreadpool_type = (TypeSymbol) glib_ns.scope.lookup ("ThreadPool");
                        gdestroynotify_type = new DelegateType ((Delegate) glib_ns.scope.lookup ("DestroyNotify"));
 
+                       gerror = (Class) root_symbol.scope.lookup ("GLib").scope.lookup ("Error");
                        gquark_type = new IntegerType ((Struct) glib_ns.scope.lookup ("Quark"));
                        gvalue_type = (Struct) glib_ns.scope.lookup ("Value");
                        gvariant_type = (Class) glib_ns.scope.lookup ("Variant");
@@ -1513,6 +1515,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        var error_type = (ErrorType) type;
                        if (error_type.error_domain != null) {
                                generate_error_domain_declaration (error_type.error_domain, decl_space);
+                       } else {
+                               generate_class_declaration (gerror, decl_space);
                        }
                } else if (type is PointerType) {
                        var pointer_type = (PointerType) type;
index a0cefb9d11c0eb5e751173244cd071adcaa61848..d29d09ca10d0f307e56f8432d101bbae48ca86ec 100644 (file)
@@ -33,6 +33,8 @@ public class Vala.GErrorModule : CCodeDelegateModule {
                        return;
                }
 
+               generate_type_declaration (gquark_type, decl_space);
+
                var cenum = new CCodeEnum (get_ccode_name (edomain));
 
                foreach (ErrorCode ecode in edomain.get_codes ()) {