Index: test/codegen/expect/language/call_operator_test.js |
diff --git a/test/codegen/expect/language/call_operator_test.js b/test/codegen/expect/language/call_operator_test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6582ec7da4a778cd3907b7ba619c28b79330322d |
--- /dev/null |
+++ b/test/codegen/expect/language/call_operator_test.js |
@@ -0,0 +1,150 @@ |
+dart_library.library('language/call_operator_test', null, /* Imports */[ |
+ 'dart_sdk', |
+ 'expect' |
+], function load__call_operator_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 call_operator_test = Object.create(null); |
+ let VoidTodynamic = () => (VoidTodynamic = dart.constFn(dart.definiteFunctionType(dart.dynamic, [])))(); |
+ call_operator_test.A1 = dart.callableClass(function A1(...args) { |
+ const self = this; |
+ function call(...args) { |
+ return self.call.apply(self, args); |
+ } |
+ call.__proto__ = this.__proto__; |
+ call.new.apply(call, args); |
+ return call; |
+ }, class A1 extends core.Object { |
+ call() { |
+ return 42; |
+ } |
+ }); |
+ dart.setSignature(call_operator_test.A1, { |
+ methods: () => ({call: dart.definiteFunctionType(dart.dynamic, [])}) |
+ }); |
+ call_operator_test.A2 = dart.callableClass(function A2(...args) { |
+ const self = this; |
+ function call(...args) { |
+ return self.call.apply(self, args); |
+ } |
+ call.__proto__ = this.__proto__; |
+ call.new.apply(call, args); |
+ return call; |
+ }, class A2 extends core.Object { |
+ call() { |
+ return 35; |
+ } |
+ }); |
+ dart.setSignature(call_operator_test.A2, { |
+ methods: () => ({call: dart.definiteFunctionType(core.int, [])}) |
+ }); |
+ call_operator_test.B = dart.callableClass(function B(...args) { |
+ const self = this; |
+ function call(...args) { |
+ return self.call.apply(self, args); |
+ } |
+ call.__proto__ = this.__proto__; |
+ call.new.apply(call, args); |
+ return call; |
+ }, class B extends core.Object { |
+ call() { |
+ return 28; |
+ } |
+ }); |
+ dart.setSignature(call_operator_test.B, { |
+ methods: () => ({call: dart.definiteFunctionType(dart.dynamic, [])}) |
+ }); |
+ call_operator_test.C = dart.callableClass(function C(...args) { |
+ const self = this; |
+ function call(...args) { |
+ return self.call.apply(self, args); |
+ } |
+ call.__proto__ = this.__proto__; |
+ call.new.apply(call, args); |
+ return call; |
+ }, class C extends core.Object { |
+ call(arg) { |
+ return 7 * dart.notNull(core.num._check(arg)); |
+ } |
+ }); |
+ dart.setSignature(call_operator_test.C, { |
+ methods: () => ({call: dart.definiteFunctionType(dart.dynamic, [dart.dynamic])}) |
+ }); |
+ call_operator_test.D = dart.callableClass(function D(...args) { |
+ const self = this; |
+ function call(...args) { |
+ return self.call.apply(self, args); |
+ } |
+ call.__proto__ = this.__proto__; |
+ call.new.apply(call, args); |
+ return call; |
+ }, class D extends core.Object { |
+ call(arg) { |
+ if (arg === void 0) arg = 6; |
+ return 7 * dart.notNull(core.num._check(arg)); |
+ } |
+ }); |
+ dart.setSignature(call_operator_test.D, { |
+ methods: () => ({call: dart.definiteFunctionType(dart.dynamic, [], [dart.dynamic])}) |
+ }); |
+ call_operator_test.E = dart.callableClass(function E(...args) { |
+ const self = this; |
+ function call(...args) { |
+ return self.call.apply(self, args); |
+ } |
+ call.__proto__ = this.__proto__; |
+ call.new.apply(call, args); |
+ return call; |
+ }, class E extends core.Object { |
+ call(str, opts) { |
+ let count = opts && 'count' in opts ? opts.count : 1; |
+ let buffer = new core.StringBuffer(); |
+ for (let i = 0; i < dart.notNull(count); i++) { |
+ buffer.write(str); |
+ if (i < dart.notNull(count) - 1) { |
+ buffer.write(":"); |
+ } |
+ } |
+ return buffer.toString(); |
+ } |
+ }); |
+ dart.setSignature(call_operator_test.E, { |
+ methods: () => ({call: dart.definiteFunctionType(core.String, [core.String], {count: core.int})}) |
+ }); |
+ call_operator_test.main = function() { |
+ let a1 = new call_operator_test.A1(); |
+ expect$.Expect.equals(42, a1()); |
+ expect$.Expect.equals(42, a1.call()); |
+ let a2 = new call_operator_test.A2(); |
+ expect$.Expect.equals(35, a2()); |
+ expect$.Expect.equals(35, a2.call()); |
+ let b = new call_operator_test.B(); |
+ expect$.Expect.equals(28, b()); |
+ expect$.Expect.equals(28, b.call()); |
+ let c = new call_operator_test.C(); |
+ expect$.Expect.equals(42, dart.dcall(c, 6)); |
+ expect$.Expect.equals(42, c.call(6)); |
+ let d = new call_operator_test.D(); |
+ expect$.Expect.equals(42, dart.dcall(d)); |
+ expect$.Expect.equals(7, dart.dcall(d, 1)); |
+ expect$.Expect.equals(14, dart.dcall(d, 2)); |
+ expect$.Expect.equals(42, d.call()); |
+ expect$.Expect.equals(7, d.call(1)); |
+ expect$.Expect.equals(14, d.call(2)); |
+ let e = new call_operator_test.E(); |
+ expect$.Expect.equals("foo", e("foo")); |
+ expect$.Expect.equals("foo:foo", e("foo", {count: 2})); |
+ expect$.Expect.equals("foo:foo:foo", e("foo", {count: 3})); |
+ expect$.Expect.equals("foo", e.call("foo")); |
+ expect$.Expect.equals("foo:foo", e.call("foo", {count: 2})); |
+ expect$.Expect.equals("foo:foo:foo", e.call("foo", {count: 3})); |
+ expect$.Expect.isTrue(core.Function.is(a1)); |
+ expect$.Expect.isTrue(core.Function.is(e)); |
+ }; |
+ dart.fn(call_operator_test.main, VoidTodynamic()); |
+ // Exports: |
+ exports.call_operator_test = call_operator_test; |
+}); |