| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| |
| // rdar://problem/8540720 |
| namespace test0 { |
| void foo() { |
| void bar(); |
| class A { |
| friend void bar(); |
| }; |
| } |
| } |
| |
| namespace test1 { |
| void foo() { |
| class A { |
| friend void bar(); // expected-error {{no matching function found in local scope}} |
| }; |
| } |
| } |
| |
| namespace test2 { |
| void bar(); // expected-note 3{{'::test2::bar' declared here}} |
| |
| void foo() { // expected-note 2{{'::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 'foo' found in local scope; did you mean '::test2::foo'?}} |
| }; |
| } |
| |
| 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 'bar' found in local scope; did you mean '::test2::bar'?}} |
| }; |
| |
| { |
| 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 'bar' found in local scope; did you mean '::test2::bar'?}} |
| friend void quux(); // expected-error {{no matching function found in local scope}} |
| }; |
| |
| void bar(); |
| struct Inner2 { |
| friend void bar(); |
| }; |
| } |
| }; |
| } |
| } |