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

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to