Remove escaped names of well known symbols from string completions

This commit is contained in:
Ron Buckton 2017-10-21 17:17:02 -07:00
parent ceba50750b
commit a31ce789f4
3 changed files with 30 additions and 8 deletions

View file

@ -385,6 +385,12 @@ namespace ts {
return (identifier.length >= 2 && identifier.charCodeAt(0) === CharacterCodes._ && identifier.charCodeAt(1) === CharacterCodes._ ? "_" + identifier : identifier) as __String;
}
export function isEscapedNameOfWellKnownSymbol(escapedName: __String) {
return (escapedName as string).charCodeAt(0) === CharacterCodes._ &&
(escapedName as string).charCodeAt(1) === CharacterCodes._ &&
(escapedName as string).charCodeAt(2) === CharacterCodes.at;
}
/**
* @deprecated Use `id.escapedText` to get the escaped text of an Identifier.
* @param identifier The identifier to escape

View file

@ -167,15 +167,17 @@ namespace ts.Completions {
const uniqueNames = createMap<true>();
if (symbols) {
for (const symbol of symbols) {
const entry = createCompletionEntry(symbol, location, performCharacterChecks, typeChecker, target, allowStringLiteral);
if (entry) {
const id = entry.name;
if (!uniqueNames.has(id)) {
if (symbolToOriginInfoMap && symbolToOriginInfoMap[getUniqueSymbolId(symbol, typeChecker)]) {
entry.hasAction = true;
if (!isEscapedNameOfWellKnownSymbol(symbol.escapedName)) {
const entry = createCompletionEntry(symbol, location, performCharacterChecks, typeChecker, target, allowStringLiteral);
if (entry) {
const id = entry.name;
if (!uniqueNames.has(id)) {
if (symbolToOriginInfoMap && symbolToOriginInfoMap[getUniqueSymbolId(symbol, typeChecker)]) {
entry.hasAction = true;
}
entries.push(entry);
uniqueNames.set(id, true);
}
entries.push(entry);
uniqueNames.set(id, true);
}
}
}

View file

@ -0,0 +1,14 @@
/// <reference path='fourslash.ts'/>
////interface SymbolConstructor {
//// readonly species: symbol;
////}
////var Symbol: SymbolConstructor;
////interface PromiseConstructor {
//// [Symbol.species]: PromiseConstructor;
////}
////var Promise: PromiseConstructor;
////Promise["/*1*/"];
goTo.marker('1');
verify.not.completionListContains("__@species");