Skip to content

Commit d674ee0

Browse files
committed
1 parent 5c561ea commit d674ee0

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/compiler/checker.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22431,7 +22431,7 @@ namespace ts {
2243122431
!numCallSignatures && !numConstructSignatures && !(apparentFuncType.flags & (TypeFlags.Union | TypeFlags.Never)) && isTypeAssignableTo(funcType, globalFunctionType);
2243222432
}
2243322433

22434-
function resolveNewExpression(node: NewExpression, candidatesOutArray: Signature[] | undefined, checkMode: CheckMode): Signature {
22434+
function resolveNewExpression(node: NewExpression, candidatesOutArray: Signature[] | undefined, checkMode: CheckMode, contextFlags?: ContextFlags): Signature {
2243522435
if (node.arguments && languageVersion < ScriptTarget.ES5) {
2243622436
const spreadIndex = getSpreadArgumentIndex(node.arguments);
2243722437
if (spreadIndex >= 0) {
@@ -22484,7 +22484,7 @@ namespace ts {
2248422484
return resolveErrorCall(node);
2248522485
}
2248622486

22487-
return resolveCall(node, constructSignatures, candidatesOutArray, checkMode);
22487+
return resolveCall(node, constructSignatures, candidatesOutArray, checkMode, /*fallbackError*/ undefined, contextFlags);
2248822488
}
2248922489

2249022490
// If expressionType's apparent type is an object type with no construct signatures but
@@ -22493,7 +22493,7 @@ namespace ts {
2249322493
// operation is Any. It is an error to have a Void this type.
2249422494
const callSignatures = getSignaturesOfType(expressionType, SignatureKind.Call);
2249522495
if (callSignatures.length) {
22496-
const signature = resolveCall(node, callSignatures, candidatesOutArray, checkMode);
22496+
const signature = resolveCall(node, callSignatures, candidatesOutArray, checkMode, /*fallbackError*/ undefined, contextFlags);
2249722497
if (!noImplicitAny) {
2249822498
if (signature.declaration && !isJSConstructor(signature.declaration) && getReturnTypeOfSignature(signature) !== voidType) {
2249922499
error(node, Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword);
@@ -22844,7 +22844,7 @@ namespace ts {
2284422844
case SyntaxKind.CallExpression:
2284522845
return resolveCallExpression(node, candidatesOutArray, checkMode, contextFlags);
2284622846
case SyntaxKind.NewExpression:
22847-
return resolveNewExpression(node, candidatesOutArray, checkMode);
22847+
return resolveNewExpression(node, candidatesOutArray, checkMode, contextFlags);
2284822848
case SyntaxKind.TaggedTemplateExpression:
2284922849
return resolveTaggedTemplateExpression(node, candidatesOutArray, checkMode);
2285022850
case SyntaxKind.Decorator:
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/// <reference path="fourslash.ts" />
2+
// @strict: true
3+
4+
//// interface Options {
5+
//// someFunction?: () => string
6+
//// anotherFunction?: () => string
7+
//// }
8+
////
9+
//// export class Clazz<T extends Options> {
10+
//// constructor(public a: T) {}
11+
//// }
12+
////
13+
//// new Clazz({ /*1*/ })
14+
15+
verify.completions({ marker: '1', includes: ['someFunction', 'anotherFunction'] })
16+

0 commit comments

Comments
 (0)