Skip to content

Commit 01a9e4f

Browse files
committed
isOptionalParameter says unused IIFE arguments are optional
Related to adding undefined, though not strictly the same, this change adds '?' to unused IIFE parameters in quick info.
1 parent e96b17b commit 01a9e4f

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

src/compiler/checker.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5145,6 +5145,12 @@ namespace ts {
51455145
Debug.assert(parameterIndex >= 0);
51465146
return parameterIndex >= signature.minArgumentCount;
51475147
}
5148+
const iife = getImmediatelyInvokedFunctionExpression(node.parent);
5149+
if (iife) {
5150+
return !node.type &&
5151+
!node.dotDotDotToken &&
5152+
indexOf((node.parent as SignatureDeclaration).parameters, node) >= iife.arguments.length;
5153+
}
51485154

51495155
return false;
51505156
}
@@ -14026,7 +14032,7 @@ namespace ts {
1402614032
return getTypeOfSymbol(symbol);
1402714033
}
1402814034
}
14029-
14035+
1403014036
function getTypeAtPosition(signature: Signature, pos: number): Type {
1403114037
return signature.hasRestParameter ?
1403214038
pos < signature.parameters.length - 1 ? getTypeOfSymbol(signature.parameters[pos]) : getRestTypeOfSignature(signature) :

tests/baselines/reference/contextuallyTypedIife.types

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -253,17 +253,17 @@ let eleven = (o => o.a(11))({ a: function(n) { return n; } });
253253
// missing arguments
254254
(function(x, undefined) { return x; })(42);
255255
>(function(x, undefined) { return x; })(42) : number
256-
>(function(x, undefined) { return x; }) : (x: number, undefined: any) => number
257-
>function(x, undefined) { return x; } : (x: number, undefined: any) => number
256+
>(function(x, undefined) { return x; }) : (x: number, undefined?: any) => number
257+
>function(x, undefined) { return x; } : (x: number, undefined?: any) => number
258258
>x : number
259259
>undefined : any
260260
>x : number
261261
>42 : 42
262262

263263
((x, y, z) => 42)();
264264
>((x, y, z) => 42)() : number
265-
>((x, y, z) => 42) : (x: any, y: any, z: any) => number
266-
>(x, y, z) => 42 : (x: any, y: any, z: any) => number
265+
>((x, y, z) => 42) : (x?: any, y?: any, z?: any) => number
266+
>(x, y, z) => 42 : (x?: any, y?: any, z?: any) => number
267267
>x : any
268268
>y : any
269269
>z : any
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/// <reference path='fourslash.ts'/>
2+
// @strictNullChecks: true
3+
////var iife = (function foo/*1*/(x, y) { return x })(12);
4+
5+
verify.quickInfoAt('1', '(local function) foo(x: number, y?: undefined): number');

0 commit comments

Comments
 (0)