Michael137 wrote:

> I think the problem here is of a more fundamental nature. `FindTypes` finds 
> **types**. `bar` is _not_ a type. `bar<int>` is. So, while a type query for 
> `bar` will find the definition DIE with `DW_AT_name="bar"`, that DIE will 
> actually be defining the type `bar<int>`. So when the implementation looks at 
> the type constructed from that DIE, it will see that the name does not match 
> what is being asked (it gets this name through a different API, so it will 
> include the template args even without this patch), and discard the type.
> 
> As far as i know, this is all WAI. Existing FindType callers expect to get a 
> specific type as a result of their query -- not a collection of 
> instantiations of that template. (That's definitely true in this case, where 
> returning the collection of instantiations would just push the burden of 
> filtering them onto the caller.) That's not to say this kind of a template 
> search is not useful. Having something like that would go a long way towards 
> making expressions like `(bar<int> *) ptr` work. But that would probably be a 
> different API and the problem is that this is basically impossible to 
> implement in a non-simplified-template-name world, and even with simplified 
> names, returning all instantiations might be too expensive.

Makes sense, thanks for elaborating

LGTM

The `TestDAP_evaluate.py` failure is 
https://github.com/llvm/llvm-project/issues/116041 (which should be fixed once 
you rebase)

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

Reply via email to