Index: test/codegen/expect/language/closure7_test.js |
diff --git a/test/codegen/expect/language/closure7_test.js b/test/codegen/expect/language/closure7_test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..097e51363484cc62984f5d034f55f127719f7098 |
--- /dev/null |
+++ b/test/codegen/expect/language/closure7_test.js |
@@ -0,0 +1,182 @@ |
+dart_library.library('language/closure7_test', null, /* Imports */[ |
+ 'dart_sdk', |
+ 'expect' |
+], function load__closure7_test(exports, dart_sdk, expect) { |
+ 'use strict'; |
+ const core = dart_sdk.core; |
+ const dart = dart_sdk.dart; |
+ const dartx = dart_sdk.dartx; |
+ const expect$ = expect.expect; |
+ const closure7_test = Object.create(null); |
+ let dynamicTodynamic = () => (dynamicTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [dart.dynamic])))(); |
+ let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [])))(); |
+ closure7_test.A = class A extends core.Object { |
+ foo() { |
+ return 499; |
+ } |
+ fooo() { |
+ return 4999; |
+ } |
+ bar(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 8; |
+ let z = opts && 'z' in opts ? opts.z : 10; |
+ return dart.str`1 ${x} ${y} ${z}`; |
+ } |
+ gee(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 9; |
+ let z = opts && 'z' in opts ? opts.z : 11; |
+ return dart.str`2 ${x} ${y} ${z}`; |
+ } |
+ toto(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 8; |
+ let z = opts && 'z' in opts ? opts.z : 10; |
+ return dart.str`3 ${x} ${y} ${z}`; |
+ } |
+ fisk(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 8; |
+ let zz = opts && 'zz' in opts ? opts.zz : 10; |
+ return dart.str`4 ${x} ${y} ${zz}`; |
+ } |
+ titi(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 8; |
+ let zz = opts && 'zz' in opts ? opts.zz : 77; |
+ return dart.str`5 ${x} ${y} ${zz}`; |
+ } |
+ }; |
+ dart.setSignature(closure7_test.A, { |
+ methods: () => ({ |
+ foo: dart.definiteFunctionType(dart.dynamic, []), |
+ fooo: dart.definiteFunctionType(dart.dynamic, []), |
+ bar: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, z: dart.dynamic}), |
+ gee: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, z: dart.dynamic}), |
+ toto: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, z: dart.dynamic}), |
+ fisk: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, zz: dart.dynamic}), |
+ titi: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, zz: dart.dynamic}) |
+ }) |
+ }); |
+ closure7_test.B = class B extends core.Object { |
+ foo() { |
+ return 4990; |
+ } |
+ fooo() { |
+ return 49990; |
+ } |
+ bar(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 8; |
+ let z = opts && 'z' in opts ? opts.z : 10; |
+ return dart.str`1B ${x} ${y} ${z}`; |
+ } |
+ gee(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 9; |
+ let z = opts && 'z' in opts ? opts.z : 11; |
+ return dart.str`2B ${x} ${y} ${z}`; |
+ } |
+ toto(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 8; |
+ let z = opts && 'z' in opts ? opts.z : 10; |
+ return dart.str`3B ${x} ${y} ${z}`; |
+ } |
+ fisk(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 8; |
+ let zz = opts && 'zz' in opts ? opts.zz : 10; |
+ return dart.str`4B ${x} ${y} ${zz}`; |
+ } |
+ titi(x, opts) { |
+ let y = opts && 'y' in opts ? opts.y : 8; |
+ let zz = opts && 'zz' in opts ? opts.zz : 77; |
+ return dart.str`5B ${x} ${y} ${zz}`; |
+ } |
+ }; |
+ dart.setSignature(closure7_test.B, { |
+ methods: () => ({ |
+ foo: dart.definiteFunctionType(dart.dynamic, []), |
+ fooo: dart.definiteFunctionType(dart.dynamic, []), |
+ bar: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, z: dart.dynamic}), |
+ gee: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, z: dart.dynamic}), |
+ toto: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, z: dart.dynamic}), |
+ fisk: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, zz: dart.dynamic}), |
+ titi: dart.definiteFunctionType(dart.dynamic, [dart.dynamic], {y: dart.dynamic, zz: dart.dynamic}) |
+ }) |
+ }); |
+ closure7_test.tearOffFoo = function(o) { |
+ return dart.dload(o, 'foo'); |
+ }; |
+ dart.fn(closure7_test.tearOffFoo, dynamicTodynamic()); |
+ closure7_test.tearOffFooo = function(o) { |
+ return dart.dload(o, 'fooo'); |
+ }; |
+ dart.fn(closure7_test.tearOffFooo, dynamicTodynamic()); |
+ closure7_test.tearOffBar = function(o) { |
+ return dart.dload(o, 'bar'); |
+ }; |
+ dart.fn(closure7_test.tearOffBar, dynamicTodynamic()); |
+ closure7_test.tearOffGee = function(o) { |
+ return dart.dload(o, 'gee'); |
+ }; |
+ dart.fn(closure7_test.tearOffGee, dynamicTodynamic()); |
+ closure7_test.tearOffToto = function(o) { |
+ return dart.dload(o, 'toto'); |
+ }; |
+ dart.fn(closure7_test.tearOffToto, dynamicTodynamic()); |
+ closure7_test.tearOffFisk = function(o) { |
+ return dart.dload(o, 'fisk'); |
+ }; |
+ dart.fn(closure7_test.tearOffFisk, dynamicTodynamic()); |
+ closure7_test.tearOffTiti = function(o) { |
+ return dart.dload(o, 'titi'); |
+ }; |
+ dart.fn(closure7_test.tearOffTiti, dynamicTodynamic()); |
+ closure7_test.main = function() { |
+ let a = new closure7_test.A(); |
+ let b = new closure7_test.B(); |
+ expect$.Expect.equals(499, dart.dcall(closure7_test.tearOffFoo(a))); |
+ expect$.Expect.equals(4990, dart.dcall(closure7_test.tearOffFoo(b))); |
+ expect$.Expect.equals(4999, dart.dcall(closure7_test.tearOffFooo(a))); |
+ expect$.Expect.equals(49990, dart.dcall(closure7_test.tearOffFooo(b))); |
+ let barA = closure7_test.tearOffBar(a); |
+ let barB = closure7_test.tearOffBar(b); |
+ let geeA = closure7_test.tearOffGee(a); |
+ let geeB = closure7_test.tearOffGee(b); |
+ let totoA = closure7_test.tearOffToto(a); |
+ let totoB = closure7_test.tearOffToto(b); |
+ expect$.Expect.equals("1 33 8 10", dart.dcall(barA, 33)); |
+ expect$.Expect.equals("1B 33 8 10", dart.dcall(barB, 33)); |
+ expect$.Expect.equals("2 33 9 11", dart.dcall(geeA, 33)); |
+ expect$.Expect.equals("2B 33 9 11", dart.dcall(geeB, 33)); |
+ expect$.Expect.equals("3 33 8 10", dart.dcall(totoA, 33)); |
+ expect$.Expect.equals("3B 33 8 10", dart.dcall(totoB, 33)); |
+ expect$.Expect.equals("1 35 8 10", dart.dcall(barA, 35)); |
+ expect$.Expect.equals("1B 35 8 10", dart.dcall(barB, 35)); |
+ expect$.Expect.equals("2 35 9 11", dart.dcall(geeA, 35)); |
+ expect$.Expect.equals("2B 35 9 11", dart.dcall(geeB, 35)); |
+ expect$.Expect.equals("3 35 8 10", dart.dcall(totoA, 35)); |
+ expect$.Expect.equals("3B 35 8 10", dart.dcall(totoB, 35)); |
+ expect$.Expect.equals("1 35 8 77", dart.dcall(barA, 35, {z: 77})); |
+ expect$.Expect.equals("1B 35 8 77", dart.dcall(barB, 35, {z: 77})); |
+ expect$.Expect.equals("2 35 9 77", dart.dcall(geeA, 35, {z: 77})); |
+ expect$.Expect.equals("2B 35 9 77", dart.dcall(geeB, 35, {z: 77})); |
+ expect$.Expect.equals("3 35 8 77", dart.dcall(totoA, 35, {z: 77})); |
+ expect$.Expect.equals("3B 35 8 77", dart.dcall(totoB, 35, {z: 77})); |
+ expect$.Expect.equals("1 35 8 77", dart.dcall(barA, 35, {z: 77})); |
+ expect$.Expect.equals("1B 35 8 77", dart.dcall(barB, 35, {z: 77})); |
+ expect$.Expect.equals("2 35 9 77", dart.dcall(geeA, 35, {z: 77})); |
+ expect$.Expect.equals("2B 35 9 77", dart.dcall(geeB, 35, {z: 77})); |
+ expect$.Expect.equals("3 35 8 77", dart.dcall(totoA, 35, {z: 77})); |
+ expect$.Expect.equals("3B 35 8 77", dart.dcall(totoB, 35, {z: 77})); |
+ let fiskA = closure7_test.tearOffFisk(a); |
+ let fiskB = closure7_test.tearOffFisk(b); |
+ let titiA = closure7_test.tearOffTiti(a); |
+ let titiB = closure7_test.tearOffTiti(b); |
+ expect$.Expect.equals("4 311 8 987", dart.dcall(fiskA, 311, {zz: 987})); |
+ expect$.Expect.equals("4B 311 8 987", dart.dcall(fiskB, 311, {zz: 987})); |
+ expect$.Expect.equals("5 311 8 987", dart.dcall(titiA, 311, {zz: 987})); |
+ expect$.Expect.equals("5B 311 8 987", dart.dcall(titiB, 311, {zz: 987})); |
+ expect$.Expect.equals("4 311 765 987", dart.dcall(fiskA, 311, {y: 765, zz: 987})); |
+ expect$.Expect.equals("4B 311 765 987", dart.dcall(fiskB, 311, {y: 765, zz: 987})); |
+ expect$.Expect.equals("5 311 765 987", dart.dcall(titiA, 311, {y: 765, zz: 987})); |
+ expect$.Expect.equals("5B 311 765 987", dart.dcall(titiB, 311, {y: 765, zz: 987})); |
+ }; |
+ dart.fn(closure7_test.main, VoidTodynamic()); |
+ // Exports: |
+ exports.closure7_test = closure7_test; |
+}); |