@@ -51,13 +51,36 @@ function foo2(x = "string", b: number) {
51
51
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 13, 14))
52
52
>b : Symbol(b, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 13, 27))
53
53
54
- x.length;
54
+ x.length; // ok, should be string
55
55
>x.length : Symbol(String.length, Decl(lib.d.ts, --, --))
56
56
>x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 13, 14))
57
57
>length : Symbol(String.length, Decl(lib.d.ts, --, --))
58
58
}
59
59
60
- // .d.ts should have `T | undefined` for foo1 and foo2
60
+ function foo3(x: string | undefined = "string", b: number) {
61
+ >foo3 : Symbol(foo3, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 15, 1))
62
+ >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 17, 14))
63
+ >b : Symbol(b, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 17, 47))
64
+
65
+ x.length; // ok, should be string
66
+ >x.length : Symbol(String.length, Decl(lib.d.ts, --, --))
67
+ >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 17, 14))
68
+ >length : Symbol(String.length, Decl(lib.d.ts, --, --))
69
+ }
70
+
71
+ 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))
74
+ >undefined : Symbol(undefined)
75
+ >b : Symbol(b, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 21, 48))
76
+
77
+ x; // should be string | undefined
78
+ >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 21, 14))
79
+ }
80
+
81
+
82
+
83
+ // .d.ts should have `string | undefined` for foo1, foo2, foo3 and foo4
61
84
foo1(undefined, 1);
62
85
>foo1 : Symbol(foo1, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 7, 36))
63
86
>undefined : Symbol(undefined)
@@ -66,37 +89,45 @@ foo2(undefined, 1);
66
89
>foo2 : Symbol(foo2, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 11, 1))
67
90
>undefined : Symbol(undefined)
68
91
92
+ foo3(undefined, 1);
93
+ >foo3 : Symbol(foo3, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 15, 1))
94
+ >undefined : Symbol(undefined)
95
+
96
+ foo4(undefined, 1);
97
+ >foo4 : Symbol(foo4, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 19, 1))
98
+ >undefined : Symbol(undefined)
99
+
69
100
70
101
function removeUndefinedButNotFalse(x = true) {
71
- >removeUndefinedButNotFalse : Symbol(removeUndefinedButNotFalse, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 19 , 19))
72
- >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 22 , 36))
102
+ >removeUndefinedButNotFalse : Symbol(removeUndefinedButNotFalse, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 31 , 19))
103
+ >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 34 , 36))
73
104
74
105
if (x === false) {
75
- >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 22 , 36))
106
+ >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 34 , 36))
76
107
77
108
return x;
78
- >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 22 , 36))
109
+ >x : Symbol(x, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 34 , 36))
79
110
}
80
111
}
81
112
82
113
declare const cond: boolean;
83
- >cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 28 , 13))
114
+ >cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 40 , 13))
84
115
85
116
function removeNothing(y = cond ? true : undefined) {
86
- >removeNothing : Symbol(removeNothing, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 28 , 28))
87
- >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 29 , 23))
88
- >cond : Symbol(cond, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 28 , 13))
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))
89
120
>undefined : Symbol(undefined)
90
121
91
122
if (y !== undefined) {
92
- >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 29 , 23))
123
+ >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 41 , 23))
93
124
>undefined : Symbol(undefined)
94
125
95
126
if (y === false) {
96
- >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 29 , 23))
127
+ >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 41 , 23))
97
128
98
129
return y;
99
- >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 29 , 23))
130
+ >y : Symbol(y, Decl(defaultParameterAddsUndefinedWithStrictNullChecks.ts, 41 , 23))
100
131
}
101
132
}
102
133
return true;
0 commit comments