adrian-prantl wrote: > > > This seems like it could be problematic for IDEs, if they don't print the > > > error in the same window as the expression being evaluated. The arrows > > > could end up pointing to nowhere, or to the wrong place in the expression > > > (if we don't get the right offset). > > > > > > Eventually I want IDEs to get access to the same kind of machine-readable > > diagnostics, so they can format errors however they like (or, if they > > aren't interested, dump the pre-rendered textual error that is still > > available). > > I'm still worried about this. Yes, the IDEs can dump the pre-rendered error > (and right now, that's all they can do), but this rendering assumes that the > error message will be printed in a particular way (right under the original > command, which will include the prompt and everything). I think that's fine > for the commands entered through the LLDB command line, but I don't think > it's reasonable to expect that every caller of > `SBCommandInterpreter::HandleCommand` will do the same thing. I've looked at > what lldb-dap does, and it looks like it will mostly be okay, because it > explicitly echoes the command to be executed (although it [hardcodes the > prompt > string](https://github.com/llvm/llvm-project/blob/60ed2361c0917b4f8d54cb85935cfbf8904aa51d/lldb/tools/lldb-dap/LLDBUtils.cpp#L61) > instead of getting it from lldb), but if you're looking for a example, you > don't need to look further than your test case. Even though you've formatted > the test input nicely, this is how its trace looks like when you run it: > > ``` > Ran command: > "expr -i 0 -o 0 -- a" > > Got output: > ^ > ╰─ error: use of undeclared identifier 'a' > ``` > > (sure we can fix this so that the output makes sense, but I wonder how many > other such callers are out there)
Just to explain my motivation., in the end what I'm most interested in is exposing the machine-readable diagnostics through the SBAPI, so that is where this is going next. I'm actually surprised that lldb-dap sees the new diagnostics because I thought it would run the expression through a lower-level API like SBFrame::EvaluateExpression(). But I guess it just provides a "terminal" window that passes everything through HandleCommand. To support this better, I'm thinking about adding a setting to opt into the inline diagnostics that only `lldb` sets, so we don't get unexpected results like this. https://github.com/llvm/llvm-project/pull/106470 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits