[clang] Add test for CWG2370
authorVlad Serebrennikov <serebrennikov.vladislav@gmail.com>
Tue, 11 Apr 2023 19:03:13 +0000 (22:03 +0300)
committerVlad Serebrennikov <serebrennikov.vladislav@gmail.com>
Tue, 11 Apr 2023 19:04:02 +0000 (22:04 +0300)
commitfeb93d28b02c41ca6b069ec1f9e62fdfbb4c8b6c
treed07c9ebb971dbc201e01773cd5d3c0b5205807ad
parent64d29e8ecb888c9249f268453d90ba5a54341cd7
[clang] Add test for CWG2370

[[https://wg21.link/p1787 | P1787]]: CWG2370 is resolved by performing a search in (only) the immediate scope of any friend, per the [[ http://wiki.edg.com/bin/view/Wg21sandiego2018/CoreWorkingGroup#Core_issue_2370_friend_declarati | CWG opinion from San Diego ]].
Wording: In a friend declaration declarator whose declarator-id is a qualified-id whose lookup context is a class or namespace S, lookup for an unqualified name that appears after the declarator-id performs a search in the scope associated with S. If that lookup finds nothing, it undergoes unqualified name lookup. ([basic.lookup.unqual]/6).

Clarification for P1787 description: when applied to the test in this patch, "immediate scope" refers to `N`, and "(only)" refers to the fact that `type` is not searched in parent scope of `N`. See example after the wording if additional clarification is needed. The most relevant line there is `friend void A::f(F);  // OK`.

Reviewed By: #clang-language-wg, shafik

Differential Revision: https://reviews.llvm.org/D147848
clang/test/CXX/drs/dr23xx.cpp
clang/www/cxx_dr_status.html