llvm/clang-tools-extra/test/clang-tidy/checkers/google/readability-namespace-comments.cpp

// RUN: %check_clang_tidy %s google-readability-namespace-comments %t

namespace n1 {
namespace /* a comment */ n2 /* another comment */ {


void f(); // So that the namespace isn't empty.


// CHECK-MESSAGES: :[[@LINE+4]]:1: warning: namespace 'n2' not terminated with a closing comment [google-readability-namespace-comments]
// CHECK-MESSAGES: :[[@LINE-7]]:27: note: namespace 'n2' starts here
// CHECK-MESSAGES: :[[@LINE+2]]:2: warning: namespace 'n1' not terminated with
// CHECK-MESSAGES: :[[@LINE-10]]:11: note: namespace 'n1' starts here
}}
// CHECK-FIXES: }  // namespace n2
// CHECK-FIXES: }  // namespace n1

#define MACRO macro_expansion
namespace MACRO {
void f(); // So that the namespace isn't empty.
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// CHECK-MESSAGES: :[[@LINE+2]]:1: warning: namespace 'MACRO' not terminated with
// CHECK-MESSAGES: :[[@LINE-10]]:11: note: namespace 'MACRO' starts here
}
// CHECK-FIXES: }  // namespace MACRO

namespace macro_expansion {
void ff(); // So that the namespace isn't empty.
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// CHECK-MESSAGES: :[[@LINE+2]]:1: warning: namespace 'macro_expansion' not terminated with
// CHECK-MESSAGES: :[[@LINE-10]]:11: note: namespace 'macro_expansion' starts here
}
// CHECK-FIXES: }  // namespace macro_expansion

namespace [[deprecated("foo")]] namespace_with_attr {
inline namespace inline_namespace {
void g();
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// CHECK-MESSAGES: :[[@LINE+2]]:1: warning: namespace 'inline_namespace' not terminated with
// CHECK-MESSAGES: :[[@LINE-10]]:18: note: namespace 'inline_namespace' starts here
}
// CHECK-FIXES: }  // namespace inline_namespace
// CHECK-MESSAGES: :[[@LINE+2]]:1: warning: namespace 'namespace_with_attr' not terminated with
// CHECK-MESSAGES: :[[@LINE-15]]:33: note: namespace 'namespace_with_attr' starts here
}
// CHECK-FIXES: }  // namespace namespace_with_attr

namespace [[deprecated]] {
void h();
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// CHECK-MESSAGES: :[[@LINE+2]]:1: warning: anonymous namespace not terminated with
// CHECK-MESSAGES: :[[@LINE-10]]:26: note: anonymous namespace starts here
}
// CHECK-FIXES: }  // namespace{{$}}

namespace [[]] {
void hh();
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// CHECK-MESSAGES: :[[@LINE+2]]:1: warning: anonymous namespace not terminated with
// CHECK-MESSAGES: :[[@LINE-10]]:16: note: anonymous namespace starts here
}
// CHECK-FIXES: }  // namespace{{$}}

namespace short1 {
namespace short2 {
// Namespaces covering 10 lines or fewer are exempt from this rule.





}
}

namespace n3 {









}; // namespace n3