From d045f18928f33bdae2c761615d04cf8aeffd90fc Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Fri, 4 Aug 2023 01:57:51 +0300 Subject: [PATCH] fix(54954): Javascript Intellisense adding "this." to function declaration (#55119) --- src/services/completions.ts | 5 + ...mpletionsAfterPropertyNameInClass.baseline | 246 ++++++++++++++++++ .../completionsAfterPropertyNameInClass.ts | 14 + 3 files changed, 265 insertions(+) create mode 100644 tests/baselines/reference/completionsAfterPropertyNameInClass.baseline create mode 100644 tests/cases/fourslash/completionsAfterPropertyNameInClass.ts diff --git a/src/services/completions.ts b/src/services/completions.ts index 24693da2205..33ed264c3b6 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -5298,6 +5298,11 @@ function tryGetObjectTypeDeclarationCompletionContainer(sourceFile: SourceFile, return cls; } break; + case SyntaxKind.PrivateIdentifier: + if (tryCast(location.parent, isPropertyDeclaration)) { + return findAncestor(location, isClassLike); + } + break; case SyntaxKind.Identifier: { const originalKeywordKind = identifierToKeywordKind(location as Identifier); if (originalKeywordKind) { diff --git a/tests/baselines/reference/completionsAfterPropertyNameInClass.baseline b/tests/baselines/reference/completionsAfterPropertyNameInClass.baseline new file mode 100644 index 00000000000..b19974e4161 --- /dev/null +++ b/tests/baselines/reference/completionsAfterPropertyNameInClass.baseline @@ -0,0 +1,246 @@ +=== /a.js === +// class C1 { +// async #fo +// ^ +// | ---------------------------------------------------------------------- +// | accessor +// | async +// | constructor +// | get +// | set +// | static +// | (warning) C1 +// | (warning) C2 +// | (warning) fo +// | ---------------------------------------------------------------------- +// } +// class C2 { +// async fo +// ^^ +// | ---------------------------------------------------------------------- +// | accessor +// | async +// | constructor +// | get +// | set +// | static +// | (warning) C1 +// | (warning) C2 +// | ---------------------------------------------------------------------- +// } + +[ + { + "marker": { + "fileName": "/a.js", + "position": 24, + "name": "a" + }, + "item": { + "flags": 0, + "isGlobalCompletion": false, + "isMemberCompletion": true, + "isNewIdentifierLocation": true, + "entries": [ + { + "name": "accessor", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "accessor", + "kind": "keyword" + } + ] + }, + { + "name": "async", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "async", + "kind": "keyword" + } + ] + }, + { + "name": "constructor", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "constructor", + "kind": "keyword" + } + ] + }, + { + "name": "get", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "get", + "kind": "keyword" + } + ] + }, + { + "name": "set", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "set", + "kind": "keyword" + } + ] + }, + { + "name": "static", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "static", + "kind": "keyword" + } + ] + }, + { + "name": "C1", + "kind": "warning", + "kindModifiers": "", + "sortText": "18", + "isFromUncheckedFile": true + }, + { + "name": "C2", + "kind": "warning", + "kindModifiers": "", + "sortText": "18", + "isFromUncheckedFile": true + }, + { + "name": "fo", + "kind": "warning", + "kindModifiers": "", + "sortText": "18", + "isFromUncheckedFile": true + } + ] + } + }, + { + "marker": { + "fileName": "/a.js", + "position": 50, + "name": "b" + }, + "item": { + "flags": 0, + "isGlobalCompletion": false, + "isMemberCompletion": true, + "isNewIdentifierLocation": true, + "optionalReplacementSpan": { + "start": 48, + "length": 2 + }, + "entries": [ + { + "name": "accessor", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "accessor", + "kind": "keyword" + } + ] + }, + { + "name": "async", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "async", + "kind": "keyword" + } + ] + }, + { + "name": "constructor", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "constructor", + "kind": "keyword" + } + ] + }, + { + "name": "get", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "get", + "kind": "keyword" + } + ] + }, + { + "name": "set", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "set", + "kind": "keyword" + } + ] + }, + { + "name": "static", + "kind": "keyword", + "kindModifiers": "", + "sortText": "15", + "displayParts": [ + { + "text": "static", + "kind": "keyword" + } + ] + }, + { + "name": "C1", + "kind": "warning", + "kindModifiers": "", + "sortText": "18", + "isFromUncheckedFile": true + }, + { + "name": "C2", + "kind": "warning", + "kindModifiers": "", + "sortText": "18", + "isFromUncheckedFile": true + } + ] + } + } +] \ No newline at end of file diff --git a/tests/cases/fourslash/completionsAfterPropertyNameInClass.ts b/tests/cases/fourslash/completionsAfterPropertyNameInClass.ts new file mode 100644 index 00000000000..296fa90d43e --- /dev/null +++ b/tests/cases/fourslash/completionsAfterPropertyNameInClass.ts @@ -0,0 +1,14 @@ +/// + +// @allowJs: true +// @filename: /a.js +////class C1 { +//// async #fo/*a*/ +////} +////class C2 { +//// async fo/*b*/ +////} + +verify.baselineCompletions({ + includeInsertTextCompletions: true, +});