Author: Timm Bäder Date: 2023-06-15T15:58:23+02:00 New Revision: b1aba4a1009937aca920539f7737b1973f908dbd
URL: https://github.com/llvm/llvm-project/commit/b1aba4a1009937aca920539f7737b1973f908dbd DIFF: https://github.com/llvm/llvm-project/commit/b1aba4a1009937aca920539f7737b1973f908dbd.diff LOG: [clang][Diagnostics] Don't expand label fixit to the next line Now that we print >1 line of code snippet, we printed another line of code for now reason, because the source range we created for the fixit expanded to the next line, if the next token was there. Don't do that. Differential Revision: https://reviews.llvm.org/D152525 Added: Modified: clang/docs/ReleaseNotes.rst clang/lib/Sema/SemaDecl.cpp clang/test/FixIt/fixit-newline-style.c Removed: ################################################################################ diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 451835f8bb39a..336bd5b6aa2e1 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -350,6 +350,9 @@ Improvements to Clang's diagnostics - Clang no longer diagnoses a read of an empty structure as use of an uninitialized variable. (`#26842: <https://github.com/llvm/llvm-project/issues/26842>`_) +- The Fix-It emitted for unused labels used to expand to the next line, which caused + visual oddities now that Clang shows more than one line of code snippet. This has + been fixed and the Fix-It now only spans to the end of the ``:``. Bug Fixes in This Version ------------------------- diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index b1436ba50892a..757c4c310be3d 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -2096,7 +2096,7 @@ static void GenerateFixForUnusedDecl(const NamedDecl *D, ASTContext &Ctx, if (isa<LabelDecl>(D)) { SourceLocation AfterColon = Lexer::findLocationAfterToken( D->getEndLoc(), tok::colon, Ctx.getSourceManager(), Ctx.getLangOpts(), - true); + /*SkipTrailingWhitespaceAndNewline=*/false); if (AfterColon.isInvalid()) return; Hint = FixItHint::CreateRemoval( diff --git a/clang/test/FixIt/fixit-newline-style.c b/clang/test/FixIt/fixit-newline-style.c index 091b79426bcdf..06cb262691ea0 100644 --- a/clang/test/FixIt/fixit-newline-style.c +++ b/clang/test/FixIt/fixit-newline-style.c @@ -5,6 +5,7 @@ // CHECK: warning: unused label 'ddd' // CHECK-NEXT: {{^ ddd:}} // CHECK-NEXT: {{^ \^~~~$}} +// CHECK-NOT: {{^ ;}} void f(void) { ddd: ; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits