]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
libvaladoc: @parameter: check for existence
authorFlorian Brosch <flo.brosch@gmail.com>
Fri, 6 Jan 2012 15:26:31 +0000 (16:26 +0100)
committerFlorian Brosch <flo.brosch@gmail.com>
Fri, 6 Jan 2012 16:33:38 +0000 (17:33 +0100)
icons/devhelpstyle.css
icons/style.css
icons/wikistyle.css
src/libvaladoc/html/htmlrenderer.vala
src/libvaladoc/taglets/tagletparam.vala

index c52052af210fa713b5c016a82dab79a85c04c14c..d6c94432b10877c7d9aaae7d7d26613a3faaca1f 100644 (file)
@@ -202,6 +202,10 @@ h3.main_title {
 .main_parameter_table_text, .main_errordomain_table_text, .main_enum_table_text {
 }
 
+.main_parameter_table_unknown_parameter {
+       color: GREY;
+}
+
 .main_parameter_table_name, .main_errordomain_table_name, .main_enum_table_name {
        vertical-align: top;
        text-align: right;
index c4b0c799be04ca287bd8ac2b39f035f7d6237f6e..919fba6a9eaf8e8e199043593bbd16a01ba48cb3 100644 (file)
@@ -217,6 +217,10 @@ h3.main_title {
 .main_parameter_table_text, .main_errordomain_table_text, .main_enum_table_text {
 }
 
+.main_parameter_table_unknown_parameter {
+       color: GREY;
+}
+
 .main_parameter_table_name, .main_errordomain_table_name, .main_enum_table_name {
        vertical-align: top;
        text-align: right;
index a3d8e4b98153fcd05e2c9554d6edac2f5c5d46af..d9aab37db43c4ab5f5a1685d5e2a8f4c61d7d30a 100644 (file)
@@ -203,6 +203,10 @@ h3.main_title {
 .main_parameter_table_text, .main_errordomain_table_text, .main_enum_table_text {
 }
 
+.main_parameter_table_unknown_parameter {
+       color: GREY;
+}
+
 .main_parameter_table_name, .main_errordomain_table_name, .main_enum_table_name {
        vertical-align: top;
        text-align: right;
index 22353804d8dadf374c131e61396489480d376442..d0ea807cbd307c2417377190983d0c885ee4fffc 100755 (executable)
@@ -127,7 +127,12 @@ public class Valadoc.Html.HtmlRenderer : ContentRenderer {
                        taglets,
                        (taglet) => {
                                var param = taglet as Taglets.Param;
-                               writer.start_tag ("tr");
+                               string[]? unknown_parameter_css = null;
+                               if (param.parameter == null) {
+                                       unknown_parameter_css = {"class", "main_parameter_table_unknown_parameter"};
+                               }
+
+                               writer.start_tag ("tr", unknown_parameter_css);
                                writer.start_tag ("td", {"class", "main_parameter_table_name"}).text (param.parameter_name).end_tag ("td");
                                writer.start_tag ("td");
                                param.accept_children (this);
index ed5505ee75172a6951c42bf2f92112f768f69cb8..db0d962c355961bdebb8a2e17c878fa8ca0fd98e 100755 (executable)
@@ -27,6 +27,8 @@ using Valadoc.Content;
 public class Valadoc.Taglets.Param : InlineContent, Taglet, Block {
        public string parameter_name { internal set; get; }
 
+       public Api.Symbol? parameter { private set; get; }
+
        public Rule? get_parser_rule (Rule run_rule) {
                return Rule.seq ({
                        Rule.option ({ Rule.many ({ TokenType.SPACE }) }),
@@ -37,7 +39,31 @@ public class Valadoc.Taglets.Param : InlineContent, Taglet, Block {
 
 
        public override void check (Api.Tree api_root, Api.Node container, ErrorReporter reporter, Settings settings) {
-               // TODO check for the existence of such a parameter
+               // Check for the existence of such a parameter
+
+               this.parameter = null;
+
+               if (parameter_name == "...") {
+                       Gee.List<Api.Node> params = container.get_children_by_type (Api.NodeType.FORMAL_PARAMETER, false);
+                       foreach (Api.Node param in params) {
+                               if (((Api.FormalParameter) param).ellipsis) {
+                                       this.parameter = (Api.Symbol) param;
+                                       break;
+                               }
+                       }
+               } else {
+                       Gee.List<Api.Node> params = container.get_children_by_types ({Api.NodeType.FORMAL_PARAMETER, Api.NodeType.TYPE_PARAMETER}, false);
+                       foreach (Api.Node param in params) {
+                               if (param.name == parameter_name) {
+                                       this.parameter = (Api.Symbol) param;
+                                       break;
+                               }
+                       }
+               }
+
+               if (this.parameter == null) {
+                       reporter.simple_warning ("%s: Unknown parameter `%s'", container.get_full_name (), parameter_name);
+               }
 
                base.check (api_root, container, reporter, settings);
        }