[Lldb-commits] [PATCH] D101333: Also display the underlying error message when displaying a fixit
Adrian Prantl via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Apr 27 10:41:04 PDT 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG25bf137b1ea3: Also display the underlying error message when displaying a fixit (authored by aprantl).
Herald added a project: LLDB.
Changed prior to commit:
https://reviews.llvm.org/D101333?vs=340684&id=340907#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D101333/new/
https://reviews.llvm.org/D101333
Files:
lldb/source/Expression/UserExpression.cpp
lldb/test/API/commands/expression/fixits/TestFixIts.py
Index: lldb/test/API/commands/expression/fixits/TestFixIts.py
===================================================================
--- lldb/test/API/commands/expression/fixits/TestFixIts.py
+++ lldb/test/API/commands/expression/fixits/TestFixIts.py
@@ -132,25 +132,25 @@
# Disable retries which will fail.
multiple_runs_options.SetRetriesWithFixIts(0)
value = frame.EvaluateExpression(two_runs_expr, multiple_runs_options)
- self.assertIn("expression failed to parse, fixed expression suggested:",
- value.GetError().GetCString())
- self.assertIn("using typename T::TypeDef",
- value.GetError().GetCString())
+ errmsg = value.GetError().GetCString()
+ self.assertIn("expression failed to parse", errmsg)
+ self.assertIn("using declaration resolved to type without 'typename'",
+ errmsg)
+ self.assertIn("fixed expression suggested:", errmsg)
+ self.assertIn("using typename T::TypeDef", errmsg)
# The second Fix-It shouldn't be suggested here as Clang should have
# aborted the parsing process.
- self.assertNotIn("i->m",
- value.GetError().GetCString())
+ self.assertNotIn("i->m", errmsg)
# Retry once, but the expression needs two retries.
multiple_runs_options.SetRetriesWithFixIts(1)
value = frame.EvaluateExpression(two_runs_expr, multiple_runs_options)
- self.assertIn("expression failed to parse, fixed expression suggested:",
- value.GetError().GetCString())
+ errmsg = value.GetError().GetCString()
+ self.assertIn("expression failed to parse", errmsg)
+ self.assertIn("fixed expression suggested:", errmsg)
# Both our fixed expressions should be in the suggested expression.
- self.assertIn("using typename T::TypeDef",
- value.GetError().GetCString())
- self.assertIn("i->m",
- value.GetError().GetCString())
+ self.assertIn("using typename T::TypeDef", errmsg)
+ self.assertIn("i->m", errmsg)
# Retry twice, which will get the expression working.
multiple_runs_options.SetRetriesWithFixIts(2)
Index: lldb/source/Expression/UserExpression.cpp
===================================================================
--- lldb/source/Expression/UserExpression.cpp
+++ lldb/source/Expression/UserExpression.cpp
@@ -302,19 +302,19 @@
}
if (!parse_success) {
- if (!fixed_expression->empty() && target->GetEnableNotifyAboutFixIts()) {
- error.SetExpressionErrorWithFormat(
- execution_results,
- "expression failed to parse, fixed expression suggested:\n %s",
- fixed_expression->c_str());
- } else {
- if (!diagnostic_manager.Diagnostics().size())
- error.SetExpressionError(execution_results,
- "expression failed to parse, unknown error");
+ std::string msg;
+ {
+ llvm::raw_string_ostream os(msg);
+ os << "expression failed to parse:\n";
+ if (!diagnostic_manager.Diagnostics().empty())
+ os << diagnostic_manager.GetString();
else
- error.SetExpressionError(execution_results,
- diagnostic_manager.GetString().c_str());
+ os << "unknown error";
+ if (target->GetEnableNotifyAboutFixIts() && fixed_expression &&
+ !fixed_expression->empty())
+ os << "\nfixed expression suggested:\n " << *fixed_expression;
}
+ error.SetExpressionError(execution_results, msg.c_str());
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D101333.340907.patch
Type: text/x-patch
Size: 3711 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210427/941b8e66/attachment.bin>
More information about the lldb-commits
mailing list