From b12d5c5dc5106a9ee040cbf4acc32f80a8032c7f Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Wed, 10 Nov 2021 00:50:26 +0200 Subject: [PATCH] fix(46605): show completions in object literal parameters (#46743) --- src/services/completions.ts | 1 + .../completionListInObjectLiteral6.ts | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 tests/cases/fourslash/completionListInObjectLiteral6.ts diff --git a/src/services/completions.ts b/src/services/completions.ts index 9b2747db14d..9ac50ed817c 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -3529,6 +3529,7 @@ namespace ts.Completions { // function f(x: T) {} // f({ abc/**/: "" }) // `abc` is a member of `T` but only because it declares itself function hasDeclarationOtherThanSelf(member: Symbol) { + if (!length(member.declarations)) return true; return some(member.declarations, decl => decl.parent !== obj); } } diff --git a/tests/cases/fourslash/completionListInObjectLiteral6.ts b/tests/cases/fourslash/completionListInObjectLiteral6.ts new file mode 100644 index 00000000000..296b3c01125 --- /dev/null +++ b/tests/cases/fourslash/completionListInObjectLiteral6.ts @@ -0,0 +1,22 @@ +/// + +////const foo = { +//// a: "a", +//// b: "b" +////}; +////function fn(obj: T, events: { [Key in `on_${string & keyof T}`]?: Key }) {} +//// +////fn(foo, { +//// /*1*/ +////}) +////fn({ a: "a", b: "b" }, { +//// /*2*/ +////}) + +verify.completions({ + marker: ["1", "2"], + exact: [ + { name: "on_a", sortText: completion.SortText.OptionalMember }, + { name: "on_b", sortText: completion.SortText.OptionalMember } + ] +});