================ @@ -41,8 +50,26 @@ void ImplementationInNamespaceCheck::check( // Enforce that the namespace is the result of macro expansion if (Result.SourceManager->isMacroBodyExpansion(NS->getLocation()) == false) { - diag(NS->getLocation(), "the outermost namespace should be the '%0' macro") - << RequiredNamespaceDeclMacroName; + auto DB = diag(NS->getLocation(), + "the outermost namespace should be the '%0' macro") + << RequiredNamespaceDeclMacroName; + + // TODO: Determine how to split inline namespaces correctly in the FixItHint + // + // We can't easily replace LIBC_NAMEPACE::inner::namespace { with + // + // namespace LIBC_NAMEPACE_DECL { + // namespace inner::namespace { ---------------- 5chmidti wrote:
I think this is doable, but the `MACRO` in `namespace MACRO::foo::bar` could be a nested namespace as well (`#define MACRO my::namespace`). You would likely have to go through the lexer and check if the next tokens are `::`, and take these locations (with offset 1) as the range to be removed/changed. Should the outer libc namespace be on its own like in this example, or is a replacement from `LIBC_NAMESPACE::inner::namespace` to `LIBC_NAMESPACE_DECL::inner::namespace` fine? FYI: `LIBC_NAMEPACE_DECL` -> `LIBC_NAMESPACE_DECL` (missing `S` twice) https://github.com/llvm/llvm-project/pull/99681 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits