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

Unified Diff: lib/message_generator.dart

Issue 93743006: Use package names as import prefixes when generating code (Closed) Base URL: https://github.com/dart-lang/dart-protoc-plugin.git@master
Patch Set: Addressed review commetns Created 6 years, 12 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/file_generator.dart ('k') | lib/protobuf_field.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/message_generator.dart
diff --git a/lib/message_generator.dart b/lib/message_generator.dart
index 72aced89bba86cf523e2fcb9fd848937c6247454..fce3a39cc2aa937ec7a517efd3f65541576be9a8 100644
--- a/lib/message_generator.dart
+++ b/lib/message_generator.dart
@@ -23,6 +23,7 @@ class MessageGenerator implements ProtobufContainer {
final String classname;
final String fqname;
+ final ProtobufContainer _parent;
final GenerationContext _context;
final DescriptorProto _descriptor;
final List<EnumGenerator> _enumGenerators = <EnumGenerator>[];
@@ -31,10 +32,11 @@ class MessageGenerator implements ProtobufContainer {
final List<ExtensionGenerator> _extensionGenerators = <ExtensionGenerator>[];
final Set<String> _methodNames = new Set<String>();
- MessageGenerator(DescriptorProto descriptor, ProtobufContainer parent,
- this._context)
+ MessageGenerator(
+ DescriptorProto descriptor, ProtobufContainer parent, this._context)
: _descriptor = descriptor,
- classname = (parent == null || parent.classname == '') ?
+ _parent = parent,
+ classname = (parent.classname == '') ?
descriptor.name : '${parent.classname}_${descriptor.name}',
fqname = (parent == null || parent.fqname == null) ? descriptor.name :
(parent.fqname == '.' ?
@@ -54,6 +56,8 @@ class MessageGenerator implements ProtobufContainer {
}
}
+ String get package => _parent.package;
+
void initializeFields() {
_fieldList.clear();
for (FieldDescriptorProto field in _descriptor.field) {
@@ -84,24 +88,25 @@ class MessageGenerator implements ProtobufContainer {
';', () {
for (ProtobufField field in _fieldList) {
String type = field.shortTypeName;
+ String fieldType = field.baseTypeForPackage(package);
String makeDefault = null;
if (field.hasInitialization) {
- makeDefault = '${field.initialization}';
+ makeDefault = field.initializationForPackage(package);
}
String subBuilder = null;
if (field.message || field.group) {
- subBuilder = '()${SP}=>${SP}new ${field.baseType}()';
+ subBuilder = '()${SP}=>${SP}new ${fieldType}()';
}
String valueOf = null;
if (field.enm) {
- valueOf = '(var v)${SP}=>${SP}${field.baseType}.valueOf(v)';
+ valueOf = '(var v)${SP}=>${SP}${fieldType}.valueOf(v)';
}
if ('PM' == type) {
// Repeated message: default is an empty list
out.println('..m(${field.number},${SP}'
'\'${field.externalFieldName}\',${SP}$subBuilder,'
- '${SP}()${SP}=>${SP}new PbList<${field.baseType}>())');
+ '${SP}()${SP}=>${SP}new PbList<${fieldType}>())');
} 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.
@@ -227,11 +232,12 @@ class MessageGenerator implements ProtobufContainer {
}
_methodNames.add(identifier);
}
- out.println('${field.typeString} get ${identifier}'
+ var fieldTypeString = field.typeStringForPackage(package);
+ out.println('${fieldTypeString} get ${identifier}'
'${SP}=>${SP}getField(${field.number});');
if (field.single) {
out.println('void set ${identifier}'
- '(${field.typeString} v)${SP}'
+ '(${fieldTypeString} v)${SP}'
'{${SP}setField(${field.number},${SP}v);${SP}}');
out.println('bool $hasIdentifier()${SP}=>'
'${SP}hasField(${field.number});');
« no previous file with comments | « lib/file_generator.dart ('k') | lib/protobuf_field.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698