]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/SemaCXX/warn-using-namespace-in-header.h
Vendor import of clang trunk r162107:
[FreeBSD/FreeBSD.git] / test / SemaCXX / warn-using-namespace-in-header.h
1
2
3
4
5
6 // Lots of vertical space to make the error line match up with the line of the
7 // expected line in the source file.
8 namespace warn_in_header_in_global_context {}
9 using namespace warn_in_header_in_global_context;
10
11 // While we want to error on the previous using directive, we don't when we are
12 // inside a namespace
13 namespace dont_warn_here {
14 using namespace warn_in_header_in_global_context;
15 }
16
17 // We should warn in toplevel extern contexts.
18 namespace warn_inside_linkage {}
19 extern "C++" {
20 using namespace warn_inside_linkage;
21 }
22
23 // This is really silly, but we should warn on it:
24 extern "C++" {
25 extern "C" {
26 extern "C++" {
27 using namespace warn_inside_linkage;
28 }
29 }
30 }
31
32 // But we shouldn't warn in extern contexts inside namespaces.
33 namespace dont_warn_here {
34 extern "C++" {
35 using namespace warn_in_header_in_global_context;
36 }
37 }
38
39 // We also shouldn't warn in case of functions.
40 inline void foo() {
41   using namespace warn_in_header_in_global_context;
42 }
43
44
45 namespace macronamespace {}
46 #define USING_MACRO using namespace macronamespace;
47
48 // |using namespace| through a macro should warn if the instantiation is in a
49 // header.
50 USING_MACRO