http://llvm.org/bugs/show_bug.cgi?id=22434

            Bug ID: 22434
           Summary: clang confused by using directive in namespace in
                    linkage spec
           Product: clang
           Version: trunk
          Hardware: All
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected], [email protected]
    Classification: Unclassified

Given this code in g.cpp

    extern "C" {
    namespace A { struct S; }
    namespace B { using namespace A; struct T { S *t; }; }
    }
    extern "C++" {
    namespace C { struct U; }
    namespace D { using namespace C; struct V { U *t; }; }
    }
    namespace E { struct W; }
    namespace F { using namespace E; struct X { W *t; }; }

clang says

    g.cpp:3:45: error: unknown type name 'S'; did you mean '::B::S'?
    namespace B { using namespace A; struct T { S *t; }; }
                                                ^
                                                ::B::S
    g.cpp:2:22: note: '::B::S' declared here
    namespace A { struct S; }
                         ^
    g.cpp:7:45: error: unknown type name 'U'; did you mean '::D::U'?
    namespace D { using namespace C; struct V { U *t; }; }
                                                ^
                                                ::D::U
    g.cpp:6:22: note: '::D::U' declared here
    namespace C { struct U; }
                         ^
    2 errors generated.

and that seems wrong to me, especially for the extern "C++" version.
Note that clang has no problem when the code is not in a linkage spec.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs

Reply via email to