Index: dart/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart |
=================================================================== |
--- dart/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart (revision 30037) |
+++ dart/sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart (working copy) |
@@ -293,6 +293,8 @@ |
String get simpleName => _element.name; |
+ bool get isNameSynthetic => false; |
+ |
/** |
* Computes the first token for this declaration using the begin token of the |
* element node or element position as indicator. |
@@ -537,13 +539,7 @@ |
*/ |
String get simpleName { |
if (_library.libraryTag != null) { |
- // TODO(ahe): Remove StringNode check when old syntax is removed. |
- StringNode name = _library.libraryTag.name.asStringNode(); |
- if (name != null) { |
- return name.dartString.slowToString(); |
- } else { |
- return _library.libraryTag.name.toString(); |
- } |
+ return _library.libraryTag.name.toString(); |
} else { |
// Use the file name as script name. |
String path = _library.canonicalUri.path; |
@@ -847,6 +843,23 @@ |
return null; |
} |
+ ClassMirror get mixin { |
+ if (_class.isMixinApplication) { |
+ MixinApplicationElement mixinApplication = _class; |
+ return new Dart2JsInterfaceTypeMirror(mirrors, |
+ mixinApplication.mixinType); |
+ } |
+ return this; |
+ } |
+ |
+ bool get isNameSynthetic { |
+ if (_class.isMixinApplication) { |
+ MixinApplicationElement mixinApplication = _class; |
+ return mixinApplication.isUnnamedMixinApplication; |
+ } |
+ return false; |
+ } |
+ |
List<ClassMirror> get superinterfaces { |
var list = <ClassMirror>[]; |
Link<DartType> link = _class.interfaces; |
@@ -958,6 +971,10 @@ |
List<ClassMirror> get superinterfaces => const <ClassMirror>[]; |
+ // TODO(johnniwinther): Refactor [TypedefMirror] to not extend [ClassMirror] |
+ // and remove this. |
+ ClassMirror get mixin => this; |
+ |
bool get isClass => false; |
bool get isOriginalDeclaration => true; |
@@ -1077,6 +1094,8 @@ |
InterfaceType get _interfaceType => _type; |
+ bool get isNameSynthetic => originalDeclaration.isNameSynthetic; |
+ |
String get qualifiedName => originalDeclaration.qualifiedName; |
// TODO(johnniwinther): Substitute type arguments for type variables. |
@@ -1096,6 +1115,14 @@ |
// TODO(johnniwinther): Substitute type arguments for type variables. |
List<ClassMirror> get superinterfaces => originalDeclaration.superinterfaces; |
+ // TODO(johnniwinther): Substitute type arguments for type variables. |
+ ClassMirror get mixin { |
+ if (originalDeclaration.mixin == originalDeclaration) { |
+ return this; |
+ } |
+ return originalDeclaration.mixin; |
+ } |
+ |
bool get isClass => originalDeclaration.isClass; |
bool get isAbstract => originalDeclaration.isAbstract; |
@@ -1170,7 +1197,7 @@ |
List<ParameterMirror> _parameters; |
Dart2JsFunctionTypeMirror(Dart2JsMirrorSystem system, |
- FunctionType functionType, this._functionSignature) |
+ FunctionType functionType, this._functionSignature) |
: super(system, functionType) { |
assert (_functionSignature != null); |
} |
@@ -1209,6 +1236,8 @@ |
// TODO(johnniwinther): Substitute type arguments for type variables. |
List<ClassMirror> get superinterfaces => originalDeclaration.superinterfaces; |
+ ClassMirror get mixin => this; |
+ |
bool get isClass => originalDeclaration.isClass; |
bool get isPrivate => originalDeclaration.isPrivate; |