mizvekov added a comment. In D112374#3684722 <https://reviews.llvm.org/D112374#3684722>, @hans wrote:
> Here's an example where I think this regressed a Clang diagnostic. Consider: Consider this simple extension of this example, to show how this general problem already existed: https://godbolt.org/z/n6nGhejTc template <typename T> struct Template { Template(int x) {} }; struct S1 { struct Baz { struct Foo; }; typedef Template<Baz::Foo> Typedef; }; struct S2 { struct Baz { struct Foo; }; typedef Template<Baz::Foo> Typedef; }; typedef S1::Typedef Bar; Bar f; Prints: `error: no matching constructor for initialization of 'Bar' (aka 'Template<Baz::Foo>')` You still don't know which `Foo` this refers to, because you don't know which `Baz` it is either. This patch fixed the inconsistency where we printed the bare `Foo` with the synthetic nested name, but printed `Baz::Foo` as written. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D112374/new/ https://reviews.llvm.org/D112374 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits