Expands the Symbolic Macros tests. (#287)

- Test overriding attribute docs
- Test blocking an inherited attribute remove it from the docs.
- Make the `doc` values distinct to make it clear where values come from.
- Add uses of `inherit_attrs` where the `macro` doesn't have a `doc` value.
diff --git a/test/testdata/symbolic_macro_inherit_attrs_test/bazel_8_golden.md b/test/testdata/symbolic_macro_inherit_attrs_test/bazel_8_golden.md
index e805654..d235333 100644
--- a/test/testdata/symbolic_macro_inherit_attrs_test/bazel_8_golden.md
+++ b/test/testdata/symbolic_macro_inherit_attrs_test/bazel_8_golden.md
@@ -14,7 +14,7 @@
                     <a href="#inherit_from_common-target_compatible_with">target_compatible_with</a>, <a href="#inherit_from_common-testonly">testonly</a>, <a href="#inherit_from_common-toolchains">toolchains</a>, <a href="#inherit_from_common-visibility">visibility</a>)
 </pre>
 
-Initializes some targets.
+InheritFromCommon: Initializes some targets.
 
 **ATTRIBUTES**
 
@@ -47,7 +47,7 @@
 inherit_from_macro(*, <a href="#inherit_from_macro-name">name</a>, <a href="#inherit_from_macro-deps">deps</a>, <a href="#inherit_from_macro-srcs">srcs</a>, <a href="#inherit_from_macro-args">args</a>, <a href="#inherit_from_macro-visibility">visibility</a>)
 </pre>
 
-Initializes some targets.
+InheritFromMacro: Initializes some targets.
 
 **ATTRIBUTES**
 
@@ -61,6 +61,30 @@
 | <a id="inherit_from_macro-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
 
 
+<a id="inherit_from_macro_no_doc"></a>
+
+## inherit_from_macro_no_doc
+
+<pre>
+load("@stardoc//test:testdata/symbolic_macro_inherit_attrs_test/input.bzl", "inherit_from_macro_no_doc")
+
+inherit_from_macro_no_doc(*, <a href="#inherit_from_macro_no_doc-name">name</a>, <a href="#inherit_from_macro_no_doc-deps">deps</a>, <a href="#inherit_from_macro_no_doc-srcs">srcs</a>, <a href="#inherit_from_macro_no_doc-args">args</a>, <a href="#inherit_from_macro_no_doc-visibility">visibility</a>)
+</pre>
+
+
+
+**ATTRIBUTES**
+
+
+| Name  | Description | Type | Mandatory | Default |
+| :------------- | :------------- | :------------- | :------------- | :------------- |
+| <a id="inherit_from_macro_no_doc-name"></a>name |  A unique name for this macro instance. Normally, this is also the name for the macro's main or only target. The names of any other targets that this macro might create will be this name with a string suffix.   | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required |  |
+| <a id="inherit_from_macro_no_doc-deps"></a>deps |  Dependencies   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_macro_no_doc-srcs"></a>srcs |  Source files   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `[]`  |
+| <a id="inherit_from_macro_no_doc-args"></a>args |  Arguments   | List of strings | required |  |
+| <a id="inherit_from_macro_no_doc-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
+
+
 <a id="inherit_from_rule"></a>
 
 ## inherit_from_rule
@@ -73,7 +97,7 @@
                   <a href="#inherit_from_rule-target_compatible_with">target_compatible_with</a>, <a href="#inherit_from_rule-testonly">testonly</a>, <a href="#inherit_from_rule-toolchains">toolchains</a>, <a href="#inherit_from_rule-visibility">visibility</a>)
 </pre>
 
-Initializes some targets.
+InheritFromRule: Initializes some targets.
 
 **ATTRIBUTES**
 
@@ -98,3 +122,78 @@
 | <a id="inherit_from_rule-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
 
 
+<a id="inherit_from_rule_no_doc"></a>
+
+## inherit_from_rule_no_doc
+
+<pre>
+load("@stardoc//test:testdata/symbolic_macro_inherit_attrs_test/input.bzl", "inherit_from_rule_no_doc")
+
+inherit_from_rule_no_doc(*, <a href="#inherit_from_rule_no_doc-name">name</a>, <a href="#inherit_from_rule_no_doc-deps">deps</a>, <a href="#inherit_from_rule_no_doc-srcs">srcs</a>, <a href="#inherit_from_rule_no_doc-args">args</a>, <a href="#inherit_from_rule_no_doc-compatible_with">compatible_with</a>, <a href="#inherit_from_rule_no_doc-deprecation">deprecation</a>,
+                         <a href="#inherit_from_rule_no_doc-exec_compatible_with">exec_compatible_with</a>, <a href="#inherit_from_rule_no_doc-exec_properties">exec_properties</a>, <a href="#inherit_from_rule_no_doc-features">features</a>, <a href="#inherit_from_rule_no_doc-package_metadata">package_metadata</a>,
+                         <a href="#inherit_from_rule_no_doc-restricted_to">restricted_to</a>, <a href="#inherit_from_rule_no_doc-tags">tags</a>, <a href="#inherit_from_rule_no_doc-target_compatible_with">target_compatible_with</a>, <a href="#inherit_from_rule_no_doc-testonly">testonly</a>, <a href="#inherit_from_rule_no_doc-toolchains">toolchains</a>,
+                         <a href="#inherit_from_rule_no_doc-visibility">visibility</a>)
+</pre>
+
+
+
+**ATTRIBUTES**
+
+
+| Name  | Description | Type | Mandatory | Default |
+| :------------- | :------------- | :------------- | :------------- | :------------- |
+| <a id="inherit_from_rule_no_doc-name"></a>name |  A unique name for this macro instance. Normally, this is also the name for the macro's main or only target. The names of any other targets that this macro might create will be this name with a string suffix.   | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required |  |
+| <a id="inherit_from_rule_no_doc-deps"></a>deps |  Dependencies   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-srcs"></a>srcs |  Source files   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `[]`  |
+| <a id="inherit_from_rule_no_doc-args"></a>args |  Arguments   | List of strings | required |  |
+| <a id="inherit_from_rule_no_doc-compatible_with"></a>compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-deprecation"></a>deprecation |  <a href="https://bazel.build/reference/be/common-definitions#common.deprecation">Inherited rule attribute</a>   | String; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-exec_compatible_with"></a>exec_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-exec_properties"></a>exec_properties |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_properties">Inherited rule attribute</a>   | <a href="https://bazel.build/rules/lib/core/dict">Dictionary: String -> String</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-features"></a>features |  <a href="https://bazel.build/reference/be/common-definitions#common.features">Inherited rule attribute</a>   | List of strings | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-package_metadata"></a>package_metadata |  <a href="https://bazel.build/reference/be/common-definitions#common.package_metadata">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-restricted_to"></a>restricted_to |  <a href="https://bazel.build/reference/be/common-definitions#common.restricted_to">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-tags"></a>tags |  <a href="https://bazel.build/reference/be/common-definitions#common.tags">Inherited rule attribute</a>   | List of strings; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-target_compatible_with"></a>target_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.target_compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-testonly"></a>testonly |  <a href="https://bazel.build/reference/be/common-definitions#common.testonly">Inherited rule attribute</a>   | Boolean; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-toolchains"></a>toolchains |  <a href="https://bazel.build/reference/be/common-definitions#common.toolchains">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
+
+
+<a id="inherit_from_rule_with_overrides"></a>
+
+## inherit_from_rule_with_overrides
+
+<pre>
+load("@stardoc//test:testdata/symbolic_macro_inherit_attrs_test/input.bzl", "inherit_from_rule_with_overrides")
+
+inherit_from_rule_with_overrides(*, <a href="#inherit_from_rule_with_overrides-name">name</a>, <a href="#inherit_from_rule_with_overrides-srcs">srcs</a>, <a href="#inherit_from_rule_with_overrides-args">args</a>, <a href="#inherit_from_rule_with_overrides-compatible_with">compatible_with</a>, <a href="#inherit_from_rule_with_overrides-deprecation">deprecation</a>,
+                                 <a href="#inherit_from_rule_with_overrides-exec_compatible_with">exec_compatible_with</a>, <a href="#inherit_from_rule_with_overrides-exec_properties">exec_properties</a>, <a href="#inherit_from_rule_with_overrides-features">features</a>, <a href="#inherit_from_rule_with_overrides-package_metadata">package_metadata</a>,
+                                 <a href="#inherit_from_rule_with_overrides-restricted_to">restricted_to</a>, <a href="#inherit_from_rule_with_overrides-tags">tags</a>, <a href="#inherit_from_rule_with_overrides-target_compatible_with">target_compatible_with</a>, <a href="#inherit_from_rule_with_overrides-testonly">testonly</a>, <a href="#inherit_from_rule_with_overrides-toolchains">toolchains</a>,
+                                 <a href="#inherit_from_rule_with_overrides-visibility">visibility</a>)
+</pre>
+
+InheritFromRuleWithOverrides: Initializes some targets.
+
+**ATTRIBUTES**
+
+
+| Name  | Description | Type | Mandatory | Default |
+| :------------- | :------------- | :------------- | :------------- | :------------- |
+| <a id="inherit_from_rule_with_overrides-name"></a>name |  A unique name for this macro instance. Normally, this is also the name for the macro's main or only target. The names of any other targets that this macro might create will be this name with a string suffix.   | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required |  |
+| <a id="inherit_from_rule_with_overrides-srcs"></a>srcs |  Source files   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `[]`  |
+| <a id="inherit_from_rule_with_overrides-args"></a>args |  Override docs for Arguments   | List of strings | required |  |
+| <a id="inherit_from_rule_with_overrides-compatible_with"></a>compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-deprecation"></a>deprecation |  <a href="https://bazel.build/reference/be/common-definitions#common.deprecation">Inherited rule attribute</a>   | String; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-exec_compatible_with"></a>exec_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-exec_properties"></a>exec_properties |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_properties">Inherited rule attribute</a>   | <a href="https://bazel.build/rules/lib/core/dict">Dictionary: String -> String</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-features"></a>features |  <a href="https://bazel.build/reference/be/common-definitions#common.features">Inherited rule attribute</a>   | List of strings | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-package_metadata"></a>package_metadata |  <a href="https://bazel.build/reference/be/common-definitions#common.package_metadata">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-restricted_to"></a>restricted_to |  <a href="https://bazel.build/reference/be/common-definitions#common.restricted_to">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-tags"></a>tags |  <a href="https://bazel.build/reference/be/common-definitions#common.tags">Inherited rule attribute</a>   | List of strings; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-target_compatible_with"></a>target_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.target_compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-testonly"></a>testonly |  <a href="https://bazel.build/reference/be/common-definitions#common.testonly">Inherited rule attribute</a>   | Boolean; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-toolchains"></a>toolchains |  <a href="https://bazel.build/reference/be/common-definitions#common.toolchains">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
+
+
diff --git a/test/testdata/symbolic_macro_inherit_attrs_test/golden.md b/test/testdata/symbolic_macro_inherit_attrs_test/golden.md
index 53a6103..fecc5f4 100644
--- a/test/testdata/symbolic_macro_inherit_attrs_test/golden.md
+++ b/test/testdata/symbolic_macro_inherit_attrs_test/golden.md
@@ -14,7 +14,7 @@
                     <a href="#inherit_from_common-restricted_to">restricted_to</a>, <a href="#inherit_from_common-tags">tags</a>, <a href="#inherit_from_common-target_compatible_with">target_compatible_with</a>, <a href="#inherit_from_common-testonly">testonly</a>, <a href="#inherit_from_common-toolchains">toolchains</a>, <a href="#inherit_from_common-visibility">visibility</a>)
 </pre>
 
-Initializes some targets.
+InheritFromCommon: Initializes some targets.
 
 **ATTRIBUTES**
 
@@ -48,7 +48,7 @@
 inherit_from_macro(*, <a href="#inherit_from_macro-name">name</a>, <a href="#inherit_from_macro-deps">deps</a>, <a href="#inherit_from_macro-srcs">srcs</a>, <a href="#inherit_from_macro-args">args</a>, <a href="#inherit_from_macro-visibility">visibility</a>)
 </pre>
 
-Initializes some targets.
+InheritFromMacro: Initializes some targets.
 
 **ATTRIBUTES**
 
@@ -62,6 +62,30 @@
 | <a id="inherit_from_macro-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
 
 
+<a id="inherit_from_macro_no_doc"></a>
+
+## inherit_from_macro_no_doc
+
+<pre>
+load("@stardoc//test:testdata/symbolic_macro_inherit_attrs_test/input.bzl", "inherit_from_macro_no_doc")
+
+inherit_from_macro_no_doc(*, <a href="#inherit_from_macro_no_doc-name">name</a>, <a href="#inherit_from_macro_no_doc-deps">deps</a>, <a href="#inherit_from_macro_no_doc-srcs">srcs</a>, <a href="#inherit_from_macro_no_doc-args">args</a>, <a href="#inherit_from_macro_no_doc-visibility">visibility</a>)
+</pre>
+
+
+
+**ATTRIBUTES**
+
+
+| Name  | Description | Type | Mandatory | Default |
+| :------------- | :------------- | :------------- | :------------- | :------------- |
+| <a id="inherit_from_macro_no_doc-name"></a>name |  A unique name for this macro instance. Normally, this is also the name for the macro's main or only target. The names of any other targets that this macro might create will be this name with a string suffix.   | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required |  |
+| <a id="inherit_from_macro_no_doc-deps"></a>deps |  Dependencies   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_macro_no_doc-srcs"></a>srcs |  Source files   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `[]`  |
+| <a id="inherit_from_macro_no_doc-args"></a>args |  Arguments   | List of strings | required |  |
+| <a id="inherit_from_macro_no_doc-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
+
+
 <a id="inherit_from_rule"></a>
 
 ## inherit_from_rule
@@ -74,7 +98,7 @@
                   <a href="#inherit_from_rule-restricted_to">restricted_to</a>, <a href="#inherit_from_rule-tags">tags</a>, <a href="#inherit_from_rule-target_compatible_with">target_compatible_with</a>, <a href="#inherit_from_rule-testonly">testonly</a>, <a href="#inherit_from_rule-toolchains">toolchains</a>, <a href="#inherit_from_rule-visibility">visibility</a>)
 </pre>
 
-Initializes some targets.
+InheritFromRule: Initializes some targets.
 
 **ATTRIBUTES**
 
@@ -100,3 +124,80 @@
 | <a id="inherit_from_rule-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
 
 
+<a id="inherit_from_rule_no_doc"></a>
+
+## inherit_from_rule_no_doc
+
+<pre>
+load("@stardoc//test:testdata/symbolic_macro_inherit_attrs_test/input.bzl", "inherit_from_rule_no_doc")
+
+inherit_from_rule_no_doc(*, <a href="#inherit_from_rule_no_doc-name">name</a>, <a href="#inherit_from_rule_no_doc-deps">deps</a>, <a href="#inherit_from_rule_no_doc-srcs">srcs</a>, <a href="#inherit_from_rule_no_doc-args">args</a>, <a href="#inherit_from_rule_no_doc-compatible_with">compatible_with</a>, <a href="#inherit_from_rule_no_doc-deprecation">deprecation</a>,
+                         <a href="#inherit_from_rule_no_doc-exec_compatible_with">exec_compatible_with</a>, <a href="#inherit_from_rule_no_doc-exec_group_compatible_with">exec_group_compatible_with</a>, <a href="#inherit_from_rule_no_doc-exec_properties">exec_properties</a>, <a href="#inherit_from_rule_no_doc-features">features</a>,
+                         <a href="#inherit_from_rule_no_doc-package_metadata">package_metadata</a>, <a href="#inherit_from_rule_no_doc-restricted_to">restricted_to</a>, <a href="#inherit_from_rule_no_doc-tags">tags</a>, <a href="#inherit_from_rule_no_doc-target_compatible_with">target_compatible_with</a>, <a href="#inherit_from_rule_no_doc-testonly">testonly</a>,
+                         <a href="#inherit_from_rule_no_doc-toolchains">toolchains</a>, <a href="#inherit_from_rule_no_doc-visibility">visibility</a>)
+</pre>
+
+
+
+**ATTRIBUTES**
+
+
+| Name  | Description | Type | Mandatory | Default |
+| :------------- | :------------- | :------------- | :------------- | :------------- |
+| <a id="inherit_from_rule_no_doc-name"></a>name |  A unique name for this macro instance. Normally, this is also the name for the macro's main or only target. The names of any other targets that this macro might create will be this name with a string suffix.   | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required |  |
+| <a id="inherit_from_rule_no_doc-deps"></a>deps |  Dependencies   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-srcs"></a>srcs |  Source files   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `[]`  |
+| <a id="inherit_from_rule_no_doc-args"></a>args |  Arguments   | List of strings | required |  |
+| <a id="inherit_from_rule_no_doc-compatible_with"></a>compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-deprecation"></a>deprecation |  <a href="https://bazel.build/reference/be/common-definitions#common.deprecation">Inherited rule attribute</a>   | String; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-exec_compatible_with"></a>exec_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-exec_group_compatible_with"></a>exec_group_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_group_compatible_with">Inherited rule attribute</a>   | Dictionary: String -> List of labels; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-exec_properties"></a>exec_properties |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_properties">Inherited rule attribute</a>   | <a href="https://bazel.build/rules/lib/core/dict">Dictionary: String -> String</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-features"></a>features |  <a href="https://bazel.build/reference/be/common-definitions#common.features">Inherited rule attribute</a>   | List of strings | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-package_metadata"></a>package_metadata |  <a href="https://bazel.build/reference/be/common-definitions#common.package_metadata">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-restricted_to"></a>restricted_to |  <a href="https://bazel.build/reference/be/common-definitions#common.restricted_to">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-tags"></a>tags |  <a href="https://bazel.build/reference/be/common-definitions#common.tags">Inherited rule attribute</a>   | List of strings; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-target_compatible_with"></a>target_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.target_compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-testonly"></a>testonly |  <a href="https://bazel.build/reference/be/common-definitions#common.testonly">Inherited rule attribute</a>   | Boolean; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-toolchains"></a>toolchains |  <a href="https://bazel.build/reference/be/common-definitions#common.toolchains">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_no_doc-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
+
+
+<a id="inherit_from_rule_with_overrides"></a>
+
+## inherit_from_rule_with_overrides
+
+<pre>
+load("@stardoc//test:testdata/symbolic_macro_inherit_attrs_test/input.bzl", "inherit_from_rule_with_overrides")
+
+inherit_from_rule_with_overrides(*, <a href="#inherit_from_rule_with_overrides-name">name</a>, <a href="#inherit_from_rule_with_overrides-srcs">srcs</a>, <a href="#inherit_from_rule_with_overrides-args">args</a>, <a href="#inherit_from_rule_with_overrides-compatible_with">compatible_with</a>, <a href="#inherit_from_rule_with_overrides-deprecation">deprecation</a>,
+                                 <a href="#inherit_from_rule_with_overrides-exec_compatible_with">exec_compatible_with</a>, <a href="#inherit_from_rule_with_overrides-exec_group_compatible_with">exec_group_compatible_with</a>, <a href="#inherit_from_rule_with_overrides-exec_properties">exec_properties</a>,
+                                 <a href="#inherit_from_rule_with_overrides-features">features</a>, <a href="#inherit_from_rule_with_overrides-package_metadata">package_metadata</a>, <a href="#inherit_from_rule_with_overrides-restricted_to">restricted_to</a>, <a href="#inherit_from_rule_with_overrides-tags">tags</a>,
+                                 <a href="#inherit_from_rule_with_overrides-target_compatible_with">target_compatible_with</a>, <a href="#inherit_from_rule_with_overrides-testonly">testonly</a>, <a href="#inherit_from_rule_with_overrides-toolchains">toolchains</a>, <a href="#inherit_from_rule_with_overrides-visibility">visibility</a>)
+</pre>
+
+InheritFromRuleWithOverrides: Initializes some targets.
+
+**ATTRIBUTES**
+
+
+| Name  | Description | Type | Mandatory | Default |
+| :------------- | :------------- | :------------- | :------------- | :------------- |
+| <a id="inherit_from_rule_with_overrides-name"></a>name |  A unique name for this macro instance. Normally, this is also the name for the macro's main or only target. The names of any other targets that this macro might create will be this name with a string suffix.   | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required |  |
+| <a id="inherit_from_rule_with_overrides-srcs"></a>srcs |  Source files   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `[]`  |
+| <a id="inherit_from_rule_with_overrides-args"></a>args |  Override docs for Arguments   | List of strings | required |  |
+| <a id="inherit_from_rule_with_overrides-compatible_with"></a>compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-deprecation"></a>deprecation |  <a href="https://bazel.build/reference/be/common-definitions#common.deprecation">Inherited rule attribute</a>   | String; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-exec_compatible_with"></a>exec_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-exec_group_compatible_with"></a>exec_group_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_group_compatible_with">Inherited rule attribute</a>   | Dictionary: String -> List of labels; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-exec_properties"></a>exec_properties |  <a href="https://bazel.build/reference/be/common-definitions#common.exec_properties">Inherited rule attribute</a>   | <a href="https://bazel.build/rules/lib/core/dict">Dictionary: String -> String</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-features"></a>features |  <a href="https://bazel.build/reference/be/common-definitions#common.features">Inherited rule attribute</a>   | List of strings | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-package_metadata"></a>package_metadata |  <a href="https://bazel.build/reference/be/common-definitions#common.package_metadata">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-restricted_to"></a>restricted_to |  <a href="https://bazel.build/reference/be/common-definitions#common.restricted_to">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-tags"></a>tags |  <a href="https://bazel.build/reference/be/common-definitions#common.tags">Inherited rule attribute</a>   | List of strings; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-target_compatible_with"></a>target_compatible_with |  <a href="https://bazel.build/reference/be/common-definitions#common.target_compatible_with">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-testonly"></a>testonly |  <a href="https://bazel.build/reference/be/common-definitions#common.testonly">Inherited rule attribute</a>   | Boolean; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-toolchains"></a>toolchains |  <a href="https://bazel.build/reference/be/common-definitions#common.toolchains">Inherited rule attribute</a>   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
+| <a id="inherit_from_rule_with_overrides-visibility"></a>visibility |  The visibility to be passed to this macro's exported targets. It always implicitly includes the location where this macro is instantiated, so this attribute only needs to be explicitly set if you want the macro's targets to be additionally visible somewhere else.   | <a href="https://bazel.build/concepts/labels">List of labels</a>; <a href="https://bazel.build/reference/be/common-definitions#configurable-attributes">nonconfigurable</a> | optional |  |
+
+
diff --git a/test/testdata/symbolic_macro_inherit_attrs_test/input.bzl b/test/testdata/symbolic_macro_inherit_attrs_test/input.bzl
index 6c69b26..129f041 100644
--- a/test/testdata/symbolic_macro_inherit_attrs_test/input.bzl
+++ b/test/testdata/symbolic_macro_inherit_attrs_test/input.bzl
@@ -14,6 +14,7 @@
             doc = "Dependencies",
         ),
     },
+    doc = """Src Macro docs""",
     implementation = _impl,
 )
 
@@ -31,11 +32,12 @@
             doc = "Dependencies",
         ),
     },
+    doc = """Src Rule docs""",
     implementation = _rule_impl,
 )
 
 inherit_from_common = macro(
-    doc = """Initializes some targets.""",
+    doc = """InheritFromCommon: Initializes some targets.""",
     attrs = {
         "srcs": attr.label_list(
             doc = "Source files",
@@ -47,7 +49,19 @@
 )
 
 inherit_from_macro = macro(
-    doc = """Initializes some targets.""",
+    doc = """InheritFromMacro: Initializes some targets.""",
+    attrs = {
+        "srcs": attr.label_list(
+            doc = "Source files",
+            allow_files = True,
+        ),
+    },
+    inherit_attrs = _inherit_src_macro,
+    implementation = _impl,
+)
+
+inherit_from_macro_no_doc = macro(
+    # No `doc` value passed.
     attrs = {
         "srcs": attr.label_list(
             doc = "Source files",
@@ -59,7 +73,38 @@
 )
 
 inherit_from_rule = macro(
-    doc = """Initializes some targets.""",
+    doc = """InheritFromRule: Initializes some targets.""",
+    attrs = {
+        "srcs": attr.label_list(
+            doc = "Source files",
+            allow_files = True,
+        ),
+    },
+    inherit_attrs = _inherit_src_rule,
+    implementation = _impl,
+)
+
+inherit_from_rule_with_overrides = macro(
+    doc = """InheritFromRuleWithOverrides: Initializes some targets.""",
+    attrs = {
+        "srcs": attr.label_list(
+            doc = "Source files",
+            allow_files = True,
+        ),
+        # Should get custom documentation
+        "args": attr.string_list(
+            doc = "Override docs for Arguments",
+            mandatory = True,
+        ),
+        # Should cause it to be hidden.
+        "deps": None,
+    },
+    inherit_attrs = _inherit_src_rule,
+    implementation = _impl,
+)
+
+inherit_from_rule_no_doc = macro(
+    # No `doc` value passed.
     attrs = {
         "srcs": attr.label_list(
             doc = "Source files",