]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Drop --use-header compiler option and enable it by default 9f3249212112526353d41b875bf56b2eac6e9a47
authorMason Bogue <scythe@ortsz.com>
Fri, 20 Mar 2020 22:42:59 +0000 (18:42 -0400)
committerRico Tzschichholz <ricotz@ubuntu.com>
Sun, 5 Apr 2020 09:08:54 +0000 (11:08 +0200)
Import definitions from generated header files if available

Fixes https://gitlab.gnome.org/GNOME/vala/issues/713

ccode/valaccodefile.vala
codegen/valaccodebasemodule.vala
codegen/valagtypemodule.vala
compiler/valacompiler.vala
vala/valacodecontext.vala

index a82eac5c0a8b236b61a138f62d9c48aa803c1c51..7145946b12918bc333bfa8d719c9b31c5004e3b6 100644 (file)
@@ -22,7 +22,7 @@
 
 
 public class Vala.CCodeFile {
-       public CCodeFileType cfile_type { get; set; }
+       public CCodeFileType file_type { get; private set; }
 
        public weak SourceFile? file { get; private set; }
 
@@ -39,11 +39,9 @@ public class Vala.CCodeFile {
        CCodeFragment constant_declaration = new CCodeFragment ();
        CCodeFragment type_member_definition = new CCodeFragment ();
 
-       public CCodeFile (SourceFile? source_file = null) {
+       public CCodeFile (CCodeFileType type = CCodeFileType.SOURCE, SourceFile? source_file = null) {
                file = source_file;
-               if (source_file != null) {
-                       cfile_type = CCodeFileType.SOURCE;
-               }
+               file_type = type;
        }
 
        public bool add_declaration (string name) {
@@ -154,7 +152,7 @@ public class Vala.CCodeFile {
                        return false;
                }
 
-               if (cfile_type == CCodeFileType.SOURCE) {
+               if (file_type == CCodeFileType.SOURCE) {
                        writer.line_directives = line_directives;
 
                        comments.write (writer);
index 5e1b6e5f1c24f235d4e418613b17e1cdd35815d1..f58985b9e70f652d0ad7a6bb232fb3012aae571b 100644 (file)
@@ -557,10 +557,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        gtk_widget_type = (Class) gtk_ns.scope.lookup ("Widget");
                }
 
-               header_file = new CCodeFile ();
-               header_file.cfile_type = CCodeFileType.PUBLIC_HEADER;
-               internal_header_file = new CCodeFile ();
-               internal_header_file.cfile_type = CCodeFileType.INTERNAL_HEADER;
+               header_file = new CCodeFile (CCodeFileType.PUBLIC_HEADER);
+               internal_header_file = new CCodeFile (CCodeFileType.INTERNAL_HEADER);
 
                /* we're only interested in non-pkg source files */
                var source_files = context.get_source_files ();
@@ -672,8 +670,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
        }
 
        public bool add_symbol_declaration (CCodeFile decl_space, Symbol sym, string name) {
-               bool in_generated_header = CodeContext.get ().use_header
-                                          && (decl_space.cfile_type != CCodeFileType.PUBLIC_HEADER && !sym.is_internal_symbol ());
+               bool in_generated_header = context.header_filename != null
+                                          && (decl_space.file_type != CCodeFileType.PUBLIC_HEADER && !sym.is_internal_symbol ());
                if (decl_space.add_declaration (name)) {
                        return true;
                }
@@ -755,7 +753,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
        }
 
        public override void visit_source_file (SourceFile source_file) {
-               cfile = new CCodeFile (source_file);
+               cfile = new CCodeFile (CCodeFileType.SOURCE, source_file);
 
                user_marshal_set = new HashSet<string> (str_hash, str_equal);
 
index f7433f205d891b246054e6865463424dc832cfdf..4e8c917024d76f082b77fbd919f35a1b30dd6f26 100644 (file)
@@ -198,8 +198,8 @@ public class Vala.GTypeModule : GErrorModule {
                // Custom unref-methods need to be emitted before G_DEFINE_AUTOPTR_CLEANUP_FUNC,
                // so we guard against that special case and handle it in generate_method_declaration.
                if (!(base_class.is_compact && is_reference_counting (base_class))
-                   && (!context.use_header || decl_space.cfile_type == CCodeFileType.PUBLIC_HEADER
-                       || (decl_space.cfile_type == CCodeFileType.INTERNAL_HEADER && base_class.is_internal_symbol()))) {
+                   && (context.header_filename == null|| decl_space.file_type == CCodeFileType.PUBLIC_HEADER
+                       || (decl_space.file_type == CCodeFileType.INTERNAL_HEADER && base_class.is_internal_symbol()))) {
                        string autoptr_cleanup_func;
                        if (is_reference_counting (base_class)) {
                                autoptr_cleanup_func = get_ccode_unref_function (base_class);
@@ -426,8 +426,8 @@ public class Vala.GTypeModule : GErrorModule {
                        // in addition to the non-ref-countable case in generate_class_declaration.
                        unowned Class? cl = m.parent_symbol as Class;
                        if (cl != null && cl.is_compact && get_ccode_unref_function (cl) == get_ccode_name (m)
-                           && (!context.use_header || decl_space.cfile_type == CCodeFileType.PUBLIC_HEADER
-                               || (decl_space.cfile_type == CCodeFileType.INTERNAL_HEADER && cl.is_internal_symbol()))) {
+                           && (context.header_filename == null || decl_space.file_type == CCodeFileType.PUBLIC_HEADER
+                               || (decl_space.file_type == CCodeFileType.INTERNAL_HEADER && cl.is_internal_symbol()))) {
                                decl_space.add_type_member_declaration (new CCodeIdentifier ("G_DEFINE_AUTOPTR_CLEANUP_FUNC (%s, %s)".printf (get_ccode_name (cl), get_ccode_name (m))));
                                decl_space.add_type_member_declaration (new CCodeNewline ());
                        }
index 37d43008d7099a773dda0cd2203a4bad7f4c8f73..4cf66f3c5cb190978ddefe8bf51daac4cce1bb96 100644 (file)
@@ -55,7 +55,6 @@ class Vala.Compiler {
        static bool ccode_only;
        static bool abi_stability;
        static string header_filename;
-       static bool use_header;
        static string internal_header_filename;
        static string internal_vapi_filename;
        static string fast_vapi_filename;
@@ -119,7 +118,7 @@ class Vala.Compiler {
                { "api-version", 0, 0, OptionArg.NONE, ref api_version, "Display API version number", null },
                { "ccode", 'C', 0, OptionArg.NONE, ref ccode_only, "Output C code", null },
                { "header", 'H', 0, OptionArg.FILENAME, ref header_filename, "Output C header file", "FILE" },
-               { "use-header", 0, 0, OptionArg.NONE, ref use_header, "Use C header file", null },
+               { "use-header", 0, OptionFlags.OPTIONAL_ARG | OptionFlags.NO_ARG, OptionArg.CALLBACK, (void*) option_deprecated, "Use C header file (DEPRECATED AND IGNORED)", null },
                { "includedir", 0, 0, OptionArg.FILENAME, ref includedir, "Directory used to include the C header file", "DIRECTORY" },
                { "internal-header", 'h', 0, OptionArg.FILENAME, ref internal_header_filename, "Output internal C header file", "FILE" },
                { "internal-vapi", 0, 0, OptionArg.FILENAME, ref internal_vapi_filename, "Output vapi with internal api", "FILE" },
@@ -266,10 +265,6 @@ class Vala.Compiler {
                context.abi_stability = abi_stability;
                context.compile_only = compile_only;
                context.header_filename = header_filename;
-               if (header_filename == null && use_header) {
-                       Report.error (null, "--use-header may only be used in combination with --header");
-               }
-               context.use_header = use_header;
                context.internal_header_filename = internal_header_filename;
                context.symbols_filename = symbols_filename;
                context.includedir = includedir;
index da07b6f54f790be403517e7b623453ce52915fee..6ddcd8f5c55753cf5f4288bb4e2bbb41fc9a8cf7 100644 (file)
@@ -91,8 +91,6 @@ public class Vala.CodeContext {
         */
        public string? internal_header_filename { get; set; }
 
-       public bool use_header { get; set; }
-
        /**
         * Base directory used for header_filename in the VAPIs.
         */