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

Side by Side Diff: pkg/observe/lib/transform.dart

Issue 27618002: package:observe fix various api issues (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « pkg/observe/lib/src/path_observer.dart ('k') | pkg/observe/pubspec.yaml » ('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 /** 5 /**
6 * Code transform for @observable. The core transformation is relatively 6 * Code transform for @observable. The core transformation is relatively
7 * straightforward, and essentially like an editor refactoring. 7 * straightforward, and essentially like an editor refactoring.
8 */ 8 */
9 library observe.transform; 9 library observe.transform;
10 10
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 span: _getSpan(file, cls)); 131 span: _getSpan(file, cls));
132 } 132 }
133 133
134 // We'd like to track whether observable was declared explicitly, otherwise 134 // We'd like to track whether observable was declared explicitly, otherwise
135 // report a warning later below. Because we don't have type analysis (only 135 // report a warning later below. Because we don't have type analysis (only
136 // syntactic understanding of the code), we only report warnings that are 136 // syntactic understanding of the code), we only report warnings that are
137 // known to be true. 137 // known to be true.
138 var declaresObservable = false; 138 var declaresObservable = false;
139 if (cls.extendsClause != null) { 139 if (cls.extendsClause != null) {
140 var id = _getSimpleIdentifier(cls.extendsClause.superclass.name); 140 var id = _getSimpleIdentifier(cls.extendsClause.superclass.name);
141 if (id.name == 'ObservableBase') { 141 if (id.name == 'Observable') {
142 code.edit(id.offset, id.end, 'ChangeNotifierBase'); 142 code.edit(id.offset, id.end, 'ChangeNotifier');
143 declaresObservable = true; 143 declaresObservable = true;
144 } else if (id.name == 'ChangeNotifierBase') { 144 } else if (id.name == 'ChangeNotifier') {
145 declaresObservable = true; 145 declaresObservable = true;
146 } else if (id.name != 'HtmlElement' && id.name != 'CustomElement' 146 } else if (id.name != 'HtmlElement' && id.name != 'CustomElement'
147 && id.name != 'Object') { 147 && id.name != 'Object') {
148 // TODO(sigmund): this is conservative, consider using type-resolution to 148 // TODO(sigmund): this is conservative, consider using type-resolution to
149 // improve this check. 149 // improve this check.
150 declaresObservable = true; 150 declaresObservable = true;
151 } 151 }
152 } 152 }
153 153
154 if (cls.withClause != null) { 154 if (cls.withClause != null) {
155 for (var type in cls.withClause.mixinTypes) { 155 for (var type in cls.withClause.mixinTypes) {
156 var id = _getSimpleIdentifier(type.name); 156 var id = _getSimpleIdentifier(type.name);
157 if (id.name == 'ObservableMixin') { 157 if (id.name == 'Observable') {
158 code.edit(id.offset, id.end, 'ChangeNotifierMixin'); 158 code.edit(id.offset, id.end, 'ChangeNotifier');
159 declaresObservable = true; 159 declaresObservable = true;
160 break; 160 break;
161 } else if (id.name == 'ChangeNotifierMixin') { 161 } else if (id.name == 'ChangeNotifier') {
162 declaresObservable = true; 162 declaresObservable = true;
163 break; 163 break;
164 } else { 164 } else {
165 // TODO(sigmund): this is conservative, consider using type-resolution 165 // TODO(sigmund): this is conservative, consider using type-resolution
166 // to improve this check. 166 // to improve this check.
167 declaresObservable = true; 167 declaresObservable = true;
168 } 168 }
169 } 169 }
170 } 170 }
171 171
(...skipping 15 matching lines...) Expand all
187 logger.warning('Static fields can no longer be observable. ' 187 logger.warning('Static fields can no longer be observable. '
188 'Observable fields should be put in an observable objects.', 188 'Observable fields should be put in an observable objects.',
189 span: _getSpan(file, member)); 189 span: _getSpan(file, member));
190 } 190 }
191 continue; 191 continue;
192 } 192 }
193 if (_hasObservable(member)) { 193 if (_hasObservable(member)) {
194 if (!declaresObservable) { 194 if (!declaresObservable) {
195 logger.warning('Observable fields should be put in an observable ' 195 logger.warning('Observable fields should be put in an observable '
196 'objects. Please declare that this class extends from ' 196 'objects. Please declare that this class extends from '
197 'ObservableBase, includes ObservableMixin, or implements ' 197 'Observable, includes Observable, or implements '
198 'Observable.', 198 'Observable.',
199 span: _getSpan(file, member)); 199 span: _getSpan(file, member));
200 } 200 }
201 _transformFields(file, member, code, logger); 201 _transformFields(file, member, code, logger);
202 202
203 var names = member.fields.variables.map((v) => v.name.name); 203 var names = member.fields.variables.map((v) => v.name.name);
204 204
205 getters.addAll(names); 205 getters.addAll(names);
206 if (!_isReadOnly(member.fields)) { 206 if (!_isReadOnly(member.fields)) {
207 setters.addAll(names); 207 setters.addAll(names);
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 382
383 Token _findFieldSeperator(Token token) { 383 Token _findFieldSeperator(Token token) {
384 while (token != null) { 384 while (token != null) {
385 if (token.type == TokenType.COMMA || token.type == TokenType.SEMICOLON) { 385 if (token.type == TokenType.COMMA || token.type == TokenType.SEMICOLON) {
386 break; 386 break;
387 } 387 }
388 token = token.next; 388 token = token.next;
389 } 389 }
390 return token; 390 return token;
391 } 391 }
OLDNEW
« no previous file with comments | « pkg/observe/lib/src/path_observer.dart ('k') | pkg/observe/pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698