Skip to content

Commit 0534f9a

Browse files
committed
1 parent bc1b0fa commit 0534f9a

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
@@ -22367,7 +22367,7 @@ namespace ts {
2236722367
!numCallSignatures && !numConstructSignatures && !(apparentFuncType.flags & (TypeFlags.Union | TypeFlags.Never)) && isTypeAssignableTo(funcType, globalFunctionType);
2236822368
}
2236922369

22370-
function resolveNewExpression(node: NewExpression, candidatesOutArray: Signature[] | undefined, checkMode: CheckMode): Signature {
22370+
function resolveNewExpression(node: NewExpression, candidatesOutArray: Signature[] | undefined, checkMode: CheckMode, contextFlags?: ContextFlags): Signature {
2237122371
if (node.arguments && languageVersion < ScriptTarget.ES5) {
2237222372
const spreadIndex = getSpreadArgumentIndex(node.arguments);
2237322373
if (spreadIndex >= 0) {
@@ -22420,7 +22420,7 @@ namespace ts {
2242022420
return resolveErrorCall(node);
2242122421
}
2242222422

22423-
return resolveCall(node, constructSignatures, candidatesOutArray, checkMode);
22423+
return resolveCall(node, constructSignatures, candidatesOutArray, checkMode, /*fallbackError*/ undefined, contextFlags);
2242422424
}
2242522425

2242622426
// If expressionType's apparent type is an object type with no construct signatures but
@@ -22429,7 +22429,7 @@ namespace ts {
2242922429
// operation is Any. It is an error to have a Void this type.
2243022430
const callSignatures = getSignaturesOfType(expressionType, SignatureKind.Call);
2243122431
if (callSignatures.length) {
22432-
const signature = resolveCall(node, callSignatures, candidatesOutArray, checkMode);
22432+
const signature = resolveCall(node, callSignatures, candidatesOutArray, checkMode, /*fallbackError*/ undefined, contextFlags);
2243322433
if (!noImplicitAny) {
2243422434
if (signature.declaration && !isJSConstructor(signature.declaration) && getReturnTypeOfSignature(signature) !== voidType) {
2243522435
error(node, Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword);
@@ -22780,7 +22780,7 @@ namespace ts {
2278022780
case SyntaxKind.CallExpression:
2278122781
return resolveCallExpression(node, candidatesOutArray, checkMode, contextFlags);
2278222782
case SyntaxKind.NewExpression:
22783-
return resolveNewExpression(node, candidatesOutArray, checkMode);
22783+
return resolveNewExpression(node, candidatesOutArray, checkMode, contextFlags);
2278422784
case SyntaxKind.TaggedTemplateExpression:
2278522785
return resolveTaggedTemplateExpression(node, candidatesOutArray, checkMode);
2278622786
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)