Index: lib/message_generator.dart |
diff --git a/lib/message_generator.dart b/lib/message_generator.dart |
index 8d986e1bbfb339743ae4ba8c890491c1d4748ec5..49ceb158b0b0d899463ef9a3cc6cc3354a5ff294 100644 |
--- a/lib/message_generator.dart |
+++ b/lib/message_generator.dart |
@@ -11,16 +11,49 @@ const checkItem = '\$checkItem'; |
class MessageGenerator extends ProtobufContainer { |
// List of Dart language reserved words in names which cannot be used in a |
// subclass of GeneratedMessage. |
- static final List<String> reservedWords = |
- ['assert', 'break', 'case', 'catch', 'class', 'const', 'continue', |
- 'default', 'do', 'else', 'enum', 'extends', 'false', 'final', |
- 'finally', 'for', 'if', 'in', 'is', 'new', 'null', 'rethrow', 'return', |
- 'super', 'switch', 'this', 'throw', 'true', 'try', 'var', 'void', |
- 'while', 'with']; |
+ static final List<String> reservedWords = [ |
+ 'assert', |
+ 'break', |
+ 'case', |
+ 'catch', |
+ 'class', |
+ 'const', |
+ 'continue', |
+ 'default', |
+ 'do', |
+ 'else', |
+ 'enum', |
+ 'extends', |
+ 'false', |
+ 'final', |
+ 'finally', |
+ 'for', |
+ 'if', |
+ 'in', |
+ 'is', |
+ 'new', |
+ 'null', |
+ 'rethrow', |
+ 'return', |
+ 'super', |
+ 'switch', |
+ 'this', |
+ 'throw', |
+ 'true', |
+ 'try', |
+ 'var', |
+ 'void', |
+ 'while', |
+ 'with' |
+ ]; |
// List of names used in the generated class itself |
- static final List<String> generatedNames = |
- ['create', 'createRepeated', 'getDefault', checkItem]; |
+ static final List<String> generatedNames = [ |
+ 'create', |
+ 'createRepeated', |
+ 'getDefault', |
+ checkItem |
+ ]; |
// Returns the mixin for this message, or null if none. |
static PbMixin _getMixin(DescriptorProto desc, PbMixin defaultValue) { |
@@ -31,7 +64,7 @@ class MessageGenerator extends ProtobufContainer { |
if (name.isEmpty) return null; // don't use a mixin (override any default) |
var mixin = findMixin(name); |
if (mixin == null) { |
- throw("unknown mixin class: ${name}"); |
+ throw ("unknown mixin class: ${name}"); |
} |
return mixin; |
} |
@@ -52,24 +85,25 @@ class MessageGenerator extends ProtobufContainer { |
// Used during generation. |
final Set<String> _methodNames = new Set<String>(); |
- MessageGenerator( |
- DescriptorProto descriptor, ProtobufContainer parent, PbMixin defaultMixin) |
+ MessageGenerator(DescriptorProto descriptor, ProtobufContainer parent, |
+ PbMixin defaultMixin) |
: _descriptor = descriptor, |
_parent = parent, |
- classname = (parent.classname == '') ? |
- descriptor.name : '${parent.classname}_${descriptor.name}', |
- fqname = (parent == null || parent.fqname == null) ? descriptor.name : |
- (parent.fqname == '.' ? |
- '.${descriptor.name}' : '${parent.fqname}.${descriptor.name}'), |
+ classname = (parent.classname == '') |
+ ? descriptor.name |
+ : '${parent.classname}_${descriptor.name}', |
+ fqname = (parent == null || parent.fqname == null) |
+ ? descriptor.name |
+ : (parent.fqname == '.' |
+ ? '.${descriptor.name}' |
+ : '${parent.fqname}.${descriptor.name}'), |
mixin = _getMixin(descriptor, defaultMixin) { |
- |
for (EnumDescriptorProto e in _descriptor.enumType) { |
_enumGenerators.add(new EnumGenerator(e, this)); |
} |
for (DescriptorProto n in _descriptor.nestedType) { |
- _messageGenerators.add( |
- new MessageGenerator(n, this, defaultMixin)); |
+ _messageGenerators.add(new MessageGenerator(n, this, defaultMixin)); |
} |
for (FieldDescriptorProto x in _descriptor.extension) { |
@@ -112,7 +146,7 @@ class MessageGenerator extends ProtobufContainer { |
// Registers message and enum types that can be used elsewhere. |
void register(GenerationContext ctx) { |
ctx.registerFieldType(fqname, this); |
- for (var m in _messageGenerators) { |
+ for (var m in _messageGenerators) { |
m.register(ctx); |
} |
for (var e in _enumGenerators) { |
@@ -126,10 +160,10 @@ class MessageGenerator extends ProtobufContainer { |
var sorted = new List<FieldDescriptorProto>.from(_descriptor.field) |
..sort((FieldDescriptorProto a, FieldDescriptorProto b) { |
- if (a.number < b.number) return -1; |
- if (a.number > b.number) return 1; |
- throw "multiple fields defined for tag ${a.number} in $fqname"; |
- }); |
+ if (a.number < b.number) return -1; |
+ if (a.number > b.number) return 1; |
+ throw "multiple fields defined for tag ${a.number} in $fqname"; |
+ }); |
_fieldList = <ProtobufField>[]; |
for (FieldDescriptorProto field in sorted) { |
@@ -204,9 +238,8 @@ class MessageGenerator extends ProtobufContainer { |
mixinClause = ' with ${mixinNames.join(", ")}'; |
} |
- out.addBlock('class ${classname} extends GeneratedMessage${mixinClause} {', |
- '}', () |
- { |
+ out.addBlock( |
+ 'class ${classname} extends GeneratedMessage${mixinClause} {', '}', () { |
out.addBlock( |
'static final BuilderInfo _i = new BuilderInfo(\'${classname}\')', |
';', () { |
@@ -245,21 +278,22 @@ class MessageGenerator extends ProtobufContainer { |
' new ${classname}();'); |
out.println('static PbList<${classname}> createRepeated() =>' |
' new PbList<${classname}>();'); |
- out.addBlock('static ${classname} getDefault() {', |
- '}', () { |
- out.println('if (_defaultInstance == null) _defaultInstance = new _Readonly${classname}();'); |
+ out.addBlock('static ${classname} getDefault() {', '}', () { |
+ out.println( |
+ 'if (_defaultInstance == null) _defaultInstance = new _Readonly${classname}();'); |
out.println('return _defaultInstance;'); |
}); |
out.println('static ${classname} _defaultInstance;'); |
out.addBlock('static void $checkItem($classname v) {', '}', () { |
- out.println('if (v is !$classname)' |
- " checkItemFailed(v, '$classname');"); |
+ out.println('if (v is !$classname)' |
+ " checkItemFailed(v, '$classname');"); |
}); |
generateFieldsAccessorsMutators(out); |
}); |
out.println(); |
- out.println('class _Readonly${classname} extends ${classname} with ReadonlyMessageMixin {}'); |
+ out.println( |
+ 'class _Readonly${classname} extends ${classname} with ReadonlyMessageMixin {}'); |
out.println(); |
} |
@@ -315,8 +349,8 @@ class MessageGenerator extends ProtobufContainer { |
String clearIdentifier = field.clearMethodName; |
if (!field.isRepeated) { |
while (_methodNames.contains(identifier) || |
- _methodNames.contains(hasIdentifier) || |
- _methodNames.contains(clearIdentifier)) { |
+ _methodNames.contains(hasIdentifier) || |
+ _methodNames.contains(clearIdentifier)) { |
identifier += '_' + field.number.toString(); |
hasIdentifier += '_' + field.number.toString(); |
clearIdentifier += '_' + field.number.toString(); |
@@ -334,7 +368,8 @@ class MessageGenerator extends ProtobufContainer { |
var fieldTypeString = field.getDartType(package); |
var defaultExpr = field.getDefaultExpr(); |
out.println('${fieldTypeString} get ${identifier}' |
- ' => \$_get(${field.index}, ${field.number}, $defaultExpr);'); |
+ ' => \$_get(' |
+ '${field.index}, ${field.number}, $defaultExpr);'); |
if (!field.isRepeated) { |
var fastSetter = field.baseType.setter; |
if (fastSetter != null) { |
@@ -368,11 +403,9 @@ class MessageGenerator extends ProtobufContainer { |
var name = getJsonConstant(fileGen); |
var json = _descriptor.writeToJsonMap(); |
var nestedTypeNames = |
- _messageGenerators.map((m) => m.getJsonConstant(fileGen)) |
- .toList(); |
+ _messageGenerators.map((m) => m.getJsonConstant(fileGen)).toList(); |
var nestedEnumNames = |
- _enumGenerators.map((e) => e.getJsonConstant(fileGen)) |
- .toList(); |
+ _enumGenerators.map((e) => e.getJsonConstant(fileGen)).toList(); |
out.addBlock("const $name = const {", "};", () { |
for (var key in json.keys) { |