erichkeane wrote: So the latest patch doesn't FIX it, it has a problem with:
``` template<typename T> concept Concept = true; template<int> struct S { struct Inner0 { struct Inner1 { template<Concept C> static constexpr int method(); }; }; }; template<> template<Concept C> constexpr int S<1>::Inner0::Inner1::method() { return 0;} ``` The problem/special case here is the `template<>`, which causes there to be no level of 'template parameters' when filling in the Depths of the method. HOWEVER, our `NestedNameSpecifier` list ends up finding the `1` there (for obvious reasons), so the replacement is wrong. I don't have a feeling of how to get those, I thought the `NNS` was a good analog, but it is clearly not. I suspect this might be the source of other similar/awkward issues elsewhere. At the moment, I'm done with this for at least the night, so if someone else wants to take a look, they are encouraged to share their' findings. https://github.com/llvm/llvm-project/pull/65993 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits