diff options
Diffstat (limited to 'clang/test/SemaCXX/extern-c.cpp')
-rw-r--r-- | clang/test/SemaCXX/extern-c.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/extern-c.cpp b/clang/test/SemaCXX/extern-c.cpp index 295d1f305ee..fa6c2b1990c 100644 --- a/clang/test/SemaCXX/extern-c.cpp +++ b/clang/test/SemaCXX/extern-c.cpp @@ -204,3 +204,41 @@ extern "C" { struct pr5065_n6 : public virtual pr5065_3 {}; } struct pr5065_n7 {}; + +namespace tag_hiding { + namespace namespace_with_injected_name { + class Boo { + friend struct ExternCStruct1; + }; + void ExternCStruct4(); // expected-note 2{{candidate}} + } + + class Baz { + friend struct ExternCStruct2; + friend void ExternCStruct3(); + }; + + using namespace namespace_with_injected_name; + + extern "C" { + struct ExternCStruct1; + struct ExternCStruct2; + struct ExternCStruct3; + struct ExternCStruct4; // expected-note {{candidate}} + } + ExternCStruct1 *p1; + ExternCStruct2 *p2; + ExternCStruct3 *p3; + ExternCStruct4 *p4; // expected-error {{ambiguous}} + + extern "C" { + struct ExternCStruct1; + struct ExternCStruct2; + struct ExternCStruct3; + struct ExternCStruct4; // expected-note {{candidate}} + } + ExternCStruct1 *q1 = p1; + ExternCStruct2 *q2 = p2; + ExternCStruct3 *q3 = p3; + ExternCStruct4 *q4 = p4; // expected-error {{ambiguous}} +} |