diff --git a/src/services/services.ts b/src/services/services.ts index 8b4986e8ba4..a91280380bf 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2733,7 +2733,12 @@ module ts { var useConstructSignatures = callExpression.kind === SyntaxKind.NewExpression || callExpression.func.kind === SyntaxKind.SuperKeyword; var allSignatures = useConstructSignatures ? type.getConstructSignatures() : type.getCallSignatures(); - if (contains(allSignatures, signature.target || signature)) { + if (!contains(allSignatures, signature.target || signature)) { + // Get the first signature if there + signature = allSignatures.length ? allSignatures[0] : undefined; + } + + if (signature) { if (useConstructSignatures && (symbolFlags & SymbolFlags.Class)) { // Constructor symbolKind = ScriptElementKind.constructorImplementationElement; diff --git a/tests/cases/fourslash_old/automaticConstructorToggling.ts b/tests/cases/fourslash/automaticConstructorToggling.ts similarity index 73% rename from tests/cases/fourslash_old/automaticConstructorToggling.ts rename to tests/cases/fourslash/automaticConstructorToggling.ts index 18cf990988a..9f430827854 100644 --- a/tests/cases/fourslash_old/automaticConstructorToggling.ts +++ b/tests/cases/fourslash/automaticConstructorToggling.ts @@ -26,7 +26,7 @@ goTo.marker('Csig'); verify.quickInfoIs("(constructor) C(val: string): C"); goTo.marker('Dsig'); -verify.quickInfoIs("(constructor) D(val: string): D"); +verify.quickInfoIs("(constructor) D(val: T): D"); // Cannot resolve signature goTo.marker(C); edit.deleteAtCaret('constructor(val: T) { }'.length); @@ -37,10 +37,10 @@ goTo.marker('Bsig'); verify.quickInfoIs("(constructor) B(val: string): B"); goTo.marker('Csig'); -verify.quickInfoIs("(constructor) C<{}>(): C<{}>"); +verify.quickInfoIs("(constructor) C(): C"); // Cannot resolve signature goTo.marker('Dsig'); -verify.quickInfoIs("(constructor) D(val: string): D"); +verify.quickInfoIs("(constructor) D(val: T): D"); // Cannot resolve signature goTo.marker(D); edit.deleteAtCaret("val: T".length); @@ -51,7 +51,7 @@ goTo.marker('Bsig'); verify.quickInfoIs("(constructor) B(val: string): B"); goTo.marker('Csig'); -verify.quickInfoIs("(constructor) C<{}>(): C<{}>"); +verify.quickInfoIs("(constructor) C(): C"); // Cannot resolve signature goTo.marker('Dsig'); verify.quickInfoIs("(constructor) D(): D"); \ No newline at end of file diff --git a/tests/cases/fourslash/commentsOverloads.ts b/tests/cases/fourslash/commentsOverloads.ts index 3cc7707de5a..e17a9b58f04 100644 --- a/tests/cases/fourslash/commentsOverloads.ts +++ b/tests/cases/fourslash/commentsOverloads.ts @@ -310,11 +310,11 @@ goTo.marker('18'); verify.completionListContains('i1', 'interface i1', ''); verify.completionListContains('i1_i', '(var) i1_i: new i1(b: number) => any (+ 1 overload(s))', ''); verify.completionListContains('i2', 'interface i2', ''); -verify.completionListContains('i2_i', '(var) i2_i: i2', ''); +verify.completionListContains('i2_i', '(var) i2_i: new i2(a: string) => any (+ 1 overload(s))', ''); verify.completionListContains('i3', 'interface i3', ''); -verify.completionListContains('i3_i', '(var) i3_i: i3', ''); +verify.completionListContains('i3_i', '(var) i3_i: new i3(a: string) => any (+ 1 overload(s))', 'new 1'); verify.completionListContains('i4', 'interface i4', ''); -verify.completionListContains('i4_i', '(var) i4_i: i4', ''); +verify.completionListContains('i4_i', '(var) i4_i: new i4(a: string) => any (+ 1 overload(s))', ''); goTo.marker('19'); verify.currentSignatureHelpDocCommentIs("");