diff options
author | dim <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
commit | 952eddef9aff85b1e92626e89baaf7a360e2ac85 (patch) | |
tree | df8df0b0067b381eab470a3b8f28d14a552a6340 /test/CXX/class.access/class.friend/p11.cpp | |
parent | ea266cad53e3d49771fa38103913d3ec7a166694 (diff) | |
download | FreeBSD-src-952eddef9aff85b1e92626e89baaf7a360e2ac85.zip FreeBSD-src-952eddef9aff85b1e92626e89baaf7a360e2ac85.tar.gz |
Vendor import of clang release_34 branch r197841 (effectively, 3.4 RC3):
https://llvm.org/svn/llvm-project/cfe/branches/release_34@197841
Diffstat (limited to 'test/CXX/class.access/class.friend/p11.cpp')
-rw-r--r-- | test/CXX/class.access/class.friend/p11.cpp | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/test/CXX/class.access/class.friend/p11.cpp b/test/CXX/class.access/class.friend/p11.cpp index a05b2d2..ba44a0d 100644 --- a/test/CXX/class.access/class.friend/p11.cpp +++ b/test/CXX/class.access/class.friend/p11.cpp @@ -17,3 +17,83 @@ namespace test1 { }; } } + +namespace test2 { + void bar(); // expected-note {{'::test2::bar' declared here}} + + void foo() { // expected-note {{'::test2::foo' declared here}} + struct S1 { + friend void foo(); // expected-error {{no matching function 'foo' found in local scope; did you mean '::test2::foo'?}} + }; + + void foo(); // expected-note {{local declaration nearly matches}} + struct S2 { + friend void foo(); + }; + + { + struct S2 { + friend void foo(); // expected-error {{no matching function found in local scope}} + }; + } + + { + int foo; + struct S3 { + friend void foo(); // expected-error {{no matching function found in local scope}} + }; + } + + struct S4 { + friend void bar(); // expected-error {{no matching function 'bar' found in local scope; did you mean '::test2::bar'?}} + }; + + { void bar(); } + struct S5 { + friend void bar(); // expected-error {{no matching function found in local scope}} + }; + + { + void bar(); + struct S6 { + friend void bar(); + }; + } + + struct S7 { + void bar() { Inner::f(); } + struct Inner { + friend void bar(); + static void f() {} + }; + }; + + void bar(); // expected-note {{'bar' declared here}} + struct S8 { + struct Inner { + friend void bar(); + }; + }; + + struct S9 { + struct Inner { + friend void baz(); // expected-error {{no matching function 'baz' found in local scope; did you mean 'bar'?}} + }; + }; + + struct S10 { + void quux() {} + void foo() { + struct Inner1 { + friend void bar(); // expected-error {{no matching function found in local scope}} + friend void quux(); // expected-error {{no matching function found in local scope}} + }; + + void bar(); + struct Inner2 { + friend void bar(); + }; + } + }; + } +} |