Add a mechanism for placing comments in Emit() calls that are not reproduced in the output.

PiperOrigin-RevId: 494274364
diff --git a/src/google/protobuf/io/printer.cc b/src/google/protobuf/io/printer.cc
index d46c009..1320b71 100644
--- a/src/google/protobuf/io/printer.cc
+++ b/src/google/protobuf/io/printer.cc
@@ -132,27 +132,22 @@
   }
 
   // We now split the remaining format string into lines and discard:
-  //   1. A trailing Printer-discarded comment.
-  //
-  //   2. All leading spaces to compute that line's indent.
+  //   1. All leading spaces to compute that line's indent.
   //      We do not do this for the first line, so that Emit("  ") works
   //      correctly. We do this *regardless* of whether we are processing
   //      a raw string, because existing non-raw-string calls to cpp::Formatter
   //      rely on this. There is a test that validates this behavior.
   //
-  //   3. Set the indent for that line to max(0, line_indent -
+  //   2. Set the indent for that line to max(0, line_indent -
   //      raw_string_indent), if this is not a raw string.
   //
-  //   4. Trailing empty lines, if we know this is a raw string, except for
+  //   3. Trailing empty lines, if we know this is a raw string, except for
   //      a single extra newline at the end.
   //
   // Each line is itself split into chunks along the variable delimiters, e.g.
   // $...$.
   bool is_first = true;
   for (absl::string_view line_text : absl::StrSplit(format_string, '\n')) {
-    size_t comment_index = line_text.find(options_.ignored_comment_start);
-    line_text = line_text.substr(0, comment_index);
-
     size_t line_indent = 0;
     while (!is_first && absl::ConsumePrefix(&line_text, " ")) {
       ++line_indent;
diff --git a/src/google/protobuf/io/printer.h b/src/google/protobuf/io/printer.h
index 45698c2..31deaa5 100644
--- a/src/google/protobuf/io/printer.h
+++ b/src/google/protobuf/io/printer.h
@@ -224,17 +224,6 @@
 //     }
 //   };
 //
-// # Comments
-//
-// It may be desirable to place comments in a raw string that are stripped out
-// before printing. The prefix for Printer-ignored comments can be configured
-// in Options. By default, this is `//~`.
-//
-//   p.Emit(R"cc(
-//     // Will be printed in the output.
-//     //~ Won't be.
-//   )cc");
-//
 // # Lookup Frames
 //
 // If many calls to Emit() use the same set of variables, they can be stored
@@ -643,9 +632,6 @@
     // to allow the Printer to emit debugging annotations in the source code
     // output.
     absl::string_view comment_start = "//";
-    // The token for beginning comments that are discarded by Printer's internal
-    // formatter.
-    absl::string_view ignored_comment_start = "//~";
     // The number of spaces that a single level of indentation adds by default;
     // this is the amount that WithIndent() increases indentation by.
     size_t spaces_per_indent = 2;
diff --git a/src/google/protobuf/io/printer_unittest.cc b/src/google/protobuf/io/printer_unittest.cc
index 754426d..3a8fa22 100644
--- a/src/google/protobuf/io/printer_unittest.cc
+++ b/src/google/protobuf/io/printer_unittest.cc
@@ -41,12 +41,14 @@
 
 #include "google/protobuf/descriptor.pb.h"
 #include <gmock/gmock.h>
+#include "google/protobuf/testing/googletest.h"
 #include <gtest/gtest.h>
 #include "absl/container/flat_hash_map.h"
 #include "google/protobuf/stubs/logging.h"
 #include "absl/strings/str_join.h"
 #include "absl/strings/string_view.h"
 #include "google/protobuf/io/zero_copy_stream.h"
+#include "google/protobuf/io/zero_copy_stream_impl.h"
 #include "google/protobuf/io/zero_copy_stream_impl_lite.h"
 
 namespace google {
@@ -563,18 +565,6 @@
             "};\n");
 }
 
-TEST_F(PrinterTest, EmitComments) {
-  {
-    Printer printer(output());
-    printer.Emit(R"cc(
-      // Yes.
-      //~ No.
-    )cc");
-  }
-
-  EXPECT_EQ(written(), "// Yes.\n");
-}
-
 TEST_F(PrinterTest, EmitWithVars) {
   {
     Printer printer(output());