Эх сурвалжийг харах

Make generated code more aligned with Google Java style.

- Blank line after opening a message class (but not an enum interface).
- Let all code blocks insert blank lines before themselves. This applies to
  'package' statement, all message classes, enum classes or constant groups,
  extensions, bitfields, proto fields (one block per field; i.e. accessors
  don't have blank lines among them), and basic MessageNano methods. In this
  case we don't need to guess what the next block is and create blank lines
  for it.
- Fixed some newline/indent errors.
- Only one SuppressWarnings("hiding") per file.

Change-Id: I865f52ad4fb6ea3b3a98b97ac9d78d19fc46c858
Max Cai 12 жил өмнө
parent
commit
9a93c5f593

+ 1 - 1
src/google/protobuf/compiler/javanano/javanano_enum.cc

@@ -69,6 +69,7 @@ EnumGenerator::~EnumGenerator() {}
 
 void EnumGenerator::Generate(io::Printer* printer) {
   printer->Print(
+      "\n"
       "// enum $classname$\n",
       "classname", descriptor_->name());
 
@@ -102,7 +103,6 @@ void EnumGenerator::Generate(io::Printer* printer) {
     printer->Outdent();
     printer->Print("}\n");
   }
-  printer->Print("\n");
 }
 
 }  // namespace javanano

+ 4 - 4
src/google/protobuf/compiler/javanano/javanano_enum_field.cc

@@ -111,11 +111,11 @@ GenerateClearCode(io::Printer* printer) const {
 void EnumFieldGenerator::
 GenerateMergingCode(io::Printer* printer) const {
   printer->Print(variables_,
-    "  this.$name$ = input.readInt32();\n");
+    "this.$name$ = input.readInt32();\n");
 
   if (params_.generate_has()) {
     printer->Print(variables_,
-      "  has$capitalized_name$ = true;\n");
+      "has$capitalized_name$ = true;\n");
   }
 }
 
@@ -281,8 +281,8 @@ GenerateMergingCode(io::Printer* printer) const {
       "input.popLimit(limit);\n");
   } else {
     printer->Print(variables_,
-      "int arrayLength = com.google.protobuf.nano.WireFormatNano.\n"
-      "    getRepeatedFieldArrayLength(input, $tag$);\n"
+      "int arrayLength = com.google.protobuf.nano.WireFormatNano\n"
+      "    .getRepeatedFieldArrayLength(input, $tag$);\n"
       "int i = this.$name$ == null ? 0 : this.$name$.length;\n"
       "int[] newArray = new int[i + arrayLength];\n"
       "if (i != 0) {\n"

+ 4 - 2
src/google/protobuf/compiler/javanano/javanano_extension.cc

@@ -77,13 +77,15 @@ ExtensionGenerator::~ExtensionGenerator() {}
 void ExtensionGenerator::Generate(io::Printer* printer) const {
   if (descriptor_->is_repeated()) {
     printer->Print(variables_,
-      "// Extends $extends$\n"
+      "\n"
+      "// extends $extends$\n"
       "public static final com.google.protobuf.nano.Extension<java.util.List<$type$>> $name$ = \n"
       "    com.google.protobuf.nano.Extension.createRepeated($number$,\n"
       "        new com.google.protobuf.nano.Extension.TypeLiteral<java.util.List<$type$>>(){});\n");
   } else {
     printer->Print(variables_,
-      "// Extends $extends$\n"
+      "\n"
+      "// extends $extends$\n"
       "public static final com.google.protobuf.nano.Extension<$type$> $name$ =\n"
       "    com.google.protobuf.nano.Extension.create($number$,\n"
       "        new com.google.protobuf.nano.Extension.TypeLiteral<$type$>(){});\n");

+ 12 - 8
src/google/protobuf/compiler/javanano/javanano_file.cc

@@ -163,17 +163,22 @@ void FileGenerator::Generate(io::Printer* printer) {
   // We don't import anything because we refer to all classes by their
   // fully-qualified names in the generated source.
   printer->Print(
-    "// Generated by the protocol buffer compiler.  DO NOT EDIT!\n"
-    "\n");
+    "// Generated by the protocol buffer compiler.  DO NOT EDIT!\n");
   if (!java_package_.empty()) {
     printer->Print(
-      "package $package$;\n"
-      "\n",
+      "\n"
+      "package $package$;\n",
       "package", java_package_);
   }
 
+  // Note: constants (from enums, emitted in the loop below) may have the same names as constants
+  // in the nested classes. This causes Java warnings, but is not fatal, so we suppress those
+  // warnings here in the top-most class declaration.
   printer->Print(
+    "\n"
+    "@SuppressWarnings(\"hiding\")\n"
     "public final class $classname$ {\n"
+    "  \n"
     "  private $classname$() {}\n",
     "classname", classname_);
   printer->Indent();
@@ -223,12 +228,11 @@ static void GenerateSibling(const string& package_dir,
   io::Printer printer(output.get(), '$');
 
   printer.Print(
-    "// Generated by the protocol buffer compiler.  DO NOT EDIT!\n"
-    "\n");
+    "// Generated by the protocol buffer compiler.  DO NOT EDIT!\n");
   if (!java_package.empty()) {
     printer.Print(
-      "package $package$;\n"
-      "\n",
+      "\n"
+      "package $package$;\n",
       "package", java_package);
   }
 

+ 52 - 36
src/google/protobuf/compiler/javanano/javanano_message.cc

@@ -121,37 +121,47 @@ void MessageGenerator::GenerateStaticVariableInitializers(
 }
 
 void MessageGenerator::Generate(io::Printer* printer) {
-  const string& file_name = descriptor_->file()->name();
-  bool is_own_file =
-    params_.java_multiple_files(file_name)
-      && descriptor_->containing_type() == NULL;
-
   if (!params_.store_unknown_fields() &&
       (descriptor_->extension_count() != 0 || descriptor_->extension_range_count() != 0)) {
     GOOGLE_LOG(FATAL) << "Extensions are only supported in NANO_RUNTIME if the "
         "'store_unknown_fields' generator option is 'true'\n";
   }
 
-  // Note: Fields (which will be emitted in the loop, below) may have the same names as fields in
-  // the inner or outer class.  This causes Java warnings, but is not fatal, so we suppress those
-  // warnings here in the class declaration.
-  printer->Print(
-    "@SuppressWarnings(\"hiding\")\n"
-    "public $modifiers$final class $classname$ extends\n"
-    "    com.google.protobuf.nano.MessageNano {\n",
-    "modifiers", is_own_file ? "" : "static ",
-    "classname", descriptor_->name());
+  const string& file_name = descriptor_->file()->name();
+  bool is_own_file =
+    params_.java_multiple_files(file_name)
+      && descriptor_->containing_type() == NULL;
+
+  if (is_own_file) {
+    // Note: constants (from enums and fields requiring stored defaults, emitted in the loop below)
+    // may have the same names as constants in the nested classes. This causes Java warnings, but
+    // is not fatal, so we suppress those warnings here in the top-most class declaration.
+    printer->Print(
+      "\n"
+      "@SuppressWarnings(\"hiding\")\n"
+      "public final class $classname$ extends\n"
+      "    com.google.protobuf.nano.MessageNano {\n",
+      "classname", descriptor_->name());
+  } else {
+    printer->Print(
+      "\n"
+      "public static final class $classname$ extends\n"
+      "    com.google.protobuf.nano.MessageNano {\n",
+      "classname", descriptor_->name());
+  }
   printer->Indent();
   printer->Print(
-    "public static final $classname$ EMPTY_ARRAY[] = {};\n"
+    "\n"
+    "public static final $classname$[] EMPTY_ARRAY = {};\n"
+    "\n"
     "public $classname$() {\n"
     "  clear();\n"
-    "}\n"
-    "\n",
+    "}\n",
     "classname", descriptor_->name());
 
   if (params_.store_unknown_fields()) {
     printer->Print(
+        "\n"
         "private java.util.List<com.google.protobuf.nano.UnknownFieldData>\n"
         "    unknownFieldData;\n");
   }
@@ -171,16 +181,19 @@ void MessageGenerator::Generate(io::Printer* printer) {
 
   // Integers for bit fields
   int totalInts = (field_generators_.total_bits() + 31) / 32;
-  for (int i = 0; i < totalInts; i++) {
-    printer->Print("private int $bit_field_name$;\n",
-      "bit_field_name", GetBitFieldName(i));
+  if (totalInts > 0) {
+    printer->Print("\n");
+    for (int i = 0; i < totalInts; i++) {
+      printer->Print("private int $bit_field_name$;\n",
+        "bit_field_name", GetBitFieldName(i));
+    }
   }
 
   // Fields
   for (int i = 0; i < descriptor_->field_count(); i++) {
+    printer->Print("\n");
     PrintFieldComment(printer, descriptor_->field(i));
     field_generators_.get(descriptor_->field(i)).GenerateMembers(printer);
-    printer->Print("\n");
   }
 
   GenerateClear(printer);
@@ -189,25 +202,27 @@ void MessageGenerator::Generate(io::Printer* printer) {
   if (params_.store_unknown_fields()
       && descriptor_->extension_range_count() > 0) {
     printer->Print(
+      "\n"
       "public <T> T getExtension(com.google.protobuf.nano.Extension<T> extension) {\n"
       "  return com.google.protobuf.nano.WireFormatNano.getExtension(\n"
       "      extension, unknownFieldData);\n"
-      "}\n\n"
+      "}\n"
+      "\n"
       "public <T> void setExtension(com.google.protobuf.nano.Extension<T> extension, T value) {\n"
       "  if (unknownFieldData == null) {\n"
-      "    unknownFieldData = \n"
+      "    unknownFieldData =\n"
       "        new java.util.ArrayList<com.google.protobuf.nano.UnknownFieldData>();\n"
       "  }\n"
       "  com.google.protobuf.nano.WireFormatNano.setExtension(\n"
       "      extension, value, unknownFieldData);\n"
-      "}\n\n");
+      "}\n");
   }
   GenerateMessageSerializationMethods(printer);
   GenerateMergeFromMethods(printer);
   GenerateParseFromMethods(printer);
 
   printer->Outdent();
-  printer->Print("}\n\n");
+  printer->Print("}\n");
 }
 
 // ===================================================================
@@ -220,11 +235,13 @@ GenerateMessageSerializationMethods(io::Printer* printer) {
   // writeTo only throws an exception if it contains one or more fields to write
   if (descriptor_->field_count() > 0 || params_.store_unknown_fields()) {
     printer->Print(
+      "\n"
       "@Override\n"
       "public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output)\n"
-      "                    throws java.io.IOException {\n");
+      "    throws java.io.IOException {\n");
   } else {
     printer->Print(
+      "\n"
       "@Override\n"
       "public void writeTo(com.google.protobuf.nano.CodedOutputByteBufferNano output) {\n");
   }
@@ -274,8 +291,7 @@ GenerateMessageSerializationMethods(io::Printer* printer) {
   printer->Print(
     "  cachedSize = size;\n"
     "  return size;\n"
-    "}\n"
-    "\n");
+    "}\n");
 }
 
 void MessageGenerator::GenerateMergeFromMethods(io::Printer* printer) {
@@ -283,9 +299,10 @@ void MessageGenerator::GenerateMergeFromMethods(io::Printer* printer) {
     SortFieldsByNumber(descriptor_));
 
   printer->Print(
+    "\n"
     "@Override\n"
     "public $classname$ mergeFrom(\n"
-    "    com.google.protobuf.nano.CodedInputByteBufferNano input)\n"
+    "        com.google.protobuf.nano.CodedInputByteBufferNano input)\n"
     "    throws java.io.IOException {\n",
     "classname", descriptor_->name());
 
@@ -350,8 +367,7 @@ void MessageGenerator::GenerateMergeFromMethods(io::Printer* printer) {
   printer->Print(
     "    }\n"     // switch (tag)
     "  }\n"       // while (true)
-    "}\n"
-    "\n");
+    "}\n");
 }
 
 void MessageGenerator::
@@ -360,6 +376,7 @@ GenerateParseFromMethods(io::Printer* printer) {
   //   because they need to be generated even for messages that are optimized
   //   for code size.
   printer->Print(
+    "\n"
     "public static $classname$ parseFrom(byte[] data)\n"
     "    throws com.google.protobuf.nano.InvalidProtocolBufferNanoException {\n"
     "  return com.google.protobuf.nano.MessageNano.mergeFrom(new $classname$(), data);\n"
@@ -369,8 +386,7 @@ GenerateParseFromMethods(io::Printer* printer) {
     "        com.google.protobuf.nano.CodedInputByteBufferNano input)\n"
     "    throws java.io.IOException {\n"
     "  return new $classname$().mergeFrom(input);\n"
-    "}\n"
-    "\n",
+    "}\n",
     "classname", descriptor_->name());
 }
 
@@ -381,7 +397,8 @@ void MessageGenerator::GenerateSerializeOneField(
 
 void MessageGenerator::GenerateClear(io::Printer* printer) {
   printer->Print(
-    "public final $classname$ clear() {\n",
+    "\n"
+    "public $classname$ clear() {\n",
     "classname", descriptor_->name());
   printer->Indent();
 
@@ -407,8 +424,7 @@ void MessageGenerator::GenerateClear(io::Printer* printer) {
   printer->Print(
     "  cachedSize = -1;\n"
     "  return this;\n"
-    "}\n"
-    "\n");
+    "}\n");
 }
 
 // ===================================================================

+ 5 - 4
src/google/protobuf/compiler/javanano/javanano_message_field.cc

@@ -98,7 +98,7 @@ GenerateMergingCode(io::Printer* printer) const {
   printer->Print(variables_,
     "if (this.$name$ == null) {\n"
     "  this.$name$ = new $type$();\n"
-    "}");
+    "}\n");
 
   if (descriptor_->type() == FieldDescriptor::TYPE_GROUP) {
     printer->Print(variables_,
@@ -173,7 +173,7 @@ GenerateMergingCode(io::Printer* printer) const {
   printer->Print(variables_,
     "if (!has$capitalized_name$()) {\n"
     "  set$capitalized_name$(new $type$());\n"
-    "}");
+    "}\n");
 
   if (descriptor_->type() == FieldDescriptor::TYPE_GROUP) {
     printer->Print(variables_,
@@ -231,10 +231,11 @@ void RepeatedMessageFieldGenerator::
 GenerateMergingCode(io::Printer* printer) const {
   // First, figure out the length of the array, then parse.
   printer->Print(variables_,
-    "int arrayLength = com.google.protobuf.nano.WireFormatNano"
+    "int arrayLength = com.google.protobuf.nano.WireFormatNano\n"
     "    .getRepeatedFieldArrayLength(input, $tag$);\n"
     "int i = this.$name$ == null ? 0 : this.$name$.length;\n"
-    "$type$[] newArray = new $type$[i + arrayLength];\n"
+    "$type$[] newArray =\n"
+    "    new $type$[i + arrayLength];\n"
     "if (i != 0) {\n"
     "  java.lang.System.arraycopy(this.$name$, 0, newArray, 0, i);\n"
     "}\n"