265 lines
7.3 KiB
C++
265 lines
7.3 KiB
C++
|
// RUN: cp %S/Inputs/concat-nested-namespaces/modernize-concat-nested-namespaces.h %T/modernize-concat-nested-namespaces.h
|
||
|
// RUN: %check_clang_tidy -std=c++17 -check-suffix=NORMAL %s modernize-concat-nested-namespaces %t -- -header-filter=".*" -- -I %T
|
||
|
// RUN: FileCheck -input-file=%T/modernize-concat-nested-namespaces.h %S/Inputs/concat-nested-namespaces/modernize-concat-nested-namespaces.h -check-prefix=CHECK-FIXES
|
||
|
// Restore header file and re-run with c++20:
|
||
|
// RUN: cp %S/Inputs/concat-nested-namespaces/modernize-concat-nested-namespaces.h %T/modernize-concat-nested-namespaces.h
|
||
|
// RUN: %check_clang_tidy -std=c++20 -check-suffixes=NORMAL,CPP20 %s modernize-concat-nested-namespaces %t -- -header-filter=".*" -- -I %T
|
||
|
// RUN: FileCheck -input-file=%T/modernize-concat-nested-namespaces.h %S/Inputs/concat-nested-namespaces/modernize-concat-nested-namespaces.h -check-prefix=CHECK-FIXES
|
||
|
|
||
|
#include "modernize-concat-nested-namespaces.h"
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: modernize-concat-nested-namespaces.h:1:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
|
||
|
namespace n1 {}
|
||
|
|
||
|
namespace n2 {
|
||
|
namespace n3 {
|
||
|
void t();
|
||
|
}
|
||
|
namespace n4 {
|
||
|
void t();
|
||
|
}
|
||
|
} // namespace n2
|
||
|
|
||
|
namespace n6 {
|
||
|
namespace [[deprecated]] attr_ns {
|
||
|
void t();
|
||
|
} // namespace attr_ns
|
||
|
} // namespace n6
|
||
|
|
||
|
namespace n7 {
|
||
|
void t();
|
||
|
|
||
|
namespace n8 {
|
||
|
void t();
|
||
|
}
|
||
|
} // namespace n7
|
||
|
|
||
|
namespace n9 {
|
||
|
namespace n10 {
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
// CHECK-FIXES-NORMAL: namespace n9::n10
|
||
|
void t();
|
||
|
} // namespace n10
|
||
|
} // namespace n9
|
||
|
// CHECK-FIXES-NORMAL: }
|
||
|
|
||
|
namespace n11 {
|
||
|
namespace n12 {
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
// CHECK-FIXES-NORMAL: namespace n11::n12
|
||
|
namespace n13 {
|
||
|
void t();
|
||
|
}
|
||
|
namespace n14 {
|
||
|
void t();
|
||
|
}
|
||
|
} // namespace n12
|
||
|
} // namespace n11
|
||
|
// CHECK-FIXES-NORMAL: }
|
||
|
|
||
|
namespace n15 {
|
||
|
namespace n16 {
|
||
|
void t();
|
||
|
}
|
||
|
|
||
|
inline namespace n17 {
|
||
|
void t();
|
||
|
}
|
||
|
|
||
|
namespace n18 {
|
||
|
namespace n19 {
|
||
|
namespace n20 {
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-3]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
// CHECK-FIXES-NORMAL: namespace n18::n19::n20
|
||
|
void t();
|
||
|
} // namespace n20
|
||
|
} // namespace n19
|
||
|
} // namespace n18
|
||
|
// CHECK-FIXES-NORMAL: }
|
||
|
|
||
|
namespace n21 {
|
||
|
void t();
|
||
|
}
|
||
|
} // namespace n15
|
||
|
|
||
|
namespace n22 {
|
||
|
namespace {
|
||
|
void t();
|
||
|
}
|
||
|
} // namespace n22
|
||
|
|
||
|
namespace n23 {
|
||
|
namespace {
|
||
|
namespace n24 {
|
||
|
namespace n25 {
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
// CHECK-FIXES-NORMAL: namespace n24::n25
|
||
|
void t();
|
||
|
} // namespace n25
|
||
|
} // namespace n24
|
||
|
// CHECK-FIXES-NORMAL: }
|
||
|
} // namespace
|
||
|
} // namespace n23
|
||
|
|
||
|
namespace n26::n27 {
|
||
|
namespace n28 {
|
||
|
namespace n29::n30 {
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-3]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
// CHECK-FIXES-NORMAL: namespace n26::n27::n28::n29::n30 {
|
||
|
void t() {}
|
||
|
} // namespace n29::n30
|
||
|
} // namespace n28
|
||
|
} // namespace n26::n27
|
||
|
// CHECK-FIXES-NORMAL: }
|
||
|
|
||
|
namespace n31 {
|
||
|
namespace n32 {}
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
} // namespace n31
|
||
|
|
||
|
namespace n33 {
|
||
|
namespace n34 {
|
||
|
namespace n35 {}
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
} // namespace n34
|
||
|
namespace n36 {
|
||
|
void t();
|
||
|
}
|
||
|
} // namespace n33
|
||
|
|
||
|
namespace n37::n38 {
|
||
|
void t();
|
||
|
}
|
||
|
|
||
|
#define IEXIST
|
||
|
namespace n39 {
|
||
|
namespace n40 {
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
// CHECK-FIXES-NORMAL: namespace n39::n40
|
||
|
#ifdef IEXIST
|
||
|
void t() {}
|
||
|
#endif
|
||
|
} // namespace n40
|
||
|
} // namespace n39
|
||
|
// CHECK-FIXES-NORMAL: } // namespace n39::n40
|
||
|
|
||
|
namespace n41 {
|
||
|
namespace n42 {
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
// CHECK-FIXES-NORMAL: namespace n41::n42
|
||
|
#ifdef IDONTEXIST
|
||
|
void t() {}
|
||
|
#endif
|
||
|
} // namespace n42
|
||
|
} // namespace n41
|
||
|
// CHECK-FIXES-NORMAL: } // namespace n41::n42
|
||
|
|
||
|
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE+1]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
namespace n43 {
|
||
|
#define N43_INNER
|
||
|
namespace n44 {
|
||
|
void foo() {}
|
||
|
} // namespace n44
|
||
|
#undef N43_INNER
|
||
|
} // namespace n43
|
||
|
// CHECK-FIXES-NORMAL: #define N43_INNER
|
||
|
// CHECK-FIXES-NORMAL: namespace n43::n44 {
|
||
|
// CHECK-FIXES-NORMAL: } // namespace n43::n44
|
||
|
// CHECK-FIXES-NORMAL: #undef N43_INNER
|
||
|
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE+1]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
namespace n45{
|
||
|
#define N45_INNER
|
||
|
namespace n46
|
||
|
{
|
||
|
#pragma clang diagnostic push
|
||
|
namespace n47 {
|
||
|
void foo() {}
|
||
|
} // namespace n47
|
||
|
#pragma clang diagnostic pop
|
||
|
} //namespace n46
|
||
|
#undef N45_INNER
|
||
|
} //namespace n45
|
||
|
// CHECK-FIXES-NORMAL: #define N45_INNER
|
||
|
// CHECK-FIXES-NORMAL: #pragma clang diagnostic push
|
||
|
// CHECK-FIXES-NORMAL: namespace n45::n46::n47 {
|
||
|
// CHECK-FIXES-NORMAL: } // namespace n45::n46::n47
|
||
|
// CHECK-FIXES-NORMAL: #pragma clang diagnostic pop
|
||
|
// CHECK-FIXES-NORMAL: #undef N45_INNER
|
||
|
|
||
|
inline namespace n48 {
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE+1]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
namespace n49 {
|
||
|
namespace n50 {
|
||
|
// CHECK-FIXES-NORMAL: namespace n49::n50 {
|
||
|
void foo() {}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// CHECK-MESSAGES-CPP20-DAG: :[[@LINE+1]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
namespace n51 {
|
||
|
inline namespace n52 {
|
||
|
namespace n53 {
|
||
|
// CHECK-FIXES-CPP20: namespace n51::inline n52::n53 {
|
||
|
void foo() {}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#if __cplusplus >= 202002L
|
||
|
// CHECK-MESSAGES-CPP20-DAG: :[[@LINE+1]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
namespace n54 {
|
||
|
namespace n55::inline n56::n57 {
|
||
|
namespace n58 {
|
||
|
// CHECK-FIXES-CPP20: namespace n54::n55::inline n56::n57::n58 {
|
||
|
void foo() {}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE+1]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
namespace avoid_add_close_comment {
|
||
|
namespace inner {
|
||
|
void foo() {}
|
||
|
}
|
||
|
}
|
||
|
// CHECK-FIXES-NORMAL: namespace avoid_add_close_comment::inner {
|
||
|
// CHECK-FIXES-NORMAL-NOT: } // namespace avoid_add_close_comment::inner
|
||
|
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE+1]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
namespace avoid_change_close_comment {
|
||
|
namespace inner {
|
||
|
void foo() {}
|
||
|
} // namespace inner and other comments
|
||
|
} // namespace avoid_change_close_comment and other comments
|
||
|
// CHECK-FIXES-NORMAL: namespace avoid_change_close_comment::inner {
|
||
|
// CHECK-FIXES-NORMAL-NOT: } // namespace avoid_add_close_comment::inner
|
||
|
|
||
|
namespace /*::*/ comment_colon_1 {
|
||
|
void foo() {}
|
||
|
} // namespace comment_colon_1
|
||
|
// CHECK-FIXES-NORMAL: namespace /*::*/ comment_colon_1 {
|
||
|
|
||
|
// CHECK-MESSAGES-NORMAL-DAG: :[[@LINE+1]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
|
||
|
namespace /*::*/ comment_colon_2 {
|
||
|
namespace comment_colon_2 {
|
||
|
void foo() {}
|
||
|
} // namespace comment_colon_2
|
||
|
} // namespace comment_colon_2
|
||
|
|
||
|
int main() {
|
||
|
n26::n27::n28::n29::n30::t();
|
||
|
#ifdef IEXIST
|
||
|
n39::n40::t();
|
||
|
#endif
|
||
|
|
||
|
#ifdef IDONTEXIST
|
||
|
n41::n42::t();
|
||
|
#endif
|
||
|
|
||
|
return 0;
|
||
|
}
|