summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2017-08-19 17:01:51 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2017-08-19 17:01:51 +0200
commitf1278166d5801f660a495df5ca11246bf68b691f (patch)
tree81f65b37d423d9d96d96166f053c6a0f75f3b787
parentc89c305ceb63c9b4ba017eec4a3daf734e822651 (diff)
downloadvala-f1278166d5801f660a495df5ca11246bf68b691f.tar.gz
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.
-rw-r--r--vala/valagirparser.vala5
-rw-r--r--vala/valasourcefile.vala5
-rw-r--r--vapigen/valavapigen.vala4
3 files changed, 12 insertions, 2 deletions
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<Comment> comments = new ArrayList<Comment> ();
public List<UsingDirective> current_using_directives { get; set; default = new ArrayList<UsingDirective> (); }
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));
}