| OLD | NEW |
| (Empty) |
| 1 class Foo { | |
| 2 method(x, [y, z]) { | |
| 3 return "string"; | |
| 4 } | |
| 5 } | |
| 6 | |
| 7 abstract class External { | |
| 8 String externalMethod(int x, [int y, int z]); | |
| 9 void listen(Listener listener); | |
| 10 } | |
| 11 | |
| 12 external External createExternal(); | |
| 13 | |
| 14 abstract class Listener { | |
| 15 void event(String input, [int x, int y]); | |
| 16 } | |
| 17 | |
| 18 class TestListener extends Listener { | |
| 19 void event(input, [x, y]) {} | |
| 20 } | |
| 21 | |
| 22 class ExtendedListener extends Listener { | |
| 23 void event(input, [x, y, z]) {} | |
| 24 } | |
| 25 | |
| 26 class InvalidListener { | |
| 27 void event(input, [x]) {} | |
| 28 } | |
| 29 | |
| 30 main() { | |
| 31 var foo = new Foo(); | |
| 32 var string1 = foo.method(1); | |
| 33 var string2 = foo.method(1, 2); | |
| 34 var string3 = foo.method(1, 2, 3); | |
| 35 | |
| 36 var extern = createExternal(); | |
| 37 var string4 = extern.externalMethod(1); | |
| 38 var string5 = extern.externalMethod(1, 2); | |
| 39 var string6 = extern.externalMethod(1, 2, 3); | |
| 40 | |
| 41 extern.listen(new TestListener()); | |
| 42 extern.listen(new ExtendedListener()); | |
| 43 extern.listen(new InvalidListener()); | |
| 44 | |
| 45 var nothing1 = foo.method(); | |
| 46 var nothing2 = foo.method(1, 2, 3, 4); | |
| 47 var nothing3 = extern.externalMethod(); | |
| 48 var nothing4 = extern.externalMethod(1, 2, 3, 4); | |
| 49 } | |
| OLD | NEW |