From: Vlad Serebrennikov Date: Fri, 7 Apr 2023 13:58:11 +0000 (+0400) Subject: [clang] Add test for CWG607 X-Git-Tag: upstream/17.0.6~12315 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4b03869402558d6aa24ce08766825eef34d6aff6;p=platform%2Fupstream%2Fllvm.git [clang] Add test for CWG607 [[https://wg21.link/p1787 | P1787]]: CWG607 is resolved by looking up unqualified names in a mem-initializer-id from outside the parameter scope. Wording: Lookup for an unqualified name in a mem-initializer-id ignores the constructor’s function parameter scope. ([class.base.init]/2) Reviewed By: #clang-language-wg, shafik Differential Revision: https://reviews.llvm.org/D147590 --- diff --git a/clang/test/CXX/drs/dr6xx.cpp b/clang/test/CXX/drs/dr6xx.cpp index f9925e2..b74e466 100644 --- a/clang/test/CXX/drs/dr6xx.cpp +++ b/clang/test/CXX/drs/dr6xx.cpp @@ -100,6 +100,34 @@ namespace dr606 { // dr606: yes #endif } +namespace dr607 { // dr607: yes +namespace example1 { +struct Y {}; + +template struct X : public virtual Y {}; + +template class A : public X { + template A(S) : S() {} +}; + +template A::A(Y); +} // namespace example1 + +namespace example2 { +namespace N { +struct B { + B(int); +}; +typedef B typedef_B; +struct D : B { + D(); +}; +} // namespace N + +N::D::D() : typedef_B(0) {} +} // namespace example2 +} // namespace dr607 + namespace dr608 { // dr608: yes struct A { virtual void f(); }; struct B : A {}; diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html index 7cbb729..7498753 100755 --- a/clang/www/cxx_dr_status.html +++ b/clang/www/cxx_dr_status.html @@ -3683,7 +3683,7 @@ and POD class 607 CD6 Lookup of mem-initializer-ids - Unknown + Yes 608