[llvm-branch-commits] [llvm] [Support] Highlight the whole directive in verifier errors (PR #233309)

Alexander Richardson via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Oct 20 14:56:53 PDT 2026


https://github.com/arichardson updated https://github.com/llvm/llvm-project/pull/233309

>From 05d8d701dfadeaa089b7abfb3fc60ac5516554eb Mon Sep 17 00:00:00 2001
From: Alex Richardson <alexrichardson at google.com>
Date: Tue, 20 Oct 2026 14:56:19 -0700
Subject: [PATCH] [nspr] initial commit

---
 llvm/lib/Support/SourceMgrDiagnosticVerifier.cpp      |  4 ++--
 .../Support/SourceMgrDiagnosticVerifierTest.cpp       | 11 +++++++++++
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/llvm/lib/Support/SourceMgrDiagnosticVerifier.cpp b/llvm/lib/Support/SourceMgrDiagnosticVerifier.cpp
index 1946ff4e6c11f..c4d210aca2f08 100644
--- a/llvm/lib/Support/SourceMgrDiagnosticVerifier.cpp
+++ b/llvm/lib/Support/SourceMgrDiagnosticVerifier.cpp
@@ -67,9 +67,9 @@ bool SourceMgrDiagnosticVerifier::emitError(const ExpectedDiag &diag,
   SMRange range;
   ArrayRef<SMRange> ranges;
   if (diag.fileLoc.isValid()) {
+    // Highlight the whole directive, up to and including the closing '}}'.
     range =
-        SMRange(diag.fileLoc, SMLoc::getFromPointer(diag.fileLoc.getPointer() +
-                                                    diag.substring.size()));
+        SMRange(diag.fileLoc, SMLoc::getFromPointer(diag.substring.end() + 2));
     ranges = range;
   }
   printDiag(mgr.GetMessage(diag.fileLoc, SourceMgr::DK_Error, msg, ranges));
diff --git a/llvm/unittests/Support/SourceMgrDiagnosticVerifierTest.cpp b/llvm/unittests/Support/SourceMgrDiagnosticVerifierTest.cpp
index c262ff8162084..18685b55f7195 100644
--- a/llvm/unittests/Support/SourceMgrDiagnosticVerifierTest.cpp
+++ b/llvm/unittests/Support/SourceMgrDiagnosticVerifierTest.cpp
@@ -291,3 +291,14 @@ TEST_F(SourceMgrDiagnosticVerifierTest, AlreadyMatchedIsNotNearMiss) {
   EXPECT_EQ(StringRef(Output).find("diagnostic emitted when expecting"),
             StringRef::npos);
 }
+
+TEST_F(SourceMgrDiagnosticVerifierTest, ErrorHighlightsWholeDirective) {
+  addBuffer("op\n# expected-error at -1 {{missing}}\n");
+  SourceMgrDiagnosticVerifier Verifier(SM, OS);
+
+  EXPECT_FALSE(Verifier.verify());
+  EXPECT_NE(StringRef(Output).find("# expected-error at -1 {{missing}}\n"
+                                   "  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"),
+            StringRef::npos)
+      << Output;
+}



More information about the llvm-branch-commits mailing list