-
Notifications
You must be signed in to change notification settings - Fork 12.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Clang][Docs] Simpler syntax for Github links. #82746
Conversation
@llvm/pr-subscribers-clang Author: cor3ntin (cor3ntin) ChangesGithub links in release notes are often invalid rST, clutter the release notes and are annoying to write. This introduces a sphynx plugin that rewrites While this could be introduced globally on all of LLVM, the PR only modifies Clang for now. Full diff: https://github.com/llvm/llvm-project/pull/82746.diff 3 Files Affected:
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 529dd783ab7382..9e9b0cc23a7cac 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -79,7 +79,7 @@ C++20 Feature Support
more to ease the implementation and improve the user's using experience.
This follows the MSVC's behavior. Users interested in testing the more strict
behavior can use the flag '-Xclang -fno-skip-odr-check-in-gmf'.
- (`#79240 <https://github.com/llvm/llvm-project/issues/79240>`_).
+ (#GH79240).
- Implemented the `__is_layout_compatible` intrinsic to support
`P0466R5: Layout-compatibility and Pointer-interconvertibility Traits <https://wg21.link/P0466R5>`_.
@@ -116,7 +116,7 @@ C Language Changes
C23 Feature Support
^^^^^^^^^^^^^^^^^^^
- No longer diagnose use of binary literals as an extension in C23 mode. Fixes
- `#72017 <https://github.com/llvm/llvm-project/issues/72017>`_.
+ #GH72017.
- Corrected parsing behavior for the ``alignas`` specifier/qualifier in C23. We
previously handled it as an attribute as in C++, but there are parsing
@@ -129,7 +129,7 @@ C23 Feature Support
};
int i alignas(8) /* was accepted, now rejected */ ;
- Fixes (`#81472 <https://github.com/llvm/llvm-project/issues/81472>`_).
+ Fixes (#GH81472).
- Clang now generates predefined macros of the form ``__TYPE_FMTB__`` and
``__TYPE_FMTb__`` (e.g., ``__UINT_FAST64_FMTB__``) in C23 mode for use with
@@ -173,7 +173,7 @@ Improvements to Clang's diagnostics
name specifiers.
- The ``-Wshorten-64-to-32`` diagnostic is now grouped under ``-Wimplicit-int-conversion`` instead
- of ``-Wconversion``. Fixes `#69444 <https://github.com/llvm/llvm-project/issues/69444>`_.
+ of ``-Wconversion``. Fixes #GH69444.
- Clang now diagnoses friend declarations with an ``enum`` elaborated-type-specifier in language modes after C++98.
@@ -186,7 +186,7 @@ Improvements to Clang's diagnostics
``unsigned long long``, but this behavior may change in the future when Clang
implements
`WG14 N3029 <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3029.htm>`_.
- Fixes `#69352 <https://github.com/llvm/llvm-project/issues/69352>`_.
+ (#GH69352).
- Clang now diagnoses extraneous template parameter lists as a language extension.
@@ -200,17 +200,17 @@ Bug Fixes in This Version
- Clang now accepts elaborated-type-specifiers that explicitly specialize
a member class template for an implicit instantiation of a class template.
-- Fixed missing warnings when doing bool-like conversions in C23 (`#79435 <https://github.com/llvm/llvm-project/issues/79435>`_).
+- Fixed missing warnings when doing bool-like conversions in C23 (#GH79435).
- Clang's ``-Wshadow`` no longer warns when an init-capture is named the same as
a class field unless the lambda can capture this.
- Fixes (`#71976 <https://github.com/llvm/llvm-project/issues/71976>`_)
+ Fixes (#GH71976)
- Clang now accepts qualified partial/explicit specializations of variable templates that
are not nominable in the lookup context of the specialization.
- Clang now doesn't produce false-positive warning `-Wconstant-logical-operand`
for logical operators in C23.
- Fixes (`#64356 <https://github.com/llvm/llvm-project/issues/64356>`_).
+ Fixes (#GH64356).
Bug Fixes to Compiler Builtins
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -222,65 +222,51 @@ Bug Fixes to C++ Support
^^^^^^^^^^^^^^^^^^^^^^^^
- Fix crash when calling the constructor of an invalid class.
- Fixes (`#10518 <https://github.com/llvm/llvm-project/issues/10518>`_),
- (`#67914 <https://github.com/llvm/llvm-project/issues/10518>`_),
- and (`#78388 <https://github.com/llvm/llvm-project/issues/78388>`_)
+ (#GH10518) (#GH67914) (#GH78388)
- Fix crash when using lifetimebound attribute in function with trailing return.
- Fixes (`#73619 <https://github.com/llvm/llvm-project/issues/73619>`_)
+ (#GH73619)
- Addressed an issue where constraints involving injected class types are perceived
- distinct from its specialization types.
- (`#56482 <https://github.com/llvm/llvm-project/issues/56482>`_)
+ distinct from its specialization types. (#GH56482)
- Fixed a bug where variables referenced by requires-clauses inside
- nested generic lambdas were not properly injected into the constraint scope.
- (`#73418 <https://github.com/llvm/llvm-project/issues/73418>`_)
+ nested generic lambdas were not properly injected into the constraint scope. (#GH73418)
- Fixed a crash where substituting into a requires-expression that refers to function
parameters during the equivalence determination of two constraint expressions.
- (`#74447 <https://github.com/llvm/llvm-project/issues/74447>`_)
+ (#GH74447)
- Fixed deducing auto& from const int in template parameters of partial
- specializations.
- (`#77189 <https://github.com/llvm/llvm-project/issues/77189>`_)
+ specializations. (#GH77189)
- Fix for crash when using a erroneous type in a return statement.
- Fixes (`#63244 <https://github.com/llvm/llvm-project/issues/63244>`_)
- and (`#79745 <https://github.com/llvm/llvm-project/issues/79745>`_)
+ (#GH63244) (#GH79745)
- Fixed an out-of-bounds error caused by building a recovery expression for ill-formed
- function calls while substituting into constraints.
- (`#58548 <https://github.com/llvm/llvm-project/issues/58548>`_)
-- Fix incorrect code generation caused by the object argument of ``static operator()`` and ``static operator[]`` calls not being evaluated.
- Fixes (`#67976 <https://github.com/llvm/llvm-project/issues/67976>`_)
+ function calls while substituting into constraints. (#GH58548)
+- Fix incorrect code generation caused by the object argument
+ of ``static operator()`` and ``static operator[]`` calls not being evaluated. (#GH67976)
- Fix crash and diagnostic with const qualified member operator new.
- Fixes (`#79748 <https://github.com/llvm/llvm-project/issues/79748>`_)
+ Fixes (#GH79748)
- Fixed a crash where substituting into a requires-expression that involves parameter packs
- during the equivalence determination of two constraint expressions.
- (`#72557 <https://github.com/llvm/llvm-project/issues/72557>`_)
+ during the equivalence determination of two constraint expressions. (#GH72557)
- Fix a crash when specializing an out-of-line member function with a default
parameter where we did an incorrect specialization of the initialization of
- the default parameter.
- Fixes (`#68490 <https://github.com/llvm/llvm-project/issues/68490>`_)
+ the default parameter. (#GH68490)
- Fix a crash when trying to call a varargs function that also has an explicit object parameter.
- Fixes (`#80971 ICE when explicit object parameter be a function parameter pack`)
-- Reject explicit object parameters on `new` and `delete` operators.
- Fixes (`#82249 <https://github.com/llvm/llvm-project/issues/82249>` _)
+ Fixes (#GH80971)
+- Reject explicit object parameters on `new` and `delete` operators. (#GH82249)
+- Fix a crash when trying to call a varargs function that also has an explicit object parameter. (#GH80971)
- Fixed a bug where abbreviated function templates would append their invented template parameters to
an empty template parameter lists.
- Clang now classifies aggregate initialization in C++17 and newer as constant
or non-constant more accurately. Previously, only a subset of the initializer
- elements were considered, misclassifying some initializers as constant. Fixes
- some of (`#80510 <https://github.com/llvm/llvm-project/issues/80510>`).
-- Clang now ignores top-level cv-qualifiers on function parameters in template partial orderings.
- (`#75404 <https://github.com/llvm/llvm-project/issues/75404>`_)
+ elements were considered, misclassifying some initializers as constant. Partially fixes
+ #GH80510.
+- Clang now ignores top-level cv-qualifiers on function parameters in template partial orderings. (#GH75404)
- No longer reject valid use of the ``_Alignas`` specifier when declaring a
local variable, which is supported as a C11 extension in C++. Previously, it
was only accepted at namespace scope but not at local function scope.
-- Clang no longer tries to call consteval constructors at runtime when they appear in a member initializer.
- (`#82154 <https://github.com/llvm/llvm-project/issues/82154>`_`)
-- Fix crash when using an immediate-escalated function at global scope.
- (`#82258 <https://github.com/llvm/llvm-project/issues/82258>`_)
-- Correctly immediate-escalate lambda conversion functions.
- (`#82258 <https://github.com/llvm/llvm-project/issues/82258>`_)
+- Clang no longer tries to call consteval constructors at runtime when they appear in a member initializer. (#GH82154)
+- Fix crash when using an immediate-escalated function at global scope. (#GH82258)
+- Correctly immediate-escalate lambda conversion functions. (#GH82258)
- Fixed an issue where template parameters of a nested abbreviated generic lambda within
a requires-clause lie at the same depth as those of the surrounding lambda. This,
- in turn, results in the wrong template argument substitution during constraint checking.
- (`#78524 <https://github.com/llvm/llvm-project/issues/78524>`_)
+ in turn, results in the wrong template argument substitution during constraint checking. (#GH78524)
Bug Fixes to AST Handling
^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/clang/docs/conf.py b/clang/docs/conf.py
index 31a4daa39d5b8e..b4bb76c0dc9da8 100644
--- a/clang/docs/conf.py
+++ b/clang/docs/conf.py
@@ -18,7 +18,7 @@
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
-# sys.path.insert(0, os.path.abspath('.'))
+sys.path.insert(0, os.path.abspath("."))
# -- General configuration -----------------------------------------------------
@@ -27,7 +27,7 @@
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ["sphinx.ext.todo", "sphinx.ext.mathjax", "sphinx.ext.graphviz"]
+extensions = ["sphinx.ext.todo", "sphinx.ext.mathjax", "sphinx.ext.graphviz", "ghlinks"]
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
diff --git a/clang/docs/ghlinks.py b/clang/docs/ghlinks.py
new file mode 100644
index 00000000000000..bad0f9fbf0adbc
--- /dev/null
+++ b/clang/docs/ghlinks.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python3
+
+from sphinx.application import Sphinx
+import re
+
+__version__ = "1.0"
+
+
+def subst_gh_links(app: Sphinx, docname, source):
+ regex = re.compile("#GH([0-9]+)")
+ out_pattern = r"`#\1 <https://github.com/llvm/llvm-project/issues/\1>`_"
+ result = source[0]
+ result = regex.sub(out_pattern, result)
+ source[0] = result
+
+
+def setup(app: Sphinx):
+ app.connect("source-read", subst_gh_links)
+ return dict(version=__version__, parallel_read_safe=True, parallel_write_safe=True)
|
#82739 is a good example of why I think this is an improvement |
Love it, but I'm slightly worried about "Fixes #xxxx" vs. "see also #xxxx" etc. being the same now, since you removed the "Fixes" prefix. |
@AaronBallman ping |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thank you, this is a nice usability improvement!
Github links in release notes are often invalid rST, clutter the release notes and are annoying to write. This introduces a sphynx plugin that rewrites `#GH<NUMBER>` to a link to the corresponding issue. While this could be introduced globally on all of LLVM, the PR only modifies Clang for now.
4d3ec23
to
2e37c94
Compare
Github links in release notes are often invalid rST, clutter the release notes and are annoying to write.
This introduces a sphynx plugin that rewrites
#GH<NUMBER>
to a link to the corresponding issue.While this could be introduced globally on all of LLVM, the PR only modifies Clang for now.