[clang] f5b36eb - [clang] fix comment lexing of command names with underscore (#152943)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 14 04:03:59 PDT 2025
Author: mdenson
Date: 2025-08-14T13:03:55+02:00
New Revision: f5b36eb3a4919137f5594c6be564819dd60f5acf
URL: https://github.com/llvm/llvm-project/commit/f5b36eb3a4919137f5594c6be564819dd60f5acf
DIFF: https://github.com/llvm/llvm-project/commit/f5b36eb3a4919137f5594c6be564819dd60f5acf.diff
LOG: [clang] fix comment lexing of command names with underscore (#152943)
Comment lexer fails to parse non-alphanumeric names.
fixes #33296
---------
Co-authored-by: Brock Denson <brock.denson at virscient.com>
Added:
Modified:
clang/docs/ReleaseNotes.rst
clang/lib/AST/CommentLexer.cpp
clang/test/AST/ast-dump-comment.cpp
Removed:
################################################################################
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index ee27c3bd3f7b9..e8fb7de493fcf 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -216,6 +216,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 comment lexing of special command names (#GH152943)
Miscellaneous Bug Fixes
^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/clang/lib/AST/CommentLexer.cpp b/clang/lib/AST/CommentLexer.cpp
index e19c2327aebdc..a0903d0903dd8 100644
--- a/clang/lib/AST/CommentLexer.cpp
+++ b/clang/lib/AST/CommentLexer.cpp
@@ -214,7 +214,7 @@ bool isCommandNameStartCharacter(char C) {
}
bool isCommandNameCharacter(char C) {
- return isAlphanumeric(C);
+ return isAsciiIdentifierContinue(C, false);
}
const char *skipCommandName(const char *BufferPtr, const char *BufferEnd) {
diff --git a/clang/test/AST/ast-dump-comment.cpp b/clang/test/AST/ast-dump-comment.cpp
index 40c3edb62821b..b67f79916d968 100644
--- a/clang/test/AST/ast-dump-comment.cpp
+++ b/clang/test/AST/ast-dump-comment.cpp
@@ -131,3 +131,9 @@ void Test_TemplatedFunctionVariadic(int arg, ...);
// CHECK: ParamCommandComment{{.*}} [in] implicitly Param="..."
// CHECK-NEXT: ParagraphComment
// CHECK-NEXT: TextComment{{.*}} Text=" More arguments"
+
+/// \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"
More information about the cfe-commits
mailing list