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
|
=== tests/cases/conformance/expressions/functionCalls/defs.d.ts ===
declare function f1(p: void): void;
>f1 : (p: void) => void
>p : void
declare function f2(p: undefined): void;
>f2 : (p: undefined) => void
>p : undefined
declare function f3(p: unknown): void;
>f3 : (p: unknown) => void
>p : unknown
declare function f4(p: any): void;
>f4 : (p: any) => void
>p : any
interface I<T> { m(p: T): void; }
>m : (p: T) => void
>p : T
declare const o1: I<void>;
>o1 : I<void>
declare const o2: I<undefined>;
>o2 : I<undefined>
declare const o3: I<unknown>;
>o3 : I<unknown>
declare const o4: I<any>;
>o4 : I<any>
=== tests/cases/conformance/expressions/functionCalls/jsfile.js ===
// current behavior: treat trailing `void` as optional
f1();
>f1() : void
>f1 : (p: void) => void
o1.m();
>o1.m() : void
>o1.m : (p: void) => void
>o1 : I<void>
>m : (p: void) => void
// new behavior: treat 'undefined', 'unknown', and 'any' as optional in non-strict mode
f2();
>f2() : void
>f2 : (p: undefined) => void
f3();
>f3() : void
>f3 : (p: unknown) => void
f4();
>f4() : void
>f4 : (p: any) => void
o2.m();
>o2.m() : void
>o2.m : (p: undefined) => void
>o2 : I<undefined>
>m : (p: undefined) => void
o3.m();
>o3.m() : void
>o3.m : (p: unknown) => void
>o3 : I<unknown>
>m : (p: unknown) => void
o4.m();
>o4.m() : void
>o4.m : (p: any) => void
>o4 : I<any>
>m : (p: any) => void
=== tests/cases/conformance/expressions/functionCalls/tsfile.ts ===
// current behavior: treat trailing `void` as optional
f1();
>f1() : void
>f1 : (p: void) => void
o1.m();
>o1.m() : void
>o1.m : (p: void) => void
>o1 : I<void>
>m : (p: void) => void
// no change in behavior
f2();
>f2() : void
>f2 : (p: undefined) => void
f3();
>f3() : void
>f3 : (p: unknown) => void
f4();
>f4() : void
>f4 : (p: any) => void
o2.m();
>o2.m() : void
>o2.m : (p: undefined) => void
>o2 : I<undefined>
>m : (p: undefined) => void
o3.m();
>o3.m() : void
>o3.m : (p: unknown) => void
>o3 : I<unknown>
>m : (p: unknown) => void
o4.m();
>o4.m() : void
>o4.m : (p: any) => void
>o4 : I<any>
>m : (p: any) => void
|