[clang] 65ffa53 - [Clang] unrecognized html tag causing undesirable comment lexing (#152944)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Aug 17 06:59:51 PDT 2025
Author: mdenson
Date: 2025-08-17T15:59:47+02:00
New Revision: 65ffa53cb70909be4dbedacd9de9de0725161592
URL: https://github.com/llvm/llvm-project/commit/65ffa53cb70909be4dbedacd9de9de0725161592
DIFF: https://github.com/llvm/llvm-project/commit/65ffa53cb70909be4dbedacd9de9de0725161592.diff
LOG: [Clang] unrecognized html tag causing undesirable comment lexing (#152944)
Simple fix for this particular html tag. A more complete solution should
be implemented.
1. Add all html tags to table so they are recognized. Some input on what
is desirable/safe would be appreciated
2. Change the lex strategy to deal with this in a different manner
Fixes #32680
---------
Co-authored-by: Brock Denson <brock.denson at virscient.com>
Added:
Modified:
clang/docs/ReleaseNotes.rst
clang/include/clang/AST/CommentHTMLTags.td
clang/test/AST/ast-dump-comment.cpp
Removed:
################################################################################
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index b35f4ea42818a..ac697e39dc184 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -230,6 +230,7 @@ Bug Fixes to AST Handling
- Fix incorrect name qualifiers applied to alias CTAD. (#GH136624)
- Fixed ElaboratedTypes appearing within NestedNameSpecifier, which was not a
legal representation. This is fixed because ElaboratedTypes don't exist anymore. (#GH43179) (#GH68670) (#GH92757)
+- Fix unrecognized html tag causing undesirable comment lexing (#GH152944)
- Fix comment lexing of special command names (#GH152943)
Miscellaneous Bug Fixes
diff --git a/clang/include/clang/AST/CommentHTMLTags.td b/clang/include/clang/AST/CommentHTMLTags.td
index a1ce8c6da96c0..9b89bc0c811fc 100644
--- a/clang/include/clang/AST/CommentHTMLTags.td
+++ b/clang/include/clang/AST/CommentHTMLTags.td
@@ -51,6 +51,11 @@ def Col : Tag<"col"> { let EndTagForbidden = 1; }
def Tr : Tag<"tr"> { let EndTagOptional = 1; }
def Th : Tag<"th"> { let EndTagOptional = 1; }
def Td : Tag<"td"> { let EndTagOptional = 1; }
+def Summary : Tag<"summary">;
+def Details : Tag<"details">;
+def Mark : Tag<"mark">;
+def Figure : Tag<"figure">;
+def FigCaption : Tag<"figcaption">;
// Define a list of attributes that are not safe to pass through to HTML
// output if the input is untrusted.
diff --git a/clang/test/AST/ast-dump-comment.cpp b/clang/test/AST/ast-dump-comment.cpp
index b67f79916d968..b5dbe2e317d8c 100644
--- a/clang/test/AST/ast-dump-comment.cpp
+++ b/clang/test/AST/ast-dump-comment.cpp
@@ -132,8 +132,50 @@ void Test_TemplatedFunctionVariadic(int arg, ...);
// CHECK-NEXT: ParagraphComment
// CHECK-NEXT: TextComment{{.*}} Text=" More arguments"
+/// \param[out] Aaa <summary>Short summary</summary>
+int Test_HTMLSummaryTag(int Aaa);
+// CHECK: FunctionDecl{{.*}}Test_HTMLSummaryTag
+// CHECK: ParamCommandComment{{.*}} [out] explicitly Param="Aaa"
+// CHECK-NEXT: ParagraphComment
+// CHECK: HTMLStartTagComment{{.*}} Name="summary"
+// CHECK-NEXT: TextComment{{.*}} Text="Short summary"
+// CHECK-NEXT: HTMLEndTagComment{{.*}} Name="summary"
+
/// \thread_safe test for underscore in special command
int Test_UnderscoreInSpecialCommand;
// CHECK: VarDecl{{.*}}Test_UnderscoreInSpecialCommand 'int'
// CHECK: InlineCommandComment{{.*}} Name="thread_safe" RenderNormal
// CHECK-NEXT: TextComment{{.*}} Text=" test for underscore in special command"
+
+/// <details>
+/// <summary>
+/// Summary
+/// </summary>
+/// <p>Details</p>
+/// </details>
+///
+/// Some <mark>highlighting</mark>
+///
+/// <figure>
+/// <img src="pic.jpg">
+/// <figcaption>Figure 1</figcaption>
+/// </figure>
+int Test_AdditionalHTMLTags(int Aaa);
+// CHECK: FunctionDecl{{.*}}Test_AdditionalHTMLTags 'int (int)'
+// CHECK: HTMLStartTagComment{{.*}} Name="details"
+// CHECK: HTMLStartTagComment{{.*}} Name="summary"
+// CHECK-NEXT: TextComment{{.*}} Text=" Summary"
+// CHECK: HTMLEndTagComment{{.*}} Name="summary"
+// CHECK: HTMLStartTagComment{{.*}} Name="p"
+// CHECK-NEXT: TextComment{{.*}} Text="Details"
+// CHECK-NEXT: HTMLEndTagComment{{.*}} Name="p"
+// CHECK: HTMLEndTagComment{{.*}} Name="details"
+// CHECK: HTMLStartTagComment{{.*}} Name="mark"
+// CHECK-NEXT: TextComment{{.*}} Text="highlighting"
+// CHECK-NEXT: HTMLEndTagComment{{.*}} Name="mark"
+// CHECK: HTMLStartTagComment{{.*}} Name="figure"
+// CHECK: HTMLStartTagComment{{.*}} Name="img" Attrs: "src="pic.jpg"
+// CHECK: HTMLStartTagComment{{.*}} Name="figcaption"
+// CHECK-NEXT: TextComment{{.*}} Text="Figure 1"
+// CHECK-NEXT: HTMLEndTagComment{{.*}} Name="figcaption"
+// CHECK: HTMLEndTagComment{{.*}} Name="figure"
More information about the cfe-commits
mailing list