// RUN: %check_clang_tidy -std=c++17-or-later %s modernize-concat-nested-namespaces %t

namespace n1 {}

namespace n2 {
namespace n3 {
void t();
}
namespace n4 {
void t();
}
} // namespace n2

namespace n5 {
inline namespace n6 {
void t();
}
} // namespace n5

namespace n7 {
void t();

namespace n8 {
void t();
}
} // namespace n7

namespace n9 {
namespace n10 {
// CHECK-MESSAGES: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
// CHECK-FIXES: namespace n9::n10
void t();
} // namespace n10
} // namespace n9
// CHECK-FIXES: }

namespace n11 {
namespace n12 {
// CHECK-MESSAGES: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
// CHECK-FIXES: namespace n11::n12
namespace n13 {
void t();
}
namespace n14 {
void t();
}
} // namespace n12
} // namespace n11
// CHECK-FIXES: }

namespace n15 {
namespace n16 {
void t();
}

inline namespace n17 {
void t();
}

namespace n18 {
namespace n19 {
namespace n20 {
// CHECK-MESSAGES: :[[@LINE-3]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
// CHECK-FIXES: namespace n18::n19::n20
void t();
} // namespace n20
} // namespace n19
} // namespace n18
// CHECK-FIXES: }

namespace n21 {
void t();
}
} // namespace n15

namespace n22 {
namespace {
void t();
}
} // namespace n22

namespace n23 {
namespace {
namespace n24 {
namespace n25 {
// CHECK-MESSAGES: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
// CHECK-FIXES: namespace n24::n25
void t();
} // namespace n25
} // namespace n24
// CHECK-FIXES: }
} // namespace
} // namespace n23

namespace n26::n27 {
namespace n28 {
namespace n29::n30 {
// CHECK-MESSAGES: :[[@LINE-3]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
// CHECK-FIXES: namespace n26::n27::n28::n29::n30
void t() {}
} // namespace n29::n30
} // namespace n28
} // namespace n26::n27
// CHECK-FIXES: }

namespace n31 {
namespace n32 {}
// CHECK-MESSAGES: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
} // namespace n31
// CHECK-FIXES-EMPTY

namespace n33 {
namespace n34 {
namespace n35 {}
// CHECK-MESSAGES: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
} // namespace n34
// CHECK-FIXES-EMPTY
namespace n36 {
void t();
}
} // namespace n33

namespace n37::n38 {
void t();
}

#define IEXIST
namespace n39 {
namespace n40 {
// CHECK-MESSAGES: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
// CHECK-FIXES: namespace n39::n40
#ifdef IEXIST
void t() {}
#endif
} // namespace n40
} // namespace n39
// CHECK-FIXES: }

namespace n41 {
namespace n42 {
// CHECK-MESSAGES: :[[@LINE-2]]:1: warning: nested namespaces can be concatenated [modernize-concat-nested-namespaces]
// CHECK-FIXES: namespace n41::n42
#ifdef IDONTEXIST
void t() {}
#endif
} // namespace n42
} // namespace n41
// CHECK-FIXES: }

int main() {
  n26::n27::n28::n29::n30::t();
#ifdef IEXIST
  n39::n40::t();
#endif

#ifdef IDONTEXIST
  n41::n42::t();
#endif

  return 0;
}
