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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart

Issue 13797002: Change MirrorSystem.libraries to Map<Uri, String> (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 7 years, 8 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
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 library mirrors_dart2js; 5 library mirrors_dart2js;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection' show LinkedHashMap; 8 import 'dart:collection' show LinkedHashMap;
9 import 'dart:io' show Path; 9 import 'dart:io' show Path;
10 import 'dart:uri'; 10 import 'dart:uri';
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 * has been successfully compiled. 202 * has been successfully compiled.
203 * 203 *
204 * TODO(johnniwinther): The method is deprecated but here to support [Path] 204 * TODO(johnniwinther): The method is deprecated but here to support [Path]
205 * which is used through dartdoc. 205 * which is used through dartdoc.
206 */ 206 */
207 Future<String> compile(Path script, 207 Future<String> compile(Path script,
208 Path libraryRoot, 208 Path libraryRoot,
209 {Path packageRoot, 209 {Path packageRoot,
210 List<String> options: const <String>[], 210 List<String> options: const <String>[],
211 api.DiagnosticHandler diagnosticHandler}) { 211 api.DiagnosticHandler diagnosticHandler}) {
212 Uri cwd = getCurrentDirectory();
213 SourceFileProvider provider = new SourceFileProvider(); 212 SourceFileProvider provider = new SourceFileProvider();
214 if (diagnosticHandler == null) { 213 if (diagnosticHandler == null) {
215 diagnosticHandler = 214 diagnosticHandler =
216 new FormattingDiagnosticHandler(provider).diagnosticHandler; 215 new FormattingDiagnosticHandler(provider).diagnosticHandler;
217 } 216 }
218 Uri scriptUri = cwd.resolve(script.toString()); 217 Uri scriptUri = currentDirectory.resolve(script.toString());
219 Uri libraryUri = cwd.resolve(appendSlash('$libraryRoot')); 218 Uri libraryUri = currentDirectory.resolve(appendSlash('$libraryRoot'));
220 Uri packageUri = null; 219 Uri packageUri = null;
221 if (packageRoot != null) { 220 if (packageRoot != null) {
222 packageUri = cwd.resolve(appendSlash('$packageRoot')); 221 packageUri = currentDirectory.resolve(appendSlash('$packageRoot'));
223 } 222 }
224 return api.compile(scriptUri, libraryUri, packageUri, 223 return api.compile(scriptUri, libraryUri, packageUri,
225 provider.readStringFromUri, diagnosticHandler, options); 224 provider.readStringFromUri, diagnosticHandler, options);
226 } 225 }
227 226
228 /** 227 /**
229 * Analyzes set of libraries and provides a mirror system which can be used for 228 * Analyzes set of libraries and provides a mirror system which can be used for
230 * static inspection of the source code. 229 * static inspection of the source code.
231 */ 230 */
232 // TODO(johnniwinther): Move this to [compiler/compiler.dart] and rename to 231 // TODO(johnniwinther): Move this to [compiler/compiler.dart] and rename to
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 * Analyzes set of libraries and provides a mirror system which can be used for 274 * Analyzes set of libraries and provides a mirror system which can be used for
276 * static inspection of the source code. 275 * static inspection of the source code.
277 */ 276 */
278 // TODO(johnniwinther): Move dart:io dependent parts outside 277 // TODO(johnniwinther): Move dart:io dependent parts outside
279 // dart2js_mirror.dart. 278 // dart2js_mirror.dart.
280 Future<MirrorSystem> analyze(List<Path> libraries, 279 Future<MirrorSystem> analyze(List<Path> libraries,
281 Path libraryRoot, 280 Path libraryRoot,
282 {Path packageRoot, 281 {Path packageRoot,
283 List<String> options: const <String>[], 282 List<String> options: const <String>[],
284 api.DiagnosticHandler diagnosticHandler}) { 283 api.DiagnosticHandler diagnosticHandler}) {
285 Uri cwd = getCurrentDirectory();
286 SourceFileProvider provider = new SourceFileProvider(); 284 SourceFileProvider provider = new SourceFileProvider();
287 if (diagnosticHandler == null) { 285 if (diagnosticHandler == null) {
288 diagnosticHandler = 286 diagnosticHandler =
289 new FormattingDiagnosticHandler(provider).diagnosticHandler; 287 new FormattingDiagnosticHandler(provider).diagnosticHandler;
290 } 288 }
291 Uri libraryUri = cwd.resolve(appendSlash('$libraryRoot')); 289 Uri libraryUri = currentDirectory.resolve(appendSlash('$libraryRoot'));
292 Uri packageUri = null; 290 Uri packageUri = null;
293 if (packageRoot != null) { 291 if (packageRoot != null) {
294 packageUri = cwd.resolve(appendSlash('$packageRoot')); 292 packageUri = currentDirectory.resolve(appendSlash('$packageRoot'));
295 } 293 }
296 List<Uri> librariesUri = <Uri>[]; 294 List<Uri> librariesUri = <Uri>[];
297 for (Path library in libraries) { 295 for (Path library in libraries) {
298 librariesUri.add(cwd.resolve(library.toString())); 296 librariesUri.add(currentDirectory.resolve(library.toString()));
299 } 297 }
300 return analyzeUri(librariesUri, libraryUri, packageUri, 298 return analyzeUri(librariesUri, libraryUri, packageUri,
301 provider.readStringFromUri, diagnosticHandler, options); 299 provider.readStringFromUri, diagnosticHandler, options);
302 } 300 }
303 301
304 //------------------------------------------------------------------------------ 302 //------------------------------------------------------------------------------
305 // Dart2Js specific extensions of mirror interfaces 303 // Dart2Js specific extensions of mirror interfaces
306 //------------------------------------------------------------------------------ 304 //------------------------------------------------------------------------------
307 305
308 abstract class Dart2JsMirror implements Mirror { 306 abstract class Dart2JsMirror implements Mirror {
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 456
459 bool get isStatic => false; 457 bool get isStatic => false;
460 458
461 bool get isParameter => false; 459 bool get isParameter => false;
462 } 460 }
463 461
464 //------------------------------------------------------------------------------ 462 //------------------------------------------------------------------------------
465 // Mirror system implementation. 463 // Mirror system implementation.
466 //------------------------------------------------------------------------------ 464 //------------------------------------------------------------------------------
467 465
468 class Dart2JsMirrorSystem implements MirrorSystem { 466 class Dart2JsMirrorSystem extends MirrorSystem {
469 final Compiler compiler; 467 final Compiler compiler;
470 Map<String, Dart2JsLibraryMirror> _libraries; 468 Map<Uri, Dart2JsLibraryMirror> _libraries;
471 Map<LibraryElement, Dart2JsLibraryMirror> _libraryMap; 469 Map<LibraryElement, Dart2JsLibraryMirror> _libraryMap;
472 470
473 Dart2JsMirrorSystem(this.compiler) 471 Dart2JsMirrorSystem(this.compiler)
474 : _libraryMap = new Map<LibraryElement, Dart2JsLibraryMirror>(); 472 : _libraryMap = new Map<LibraryElement, Dart2JsLibraryMirror>();
475 473
476 void _ensureLibraries() { 474 void _ensureLibraries() {
477 if (_libraries == null) { 475 if (_libraries == null) {
478 _libraries = <String, Dart2JsLibraryMirror>{}; 476 _libraries = new Map<Uri, Dart2JsLibraryMirror>();
479 compiler.libraries.forEach((_, LibraryElement v) { 477 compiler.libraries.forEach((_, LibraryElement v) {
480 var mirror = new Dart2JsLibraryMirror(mirrors, v); 478 var mirror = new Dart2JsLibraryMirror(mirrors, v);
481 _libraries[mirror.simpleName] = mirror; 479 _libraries[mirror.uri] = mirror;
482 _libraryMap[v] = mirror; 480 _libraryMap[v] = mirror;
483 }); 481 });
484 } 482 }
485 } 483 }
486 484
487 Map<String, LibraryMirror> get libraries { 485 Map<Uri, LibraryMirror> get libraries {
488 _ensureLibraries(); 486 _ensureLibraries();
489 return new ImmutableMapWrapper<String, LibraryMirror>(_libraries); 487 return new ImmutableMapWrapper<Uri, LibraryMirror>(_libraries);
490 } 488 }
491 489
492 Dart2JsLibraryMirror _getLibrary(LibraryElement element) => 490 Dart2JsLibraryMirror _getLibrary(LibraryElement element) =>
493 _libraryMap[element]; 491 _libraryMap[element];
494 492
495 Dart2JsMirrorSystem get mirrors => this; 493 Dart2JsMirrorSystem get mirrors => this;
496 494
497 TypeMirror get dynamicType => 495 TypeMirror get dynamicType =>
498 _convertTypeToTypeMirror(this, compiler.types.dynamicType, null); 496 _convertTypeToTypeMirror(this, compiler.types.dynamicType, null);
499 497
(...skipping 1249 matching lines...) Expand 10 before | Expand all | Expand 10 after
1749 return new Future.value( 1747 return new Future.value(
1750 new Dart2JsStringConstantMirror.fromString(mirrors, text)); 1748 new Dart2JsStringConstantMirror.fromString(mirrors, text));
1751 } else if (fieldName == 'trimmedText') { 1749 } else if (fieldName == 'trimmedText') {
1752 return new Future.value( 1750 return new Future.value(
1753 new Dart2JsStringConstantMirror.fromString(mirrors, trimmedText)); 1751 new Dart2JsStringConstantMirror.fromString(mirrors, trimmedText));
1754 } 1752 }
1755 // TODO(johnniwinther): Which exception/error should be thrown here? 1753 // TODO(johnniwinther): Which exception/error should be thrown here?
1756 throw new UnsupportedError('InstanceMirror does not have a reflectee'); 1754 throw new UnsupportedError('InstanceMirror does not have a reflectee');
1757 } 1755 }
1758 } 1756 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698