JuanBesa wrote: I updated the Check to only modify the matcher. Will update tests + option name soon. I have found a case which I don't know how to manage. The case is as follows (following tests format):
``` namespace std { template <typename T> class vector { // dummy impl T _data[1]; public: T *begin() { return _data; } const T *begin() const { return _data; } T *end() { return &_data[1]; } const T *end() const { return &_data[1]; } }; } // namespace std void change(int&); using IntPtr = int*; // Relevant typedef void loopPtr(const std::vector<IntPtr> &VectorIntPtr) { // Currently fails for RespectOpaqueTypes as AST does not have the IntPtr for (auto Data : VectorIntPtr) { change(*Data); } } ``` In this case when looking at the type of `Data` the `IntPtr` type does not appear, only `int*` This is the AST of the type I see: ``` Binding for "inner": AutoType 0x371dc570 'int *' sugar `-SubstTemplateTypeParmType 0x371d7460 'int *' sugar typename depth 0 index 0 T |-ClassTemplateSpecialization 0x371d6b40 'vector' `-PointerType 0x371d69e0 'int *' `-BuiltinType 0x37163260 'int' ``` I tried: - Getting the template from the `SubstTemplateTypeParam` and from their getting the appropriate type. This also had `int *`! - You can see the `IntPtr` in the For statement, but I don't know how to correctly get it from there for the appropriate type. Godbolt link: https://godbolt.org/z/cxr536d7n https://github.com/llvm/llvm-project/pull/147060 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits