| // RUN: %check_clang_tidy %s llvmlibc-implementation-in-namespace %t |
| |
| #define MACRO_A "defining macros outside namespace is valid" |
| |
| class ClassB; |
| // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: declaration must be declared within the '__llvm_libc' namespace |
| struct StructC {}; |
| // CHECK-MESSAGES: :[[@LINE-1]]:8: warning: declaration must be declared within the '__llvm_libc' namespace |
| char *VarD = MACRO_A; |
| // CHECK-MESSAGES: :[[@LINE-1]]:7: warning: declaration must be declared within the '__llvm_libc' namespace |
| typedef int typeE; |
| // CHECK-MESSAGES: :[[@LINE-1]]:13: warning: declaration must be declared within the '__llvm_libc' namespace |
| void funcF() {} |
| // CHECK-MESSAGES: :[[@LINE-1]]:6: warning: declaration must be declared within the '__llvm_libc' namespace |
| |
| namespace namespaceG { |
| // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: '__llvm_libc' needs to be the outermost namespace |
| namespace __llvm_libc{ |
| namespace namespaceH { |
| class ClassB; |
| } // namespace namespaceH |
| struct StructC {}; |
| } // namespace __llvm_libc |
| char *VarD = MACRO_A; |
| typedef int typeE; |
| void funcF() {} |
| } // namespace namespaceG |
| |
| // Wrapped in correct namespace. |
| namespace __llvm_libc { |
| // Namespaces within __llvim_libc namespace allowed. |
| namespace namespaceI { |
| class ClassB; |
| } // namespace namespaceI |
| struct StructC {}; |
| char *VarD = MACRO_A; |
| typedef int typeE; |
| void funcF() {} |
| extern "C" void extern_funcJ() {} |
| } // namespace __llvm_libc |