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

Unified Diff: dart/sdk/lib/_internal/lib/js_mirrors.dart

Issue 23996002: Use interceptors to handle runtime types. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed comment Created 7 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: dart/sdk/lib/_internal/lib/js_mirrors.dart
diff --git a/dart/sdk/lib/_internal/lib/js_mirrors.dart b/dart/sdk/lib/_internal/lib/js_mirrors.dart
index ee760b71d1ed365aad5c7fc35cd0644c9a2ab049..bd1c598a9ff5e6c143899efec5a05d72d4203867 100644
--- a/dart/sdk/lib/_internal/lib/js_mirrors.dart
+++ b/dart/sdk/lib/_internal/lib/js_mirrors.dart
@@ -434,7 +434,7 @@ ClassMirror reflectClassByName(Symbol symbol, String mangledName) {
int index = JS('int|Null', 'init.functionAliases[#]', mangledName);
if (index != null) {
mirror = new JsTypedefMirror(
- symbol, mangledName, JS('=Object', 'init.metadata[#]', index));
+ symbol, mangledName, JS('', 'init.metadata[#]', index));
JsCache.update(classMirrors, mangledName, mirror);
return mirror;
}
@@ -1452,47 +1452,34 @@ class JsFunctionTypeMirror implements FunctionTypeMirror {
JsFunctionTypeMirror(this._typeData);
- bool get _hasReturnType => JS('bool', '"ret" in #', _typeData);
- get _returnType => JS('', '#.ret', _typeData);
-
- bool get _isVoid => JS('bool', '!!#.void', _typeData);
-
- bool get _hasArguments => JS('bool', '"args" in #', _typeData);
- List get _arguments => JS('JSExtendableArray', '#.args', _typeData);
-
- bool get _hasOptionalArguments => JS('bool', '"opt" in #', _typeData);
- List get _optionalArguments => JS('JSExtendableArray', '#.opt', _typeData);
-
- bool get _hasNamedArguments => JS('bool', '"named" in #', _typeData);
- get _namedArguments => JS('=Object', '#.named', _typeData);
-
TypeMirror get returnType {
if (_cachedReturnType != null) return _cachedReturnType;
- if (_isVoid) return _cachedReturnType = JsMirrorSystem._voidType;
- if (!_hasReturnType) return _cachedReturnType = JsMirrorSystem._dynamicType;
+ if (_typeData.isVoid) return _cachedReturnType = JsMirrorSystem._voidType;
+ if (!_typeData.hasReturnType)
+ return _cachedReturnType = JsMirrorSystem._dynamicType;
return _cachedReturnType =
- typeMirrorFromRuntimeTypeRepresentation(_returnType);
+ typeMirrorFromRuntimeTypeRepresentation(_typeData.returnType);
}
List<ParameterMirror> get parameters {
if (_cachedParameters != null) return _cachedParameters;
List result = [];
int parameterCount = 0;
- if (_hasArguments) {
- for (var type in _arguments) {
+ if (_typeData.hasArguments) {
+ for (var type in _typeData.arguments) {
result.add(
new JsParameterMirror('argument${parameterCount++}', this, type));
}
}
- if (_hasOptionalArguments) {
- for (var type in _optionalArguments) {
+ if (_typeData.hasOptionalArguments) {
+ for (var type in _typeData.optionalArguments) {
result.add(
new JsParameterMirror('argument${parameterCount++}', this, type));
}
}
- if (_hasNamedArguments) {
- for (var name in extractKeys(_namedArguments)) {
- var type = JS('', '#[#]', _namedArguments, name);
+ if (_typeData.hasNamedArguments) {
+ for (var name in extractKeys(_typeData.namedArguments)) {
+ var type = JS('', '#[#]', _typeData.namedArguments, name);
result.add(new JsParameterMirror(name, this, type));
}
}
@@ -1502,45 +1489,7 @@ class JsFunctionTypeMirror implements FunctionTypeMirror {
String toString() {
if (_cachedToString != null) return _cachedToString;
- var s = "FunctionTypeMirror on '(";
- var sep = '';
- if (_hasArguments) {
- for (var argument in _arguments) {
- s += runtimeTypeToString(argument);
- s += sep;
- sep = ', ';
- }
- }
- if (_hasOptionalArguments) {
- s += '$sep[';
- sep = '';
- for (var argument in _optionalArguments) {
- s += runtimeTypeToString(argument);
- s += sep;
- sep = ', ';
- }
- s += ']';
- }
- if (_hasNamedArguments) {
- s += '$sep{';
- sep = '';
- for (var name in extractKeys(_namedArguments)) {
- s += '$name: ';
- s += runtimeTypeToString(JS('', '#[#]', _namedArguments, name));
- s += sep;
- sep = ', ';
- }
- s += '}';
- }
- s += ') -> ';
- if (_isVoid) {
- s += 'void';
- } else if (_hasReturnType) {
- s += runtimeTypeToString(_returnType);
- } else {
- s += 'dynamic';
- }
- return _cachedToString = "$s'";
+ return _cachedToString = "FunctionTypeMirror on '$_typeData'";
}
}

Powered by Google App Engine
This is Rietveld 408576698