From: Rico Tzschichholz Date: Sat, 19 Aug 2017 15:01:51 +0000 (+0200) Subject: vapigen: Mark given source-files as such and force girparser to handle them X-Git-Tag: 0.37.90~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1278166d5801f660a495df5ca11246bf68b691f;p=thirdparty%2Fvala.git vapigen: Mark given source-files as such and force girparser to handle them E.g. gtk+-4.0 is *one* library with multiple namespaces and gir files. So we need to handle this case and allow all explicitly given GIR files to be parsed. --- diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index 8a1353b26..219728c1e 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -1882,7 +1882,10 @@ public class Vala.GirParser : CodeVisitor { this.current_source_file.package_name = pkg; if (context.has_package (pkg)) { // package already provided elsewhere, stop parsing this GIR - return; + // if it was not passed explicitly + if (!this.current_source_file.explicit) { + return; + } } else { context.add_package (pkg); } diff --git a/vala/valasourcefile.vala b/vala/valasourcefile.vala index 04dfeff4c..621281dc5 100644 --- a/vala/valasourcefile.vala +++ b/vala/valasourcefile.vala @@ -142,6 +142,11 @@ public class Vala.SourceFile { */ public bool used { get; set; } + /** + * Whether this source-file was explicitly passed on the commandline. + */ + public bool explicit { get; set; } + private ArrayList comments = new ArrayList (); public List current_using_directives { get; set; default = new ArrayList (); } diff --git a/vapigen/valavapigen.vala b/vapigen/valavapigen.vala index ba29e489d..3453afd48 100644 --- a/vapigen/valavapigen.vala +++ b/vapigen/valavapigen.vala @@ -131,7 +131,9 @@ class Vala.VAPIGen { foreach (string source in sources) { if (FileUtils.test (source, FileTest.EXISTS)) { - context.add_source_file (new SourceFile (context, SourceFileType.PACKAGE, source)); + var source_file = new SourceFile (context, SourceFileType.PACKAGE, source); + source_file.explicit = true; + context.add_source_file (source_file); } else { Report.error (null, "%s not found".printf (source)); }