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.den...@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" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits