From 05c2f6c6c9a07541e90e4debc26febe4e0e89592 Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Thu, 1 Aug 2024 21:33:12 +0300 Subject: [PATCH 1/2] fix(59463): correctly resolve overloads based on function call --- src/services/inlayHints.ts | 7 ++---- ...eline => inlayHintsOverloadCall1.baseline} | 0 .../inlayHintsOverloadCall2.baseline | 18 +++++++++++++++ ...loadCall.ts => inlayHintsOverloadCall1.ts} | 0 .../fourslash/inlayHintsOverloadCall2.ts | 23 +++++++++++++++++++ 5 files changed, 43 insertions(+), 5 deletions(-) rename tests/baselines/reference/{inlayHintsOverloadCall.baseline => inlayHintsOverloadCall1.baseline} (100%) create mode 100644 tests/baselines/reference/inlayHintsOverloadCall2.baseline rename tests/cases/fourslash/{inlayHintsOverloadCall.ts => inlayHintsOverloadCall1.ts} (100%) create mode 100644 tests/cases/fourslash/inlayHintsOverloadCall2.ts diff --git a/src/services/inlayHints.ts b/src/services/inlayHints.ts index a3e54cf237896..ce2fb1e1bf366 100644 --- a/src/services/inlayHints.ts +++ b/src/services/inlayHints.ts @@ -296,11 +296,8 @@ export function provideInlayHints(context: InlayHintsContext): InlayHint[] { return; } - const candidates: Signature[] = []; - const signature = checker.getResolvedSignatureForSignatureHelp(expr, candidates); - if (!signature || !candidates.length) { - return; - } + const signature = checker.getResolvedSignature(expr); + if (signature === undefined) return; let signatureParamPos = 0; for (const originalArg of args) { diff --git a/tests/baselines/reference/inlayHintsOverloadCall.baseline b/tests/baselines/reference/inlayHintsOverloadCall1.baseline similarity index 100% rename from tests/baselines/reference/inlayHintsOverloadCall.baseline rename to tests/baselines/reference/inlayHintsOverloadCall1.baseline diff --git a/tests/baselines/reference/inlayHintsOverloadCall2.baseline b/tests/baselines/reference/inlayHintsOverloadCall2.baseline new file mode 100644 index 0000000000000..37cb8b498eb4d --- /dev/null +++ b/tests/baselines/reference/inlayHintsOverloadCall2.baseline @@ -0,0 +1,18 @@ +// === Inlay Hints === + { n: [1, 2, 3] }, + ^ +{ + "text": "ok_1:", + "position": 195, + "kind": "Parameter", + "whitespaceAfter": true +} + + { + ^ +{ + "text": "ok_2:", + "position": 217, + "kind": "Parameter", + "whitespaceAfter": true +} \ No newline at end of file diff --git a/tests/cases/fourslash/inlayHintsOverloadCall.ts b/tests/cases/fourslash/inlayHintsOverloadCall1.ts similarity index 100% rename from tests/cases/fourslash/inlayHintsOverloadCall.ts rename to tests/cases/fourslash/inlayHintsOverloadCall1.ts diff --git a/tests/cases/fourslash/inlayHintsOverloadCall2.ts b/tests/cases/fourslash/inlayHintsOverloadCall2.ts new file mode 100644 index 0000000000000..2a9a0a91e7587 --- /dev/null +++ b/tests/cases/fourslash/inlayHintsOverloadCall2.ts @@ -0,0 +1,23 @@ +/// + +////type HasID = { +//// id: number; +////} +//// +////type Numbers = { +//// n: number[]; +////} +//// +////declare function func(bad1: number, bad2: HasID): void; +////declare function func(ok_1: Numbers, ok_2: HasID): void; +//// +////func( +//// { n: [1, 2, 3] }, +//// { +//// id: 1, +//// }, +////); + +verify.baselineInlayHints(undefined, { + includeInlayParameterNameHints: "all", +}); From fef62f0020501bb1338fa06598dd6d3b3c8449ba Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Thu, 1 Aug 2024 21:56:28 +0300 Subject: [PATCH 2/2] fix lint errors --- src/services/inlayHints.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/inlayHints.ts b/src/services/inlayHints.ts index ce2fb1e1bf366..f5a29b332b595 100644 --- a/src/services/inlayHints.ts +++ b/src/services/inlayHints.ts @@ -106,7 +106,6 @@ import { PrefixUnaryExpression, PropertyDeclaration, QuotePreference, - Signature, SignatureDeclarationBase, skipParentheses, some,