Index: sdk/lib/_internal/compiler/implementation/mirrors/dart2js_type_mirrors.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_type_mirrors.dart b/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_type_mirrors.dart |
index d8073d0c652688bc20cda48852729756ecffa571..4a3bfe735f7117d939f1e29a944c3c68f3706cc4 100644 |
--- a/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_type_mirrors.dart |
+++ b/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_type_mirrors.dart |
@@ -430,32 +430,42 @@ class Dart2JsFunctionTypeMirror extends Dart2JsTypeElementMirror |
bool isSubclassOf(ClassMirror other) => false; |
} |
-class Dart2JsVoidMirror extends Dart2JsDeclarationMirror |
+/// Common superclass for mirrors on `dynamic` and `void`. |
+abstract class Dart2JsBuiltinTypeMirror extends Dart2JsDeclarationMirror |
with Dart2JsTypeMirror |
implements TypeSourceMirror { |
final Dart2JsMirrorSystem mirrorSystem; |
- final VoidType _type; |
+ final DartType _type; |
- Dart2JsVoidMirror(Dart2JsMirrorSystem this.mirrorSystem, VoidType this._type); |
+ Dart2JsBuiltinTypeMirror(Dart2JsMirrorSystem this.mirrorSystem, |
+ DartType this._type); |
Symbol get qualifiedName => simpleName; |
/** |
- * The void type has no location. |
+ * The builtin types have has no location. |
*/ |
SourceLocation get location => null; |
/** |
- * The void type has no owner. |
+ * The builtin types have has no owner. |
*/ |
Dart2JsDeclarationMirror get owner => null; |
/** |
- * The void type has no library. |
+ * The builtin types have no library. |
*/ |
Dart2JsLibraryMirror get library => null; |
+ /** |
+ * The builtin types have no metadata. |
+ */ |
List<InstanceMirror> get metadata => const <InstanceMirror>[]; |
+} |
+ |
+class Dart2JsVoidMirror extends Dart2JsBuiltinTypeMirror { |
+ Dart2JsVoidMirror(Dart2JsMirrorSystem mirrorSystem, VoidType type) |
+ : super(mirrorSystem, type); |
bool get isVoid => true; |
@@ -474,23 +484,9 @@ class Dart2JsVoidMirror extends Dart2JsDeclarationMirror |
String toString() => 'Mirror on void'; |
} |
-class Dart2JsDynamicMirror extends Dart2JsTypeElementMirror { |
- Dart2JsDynamicMirror(Dart2JsMirrorSystem system, InterfaceType voidType) |
- : super(system, voidType); |
- |
- InterfaceType get _dynamicType => _type; |
- |
- Symbol get qualifiedName => simpleName; |
- |
- /** |
- * The dynamic type has no location. |
- */ |
- SourceLocation get location => null; |
- |
- /** |
- * The dynamic type has no library. |
- */ |
- LibraryMirror get library => null; |
+class Dart2JsDynamicMirror extends Dart2JsBuiltinTypeMirror { |
+ Dart2JsDynamicMirror(Dart2JsMirrorSystem mirrorSystem, DynamicType type) |
+ : super(mirrorSystem, type); |
bool get isDynamic => true; |
@@ -504,7 +500,7 @@ class Dart2JsDynamicMirror extends Dart2JsTypeElementMirror { |
return other.isDynamic; |
} |
- int get hashCode => 13 * _element.hashCode; |
+ int get hashCode => 13 * _type.hashCode; |
String toString() => 'Mirror on dynamic'; |
} |