From fedcd3a1b41405a067129e5d31e138b5cce2e8bb Mon Sep 17 00:00:00 2001 From: Wenlu Wang Date: Fri, 20 Jul 2018 23:25:16 +0800 Subject: [PATCH] improve completions keyword for function like body (#25824) --- src/services/completions.ts | 6 +++++- tests/cases/fourslash/completionInFunctionLikeBody.ts | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/services/completions.ts b/src/services/completions.ts index cf496e6e55e..2c0bb0a8775 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 a4c5e92dde9..76e1249e760 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(); +