Index: clang/lib/Format/NamespaceEndCommentsFixer.cpp =================================================================== --- clang/lib/Format/NamespaceEndCommentsFixer.cpp +++ clang/lib/Format/NamespaceEndCommentsFixer.cpp @@ -360,8 +360,12 @@ Style.SpacesInLineCommentPrefix.Minimum); if (!hasEndComment(EndCommentPrevTok)) { bool isShort = I - StartLineIndex <= Style.ShortNamespaceLines + 1; - if (!isShort) - addEndComment(EndCommentPrevTok, EndCommentText, SourceMgr, &Fixes); + if (!isShort) { + addEndComment(EndCommentPrevTok, + std::string(Style.SpacesBeforeTrailingComments, ' ') + + EndCommentText, + SourceMgr, &Fixes); + } } else if (!validEndComment(EndCommentPrevTok, NamespaceName, NamespaceTok)) { updateEndComment(EndCommentPrevTok, EndCommentText, SourceMgr, &Fixes); Index: clang/unittests/Format/FormatTestComments.cpp =================================================================== --- clang/unittests/Format/FormatTestComments.cpp +++ clang/unittests/Format/FormatTestComments.cpp @@ -3043,6 +3043,16 @@ "// comment", Style)); + verifyFormat("namespace ns {\n" + "int i;\n" + "int j;\n" + "} // namespace ns", + "namespace ns {\n" + "int i;\n" + "int j;\n" + "}", + Style); + // Allow to keep 2 empty lines Style.MaxEmptyLinesToKeep = 2; EXPECT_EQ("// do not touch\n" Index: clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp =================================================================== --- clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp +++ clang/unittests/Format/NamespaceEndCommentsFixerTest.cpp @@ -25,8 +25,10 @@ const FormatStyle &Style = getLLVMStyle()) { LLVM_DEBUG(llvm::errs() << "---\n"); LLVM_DEBUG(llvm::errs() << Code << "\n\n"); + FormatStyle S = Style; + S.SpacesBeforeTrailingComments = 0; tooling::Replacements Replaces = - clang::format::fixNamespaceEndComments(Style, Code, Ranges, ""); + clang::format::fixNamespaceEndComments(S, Code, Ranges, ""); auto Result = applyAllReplacements(Code, Replaces); EXPECT_TRUE(static_cast(Result)); LLVM_DEBUG(llvm::errs() << "\n" << *Result << "\n\n");