From: Rico Tzschichholz Date: Wed, 21 Nov 2018 14:33:24 +0000 (+0100) Subject: codegen: Add type declaration for errors and error domains as needed X-Git-Tag: 0.43.1~60 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6f5a64b7f21e18d732f88d9b20fc326e3089f8db;p=thirdparty%2Fvala.git codegen: Add type declaration for errors and error domains as needed --- diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index aabcd9b93..a1fe8b3a0 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -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; diff --git a/codegen/valagerrormodule.vala b/codegen/valagerrormodule.vala index a0cefb9d1..d29d09ca1 100644 --- a/codegen/valagerrormodule.vala +++ b/codegen/valagerrormodule.vala @@ -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 ()) {