[Lldb-commits] [lldb] [lldb] Fix DIL error diagnostics output (PR #187680)

Michael Buch via lldb-commits lldb-commits at lists.llvm.org
Wed Apr 1 04:24:00 PDT 2026


================
@@ -36,13 +36,21 @@ DILDiagnosticError::DILDiagnosticError(llvm::StringRef expr,
   DiagnosticDetail::SourceLocation sloc = {
       FileSpec{}, /*line=*/1, static_cast<uint16_t>(loc + 1),
       err_len,    false,      /*in_user_input=*/true};
-  std::string rendered_msg =
-      llvm::formatv("<user expression 0>:1:{0}: {1}\n   1 | {2}\n     | ^",
-                    loc + 1, message, expr);
+  StreamString rendered_msg(false);
+  auto msg = llvm::formatv("<user expression>:1:{0}: {1}\n    1 | {2}\n      |",
+                           loc + 1, message, expr);
+  rendered_msg << msg.str();
+  for (uint32_t i = 0; i <= loc; i++)
+    rendered_msg << " ";
+  rendered_msg << "^";
+  for (uint32_t i = 1; i < err_len; i++)
+    rendered_msg << "~";
----------------
Michael137 wrote:

Nit:

If you make `rendered_msg` a `llvm::raw_string_ostream` you can just do:
```
rendered_msg << llvm::indent(loc) << "^" << std::string(err_len, "~");
```

https://github.com/llvm/llvm-project/pull/187680


More information about the lldb-commits mailing list