From: Luca Bruno Date: Sun, 29 Aug 2010 13:11:02 +0000 (+0200) Subject: girparser: Report unused metadata information X-Git-Tag: 0.11.2~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f70ac17396bbd5e987fb97842ad2a80725679bf;p=thirdparty%2Fvala.git girparser: Report unused metadata information --- diff --git a/vala/valagirparser.vala b/vala/valagirparser.vala index 2e1977372..3089ad197 100644 --- a/vala/valagirparser.vala +++ b/vala/valagirparser.vala @@ -591,6 +591,8 @@ public class Vala.GirParser : CodeVisitor { next (); parse_repository (); + report_unused_metadata (metadata); + reader = null; this.current_source_file = null; } @@ -2353,6 +2355,34 @@ public class Vala.GirParser : CodeVisitor { return c; } + /* Reporting */ + void report_unused_metadata (Metadata metadata) { + if (metadata == Metadata.empty) { + return; + } + + if (metadata.args.size == 0 && metadata.children.size == 0) { + Report.warning (metadata.source_reference, "empty metadata"); + return; + } + + foreach (var arg_type in metadata.args.get_keys ()) { + var arg = metadata.args[arg_type]; + if (!arg.used) { + // if metadata is used and argument is not, then it's a unexpected argument + Report.warning (arg.source_reference, "argument never used"); + } + } + + foreach (var child in metadata.children) { + if (!child.used) { + Report.warning (child.source_reference, "metadata never used"); + } else { + report_unused_metadata (child); + } + } + } + /* Post-parsing */ void resolve_gir_symbols () {