diff --git a/src/services/completions.ts b/src/services/completions.ts index cf496e6e55e8c..2c0bb0a877556 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -2125,7 +2125,7 @@ namespace ts.Completions { case KeywordCompletionFilters.ConstructorParameterKeywords: return isParameterPropertyModifier(kind); case KeywordCompletionFilters.FunctionLikeBodyKeywords: - return !isClassMemberCompletionKeyword(kind); + return isFunctionLikeBodyKeyword(kind); case KeywordCompletionFilters.TypeKeywords: return isTypeKeyword(kind); default: @@ -2151,6 +2151,10 @@ namespace ts.Completions { } } + function isFunctionLikeBodyKeyword(kind: SyntaxKind) { + return kind === SyntaxKind.AsyncKeyword || !isClassMemberCompletionKeyword(kind); + } + function keywordForNode(node: Node): SyntaxKind { return isIdentifier(node) ? node.originalKeywordKind || SyntaxKind.Unknown : node.kind; } diff --git a/tests/cases/fourslash/completionInFunctionLikeBody.ts b/tests/cases/fourslash/completionInFunctionLikeBody.ts index a4c5e92dde970..76e1249e760e0 100644 --- a/tests/cases/fourslash/completionInFunctionLikeBody.ts +++ b/tests/cases/fourslash/completionInFunctionLikeBody.ts @@ -15,6 +15,7 @@ goTo.marker("1"); +verify.completionListContains("async", "async", /*documentation*/ undefined, "keyword"); verify.not.completionListContains("public", "public", /*documentation*/ undefined, "keyword"); verify.not.completionListContains("private", "private", /*documentation*/ undefined, "keyword"); verify.not.completionListContains("protected", "protected", /*documentation*/ undefined, "keyword"); @@ -26,6 +27,7 @@ verify.not.completionListContains("get", "get", /*documentation*/ undefined, "ke verify.not.completionListContains("set", "set", /*documentation*/ undefined, "keyword"); goTo.marker("2"); +verify.completionListContains("async", "async", /*documentation*/ undefined, "keyword"); verify.not.completionListContains("public", "public", /*documentation*/ undefined, "keyword"); verify.not.completionListContains("private", "private", /*documentation*/ undefined, "keyword"); verify.not.completionListContains("protected", "protected", /*documentation*/ undefined, "keyword"); @@ -41,3 +43,4 @@ verify.completionListContainsClassElementKeywords(); goTo.marker("4"); verify.completionListContainsClassElementKeywords(); +