Index: pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart |
diff --git a/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart b/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart |
index 9b2d9052f689a60ff329ddcf66ea46022e7b77ed..40ba3c8aa366bd4fa59d872922f54b9c0ee852b4 100644 |
--- a/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart |
+++ b/pkg/dev_compiler/tool/input_sdk/private/js_mirrors.dart |
@@ -81,6 +81,10 @@ dynamic _getMixins(type) { |
return JS('', '#.getMixins(#, [])', _dart, type); |
} |
+dynamic _getFunctionType(type) { |
+ return JS('', '#.getFunctionTypeMirror(#)', _dart, type); |
+} |
+ |
typedef T _Lazy<T>(); |
dynamic _getESSymbol(Symbol symbol) => |
@@ -627,11 +631,7 @@ class JsMethodMirror extends JsMirror implements MethodMirror { |
// TODO(vsm): Handle generic function types properly. Or deprecate mirrors |
// before we need to! |
- if (JS('bool', 'typeof(#) == "function"', ftype)) { |
- // Instantiate the generic version. |
- // TODO(vsm): Can't use arguments.length on arrow function. |
- ftype = JS('', '#.apply(null, #)', ftype, [dynamic, dynamic, dynamic]); |
- } |
+ ftype = _getFunctionType(ftype); |
// TODO(vsm): Add named args. |
List args = ftype.args; |