<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Wed, 1 Aug 2018 at 17:56, Victor Zverovich via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi,<div><br></div><div>I'm getting the following assertion failure on the latest clang master:</div><div><br></div><div><div>  clang::CXXMethodDecl* clang::CXXRecordDecl::getLambdaStaticInvoker() const: Assertion `Invoker.size() == 1 && "More than one static invoker operator!"' failed.</div></div><div><br></div><div>I managed to narrow it down to the following test case which is basically a simplified version of <a href="https://github.com/llvm-mirror/clang/blob/master/test/Modules/merge-lambdas.cpp" target="_blank">https://github.com/llvm-mirror/clang/blob/master/test/Modules/merge-lambdas.cpp</a>:</div><div><br></div><div>$ clang++ -fmodules test.cpp</div><div><br></div><div>// BEGIN TEST CASE (test.cpp)</div><div><div>#pragma clang module build A</div><div>module A {}</div><div>#pragma clang module contents</div><div>#pragma clang module begin A</div><div>template<typename T> auto f() { return []{}; }</div><div>#pragma clang module end</div><div>#pragma clang module endbuild</div><div><br></div><div>#pragma clang module build B</div><div>module B {}</div><div>#pragma clang module contents</div><div>#pragma clang module begin B</div><div>#pragma clang module import A</div><div>inline auto x1() { return f<int>(); }</div><div>#pragma clang module end</div><div>#pragma clang module endbuild</div><div><br></div><div>#pragma clang module build C</div><div>module C {}</div><div>#pragma clang module contents</div><div>#pragma clang module begin C</div><div>#pragma clang module import A</div><div>inline auto y1() { return f<int>(); }</div><div>#pragma clang module end</div><div>#pragma clang module endbuild</div><div><br></div><div>#pragma clang module import B</div><div>#pragma clang module import C</div><div>using T = decltype(x1);</div><div>using T = decltype(y1);</div></div><div>// END TEST CASE</div><div><br></div><div>Should the assertion in question be relaxed or is there something missing in the merge to reconcile static invokers?</div></div></blockquote><div><br></div><div>The assertion is wrong. It would be reasonable to check that all lookup results declare the same entity, though.</div><div><br></div><div>Fixed in r338766. Thanks for the report!</div></div></div>