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

Side by Side Diff: runtime/lib/mirrors_impl.dart

Issue 11358060: Change NotImplementedException to UnimplementedError. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address review comments. Created 8 years, 1 month 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 | « runtime/lib/function_patch.dart ('k') | runtime/tests/vm/dart/isolate_mirror_remote_test.dart » ('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) 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 // VM-specific implementation of the dart:mirrors library. 5 // VM-specific implementation of the dart:mirrors library.
6 6
7 // These values are allowed to be passed directly over the wire. 7 // These values are allowed to be passed directly over the wire.
8 bool _isSimpleValue(var value) { 8 bool _isSimpleValue(var value) {
9 return (value == null || value is num || value is String || value is bool); 9 return (value == null || value is num || value is String || value is bool);
10 } 10 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 _functionTypes[sigString] = mirror; 88 _functionTypes[sigString] = mirror;
89 } 89 }
90 return mirror; 90 return mirror;
91 } 91 }
92 92
93 String toString() => "MirrorSystem for isolate '${isolate.debugName}'"; 93 String toString() => "MirrorSystem for isolate '${isolate.debugName}'";
94 } 94 }
95 95
96 abstract class _LocalMirrorImpl implements Mirror { 96 abstract class _LocalMirrorImpl implements Mirror {
97 int get hashCode { 97 int get hashCode {
98 throw new NotImplementedException('Mirror.hashCode is not implemented'); 98 throw new UnimplementedError('Mirror.hashCode is not implemented');
99 } 99 }
100 100
101 // Local mirrors always return the same MirrorSystem. This field 101 // Local mirrors always return the same MirrorSystem. This field
102 // is more interesting once we implement remote mirrors. 102 // is more interesting once we implement remote mirrors.
103 MirrorSystem get mirrors => _Mirrors.currentMirrorSystem(); 103 MirrorSystem get mirrors => _Mirrors.currentMirrorSystem();
104 } 104 }
105 105
106 class _LocalIsolateMirrorImpl extends _LocalMirrorImpl 106 class _LocalIsolateMirrorImpl extends _LocalMirrorImpl
107 implements IsolateMirror { 107 implements IsolateMirror {
108 _LocalIsolateMirrorImpl(this.debugName, this._rootLibrary) {} 108 _LocalIsolateMirrorImpl(this.debugName, this._rootLibrary) {}
(...skipping 28 matching lines...) Expand all
137 } 137 }
138 138
139 abstract class _LocalObjectMirrorImpl extends _LocalVMObjectMirrorImpl 139 abstract class _LocalObjectMirrorImpl extends _LocalVMObjectMirrorImpl
140 implements ObjectMirror { 140 implements ObjectMirror {
141 _LocalObjectMirrorImpl(ref) : super(ref) {} 141 _LocalObjectMirrorImpl(ref) : super(ref) {}
142 142
143 Future<InstanceMirror> invoke(String memberName, 143 Future<InstanceMirror> invoke(String memberName,
144 List positionalArguments, 144 List positionalArguments,
145 [Map<String,Dynamic> namedArguments]) { 145 [Map<String,Dynamic> namedArguments]) {
146 if (namedArguments != null) { 146 if (namedArguments != null) {
147 throw new NotImplementedException( 147 throw new UnimplementedError(
148 'named argument support is not implemented'); 148 'named argument support is not implemented');
149 } 149 }
150 // Walk the arguments and make sure they are legal. 150 // Walk the arguments and make sure they are legal.
151 for (int i = 0; i < positionalArguments.length; i++) { 151 for (int i = 0; i < positionalArguments.length; i++) {
152 var arg = positionalArguments[i]; 152 var arg = positionalArguments[i];
153 _validateArgument(i, arg); 153 _validateArgument(i, arg);
154 } 154 }
155 Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); 155 Completer<InstanceMirror> completer = new Completer<InstanceMirror>();
156 try { 156 try {
157 completer.complete( 157 completer.complete(
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 class _LocalClosureMirrorImpl extends _LocalInstanceMirrorImpl 293 class _LocalClosureMirrorImpl extends _LocalInstanceMirrorImpl
294 implements ClosureMirror { 294 implements ClosureMirror {
295 _LocalClosureMirrorImpl(ref, 295 _LocalClosureMirrorImpl(ref,
296 type, 296 type,
297 reflectee, 297 reflectee,
298 this.function) : super(ref, type, reflectee) {} 298 this.function) : super(ref, type, reflectee) {}
299 299
300 final MethodMirror function; 300 final MethodMirror function;
301 301
302 String get source { 302 String get source {
303 throw new NotImplementedException( 303 throw new UnimplementedError(
304 'ClosureMirror.source is not implemented'); 304 'ClosureMirror.source is not implemented');
305 } 305 }
306 306
307 Future<InstanceMirror> apply(List<Object> positionalArguments, 307 Future<InstanceMirror> apply(List<Object> positionalArguments,
308 [Map<String,Object> namedArguments]) { 308 [Map<String,Object> namedArguments]) {
309 if (namedArguments != null) { 309 if (namedArguments != null) {
310 throw new NotImplementedException( 310 throw new UnimplementedError(
311 'named argument support is not implemented'); 311 'named argument support is not implemented');
312 } 312 }
313 // Walk the arguments and make sure they are legal. 313 // Walk the arguments and make sure they are legal.
314 for (int i = 0; i < positionalArguments.length; i++) { 314 for (int i = 0; i < positionalArguments.length; i++) {
315 var arg = positionalArguments[i]; 315 var arg = positionalArguments[i];
316 _LocalObjectMirrorImpl._validateArgument(i, arg); 316 _LocalObjectMirrorImpl._validateArgument(i, arg);
317 } 317 }
318 Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); 318 Completer<InstanceMirror> completer = new Completer<InstanceMirror>();
319 try { 319 try {
320 completer.complete( 320 completer.complete(
321 _apply(this, positionalArguments)); 321 _apply(this, positionalArguments));
322 } catch (exception) { 322 } catch (exception) {
323 completer.completeException(exception); 323 completer.completeException(exception);
324 } 324 }
325 return completer.future; 325 return completer.future;
326 } 326 }
327 327
328 Future<InstanceMirror> findInContext(String name) { 328 Future<InstanceMirror> findInContext(String name) {
329 throw new NotImplementedException( 329 throw new UnimplementedError(
330 'ClosureMirror.findInContext() is not implemented'); 330 'ClosureMirror.findInContext() is not implemented');
331 } 331 }
332 332
333 static _apply(ref, positionalArguments) 333 static _apply(ref, positionalArguments)
334 native 'LocalClosureMirrorImpl_apply'; 334 native 'LocalClosureMirrorImpl_apply';
335 } 335 }
336 336
337 class _LazyTypeMirror { 337 class _LazyTypeMirror {
338 _LazyTypeMirror(this.libraryName, this.typeName) {} 338 _LazyTypeMirror(this.libraryName, this.typeName) {}
339 339
340 TypeMirror resolve(MirrorSystem mirrors) { 340 TypeMirror resolve(MirrorSystem mirrors) {
341 if (libraryName == null) { 341 if (libraryName == null) {
342 // TODO(turnidge): Remove support for 'Dynamic'. 342 // TODO(turnidge): Remove support for 'Dynamic'.
343 if ((typeName == 'dynamic') || (typeName == 'Dynamic')) { 343 if ((typeName == 'dynamic') || (typeName == 'Dynamic')) {
344 return mirrors.dynamicType; 344 return mirrors.dynamicType;
345 } else if (typeName == 'void') { 345 } else if (typeName == 'void') {
346 return mirrors.voidType; 346 return mirrors.voidType;
347 } else { 347 } else {
348 throw new NotImplementedException( 348 throw new UnimplementedError(
349 "Mirror for type '$typeName' is not implemented"); 349 "Mirror for type '$typeName' is not implemented");
350 } 350 }
351 } 351 }
352 var resolved = mirrors.libraries[libraryName].members[typeName]; 352 var resolved = mirrors.libraries[libraryName].members[typeName];
353 if (resolved == null) { 353 if (resolved == null) {
354 throw new NotImplementedException( 354 throw new UnimplementedError(
355 "Mirror for type '$typeName' is not implemented"); 355 "Mirror for type '$typeName' is not implemented");
356 } 356 }
357 return resolved; 357 return resolved;
358 } 358 }
359 359
360 final String libraryName; 360 final String libraryName;
361 final String typeName; 361 final String typeName;
362 } 362 }
363 363
364 class _LocalClassMirrorImpl extends _LocalObjectMirrorImpl 364 class _LocalClassMirrorImpl extends _LocalObjectMirrorImpl
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 _owner = _owner.resolve(mirrors); 396 _owner = _owner.resolve(mirrors);
397 } 397 }
398 return _owner; 398 return _owner;
399 } 399 }
400 400
401 bool get isPrivate => simpleName.startsWith('_'); 401 bool get isPrivate => simpleName.startsWith('_');
402 402
403 final bool isTopLevel = true; 403 final bool isTopLevel = true;
404 404
405 SourceLocation get location { 405 SourceLocation get location {
406 throw new NotImplementedException( 406 throw new UnimplementedError(
407 'ClassMirror.location is not implemented'); 407 'ClassMirror.location is not implemented');
408 } 408 }
409 409
410 final bool isClass; 410 final bool isClass;
411 411
412 var _superclass; 412 var _superclass;
413 ClassMirror get superclass { 413 ClassMirror get superclass {
414 if (_superclass is! Mirror) { 414 if (_superclass is! Mirror) {
415 _superclass = _superclass.resolve(mirrors); 415 _superclass = _superclass.resolve(mirrors);
416 } 416 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 members, 478 members,
479 (key, value) => (value is VariableMirror)); 479 (key, value) => (value is VariableMirror));
480 } 480 }
481 return _variables; 481 return _variables;
482 } 482 }
483 483
484 Map<String, MethodMirror> constructors; 484 Map<String, MethodMirror> constructors;
485 Map<String, TypeVariableMirror> typeVariables; 485 Map<String, TypeVariableMirror> typeVariables;
486 486
487 Map<String, TypeMirror> get typeArguments { 487 Map<String, TypeMirror> get typeArguments {
488 throw new NotImplementedException( 488 throw new UnimplementedError(
489 'ClassMirror.typeArguments is not implemented'); 489 'ClassMirror.typeArguments is not implemented');
490 } 490 }
491 491
492 bool get isOriginalDeclaration { 492 bool get isOriginalDeclaration {
493 throw new NotImplementedException( 493 throw new UnimplementedError(
494 'ClassMirror.isOriginalDeclaration is not implemented'); 494 'ClassMirror.isOriginalDeclaration is not implemented');
495 } 495 }
496 496
497 ClassMirror get genericDeclaration { 497 ClassMirror get genericDeclaration {
498 throw new NotImplementedException( 498 throw new UnimplementedError(
499 'ClassMirror.originalDeclaration is not implemented'); 499 'ClassMirror.originalDeclaration is not implemented');
500 } 500 }
501 501
502 String toString() => "ClassMirror on '$simpleName'"; 502 String toString() => "ClassMirror on '$simpleName'";
503 503
504 Future<InstanceMirror> newInstance(String constructorName, 504 Future<InstanceMirror> newInstance(String constructorName,
505 List positionalArguments, 505 List positionalArguments,
506 [Map<String,Dynamic> namedArguments]) { 506 [Map<String,Dynamic> namedArguments]) {
507 if (namedArguments != null) { 507 if (namedArguments != null) {
508 throw new NotImplementedException( 508 throw new UnimplementedError(
509 'named argument support is not implemented'); 509 'named argument support is not implemented');
510 } 510 }
511 // Walk the arguments and make sure they are legal. 511 // Walk the arguments and make sure they are legal.
512 for (int i = 0; i < positionalArguments.length; i++) { 512 for (int i = 0; i < positionalArguments.length; i++) {
513 var arg = positionalArguments[i]; 513 var arg = positionalArguments[i];
514 _LocalObjectMirrorImpl._validateArgument(i, arg); 514 _LocalObjectMirrorImpl._validateArgument(i, arg);
515 } 515 }
516 Completer<InstanceMirror> completer = new Completer<InstanceMirror>(); 516 Completer<InstanceMirror> completer = new Completer<InstanceMirror>();
517 try { 517 try {
518 completer.complete( 518 completer.complete(
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 _owner = _owner.resolve(mirrors); 603 _owner = _owner.resolve(mirrors);
604 } 604 }
605 return _owner; 605 return _owner;
606 } 606 }
607 607
608 bool get isPrivate => false; 608 bool get isPrivate => false;
609 609
610 final bool isTopLevel = false; 610 final bool isTopLevel = false;
611 611
612 SourceLocation get location { 612 SourceLocation get location {
613 throw new NotImplementedException( 613 throw new UnimplementedError(
614 'TypeVariableMirror.location is not implemented'); 614 'TypeVariableMirror.location is not implemented');
615 } 615 }
616 616
617 var _upperBound; 617 var _upperBound;
618 TypeMirror get upperBound { 618 TypeMirror get upperBound {
619 if (_upperBound is! Mirror) { 619 if (_upperBound is! Mirror) {
620 _upperBound = _upperBound.resolve(mirrors); 620 _upperBound = _upperBound.resolve(mirrors);
621 } 621 }
622 return _upperBound; 622 return _upperBound;
623 } 623 }
(...skipping 23 matching lines...) Expand all
647 _owner = _owner.resolve(mirrors); 647 _owner = _owner.resolve(mirrors);
648 } 648 }
649 return _owner; 649 return _owner;
650 } 650 }
651 651
652 bool get isPrivate => false; 652 bool get isPrivate => false;
653 653
654 final bool isTopLevel = true; 654 final bool isTopLevel = true;
655 655
656 SourceLocation get location { 656 SourceLocation get location {
657 throw new NotImplementedException( 657 throw new UnimplementedError(
658 'TypedefMirror.location is not implemented'); 658 'TypedefMirror.location is not implemented');
659 } 659 }
660 660
661 var _referent; 661 var _referent;
662 TypeMirror get referent { 662 TypeMirror get referent {
663 if (_referent is! Mirror) { 663 if (_referent is! Mirror) {
664 _referent = _referent.resolve(mirrors); 664 _referent = _referent.resolve(mirrors);
665 } 665 }
666 return _referent; 666 return _referent;
667 } 667 }
(...skipping 27 matching lines...) Expand all
695 // Always null for libraries. 695 // Always null for libraries.
696 final DeclarationMirror owner = null; 696 final DeclarationMirror owner = null;
697 697
698 // Always false for libraries. 698 // Always false for libraries.
699 final bool isPrivate = false; 699 final bool isPrivate = false;
700 700
701 // Always false for libraries. 701 // Always false for libraries.
702 final bool isTopLevel = false; 702 final bool isTopLevel = false;
703 703
704 SourceLocation get location { 704 SourceLocation get location {
705 throw new NotImplementedException( 705 throw new UnimplementedError(
706 'LibraryMirror.location is not implemented'); 706 'LibraryMirror.location is not implemented');
707 } 707 }
708 708
709 final String url; 709 final String url;
710 final Map<String, Mirror> members; 710 final Map<String, Mirror> members;
711 711
712 Map<String, ClassMirror> _classes = null; 712 Map<String, ClassMirror> _classes = null;
713 Map<String, MethodMirror> _functions = null; 713 Map<String, MethodMirror> _functions = null;
714 Map<String, MethodMirror> _getters = null; 714 Map<String, MethodMirror> _getters = null;
715 Map<String, MethodMirror> _setters = null; 715 Map<String, MethodMirror> _setters = null;
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 return _owner; 792 return _owner;
793 } 793 }
794 794
795 bool get isPrivate { 795 bool get isPrivate {
796 return simpleName.startsWith('_') || constructorName.startsWith('_'); 796 return simpleName.startsWith('_') || constructorName.startsWith('_');
797 } 797 }
798 798
799 bool get isTopLevel => owner is LibraryMirror; 799 bool get isTopLevel => owner is LibraryMirror;
800 800
801 SourceLocation get location { 801 SourceLocation get location {
802 throw new NotImplementedException( 802 throw new UnimplementedError(
803 'MethodMirror.location is not implemented'); 803 'MethodMirror.location is not implemented');
804 } 804 }
805 805
806 var _returnType; 806 var _returnType;
807 TypeMirror get returnType { 807 TypeMirror get returnType {
808 if (_returnType is! Mirror) { 808 if (_returnType is! Mirror) {
809 _returnType = _returnType.resolve(mirrors); 809 _returnType = _returnType.resolve(mirrors);
810 } 810 }
811 return _returnType; 811 return _returnType;
812 } 812 }
813 813
814 final List<ParameterMirror> parameters; 814 final List<ParameterMirror> parameters;
815 815
816 final bool isStatic; 816 final bool isStatic;
817 final bool isAbstract; 817 final bool isAbstract;
818 818
819 bool get isRegularMethod => !isGetter && !isSetter && !isConstructor; 819 bool get isRegularMethod => !isGetter && !isSetter && !isConstructor;
820 820
821 TypeMirror get isOperator { 821 TypeMirror get isOperator {
822 throw new NotImplementedException( 822 throw new UnimplementedError(
823 'MethodMirror.isOperator is not implemented'); 823 'MethodMirror.isOperator is not implemented');
824 } 824 }
825 825
826 final bool isGetter; 826 final bool isGetter;
827 final bool isSetter; 827 final bool isSetter;
828 final bool isConstructor; 828 final bool isConstructor;
829 829
830 var _constructorName = null; 830 var _constructorName = null;
831 String get constructorName { 831 String get constructorName {
832 if (_constructorName == null) { 832 if (_constructorName == null) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
884 884
885 bool get isPrivate { 885 bool get isPrivate {
886 return simpleName.startsWith('_'); 886 return simpleName.startsWith('_');
887 } 887 }
888 888
889 bool get isTopLevel { 889 bool get isTopLevel {
890 return owner is LibraryMirror; 890 return owner is LibraryMirror;
891 } 891 }
892 892
893 SourceLocation get location { 893 SourceLocation get location {
894 throw new NotImplementedException( 894 throw new UnimplementedError(
895 'VariableMirror.location is not implemented'); 895 'VariableMirror.location is not implemented');
896 } 896 }
897 897
898 var _type; 898 var _type;
899 TypeMirror get type { 899 TypeMirror get type {
900 if (_type is! Mirror) { 900 if (_type is! Mirror) {
901 _type = _type.resolve(mirrors); 901 _type = _type.resolve(mirrors);
902 } 902 }
903 return _type; 903 return _type;
904 } 904 }
905 905
906 final bool isStatic; 906 final bool isStatic;
907 final bool isFinal; 907 final bool isFinal;
908 908
909 String toString() => "VariableMirror on '$simpleName'"; 909 String toString() => "VariableMirror on '$simpleName'";
910 } 910 }
911 911
912 class _LocalParameterMirrorImpl extends _LocalVariableMirrorImpl 912 class _LocalParameterMirrorImpl extends _LocalVariableMirrorImpl
913 implements ParameterMirror { 913 implements ParameterMirror {
914 _LocalParameterMirrorImpl(type, this.isOptional) 914 _LocalParameterMirrorImpl(type, this.isOptional)
915 : super('<TODO:unnamed>', null, type, false, false) {} 915 : super('<TODO:unnamed>', null, type, false, false) {}
916 916
917 final bool isOptional; 917 final bool isOptional;
918 918
919 String get defaultValue { 919 String get defaultValue {
920 throw new NotImplementedException( 920 throw new UnimplementedError(
921 'ParameterMirror.defaultValue is not implemented'); 921 'ParameterMirror.defaultValue is not implemented');
922 } 922 }
923 923
924 bool get hasDefaultValue { 924 bool get hasDefaultValue {
925 throw new NotImplementedException( 925 throw new UnimplementedError(
926 'ParameterMirror.hasDefaultValue is not implemented'); 926 'ParameterMirror.hasDefaultValue is not implemented');
927 } 927 }
928 } 928 }
929 929
930 class _Mirrors { 930 class _Mirrors {
931 // Does a port refer to our local isolate? 931 // Does a port refer to our local isolate?
932 static bool isLocalPort(SendPort port) native 'Mirrors_isLocalPort'; 932 static bool isLocalPort(SendPort port) native 'Mirrors_isLocalPort';
933 933
934 static MirrorSystem _currentMirrorSystem = null; 934 static MirrorSystem _currentMirrorSystem = null;
935 935
(...skipping 13 matching lines...) Expand all
949 Completer<MirrorSystem> completer = new Completer<MirrorSystem>(); 949 Completer<MirrorSystem> completer = new Completer<MirrorSystem>();
950 if (isLocalPort(port)) { 950 if (isLocalPort(port)) {
951 // Make a local mirror system. 951 // Make a local mirror system.
952 try { 952 try {
953 completer.complete(currentMirrorSystem()); 953 completer.complete(currentMirrorSystem());
954 } catch (exception) { 954 } catch (exception) {
955 completer.completeException(exception); 955 completer.completeException(exception);
956 } 956 }
957 } else { 957 } else {
958 // Make a remote mirror system 958 // Make a remote mirror system
959 throw new NotImplementedException( 959 throw new UnimplementedError(
960 'Remote mirror support is not implemented'); 960 'Remote mirror support is not implemented');
961 } 961 }
962 return completer.future; 962 return completer.future;
963 } 963 }
964 964
965 // Creates a new local InstanceMirror 965 // Creates a new local InstanceMirror
966 static InstanceMirror makeLocalInstanceMirror(Object reflectee) 966 static InstanceMirror makeLocalInstanceMirror(Object reflectee)
967 native 'Mirrors_makeLocalInstanceMirror'; 967 native 'Mirrors_makeLocalInstanceMirror';
968 968
969 // Creates a new local mirror for some Object. 969 // Creates a new local mirror for some Object.
970 static InstanceMirror reflect(Object reflectee) { 970 static InstanceMirror reflect(Object reflectee) {
971 return makeLocalInstanceMirror(reflectee); 971 return makeLocalInstanceMirror(reflectee);
972 } 972 }
973 } 973 }
OLDNEW
« no previous file with comments | « runtime/lib/function_patch.dart ('k') | runtime/tests/vm/dart/isolate_mirror_remote_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698