File: overloadResolution.errors.txt

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 (127 lines) | stat: -rw-r--r-- 6,345 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
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(27,5): error TS2345: Argument of type '{}' is not assignable to parameter of type 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(41,11): error TS2345: Argument of type '""' is not assignable to parameter of type 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(63,5): error TS2558: Expected 3 type arguments, but got 4.
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(70,21): error TS2345: Argument of type '3' is not assignable to parameter of type 'string'.
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(71,21): error TS2345: Argument of type '""' is not assignable to parameter of type 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(81,5): error TS2344: Type 'boolean' does not satisfy the constraint 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(84,5): error TS2345: Argument of type 'true' is not assignable to parameter of type 'number'.
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(85,11): error TS2345: Argument of type 'true' is not assignable to parameter of type 'string'.
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(91,5): error TS2403: Subsequent variable declarations must have the same type.  Variable 'n' must be of type 'number', but here has type 'string'.
tests/cases/conformance/expressions/functionCalls/overloadResolution.ts(91,22): error TS2339: Property 'toFixed' does not exist on type 'string'.


==== tests/cases/conformance/expressions/functionCalls/overloadResolution.ts (10 errors) ====
    class SomeBase {
        private n;
    
        public s: string;
    }
    class SomeDerived1 extends SomeBase {
        private m;
    }
    class SomeDerived2 extends SomeBase {
        private m;
    }
    class SomeDerived3 extends SomeBase {
        private m;
    }
    
    
    // Ambiguous call picks the first overload in declaration order
    function fn1(s: string): string;
    function fn1(s: number): number;
    function fn1() { return null; }
    
    var s = fn1(undefined);
    var s: string;
    
    
    // No candidate overloads found
    fn1({}); // Error
        ~~
!!! error TS2345: Argument of type '{}' is not assignable to parameter of type 'number'.
    
    // Generic and non - generic overload where generic overload is the only candidate when called with type arguments
    function fn2(s: string, n: number): number;
    function fn2<T>(n: number, t: T): T;
    function fn2() { return undefined; }
    
    var d = fn2<Date>(0, undefined);
    var d: Date;
    
    // Generic and non - generic overload where generic overload is the only candidate when called without type arguments
    var s = fn2(0, '');
    
    // Generic and non - generic overload where non - generic overload is the only candidate when called with type arguments
    fn2<Date>('', 0); // Error
              ~~
!!! error TS2345: Argument of type '""' is not assignable to parameter of type 'number'.
    
    // Generic and non - generic overload where non - generic overload is the only candidate when called without type arguments
    fn2('', 0); // OK
    
    // Generic overloads with differing arity called without type arguments
    function fn3<T>(n: T): string;
    function fn3<T, U>(s: string, t: T, u: U): U;
    function fn3<T, U, V>(v: V, u: U, t: T): number;
    function fn3() { return null; }
    
    var s = fn3(3);
    var s = fn3('', 3, '');
    var n = fn3(5, 5, 5);
    var n: number;
    
    // Generic overloads with differing arity called with type arguments matching each overload type parameter count
    var s = fn3<number>(4);
    var s = fn3<string, string>('', '', '');
    var n = fn3<number, string, string>('', '', 3);
    
    // Generic overloads with differing arity called with type argument count that doesn't match any overload
    fn3<number, number, number, number>(); // Error
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! error TS2558: Expected 3 type arguments, but got 4.
    
    // Generic overloads with constraints called with type arguments that satisfy the constraints
    function fn4<T extends string, U extends number>(n: T, m: U);
    function fn4<T extends number, U extends string>(n: T, m: U);
    function fn4() { }
    fn4<string, number>('', 3);
    fn4<string, number>(3, ''); // Error
                        ~
!!! error TS2345: Argument of type '3' is not assignable to parameter of type 'string'.
    fn4<number, string>('', 3); // Error
                        ~~
!!! error TS2345: Argument of type '""' is not assignable to parameter of type 'number'.
    fn4<number, string>(3, ''); 
    
    // Generic overloads with constraints called without type arguments but with types that satisfy the constraints
    fn4('', 3);
    fn4(3, '');
    fn4(3, undefined);
    fn4('', null);
    
    // Generic overloads with constraints called with type arguments that do not satisfy the constraints
    fn4<boolean, Date>(null, null); // Error
        ~~~~~~~
!!! error TS2344: Type 'boolean' does not satisfy the constraint 'number'.
    
    // Generic overloads with constraints called without type arguments but with types that do not satisfy the constraints
    fn4(true, null); // Error
        ~~~~
!!! error TS2345: Argument of type 'true' is not assignable to parameter of type 'number'.
    fn4(null, true); // Error
              ~~~~
!!! error TS2345: Argument of type 'true' is not assignable to parameter of type 'string'.
    
    // Non - generic overloads where contextual typing of function arguments has errors
    function fn5(f: (n: string) => void): string;
    function fn5(f: (n: number) => void): number;
    function fn5() { return undefined; }
    var n = fn5((n) => n.toFixed());
        ~
!!! error TS2403: Subsequent variable declarations must have the same type.  Variable 'n' must be of type 'number', but here has type 'string'.
                         ~~~~~~~
!!! error TS2339: Property 'toFixed' does not exist on type 'string'.
    var s = fn5((n) => n.substr(0));