Michael137 wrote:

> > > Did you try to modify `IgnoreUnlessSpelledInSource` to support CallExpr?
> > 
> > 
> > Yea I was thinking about it initially. But I wasn't sure what that would 
> > look like tbh. IIUC `IgnoreImplicitMemberCallSingleStep` will unwrap 
> > `CXXMemberCallExpr` into the underlying `MemberExpr`. And then further 
> > until we hit the implicit object argument? But what would we do with 
> > `CallExpr`s? Do we return the `CalleeDecl`? In our use-case, the 
> > `Decomposition` decl is the first argument of the `CallExpr`.
> 
> same thing we do for constructor ?
> 
> ```
> if (auto *C = dyn_cast<CXXConstructExpr>(E)) {
>       auto NumArgs = C->getNumArgs();
>       if (NumArgs == 1 ||
>           (NumArgs > 1 && isa<CXXDefaultArgExpr>(C->getArg(1)))) {
>         Expr *A = C->getArg(0);
>         if (A->getSourceRange() == E->getSourceRange() || C->isElidable())
>           return A;
>       }
>     }
>     return E;
> ```
> 
> Note that I think it would only be useful to `get` (afaik) - but it would be 
> in the same place, which seems desirable

Hah good point! That's pretty much exactly the heuristic we want. Let me try 
this

> Do we need a test case about explicit object member function get? i.e.

Good question. I think it's worth having one

https://github.com/llvm/llvm-project/pull/122265
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to