OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of protoc; | 5 part of protoc; |
6 | 6 |
7 class MessageGenerator extends ProtobufContainer { | 7 class MessageGenerator extends ProtobufContainer { |
8 /// Returns the mixin for this message, or null if none. | 8 /// Returns the mixin for this message, or null if none. |
9 /// | 9 /// |
10 /// First searches [declaredMixins], then internal mixins declared by | 10 /// First searches [declaredMixins], then internal mixins declared by |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
304 } | 304 } |
305 | 305 |
306 void generateFieldsAccessorsMutators(IndentingWriter out) { | 306 void generateFieldsAccessorsMutators(IndentingWriter out) { |
307 for (ProtobufField field in _fieldList) { | 307 for (ProtobufField field in _fieldList) { |
308 out.println(); | 308 out.println(); |
309 | 309 |
310 var fieldTypeString = field.getDartType(package); | 310 var fieldTypeString = field.getDartType(package); |
311 var defaultExpr = field.getDefaultExpr(); | 311 var defaultExpr = field.getDefaultExpr(); |
312 var names = field.memberNames; | 312 var names = field.memberNames; |
313 | 313 |
| 314 _emitOverrideIf(field.overridesGetter, out); |
314 out.println('${fieldTypeString} get ${names.fieldName}' | 315 out.println('${fieldTypeString} get ${names.fieldName}' |
315 ' => \$_get(' | 316 ' => \$_get(' |
316 '${field.index}, ${field.number}, $defaultExpr);'); | 317 '${field.index}, ${field.number}, $defaultExpr);'); |
317 if (!field.isRepeated) { | 318 if (field.isRepeated) { |
| 319 if (field.overridesSetter) { |
| 320 throw 'Field ${field.fqname} cannot override a setter for ' |
| 321 '${names.fieldName} because it is repeated.'; |
| 322 } |
| 323 if (field.overridesHasMethod) { |
| 324 throw 'Field ${field.fqname} cannot override ' |
| 325 '${names.hasMethodName}() because it is repeated.'; |
| 326 } |
| 327 if (field.overridesClearMethod) { |
| 328 throw 'Field ${field.fqname} cannot override ' |
| 329 '${names.clearMethodName}() because it is repeated.'; |
| 330 } |
| 331 } else { |
318 var fastSetter = field.baseType.setter; | 332 var fastSetter = field.baseType.setter; |
| 333 _emitOverrideIf(field.overridesSetter, out); |
319 if (fastSetter != null) { | 334 if (fastSetter != null) { |
320 out.println('void set ${names.fieldName}' | 335 out.println('void set ${names.fieldName}' |
321 '($fieldTypeString v) { ' | 336 '($fieldTypeString v) { ' |
322 '$fastSetter(${field.index}, ${field.number}, v);' | 337 '$fastSetter(${field.index}, ${field.number}, v);' |
323 ' }'); | 338 ' }'); |
324 } else { | 339 } else { |
325 out.println('void set ${names.fieldName}' | 340 out.println('void set ${names.fieldName}' |
326 '($fieldTypeString v) { ' | 341 '($fieldTypeString v) { ' |
327 'setField(${field.number}, v);' | 342 'setField(${field.number}, v);' |
328 ' }'); | 343 ' }'); |
329 } | 344 } |
| 345 _emitOverrideIf(field.overridesHasMethod, out); |
330 out.println('bool ${names.hasMethodName}() =>' | 346 out.println('bool ${names.hasMethodName}() =>' |
331 ' \$_has(${field.index}, ${field.number});'); | 347 ' \$_has(${field.index}, ${field.number});'); |
| 348 _emitOverrideIf(field.overridesClearMethod, out); |
332 out.println('void ${names.clearMethodName}() =>' | 349 out.println('void ${names.clearMethodName}() =>' |
333 ' clearField(${field.number});'); | 350 ' clearField(${field.number});'); |
334 } | 351 } |
335 } | 352 } |
336 } | 353 } |
337 | 354 |
| 355 void _emitOverrideIf(bool condition, IndentingWriter out) { |
| 356 if (condition) { |
| 357 out.println('@override'); |
| 358 } |
| 359 } |
| 360 |
338 void generateEnums(IndentingWriter out) { | 361 void generateEnums(IndentingWriter out) { |
339 for (EnumGenerator e in _enumGenerators) { | 362 for (EnumGenerator e in _enumGenerators) { |
340 e.generate(out); | 363 e.generate(out); |
341 } | 364 } |
342 | 365 |
343 for (MessageGenerator m in _messageGenerators) { | 366 for (MessageGenerator m in _messageGenerators) { |
344 m.generateEnums(out); | 367 m.generateEnums(out); |
345 } | 368 } |
346 } | 369 } |
347 | 370 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 | 404 |
382 for (var m in _messageGenerators) { | 405 for (var m in _messageGenerators) { |
383 m.generateConstants(out); | 406 m.generateConstants(out); |
384 } | 407 } |
385 | 408 |
386 for (var e in _enumGenerators) { | 409 for (var e in _enumGenerators) { |
387 e.generateConstants(out); | 410 e.generateConstants(out); |
388 } | 411 } |
389 } | 412 } |
390 } | 413 } |
OLD | NEW |