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

Side by Side Diff: lib/transformer.dart

Issue 1006513003: make sure we follow the whole super chain (Closed) Base URL: git@github.com:dart-lang/static-init.git@master
Patch Set: format Created 5 years, 9 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 | « lib/src/mirror_loader.dart ('k') | 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 library initialize.transformer; 4 library initialize.transformer;
5 5
6 import 'dart:async'; 6 import 'dart:async';
7 import 'dart:collection' show Queue; 7 import 'dart:collection' show Queue;
8 import 'package:analyzer/src/generated/ast.dart'; 8 import 'package:analyzer/src/generated/ast.dart';
9 import 'package:analyzer/src/generated/element.dart'; 9 import 'package:analyzer/src/generated/element.dart';
10 import 'package:barback/barback.dart'; 10 import 'package:barback/barback.dart';
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 if (seen.contains(library)) continue; 208 if (seen.contains(library)) continue;
209 _readLibraries(library, seen); 209 _readLibraries(library, seen);
210 } 210 }
211 211
212 // Read annotations in this order: library, top level methods, classes. 212 // Read annotations in this order: library, top level methods, classes.
213 _readAnnotations(library); 213 _readAnnotations(library);
214 for (var method in _topLevelMethodsOfLibrary(library, seen)) { 214 for (var method in _topLevelMethodsOfLibrary(library, seen)) {
215 _readAnnotations(method); 215 _readAnnotations(method);
216 } 216 }
217 for (var clazz in _classesOfLibrary(library, seen)) { 217 for (var clazz in _classesOfLibrary(library, seen)) {
218 var superClass = clazz.supertype; 218 readSuperClassAnnotations(InterfaceType superClass) {
219 while (superClass != null) { 219 if (superClass == null) return;
220 readSuperClassAnnotations(superClass.superclass);
220 if (_readAnnotations(superClass.element) && 221 if (_readAnnotations(superClass.element) &&
221 superClass.element.library != clazz.library) { 222 superClass.element.library != clazz.library) {
222 _logger.warning( 223 _logger.warning(
223 'We have detected a cycle in your import graph when running ' 224 'We have detected a cycle in your import graph when running '
224 'initializers on ${clazz.name}. This means the super class ' 225 'initializers on ${clazz.name}. This means the super class '
225 '${superClass.name} has a dependency on this library ' 226 '${superClass.name} has a dependency on this library '
226 '(possibly transitive).'); 227 '(possibly transitive).');
227 } 228 }
228 superClass = superClass.superclass;
229 } 229 }
230 readSuperClassAnnotations(clazz.supertype);
230 _readAnnotations(clazz); 231 _readAnnotations(clazz);
231 } 232 }
232 } 233 }
233 234
234 bool _readAnnotations(Element element) { 235 bool _readAnnotations(Element element) {
235 var found = false; 236 var found = false;
236 if (element.metadata.isEmpty) return found; 237 if (element.metadata.isEmpty) return found;
237 238
238 var metaNodes; 239 var metaNodes;
239 var node = element.node; 240 var node = element.node;
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 error = false; 455 error = false;
455 } else { 456 } else {
456 error = true; 457 error = true;
457 } 458 }
458 if (error) { 459 if (error) {
459 print('Bad value for "$field" in the initialize transformer. ' 460 print('Bad value for "$field" in the initialize transformer. '
460 'Expected either one String or a list of Strings.'); 461 'Expected either one String or a list of Strings.');
461 } 462 }
462 return files; 463 return files;
463 } 464 }
OLDNEW
« no previous file with comments | « lib/src/mirror_loader.dart ('k') | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698