OLD | NEW |
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.mirror_loader; | 4 library initialize.mirror_loader; |
5 | 5 |
6 import 'dart:collection' show Queue; | 6 import 'dart:collection' show Queue; |
7 import 'dart:mirrors'; | 7 import 'dart:mirrors'; |
8 import 'package:path/path.dart' as path; | 8 import 'package:path/path.dart' as path; |
9 import 'package:initialize/initialize.dart'; | 9 import 'package:initialize/initialize.dart'; |
10 | 10 |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 } | 119 } |
120 } | 120 } |
121 } | 121 } |
122 | 122 |
123 return queue; | 123 return queue; |
124 } | 124 } |
125 | 125 |
126 Iterable<DeclarationMirror> _sortedDeclarationsWithMetadata( | 126 Iterable<DeclarationMirror> _sortedDeclarationsWithMetadata( |
127 LibraryMirror lib) { | 127 LibraryMirror lib) { |
128 return new List() | 128 return new List() |
129 ..addAll(_sortDeclarations( | 129 ..addAll(_sortDeclarations(lib, lib.declarations.values |
130 lib, lib.declarations.values.where( | 130 .where((d) => d is MethodMirror && d.metadata.isNotEmpty))) |
131 (d) => d is MethodMirror && d.metadata.isNotEmpty))) | 131 ..addAll(_sortDeclarations(lib, lib.declarations.values |
132 ..addAll(_sortDeclarations( | 132 .where((d) => d is ClassMirror && d.metadata.isNotEmpty))); |
133 lib, lib.declarations.values.where( | |
134 (d) => d is ClassMirror && d.metadata.isNotEmpty))); | |
135 } | 133 } |
136 | 134 |
137 List<DeclarationMirror> _sortDeclarations( | 135 List<DeclarationMirror> _sortDeclarations( |
138 LibraryMirror sourceLib, Iterable<DeclarationMirror> declarations) { | 136 LibraryMirror sourceLib, Iterable<DeclarationMirror> declarations) { |
139 var declarationList = declarations.toList(); | 137 var declarationList = declarations.toList(); |
140 declarationList.sort((DeclarationMirror a, DeclarationMirror b) { | 138 declarationList.sort((DeclarationMirror a, DeclarationMirror b) { |
141 // If in the same file, compare by line. | 139 // If in the same file, compare by line. |
142 var aSourceUri = a.location.sourceUri; | 140 var aSourceUri = a.location.sourceUri; |
143 var bSourceUri = b.location.sourceUri; | 141 var bSourceUri = b.location.sourceUri; |
144 if (aSourceUri == bSourceUri) { | 142 if (aSourceUri == bSourceUri) { |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 return true; | 239 return true; |
242 } | 240 } |
243 } | 241 } |
244 | 242 |
245 final _TOP_LEVEL_FUNCTIONS_ONLY = new UnsupportedError( | 243 final _TOP_LEVEL_FUNCTIONS_ONLY = new UnsupportedError( |
246 'Only top level methods are supported for initializers'); | 244 'Only top level methods are supported for initializers'); |
247 | 245 |
248 final _UNSUPPORTED_DECLARATION = new UnsupportedError( | 246 final _UNSUPPORTED_DECLARATION = new UnsupportedError( |
249 'Initializers are only supported on libraries, classes, and top level ' | 247 'Initializers are only supported on libraries, classes, and top level ' |
250 'methods'); | 248 'methods'); |
OLD | NEW |