[Lldb-commits] [lldb] [lldb] Store expression evaluator diagnostics in an llvm::Error (NFC) (PR #106442)
Adrian Prantl via lldb-commits
lldb-commits at lists.llvm.org
Wed Sep 25 16:04:41 PDT 2024
================
@@ -254,14 +256,46 @@ class ClangDiagnosticManagerAdapter : public clang::DiagnosticConsumer {
std::string stripped_output =
std::string(llvm::StringRef(m_output).trim());
- auto new_diagnostic = std::make_unique<ClangDiagnostic>(
- stripped_output, severity, Info.getID());
+ // Translate the source location.
+ if (Info.hasSourceManager()) {
+ DiagnosticDetail::SourceLocation loc;
+ clang::SourceManager &sm = Info.getSourceManager();
+ const clang::SourceLocation sloc = Info.getLocation();
+ if (sloc.isValid()) {
+ const clang::FullSourceLoc fsloc(sloc, sm);
+ clang::PresumedLoc PLoc = fsloc.getPresumedLoc(true);
+ StringRef filename =
+ PLoc.isValid() ? PLoc.getFilename() : StringRef{};
----------------
adrian-prantl wrote:
That would not generally be correct. The expression source code can have source locations that are in any of a number of files, for example, you could trigger an error diagnostic in an STL header, or, a compiler-builtin with no source location.
https://github.com/llvm/llvm-project/pull/106442
More information about the lldb-commits
mailing list