Chromium Code Reviews| Index: editor/util/plugins/com.google.dart.java2dart/resources/java_engine.dart |
| diff --git a/editor/util/plugins/com.google.dart.java2dart/resources/java_engine.dart b/editor/util/plugins/com.google.dart.java2dart/resources/java_engine.dart |
| index f523e8f58456d2352e7953a3f4e4e6179cc4d9fc..0e0fce70e5f19a12daf5aab531d3bf8aa3000c8b 100644 |
| --- a/editor/util/plugins/com.google.dart.java2dart/resources/java_engine.dart |
| +++ b/editor/util/plugins/com.google.dart.java2dart/resources/java_engine.dart |
| @@ -192,3 +192,32 @@ class UUID { |
| String toString() => id; |
| static UUID randomUUID() => new UUID((__nextId).toString()); |
| } |
| + |
| + |
| +/** |
| + * Wrapper around [Function] which should be called with "target" and "arguments". |
| + */ |
| +class MethodTrampoline { |
|
Brian Wilkerson
2014/03/07 19:07:01
Where is this needed?
scheglov
2014/03/07 19:50:53
Moved to parser.dart where it is used.
|
| + int parameterCount; |
| + Function trampoline; |
| + MethodTrampoline(this.parameterCount, this.trampoline); |
| + Object invoke(target, List arguments) { |
| + if (arguments.length != parameterCount) { |
| + throw new IllegalArgumentException("${arguments.length} != $parameterCount"); |
| + } |
| + switch (parameterCount) { |
| + case 0: |
| + return trampoline(target); |
| + case 1: |
| + return trampoline(target, arguments[0]); |
| + case 2: |
| + return trampoline(target, arguments[0], arguments[1]); |
| + case 3: |
| + return trampoline(target, arguments[0], arguments[1], arguments[2]); |
| + case 4: |
| + return trampoline(target, arguments[0], arguments[1], arguments[2], arguments[3]); |
| + default: |
| + throw new IllegalArgumentException("Not implemented for > 4 arguments"); |
| + } |
| + } |
| +} |