Index: frog/leg/lib/js_helper.dart |
=================================================================== |
--- frog/leg/lib/js_helper.dart (revision 5070) |
+++ frog/leg/lib/js_helper.dart (working copy) |
@@ -1305,6 +1305,27 @@ |
return ex; |
} |
+callClosure0(closure) => closure(); |
+callClosure1(closure, arg1) => closure(arg1); |
+callClosure2(closure, arg1, arg2) => closure(arg1, arg2); |
+ |
+convertDartClosureToJS(closure) { |
+ return JS("var", @"""function() { |
+ var dartClosure = $0; |
+ switch (arguments.length) { |
+ case 0: return $1(dartClosure); |
+ case 1: return $2(dartClosure, arguments[0]); |
+ case 2: return $3(dartClosure, arguments[0], arguments[1]); |
+ default: |
+ throw new Error('Unsupported number of arguments for wrapped closure'); |
+ } |
+ }""", |
+ closure, |
+ callClosure0, |
+ callClosure1, |
+ callClosure2); |
+} |
+ |
class StackTrace { |
var stack; |
StackTrace(this.stack); |