Index: lib/message_generator.dart |
diff --git a/lib/message_generator.dart b/lib/message_generator.dart |
index 1177151a86058b9a1396eac6cf49dc801431a244..7e1d2c1f54e3371d57b8179a765afe4086f01833 100644 |
--- a/lib/message_generator.dart |
+++ b/lib/message_generator.dart |
@@ -311,11 +311,26 @@ class MessageGenerator extends ProtobufContainer { |
var defaultExpr = field.getDefaultExpr(); |
var names = field.memberNames; |
+ _emitOverrideIf(field.overridesGetter, out); |
out.println('${fieldTypeString} get ${names.fieldName}' |
' => \$_get(' |
'${field.index}, ${field.number}, $defaultExpr);'); |
- if (!field.isRepeated) { |
+ if (field.isRepeated) { |
+ if (field.overridesSetter) { |
+ throw 'Field ${field.fqname} cannot override a setter for ' |
+ '${names.fieldName} because it is repeated.'; |
+ } |
+ if (field.overridesHasMethod) { |
+ throw 'Field ${field.fqname} cannot override ' |
+ '${names.hasMethodName}() because it is repeated.'; |
+ } |
+ if (field.overridesClearMethod) { |
+ throw 'Field ${field.fqname} cannot override ' |
+ '${names.clearMethodName}() because it is repeated.'; |
+ } |
+ } else { |
var fastSetter = field.baseType.setter; |
+ _emitOverrideIf(field.overridesSetter, out); |
if (fastSetter != null) { |
out.println('void set ${names.fieldName}' |
'($fieldTypeString v) { ' |
@@ -327,14 +342,22 @@ class MessageGenerator extends ProtobufContainer { |
'setField(${field.number}, v);' |
' }'); |
} |
+ _emitOverrideIf(field.overridesHasMethod, out); |
out.println('bool ${names.hasMethodName}() =>' |
' \$_has(${field.index}, ${field.number});'); |
+ _emitOverrideIf(field.overridesClearMethod, out); |
out.println('void ${names.clearMethodName}() =>' |
' clearField(${field.number});'); |
} |
} |
} |
+ void _emitOverrideIf(bool condition, IndentingWriter out) { |
+ if (condition) { |
+ out.println('@override'); |
+ } |
+ } |
+ |
void generateEnums(IndentingWriter out) { |
for (EnumGenerator e in _enumGenerators) { |
e.generate(out); |