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

Side by Side Diff: lib/extension_generator.dart

Issue 2043913005: Change how to set the Dart name of a field (Closed) Base URL: git@github.com:dart-lang/dart-protoc-plugin.git@master
Patch Set: better error checking, clean up pubspec Created 4 years, 6 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
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 ExtensionGenerator { 7 class ExtensionGenerator {
8 final FieldDescriptorProto _descriptor; 8 final FieldDescriptorProto _descriptor;
9 final ProtobufContainer _parent; 9 final ProtobufContainer _parent;
10 10
11 // populated by resolve() 11 // populated by resolve()
12 ProtobufField _field; 12 ProtobufField _field;
13 String _extensionName;
13 String _extendedClassName = ""; 14 String _extendedClassName = "";
14 15
15 ExtensionGenerator(this._descriptor, this._parent); 16 ExtensionGenerator(this._descriptor, this._parent);
16 17
17 void resolve(GenerationContext ctx) { 18 void resolve(GenerationContext ctx) {
18 _field = new ProtobufField(_descriptor, null, _parent, ctx); 19 _extensionName = extensionName(_descriptor);
20 _field = new ProtobufField.extension(_descriptor, _parent, ctx);
19 21
20 ProtobufContainer extendedType = ctx.getFieldType(_descriptor.extendee); 22 ProtobufContainer extendedType = ctx.getFieldType(_descriptor.extendee);
21 // TODO(skybrian) When would this be null? 23 // TODO(skybrian) When would this be null?
22 if (extendedType != null) { 24 if (extendedType != null) {
23 _extendedClassName = extendedType.classname; 25 _extendedClassName = extendedType.classname;
24 } 26 }
25 } 27 }
26 28
27 String get package => _parent.package; 29 String get package => _parent.package;
28 30
29 /// The generator of the .pb.dart file where this extension will be defined. 31 /// The generator of the .pb.dart file where this extension will be defined.
30 FileGenerator get fileGen => _parent.fileGen; 32 FileGenerator get fileGen => _parent.fileGen;
31 33
32 String get name { 34 String get name {
33 if (_field == null) throw new StateError("resolve not called"); 35 if (_field == null) throw new StateError("resolve not called");
34 String name = _field.dartFieldName; 36 String name = _extensionName;
35 return _parent is MessageGenerator ? '${_parent.classname}.$name' : name; 37 return _parent is MessageGenerator ? '${_parent.classname}.$name' : name;
36 } 38 }
37 39
38 bool get needsFixnumImport { 40 bool get needsFixnumImport {
39 if (_field == null) throw new StateError("resolve not called"); 41 if (_field == null) throw new StateError("resolve not called");
40 return _field.needsFixnumImport; 42 return _field.needsFixnumImport;
41 } 43 }
42 44
43 /// Adds dependencies of [generate] to [imports]. 45 /// Adds dependencies of [generate] to [imports].
44 /// 46 ///
(...skipping 20 matching lines...) Expand all
65 /// For each .pb.dart file that the generated code needs to import, 67 /// For each .pb.dart file that the generated code needs to import,
66 /// add its generator. 68 /// add its generator.
67 void addConstantImportsTo(Set<FileGenerator> imports) { 69 void addConstantImportsTo(Set<FileGenerator> imports) {
68 if (_field == null) throw new StateError("resolve not called"); 70 if (_field == null) throw new StateError("resolve not called");
69 // No dependencies - nothing to do. 71 // No dependencies - nothing to do.
70 } 72 }
71 73
72 void generate(IndentingWriter out) { 74 void generate(IndentingWriter out) {
73 if (_field == null) throw new StateError("resolve not called"); 75 if (_field == null) throw new StateError("resolve not called");
74 76
75 String name = _field.dartFieldName; 77 String name = _extensionName;
76 var type = _field.baseType; 78 var type = _field.baseType;
77 var dartType = type.getDartType(package); 79 var dartType = type.getDartType(package);
78 80
79 if (_field.isRepeated) { 81 if (_field.isRepeated) {
80 out.print('static final Extension $name = ' 82 out.print('static final Extension $name = '
81 'new Extension<$dartType>.repeated(\'$_extendedClassName\',' 83 'new Extension<$dartType>.repeated(\'$_extendedClassName\','
82 ' \'$name\', ${_field.number}, ${_field.typeConstant}'); 84 ' \'$name\', ${_field.number}, ${_field.typeConstant}');
83 if (type.isMessage || type.isGroup) { 85 if (type.isMessage || type.isGroup) {
84 out.println(', $dartType.$checkItem, $dartType.create);'); 86 out.println(', $dartType.$checkItem, $dartType.create);');
85 } else if (type.isEnum) { 87 } else if (type.isEnum) {
(...skipping 16 matching lines...) Expand all
102 var dartEnum = type.getDartType(package); 104 var dartEnum = type.getDartType(package);
103 String valueOf = '(var v) => $dartEnum.valueOf(v)'; 105 String valueOf = '(var v) => $dartEnum.valueOf(v)';
104 out.println(", $initializer, null, $valueOf);"); 106 out.println(", $initializer, null, $valueOf);");
105 } else if (initializer != null) { 107 } else if (initializer != null) {
106 out.println(", $initializer);"); 108 out.println(", $initializer);");
107 } else { 109 } else {
108 out.println(");"); 110 out.println(");");
109 } 111 }
110 } 112 }
111 } 113 }
OLDNEW
« no previous file with comments | « README.md ('k') | lib/message_generator.dart » ('j') | lib/names.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698