Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: lib/message_generator.dart

Issue 2086253002: Allow application of external mixins to generated dart protos. (Closed) Base URL: https://github.com/dart-lang/dart-protoc-plugin.git@master
Patch Set: Add dart options for override annotations. These make it possible to annotate generated getters, se… Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | lib/protobuf_field.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « no previous file | lib/protobuf_field.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698