Skip to content

Commit 533ce82

Browse files
committed
Add assignability tests for initialised parameters
1 parent eaca169 commit 533ce82

4 files changed

+41
-17
lines changed

tests/baselines/reference/defaultParameterAddsUndefinedWithStrictNullChecks.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,12 @@ function foo2(x = "string", b: number) {
1818

1919
function foo3(x: string | undefined = "string", b: number) {
2020
x.length; // ok, should be string
21+
x = undefined;
2122
}
2223

2324
function foo4(x: string | undefined = undefined, b: number) {
2425
x; // should be string | undefined
26+
x = undefined;
2527
}
2628

2729

@@ -72,10 +74,12 @@ function foo2(x, b) {
7274
function foo3(x, b) {
7375
if (x === void 0) { x = "string"; }
7476
x.length; // ok, should be string
77+
x = undefined;
7578
}
7679
function foo4(x, b) {
7780
if (x === void 0) { x = undefined; }
7881
x; // should be string | undefined
82+
x = undefined;
7983
}
8084
// .d.ts should have `string | undefined` for foo1, foo2, foo3 and foo4
8185
foo1(undefined, 1);

tests/baselines/reference/defaultParameterAddsUndefinedWithStrictNullChecks.symbols

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,24 @@ function foo3(x: string | undefined = "string", b: number) {
6666
>x.length : Symbol(String.length, Decl(lib.d.ts, --, --))
6767
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 17, 14))
6868
>length : Symbol(String.length, Decl(lib.d.ts, --, --))
69+
70+
x = undefined;
71+
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 17, 14))
72+
>undefined : Symbol(undefined)
6973
}
7074

7175
function foo4(x: string | undefined = undefined, b: number) {
72-
>foo4 : Symbol(foo4, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 19, 1))
73-
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 21, 14))
76+
>foo4 : Symbol(foo4, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 20, 1))
77+
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 22, 14))
7478
>undefined : Symbol(undefined)
75-
>b : Symbol(b, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 21, 48))
79+
>b : Symbol(b, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 22, 48))
7680

7781
x; // should be string | undefined
78-
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 21, 14))
82+
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 22, 14))
83+
84+
x = undefined;
85+
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 22, 14))
86+
>undefined : Symbol(undefined)
7987
}
8088

8189

@@ -94,40 +102,40 @@ foo3(undefined, 1);
94102
>undefined : Symbol(undefined)
95103

96104
foo4(undefined, 1);
97-
>foo4 : Symbol(foo4, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 19, 1))
105+
>foo4 : Symbol(foo4, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 20, 1))
98106
>undefined : Symbol(undefined)
99107

100108

101109
function removeUndefinedButNotFalse(x = true) {
102-
>removeUndefinedButNotFalse : Symbol(removeUndefinedButNotFalse, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 31, 19))
103-
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 34, 36))
110+
>removeUndefinedButNotFalse : Symbol(removeUndefinedButNotFalse, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 33, 19))
111+
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 36, 36))
104112

105113
if (x === false) {
106-
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 34, 36))
114+
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 36, 36))
107115

108116
return x;
109-
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 34, 36))
117+
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 36, 36))
110118
}
111119
}
112120

113121
declare const cond: boolean;
114-
>cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 40, 13))
122+
>cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 42, 13))
115123

116124
function removeNothing(y = cond ? true : undefined) {
117-
>removeNothing : Symbol(removeNothing, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 40, 28))
118-
>y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 41, 23))
119-
>cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 40, 13))
125+
>removeNothing : Symbol(removeNothing, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 42, 28))
126+
>y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43, 23))
127+
>cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 42, 13))
120128
>undefined : Symbol(undefined)
121129

122130
if (y !== undefined) {
123-
>y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 41, 23))
131+
>y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43, 23))
124132
>undefined : Symbol(undefined)
125133

126134
if (y === false) {
127-
>y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 41, 23))
135+
>y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43, 23))
128136

129137
return y;
130-
>y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 41, 23))
138+
>y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 43, 23))
131139
}
132140
}
133141
return true;

tests/baselines/reference/defaultParameterAddsUndefinedWithStrictNullChecks.types

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,19 @@ function foo2(x = "string", b: number) {
8686

8787
function foo3(x: string | undefined = "string", b: number) {
8888
>foo3 : (x: string | undefined, b: number) => void
89-
>x : string
89+
>x : string | undefined
9090
>"string" : "string"
9191
>b : number
9292

9393
x.length; // ok, should be string
9494
>x.length : number
9595
>x : string
9696
>length : number
97+
98+
x = undefined;
99+
>x = undefined : undefined
100+
>x : string | undefined
101+
>undefined : undefined
97102
}
98103

99104
function foo4(x: string | undefined = undefined, b: number) {
@@ -104,6 +109,11 @@ function foo4(x: string | undefined = undefined, b: number) {
104109

105110
x; // should be string | undefined
106111
>x : string | undefined
112+
113+
x = undefined;
114+
>x = undefined : undefined
115+
>x : string | undefined
116+
>undefined : undefined
107117
}
108118

109119

tests/cases/compiler/defaultParameterAddsUndefinedWithStrictNullChecks.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@ function foo2(x = "string", b: number) {
1919

2020
function foo3(x: string | undefined = "string", b: number) {
2121
x.length; // ok, should be string
22+
x = undefined;
2223
}
2324

2425
function foo4(x: string | undefined = undefined, b: number) {
2526
x; // should be string | undefined
27+
x = undefined;
2628
}
2729

2830

0 commit comments

Comments
 (0)