Add attribute information to skydoc output

RELNOTES: None.
PiperOrigin-RevId: 204147228
diff --git a/src/test/java/com/google/devtools/build/skydoc/BUILD b/src/test/java/com/google/devtools/build/skydoc/BUILD
index c12329f..31b365d 100644
--- a/src/test/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/test/java/com/google/devtools/build/skydoc/BUILD
@@ -22,6 +22,7 @@
         "//src/main/java/com/google/devtools/build/lib:syntax",
         "//src/main/java/com/google/devtools/build/lib/vfs",
         "//src/main/java/com/google/devtools/build/skydoc:skydoc_lib",
+        "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
         "//src/main/java/com/google/devtools/build/skydoc/rendering",
         "//src/test/java/com/google/devtools/build/lib:testutil",
         "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
@@ -97,3 +98,10 @@
     input_file = "testdata/misc_apis_test/input.bzl",
     skydoc = "//src/main/java/com/google/devtools/build/skydoc",
 )
+
+skydoc_test(
+    name = "attribute_types_test",
+    golden_file = "testdata/attribute_types_test/golden.txt",
+    input_file = "testdata/attribute_types_test/input.bzl",
+    skydoc = "//src/main/java/com/google/devtools/build/skydoc",
+)
diff --git a/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java b/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java
index 89327e3..5bf7a95 100644
--- a/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java
+++ b/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java
@@ -24,6 +24,7 @@
 import com.google.devtools.build.lib.syntax.ParserInputSource;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeDescriptor.Type;
 import com.google.devtools.build.skydoc.rendering.RuleInfo;
 import java.io.IOException;
 import java.nio.file.Paths;
@@ -67,10 +68,10 @@
         "    doc = 'This is my rule. It does stuff.',",
         "    implementation = rule_impl,",
         "    attrs = {",
-        "        'first': attr.label(mandatory=True, allow_files=True, single_file=True),",
-        "        'second': attr.string_dict(mandatory=True),",
-        "        'third': attr.output(mandatory=True),",
-        "        'fourth': attr.bool(default=False, mandatory=False),",
+        "        'a': attr.label(mandatory=True, allow_files=True, single_file=True),",
+        "        'b': attr.string_dict(mandatory=True),",
+        "        'c': attr.output(mandatory=True),",
+        "        'd': attr.bool(default=False, mandatory=False),",
         "    },",
         ")");
 
@@ -88,7 +89,13 @@
     assertThat(ruleInfo.getKey()).isEqualTo("my_rule");
     assertThat(ruleInfo.getValue().getDocString()).isEqualTo("This is my rule. It does stuff.");
     assertThat(getAttrNames(ruleInfo.getValue())).containsExactly(
-        "first", "fourth", "second", "third").inOrder();
+        "name", "a", "b", "c", "d").inOrder();
+    assertThat(getAttrTypes(ruleInfo.getValue())).containsExactly(
+        Type.STRING.getDescription(),
+        Type.LABEL.getDescription(),
+        Type.STRING_DICT.getDescription(),
+        Type.LABEL.getDescription(),
+        Type.BOOLEAN.getDescription()).inOrder();
     assertThat(unexportedRuleInfos.build()).isEmpty();
   }
 
@@ -97,6 +104,11 @@
         .collect(Collectors.toList());
   }
 
+  private static Iterable<String> getAttrTypes(RuleInfo ruleInfo) {
+    return ruleInfo.getAttributes().stream().map(attr -> attr.getTypeString())
+        .collect(Collectors.toList());
+  }
+
   @Test
   public void testMultipleRuleNames() throws Exception {
     scratch.file(
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/android_basic_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/android_basic_test/golden.txt
index e7c4c5f..a69252b 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/android_basic_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/android_basic_test/golden.txt
@@ -2,7 +2,7 @@
 ## android_related_rule
 
 <pre>
-android_related_rule(first, fourth, second, third)
+android_related_rule(name, first, fourth, second, third)
 </pre>
 
 This rule does android-related things.
@@ -15,21 +15,38 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#android_related_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#android_related_rule_first">
       <td><code>first</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
     <tr id="#android_related_rule_fourth">
       <td><code>fourth</code></td>
-      <td></td>
+      <td>
+        Boolean; optional
+      </td>
     </tr>
     <tr id="#android_related_rule_second">
       <td><code>second</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
     <tr id="#android_related_rule_third">
       <td><code>third</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/apple_basic_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/apple_basic_test/golden.txt
index 882f540..4cbc0be 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/apple_basic_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/apple_basic_test/golden.txt
@@ -2,7 +2,7 @@
 ## apple_related_rule
 
 <pre>
-apple_related_rule(first, fourth, second, third)
+apple_related_rule(name, first, fourth, second, third)
 </pre>
 
 This rule does apple-related things.
@@ -15,21 +15,38 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#apple_related_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#apple_related_rule_first">
       <td><code>first</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
     <tr id="#apple_related_rule_fourth">
       <td><code>fourth</code></td>
-      <td></td>
+      <td>
+        Boolean; optional
+      </td>
     </tr>
     <tr id="#apple_related_rule_second">
       <td><code>second</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
     <tr id="#apple_related_rule_third">
       <td><code>third</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/golden.txt
new file mode 100644
index 0000000..746e3fe
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/golden.txt
@@ -0,0 +1,147 @@
+<a name="#my_rule"></a>
+## my_rule
+
+<pre>
+my_rule(name, a, b, c, d, e, f, g, h, i, j, k, l, m)
+</pre>
+
+This is my rule. It does stuff.
+
+### Attributes
+
+<table class="params-table">
+  <colgroup>
+    <col class="col-param" />
+    <col class="col-description" />
+  </colgroup>
+  <tbody>
+    <tr id="#my_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_a">
+      <td><code>a</code></td>
+      <td>
+        Boolean; required
+        <p>
+          Some bool
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_b">
+      <td><code>b</code></td>
+      <td>
+        Integer; required
+        <p>
+          Some int
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_c">
+      <td><code>c</code></td>
+      <td>
+        List of integers; required
+        <p>
+          Some int_list
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_d">
+      <td><code>d</code></td>
+      <td>
+        Label; required
+        <p>
+          Some label
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_e">
+      <td><code>e</code></td>
+      <td>
+        Dictionary: Label -> String; required
+        <p>
+          Some label_keyed_string_dict
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_f">
+      <td><code>f</code></td>
+      <td>
+        List of labels; required
+        <p>
+          Some label_list
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_g">
+      <td><code>g</code></td>
+      <td>
+        List of strings; optional
+        <p>
+          Some license
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_h">
+      <td><code>h</code></td>
+      <td>
+        Label; optional
+        <p>
+          Some output
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_i">
+      <td><code>i</code></td>
+      <td>
+        List of labels; optional
+        <p>
+          Some output_list
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_j">
+      <td><code>j</code></td>
+      <td>
+        String; required
+        <p>
+          Some string
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_k">
+      <td><code>k</code></td>
+      <td>
+        Dictionary: String -> String; required
+        <p>
+          Some string_dict
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_l">
+      <td><code>l</code></td>
+      <td>
+        List of strings; required
+        <p>
+          Some string_list
+        </p>
+      </td>
+    </tr>
+    <tr id="#my_rule_m">
+      <td><code>m</code></td>
+      <td>
+        Dictionary: String -> List of strings; optional
+        <p>
+          Some string_list_dict
+        </p>
+      </td>
+    </tr>
+  </tbody>
+</table>
+
+
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/input.bzl b/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/input.bzl
new file mode 100644
index 0000000..edcef5f
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/input.bzl
@@ -0,0 +1,22 @@
+def my_rule_impl(ctx):
+    return struct()
+
+my_rule = rule(
+    implementation = my_rule_impl,
+    doc = "This is my rule. It does stuff.",
+    attrs = {
+        "a": attr.bool(mandatory = True, doc = "Some bool"),
+        "b": attr.int(mandatory = True, doc = "Some int"),
+        "c": attr.int_list(mandatory = True, doc = "Some int_list"),
+        "d": attr.label(mandatory = True, doc = "Some label"),
+        "e": attr.label_keyed_string_dict(mandatory = True, doc = "Some label_keyed_string_dict"),
+        "f": attr.label_list(mandatory = True, doc = "Some label_list"),
+        "g": attr.license(mandatory = False, doc = "Some license"),
+        "h": attr.output(mandatory = False, doc = "Some output"),
+        "i": attr.output_list(mandatory = False, doc = "Some output_list"),
+        "j": attr.string(mandatory = True, doc = "Some string"),
+        "k": attr.string_dict(mandatory = True, doc = "Some string_dict"),
+        "l": attr.string_list(mandatory = True, doc = "Some string_list"),
+        "m": attr.string_list_dict(mandatory = False, doc = "Some string_list_dict"),
+    },
+)
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/cpp_basic_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/cpp_basic_test/golden.txt
index 9674b82..ee379d9 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/cpp_basic_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/cpp_basic_test/golden.txt
@@ -2,7 +2,7 @@
 ## cpp_related_rule
 
 <pre>
-cpp_related_rule(first, fourth, second, third)
+cpp_related_rule(name, first, fourth, second, third)
 </pre>
 
 This rule does cpp-related things.
@@ -15,21 +15,38 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#cpp_related_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#cpp_related_rule_first">
       <td><code>first</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
     <tr id="#cpp_related_rule_fourth">
       <td><code>fourth</code></td>
-      <td></td>
+      <td>
+        Boolean; optional
+      </td>
     </tr>
     <tr id="#cpp_related_rule_second">
       <td><code>second</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
     <tr id="#cpp_related_rule_third">
       <td><code>third</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/golden.txt
index 7ab9fc0..83f6ea4 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/golden.txt
@@ -2,7 +2,7 @@
 ## java_related_rule
 
 <pre>
-java_related_rule(first, fourth, second, third)
+java_related_rule(name, first, fourth, second, third)
 </pre>
 
 This rule does java-related things.
@@ -15,21 +15,38 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#java_related_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#java_related_rule_first">
       <td><code>first</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
     <tr id="#java_related_rule_fourth">
       <td><code>fourth</code></td>
-      <td></td>
+      <td>
+        Boolean; optional
+      </td>
     </tr>
     <tr id="#java_related_rule_second">
       <td><code>second</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
     <tr id="#java_related_rule_third">
       <td><code>third</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt
index 0619f29..810c90b 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt
@@ -2,7 +2,7 @@
 ## my_rule
 
 <pre>
-my_rule(first, fourth, second, third)
+my_rule(name, first, fourth, second, third)
 </pre>
 
 This rule exercises some of the build API.
@@ -15,21 +15,38 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#my_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#my_rule_first">
       <td><code>first</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
     <tr id="#my_rule_fourth">
       <td><code>fourth</code></td>
-      <td></td>
+      <td>
+        Boolean; optional
+      </td>
     </tr>
     <tr id="#my_rule_second">
       <td><code>second</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
     <tr id="#my_rule_third">
       <td><code>third</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_files_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_files_test/golden.txt
index 1b2d0a0..771e502 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_files_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_files_test/golden.txt
@@ -2,7 +2,7 @@
 ## my_rule
 
 <pre>
-my_rule(first, second)
+my_rule(name, first, second)
 </pre>
 
 This is my rule. It does stuff.
@@ -15,13 +15,29 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#my_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#my_rule_first">
       <td><code>first</code></td>
-      <td>first my_rule doc string</td>
+      <td>
+        Label; required
+        <p>
+          first my_rule doc string
+        </p>
+      </td>
     </tr>
     <tr id="#my_rule_second">
       <td><code>second</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
   </tbody>
 </table>
@@ -31,7 +47,7 @@
 ## other_rule
 
 <pre>
-other_rule(fourth, third)
+other_rule(name, fourth, third)
 </pre>
 
 This is another rule.
@@ -44,13 +60,29 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#other_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#other_rule_fourth">
       <td><code>fourth</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
     <tr id="#other_rule_third">
       <td><code>third</code></td>
-      <td>third other_rule doc string</td>
+      <td>
+        Label; required
+        <p>
+          third other_rule doc string
+        </p>
+      </td>
     </tr>
   </tbody>
 </table>
@@ -60,7 +92,7 @@
 ## yet_another_rule
 
 <pre>
-yet_another_rule(fifth)
+yet_another_rule(name, fifth)
 </pre>
 
 This is yet another rule
@@ -73,9 +105,20 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#yet_another_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#yet_another_rule_fifth">
       <td><code>fifth</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_rules_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_rules_test/golden.txt
index 7d37f79..3bf31da 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_rules_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_rules_test/golden.txt
@@ -2,7 +2,7 @@
 ## my_rule
 
 <pre>
-my_rule(first, second)
+my_rule(name, first, second)
 </pre>
 
 This is my rule. It does stuff.
@@ -15,13 +15,26 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#my_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#my_rule_first">
       <td><code>first</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
     <tr id="#my_rule_second">
       <td><code>second</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
   </tbody>
 </table>
@@ -31,7 +44,7 @@
 ## other_rule
 
 <pre>
-other_rule(fourth, third)
+other_rule(name, fourth, third)
 </pre>
 
 This is another rule.
@@ -44,13 +57,26 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#other_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#other_rule_fourth">
       <td><code>fourth</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
     <tr id="#other_rule_third">
       <td><code>third</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>
@@ -60,7 +86,7 @@
 ## yet_another_rule
 
 <pre>
-yet_another_rule(fifth)
+yet_another_rule(name, fifth)
 </pre>
 
 This is yet another rule
@@ -73,9 +99,20 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#yet_another_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#yet_another_rule_fifth">
       <td><code>fifth</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/simple_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/simple_test/golden.txt
index d86c0c7..b9f8cec 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/simple_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/simple_test/golden.txt
@@ -2,7 +2,7 @@
 ## my_rule
 
 <pre>
-my_rule(first, fourth, second, third)
+my_rule(name, first, fourth, second, third)
 </pre>
 
 This is my rule. It does stuff.
@@ -15,21 +15,44 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#my_rule_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#my_rule_first">
       <td><code>first</code></td>
-      <td>first doc string</td>
+      <td>
+        Label; required
+        <p>
+          first doc string
+        </p>
+      </td>
     </tr>
     <tr id="#my_rule_fourth">
       <td><code>fourth</code></td>
-      <td>fourth doc string</td>
+      <td>
+        Boolean; optional
+        <p>
+          fourth doc string
+        </p>
+      </td>
     </tr>
     <tr id="#my_rule_second">
       <td><code>second</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
     <tr id="#my_rule_third">
       <td><code>third</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/unknown_name_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/unknown_name_test/golden.txt
index 44040ee..4f78cdf 100644
--- a/src/test/java/com/google/devtools/build/skydoc/testdata/unknown_name_test/golden.txt
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/unknown_name_test/golden.txt
@@ -2,7 +2,7 @@
 ## <unknown name>
 
 <pre>
-<unknown name>(first, fourth, second, third)
+<unknown name>(name, first, fourth, second, third)
 </pre>
 
 
@@ -15,21 +15,38 @@
     <col class="col-description" />
   </colgroup>
   <tbody>
+    <tr id="#<unknown name>_name">
+      <td><code>name</code></td>
+      <td>
+        String; required
+        <p>
+          A unique name for this rule.
+        </p>
+      </td>
+    </tr>
     <tr id="#<unknown name>_first">
       <td><code>first</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
     <tr id="#<unknown name>_fourth">
       <td><code>fourth</code></td>
-      <td></td>
+      <td>
+        Boolean; optional
+      </td>
     </tr>
     <tr id="#<unknown name>_second">
       <td><code>second</code></td>
-      <td></td>
+      <td>
+        Dictionary: String -> String; required
+      </td>
     </tr>
     <tr id="#<unknown name>_third">
       <td><code>third</code></td>
-      <td></td>
+      <td>
+        Label; required
+      </td>
     </tr>
   </tbody>
 </table>