augusto2112 added a comment.

In D109908#3004789 <https://reviews.llvm.org/D109908#3004789>, @teemperor wrote:

> Could you add a test for that? The usual test fixit in Clang is `.`/`->` 
> mixup, e.g.
>
>   (lldb) expr struct Foo { int i; }; Foo *f; f.i ; 
> unknown_identifier_for_fatal_error
>   (int) $0 = 0
>     Fix-it applied, fixed expression was: 
>       struct Foo { int i; }; Foo *f; f->i ; unknown_identifier_for_fatal_error
>   ...

Added!

> I think this patch also needs to update `UserExpression::Evaluate` which, 
> IIRC, is clearing the fixed expression when it fails to parse.

I think that makes sense... If we fail to parse the fix-it we silently ignore 
it and don't need to tell the user about it.

> The direction of the patch is IMHO fine. One thing that would be nice is to 
> see if we could maybe preserve the Fix-It diagnostics from the original 
> expression.

What do you mean by this? If we could preserve the original expression.

> If we just return whatever the fixed expression fails with then it's not 
> clear why the compiler actually generated a Fix-It. But that's more of a 
> nice-to-have I think.

You can see in the test I added, fixing `foo.bar` to `foo->bar`  where `foo` 
won't execute correctly, but it's still nice for the user to see that the 
Fix-it was applied.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D109908/new/

https://reviews.llvm.org/D109908

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to