rupprecht added a comment.

In D136554#4013463 <https://reviews.llvm.org/D136554#4013463>, @rupprecht wrote:

> Glad the test case made sense to you, it was convoluted to me :)
>
> Still seeing one more error, and it's not modules-related so I might be able 
> to get it reduced today. Generally, it looks like this:
>
>   struct Inner {
>     Foo& foo;
>     const std::unique_ptr<...> x = blah(blah(
>         &foo.bar()));
>   };
>   
>   class Outer {
>    private:
>     Foo foo_;
>     Inner inner{foo_};
>   }
>
> With the error being:
>
>   error: 'Inner::foo' is not a member of class 'Outer'
>         &foo.bar()));
>
> I think this build failure is wrong? `foo` should be referring to the 
> definition inside `Inner`, but clang seems to be expecting it to refer to 
> something in `Outer`.
>
> Is it expected that this patch will cause some previously "working" code to 
> no longer build? At some point I expect to hand you a reduction that's 
> actually a bug in the user code.

Fully reduced as:

  template <typename a, typename b> int c(a, b);
  struct d {
    static d e(const char * = __builtin_FILE());
  };
  struct f {
    f(d = d::e());
  };
  struct h {
    int &g;
    int blah = c(g, f());
  };
  struct k {
    k();
    int i;
    h j{i};
  };
  k::k() {}

With the error: `repro.cc:10:16: error: 'h::g' is not a member of class 'k'`


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136554/new/

https://reviews.llvm.org/D136554

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

Reply via email to