Index: lib/message_generator.dart |
diff --git a/lib/message_generator.dart b/lib/message_generator.dart |
index f6cff19ce426d6332839c61b6652150cf8f18311..014c37e1ff5121dadd3a6856fb3d0d9f60051e7b 100644 |
--- a/lib/message_generator.dart |
+++ b/lib/message_generator.dart |
@@ -105,8 +105,13 @@ class MessageGenerator extends ProtobufContainer { |
makeDefault = field.initializationForPackage(package); |
} |
String subBuilder = null; |
- if (field.message || field.group) { |
+ String subBuilderRepeated = null; |
+ if (field.message) { |
+ subBuilder = '${fieldType}.create'; |
+ subBuilderRepeated = '${fieldType}.createRepeated'; |
+ } else if (field.group) { |
Siggi Cherem (dart-lang)
2014/12/19 21:53:14
after chatting about it - seems we can do the same
sra1
2014/12/19 23:11:02
Done.
|
subBuilder = '()${SP}=>${SP}new ${fieldType}()'; |
+ subBuilderRepeated = '()${SP}=>${SP}new PbList<${fieldType}>()'; |
Siggi Cherem (dart-lang)
2014/12/19 21:53:14
not for this CL, but I'll ask since I'm thinking a
Søren Gjesse
2015/01/05 16:00:07
I don't see any reason for using ${SP} when genera
|
} |
String valueOf = null; |
if (field.enm) { |
@@ -116,7 +121,7 @@ class MessageGenerator extends ProtobufContainer { |
// Repeated message: default is an empty list |
out.println('..m(${field.number},${SP}' |
'\'${field.externalFieldName}\',${SP}$subBuilder,' |
- '${SP}()${SP}=>${SP}new PbList<${fieldType}>())'); |
+ '${SP}$subBuilderRepeated)'); |
} else if (type[0] == 'P' && type != 'PG' && type != 'PE') { |
// Repeated, not a message or enum: default is an empty list, |
// subBuilder is null, valueOf is null. |
@@ -172,6 +177,12 @@ class MessageGenerator extends ProtobufContainer { |
out.println('BuilderInfo get info_${SP}=>${SP}_i;'); |
+ // Factory functions which can be used as default value closures. |
+ out.println('static ${classname}${SP}create()${SP}=>' |
+ '${SP}new ${classname}();'); |
+ out.println('static PbList<${classname}>${SP}createRepeated()${SP}=>' |
+ '${SP}new PbList<${classname}>();'); |
+ |
generateFieldsAccessorsMutators(out); |
}); |
out.println(); |