Skip to content

Commit 3bf9c40

Browse files
Fix C++ codegen namespace printer to print closing namespaces in reverse order.
This will make the comment correctly attribute the actual namespace being closed. PiperOrigin-RevId: 679548777
1 parent 0ea9685 commit 3bf9c40

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/google/protobuf/compiler/cpp/namespace_printer.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ NamespacePrinter::NamespacePrinter(
2626

2727
NamespacePrinter::~NamespacePrinter() {
2828
// Close the namespace.
29-
for (const std::string& ns : namespace_components_) {
30-
p_->Print(absl::Substitute("} // namespace $0\n", ns));
29+
for (auto it = namespace_components_.rbegin();
30+
it != namespace_components_.rend(); ++it) {
31+
p_->Print(absl::Substitute("} // namespace $0\n", *it));
3132
}
3233
}
3334

src/google/protobuf/compiler/cpp/namespace_printer_unittest.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ TEST_F(NamespacePrinterTest, Basic) {
4646
"namespace B {\n"
4747
"namespace E {\n"
4848
"\n"
49-
"} // namespace A\n"
49+
"} // namespace E\n"
5050
"} // namespace B\n"
51-
"} // namespace E\n");
51+
"} // namespace A\n");
5252
}
5353

5454
TEST_F(NamespacePrinterTest, DifferentDelim) {
@@ -65,9 +65,9 @@ TEST_F(NamespacePrinterTest, DifferentDelim) {
6565
"namespace B {\n"
6666
"namespace E {\n"
6767
"\n"
68-
"} // namespace A\n"
68+
"} // namespace E\n"
6969
"} // namespace B\n"
70-
"} // namespace E\n");
70+
"} // namespace A\n");
7171
}
7272

7373
} // namespace

0 commit comments

Comments
 (0)