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
pull/91/head
Max Cai 11 years ago
parent 665d99f4bc
commit 9a93c5f593
  1. 2
      src/google/protobuf/compiler/javanano/javanano_enum.cc
  2. 8
      src/google/protobuf/compiler/javanano/javanano_enum_field.cc
  3. 6
      src/google/protobuf/compiler/javanano/javanano_extension.cc
  4. 20
      src/google/protobuf/compiler/javanano/javanano_file.cc
  5. 88
      src/google/protobuf/compiler/javanano/javanano_message.cc
  6. 9
      src/google/protobuf/compiler/javanano/javanano_message_field.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

@ -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"

@ -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");

@ -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);
}

@ -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");
}
// ===================================================================

@ -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"

Loading…
Cancel
Save