Add test for .scl file support (#298)

diff --git a/setup.bzl b/setup.bzl
index ab5a295..3cd04c2 100644
--- a/setup.bzl
+++ b/setup.bzl
@@ -47,6 +47,18 @@
         url = "https://github.com/bazelbuild/rules_java/releases/download/8.6.1/rules_java-8.6.1.tar.gz",
     )
 
+    # Transitive dep of rules_java, needs to be manually specified when not using bzlmod
+    # See https://github.com/bazelbuild/bazel/issues/21877
+    maybe(
+        http_archive,
+        name = "platforms",
+        urls = [
+            "https://mirror.bazel.build/github.com/bazelbuild/platforms/releases/download/1.0.0/platforms-1.0.0.tar.gz",
+            "https://github.com/bazelbuild/platforms/releases/download/1.0.0/platforms-1.0.0.tar.gz",
+        ],
+        sha256 = "3384eb1c30762704fbe38e440204e114154086c8fc8a8c2e3e28441028c019a8",
+    )
+
     RULES_JVM_EXTERNAL_TAG = "6.6"
     RULES_JVM_EXTERNAL_SHA = "3afe5195069bd379373528899c03a3072f568d33bd96fe037bd43b1f590535e7"
     maybe(
diff --git a/test/BUILD b/test/BUILD
index d3b2743..f205c6b 100644
--- a/test/BUILD
+++ b/test/BUILD
@@ -141,6 +141,12 @@
 )
 
 stardoc_test(
+    name = "scl_test",
+    golden_file = "testdata/scl_test/golden.md",
+    input_file = "testdata/scl_test/input.scl",
+)
+
+stardoc_test(
     name = "misc_apis_test",
     golden_file = "testdata/misc_apis_test/golden.md",
     input_file = "testdata/misc_apis_test/input.bzl",
diff --git a/test/testdata/scl_test/golden.md b/test/testdata/scl_test/golden.md
new file mode 100644
index 0000000..34aad6a
--- /dev/null
+++ b/test/testdata/scl_test/golden.md
@@ -0,0 +1,34 @@
+<!-- Generated with Stardoc: http://skydoc.bazel.build -->
+
+A test that verifies support for .scl files.
+
+<a id="my_function"></a>
+
+## my_function
+
+<pre>
+load("@stardoc//test:testdata/scl_test/input.scl", "my_function")
+
+my_function(<a href="#my_function-x">x</a>, <a href="#my_function-y">y</a>, <a href="#my_function-z">z</a>, <a href="#my_function-kwargs">**kwargs</a>)
+</pre>
+
+Dummy function
+
+Adds three values.
+
+
+**PARAMETERS**
+
+
+| Name  | Description | Default Value |
+| :------------- | :------------- | :------------- |
+| <a id="my_function-x"></a>x |  <p align="center"> - </p>   |  none |
+| <a id="my_function-y"></a>y |  <p align="center"> - </p>   |  none |
+| <a id="my_function-z"></a>z |  <p align="center"> - </p>   |  `"foo"` |
+| <a id="my_function-kwargs"></a>kwargs |  <p align="center"> - </p>   |  none |
+
+**RETURNS**
+
+x + y + z
+
+
diff --git a/test/testdata/scl_test/input.scl b/test/testdata/scl_test/input.scl
new file mode 100644
index 0000000..f0776d1
--- /dev/null
+++ b/test/testdata/scl_test/input.scl
@@ -0,0 +1,12 @@
+"""A test that verifies support for .scl files."""
+
+def my_function(x, y, z = "foo", **kwargs):
+    """
+    Dummy function
+
+    Adds three values.
+
+    Returns:
+        x + y + z
+    """
+    return x + y + z
diff --git a/test/testdata/symbolic_macro_inherit_attrs_test/golden.md b/test/testdata/symbolic_macro_inherit_attrs_test/golden.md
index fecc5f4..5af995a 100644
--- a/test/testdata/symbolic_macro_inherit_attrs_test/golden.md
+++ b/test/testdata/symbolic_macro_inherit_attrs_test/golden.md
@@ -9,7 +9,7 @@
 <pre>
 load("@stardoc//test:testdata/symbolic_macro_inherit_attrs_test/input.bzl", "inherit_from_common")
 
-inherit_from_common(*, <a href="#inherit_from_common-name">name</a>, <a href="#inherit_from_common-srcs">srcs</a>, <a href="#inherit_from_common-compatible_with">compatible_with</a>, <a href="#inherit_from_common-deprecation">deprecation</a>, <a href="#inherit_from_common-exec_compatible_with">exec_compatible_with</a>,
+inherit_from_common(*, <a href="#inherit_from_common-name">name</a>, <a href="#inherit_from_common-srcs">srcs</a>, <a href="#inherit_from_common-aspect_hints">aspect_hints</a>, <a href="#inherit_from_common-compatible_with">compatible_with</a>, <a href="#inherit_from_common-deprecation">deprecation</a>, <a href="#inherit_from_common-exec_compatible_with">exec_compatible_with</a>,
                     <a href="#inherit_from_common-exec_group_compatible_with">exec_group_compatible_with</a>, <a href="#inherit_from_common-exec_properties">exec_properties</a>, <a href="#inherit_from_common-features">features</a>, <a href="#inherit_from_common-package_metadata">package_metadata</a>,
                     <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>
@@ -23,6 +23,7 @@
 | :------------- | :------------- | :------------- | :------------- | :------------- |
 | <a id="inherit_from_common-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_common-srcs"></a>srcs |  Source files   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `[]`  |
+| <a id="inherit_from_common-aspect_hints"></a>aspect_hints |  Inherited rule attribute   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
 | <a id="inherit_from_common-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_common-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_common-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`  |
@@ -93,9 +94,10 @@
 <pre>
 load("@stardoc//test:testdata/symbolic_macro_inherit_attrs_test/input.bzl", "inherit_from_rule")
 
-inherit_from_rule(*, <a href="#inherit_from_rule-name">name</a>, <a href="#inherit_from_rule-deps">deps</a>, <a href="#inherit_from_rule-srcs">srcs</a>, <a href="#inherit_from_rule-args">args</a>, <a href="#inherit_from_rule-compatible_with">compatible_with</a>, <a href="#inherit_from_rule-deprecation">deprecation</a>, <a href="#inherit_from_rule-exec_compatible_with">exec_compatible_with</a>,
-                  <a href="#inherit_from_rule-exec_group_compatible_with">exec_group_compatible_with</a>, <a href="#inherit_from_rule-exec_properties">exec_properties</a>, <a href="#inherit_from_rule-features">features</a>, <a href="#inherit_from_rule-package_metadata">package_metadata</a>,
-                  <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>)
+inherit_from_rule(*, <a href="#inherit_from_rule-name">name</a>, <a href="#inherit_from_rule-deps">deps</a>, <a href="#inherit_from_rule-srcs">srcs</a>, <a href="#inherit_from_rule-args">args</a>, <a href="#inherit_from_rule-aspect_hints">aspect_hints</a>, <a href="#inherit_from_rule-compatible_with">compatible_with</a>, <a href="#inherit_from_rule-deprecation">deprecation</a>,
+                  <a href="#inherit_from_rule-exec_compatible_with">exec_compatible_with</a>, <a href="#inherit_from_rule-exec_group_compatible_with">exec_group_compatible_with</a>, <a href="#inherit_from_rule-exec_properties">exec_properties</a>, <a href="#inherit_from_rule-features">features</a>,
+                  <a href="#inherit_from_rule-package_metadata">package_metadata</a>, <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>
 
 InheritFromRule: Initializes some targets.
@@ -109,6 +111,7 @@
 | <a id="inherit_from_rule-deps"></a>deps |  Dependencies   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
 | <a id="inherit_from_rule-srcs"></a>srcs |  Source files   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `[]`  |
 | <a id="inherit_from_rule-args"></a>args |  Arguments   | List of strings | required |  |
+| <a id="inherit_from_rule-aspect_hints"></a>aspect_hints |  Inherited rule attribute   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
 | <a id="inherit_from_rule-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-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-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`  |
@@ -131,7 +134,7 @@
 <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>,
+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-aspect_hints">aspect_hints</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>)
@@ -148,6 +151,7 @@
 | <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-aspect_hints"></a>aspect_hints |  Inherited rule attribute   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
 | <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`  |
@@ -170,7 +174,7 @@
 <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>,
+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-aspect_hints">aspect_hints</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>)
@@ -186,6 +190,7 @@
 | <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-aspect_hints"></a>aspect_hints |  Inherited rule attribute   | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional |  `None`  |
 | <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`  |
diff --git a/update-stardoc-tests.sh b/update-stardoc-tests.sh
index bca0c6f..334b5bb 100755
--- a/update-stardoc-tests.sh
+++ b/update-stardoc-tests.sh
@@ -62,9 +62,9 @@
 update_non_manual_tests
 update_manual_tests_with_tag "noenable_bzlmod" --noenable_bzlmod --enable_workspace
 USE_BAZEL_VERSION="7.6.1" update_manual_tests_with_tag "bazel_7"
-USE_BAZEL_VERSION="8.1.1" update_manual_tests_with_tag "bazel_8"
-# last_green on 2025-04-01
-USE_BAZEL_VERSION="2845a0ca7428bdfe862137f5d9b468e9a2c389ad" update_manual_tests_with_tag "bazel_9"
+USE_BAZEL_VERSION="8.3.1" update_manual_tests_with_tag "bazel_8"
+# last_green on 2025-07-09
+USE_BAZEL_VERSION="d6398c122aec4f412c0cc201c353d741556b293a" update_manual_tests_with_tag "bazel_9"
 
 echo "** Files copied."
 echo "Please note that not all golden files are correctly copied by this script."