File: subtypingWithCallSignatures4.js

package info (click to toggle)
node-typescript 3.3.3333-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 324,548 kB
  • sloc: makefile: 6; sh: 3
file content (203 lines) | stat: -rw-r--r-- 6,608 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
//// [subtypingWithCallSignatures4.ts]
// checking subtype relations for function types as it relates to contextual signature instantiation

class Base { foo: string; }
class Derived extends Base { bar: string; }
class Derived2 extends Derived { baz: string; }
class OtherDerived extends Base { bing: string; }

declare function foo1(a: <T>(x: T) => T[]);
declare function foo1(a: any): any;

declare function foo2(a2: <T>(x: T) => string[]);
declare function foo2(a: any): any;

declare function foo3(a3: <T>(x: T) => void);
declare function foo3(a: any): any;

declare function foo4(a4: <T, U>(x: T, y: U) => string);
declare function foo4(a: any): any;

declare function foo5(a5: <T, U>(x: (arg: T) => U) => T);
declare function foo5(a: any): any;

declare function foo6(a6: <T extends Base>(x: (arg: T) => Derived) => T);
declare function foo6(a: any): any;

declare function foo11(a11: <T>(x: { foo: T }, y: { foo: T; bar: T }) => Base);
declare function foo11(a: any): any;

declare function foo15(a15: <T>(x: { a: T; b: T }) => T[]);
declare function foo15(a: any): any;

declare function foo16(a16: <T extends Base>(x: { a: T; b: T }) => T[]);
declare function foo16(a: any): any;

declare function foo17(a17: {
    <T extends Derived>(x: (a: T) => T): T[];
    <T extends Base>(x: (a: T) => T): T[];        
});
declare function foo17(a: any): any;

declare function foo18(a18: {
    (x: {
        <T extends Derived>(a: T): T;
        <T extends Base>(a: T): T;
    }): any[];
    (x: {
        <T extends Derived2>(a: T): T;
        <T extends Base>(a: T): T;
    }): any[];
});
declare function foo18(a: any): any;

var r1arg = <T>(x: T) => <T[]>null;
var r1arg2 = <T>(x: T) => <T[]>null;
var r1 = foo1(r1arg);
var r1a = [r1arg, r1arg2];
var r1b = [r1arg2, r1arg];

var r2arg = <T>(x: T) => [''];
var r2arg2 = <T>(x: T) => [''];
var r2 = foo2(r2arg);
var r2a = [r2arg, r2arg2];
var r2b = [r2arg2, r2arg];

var r3arg = <T>(x: T) => <T>null;
var r3arg2 = <T>(x: T) => { };
var r3 = foo3(r3arg);
var r3a = [r3arg, r3arg2];
var r3b = [r3arg2, r3arg];

var r4arg = <T, U>(x: T, y: U) => '';
var r4arg2 = <T, U>(x: T, y: U) => '';
var r4 = foo4(r4arg);
var r4a = [r4arg, r4arg2];
var r4b = [r4arg2, r4arg];

var r5arg = <T, U>(x: (arg: T) => U) => <T>null;
var r5arg2 = <T, U>(x: (arg: T) => U) => <T>null;
var r5 = foo5(r5arg);
var r5a = [r5arg, r5arg2];
var r5b = [r5arg2, r5arg];

var r6arg = <T extends Base, U extends Derived>(x: (arg: T) => U) => <T>null;
var r6arg2 = <T extends Base>(x: (arg: T) => Derived) => <T>null;
var r6 = foo6(r6arg);
var r6a = [r6arg, r6arg2];
var r6b = [r6arg2, r6arg];

var r11arg = <T, U>(x: { foo: T }, y: { foo: U; bar: U }) => <Base>null;
var r11arg2 = <T>(x: { foo: T }, y: { foo: T; bar: T }) => <Base>null;
var r11 = foo11(r11arg);
var r11a = [r11arg, r11arg2];
var r11b = [r11arg2, r11arg];

var r15arg = <U, V>(x: { a: U; b: V; }) => <U[]>null;
var r15arg2 = <T>(x: { a: T; b: T }) => <T[]>null;
var r15 = foo15(r15arg);
var r15a = [r15arg, r15arg2];
var r15b = [r15arg2, r15arg];

var r16arg = <T extends Base>(x: { a: T; b: T }) => <T[]>null;
var r16arg2 = <T extends Base>(x: { a: T; b: T }) => <T[]>null;
var r16 = foo16(r16arg);
var r16a = [r16arg, r16arg2];
var r16b = [r16arg2, r16arg];

var r17arg = <T>(x: (a: T) => T) => <T[]>null;
var r17 = foo17(r17arg);

var r18arg = (x: <T>(a: T) => T) => <any[]>null;
var r18 = foo18(r18arg);

//// [subtypingWithCallSignatures4.js]
// checking subtype relations for function types as it relates to contextual signature instantiation
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
var Base = /** @class */ (function () {
    function Base() {
    }
    return Base;
}());
var Derived = /** @class */ (function (_super) {
    __extends(Derived, _super);
    function Derived() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    return Derived;
}(Base));
var Derived2 = /** @class */ (function (_super) {
    __extends(Derived2, _super);
    function Derived2() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    return Derived2;
}(Derived));
var OtherDerived = /** @class */ (function (_super) {
    __extends(OtherDerived, _super);
    function OtherDerived() {
        return _super !== null && _super.apply(this, arguments) || this;
    }
    return OtherDerived;
}(Base));
var r1arg = function (x) { return null; };
var r1arg2 = function (x) { return null; };
var r1 = foo1(r1arg);
var r1a = [r1arg, r1arg2];
var r1b = [r1arg2, r1arg];
var r2arg = function (x) { return ['']; };
var r2arg2 = function (x) { return ['']; };
var r2 = foo2(r2arg);
var r2a = [r2arg, r2arg2];
var r2b = [r2arg2, r2arg];
var r3arg = function (x) { return null; };
var r3arg2 = function (x) { };
var r3 = foo3(r3arg);
var r3a = [r3arg, r3arg2];
var r3b = [r3arg2, r3arg];
var r4arg = function (x, y) { return ''; };
var r4arg2 = function (x, y) { return ''; };
var r4 = foo4(r4arg);
var r4a = [r4arg, r4arg2];
var r4b = [r4arg2, r4arg];
var r5arg = function (x) { return null; };
var r5arg2 = function (x) { return null; };
var r5 = foo5(r5arg);
var r5a = [r5arg, r5arg2];
var r5b = [r5arg2, r5arg];
var r6arg = function (x) { return null; };
var r6arg2 = function (x) { return null; };
var r6 = foo6(r6arg);
var r6a = [r6arg, r6arg2];
var r6b = [r6arg2, r6arg];
var r11arg = function (x, y) { return null; };
var r11arg2 = function (x, y) { return null; };
var r11 = foo11(r11arg);
var r11a = [r11arg, r11arg2];
var r11b = [r11arg2, r11arg];
var r15arg = function (x) { return null; };
var r15arg2 = function (x) { return null; };
var r15 = foo15(r15arg);
var r15a = [r15arg, r15arg2];
var r15b = [r15arg2, r15arg];
var r16arg = function (x) { return null; };
var r16arg2 = function (x) { return null; };
var r16 = foo16(r16arg);
var r16a = [r16arg, r16arg2];
var r16b = [r16arg2, r16arg];
var r17arg = function (x) { return null; };
var r17 = foo17(r17arg);
var r18arg = function (x) { return null; };
var r18 = foo18(r18arg);