diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 8104f11339223..17f14e30737cf 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -717,6 +717,8 @@ namespace FourSlash { public verifyCompletionEntryDetails(entryName: string, expectedText: string, expectedDocumentation?: string, kind?: string) { const details = this.getCompletionEntryDetails(entryName); + assert(details, "no completion entry available"); + assert.equal(ts.displayPartsToString(details.displayParts), expectedText, this.assertionMessageAtLastKnownMarker("completion entry details text")); if (expectedDocumentation !== undefined) { diff --git a/src/services/services.ts b/src/services/services.ts index d051a4378e490..70cc7e2e08d16 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -4141,7 +4141,7 @@ namespace ts { if (!uniqueNames[name]) { uniqueNames[name] = name; - const displayName = getCompletionEntryDisplayName(name, target, /*performCharacterChecks*/ true); + const displayName = getCompletionEntryDisplayName(unescapeIdentifier(name), target, /*performCharacterChecks*/ true); if (displayName) { const entry = { name: displayName, diff --git a/tests/cases/fourslash/codeCompletionEscaping.ts b/tests/cases/fourslash/codeCompletionEscaping.ts new file mode 100644 index 0000000000000..5061a87e5b636 --- /dev/null +++ b/tests/cases/fourslash/codeCompletionEscaping.ts @@ -0,0 +1,9 @@ +/// + +// @Filename: a.js +// @allowJs: true +////___foo; __foo;/**/ + +goTo.marker(); +verify.completionListContains("__foo", undefined, undefined, "warning"); +verify.completionListContains("___foo", undefined, undefined, "warning");