@@ -539,23 +539,25 @@ namespace ts.Completions {
539539 ) ;
540540
541541 if ( keywordFilters !== KeywordCompletionFilters . None ) {
542- const entryNames = new Set ( entries . map ( e => e . name ) ) ;
543542 for ( const keywordEntry of getKeywordCompletions ( keywordFilters , ! insideJsDocTagTypeExpression && isSourceFileJS ( sourceFile ) ) ) {
544- if ( isTypeOnlyLocation && isTypeKeyword ( stringToToken ( keywordEntry . name ) ! ) || ! entryNames . has ( keywordEntry . name ) ) {
543+ if ( isTypeOnlyLocation && isTypeKeyword ( stringToToken ( keywordEntry . name ) ! ) || ! uniqueNames . has ( keywordEntry . name ) ) {
544+ uniqueNames . add ( keywordEntry . name )
545545 insertSorted ( entries , keywordEntry , compareCompletionEntries , /*allowDuplicates*/ true ) ;
546546 }
547547 }
548548 }
549549
550- const entryNames = new Set ( entries . map ( e => e . name ) ) ;
551550 for ( const keywordEntry of getContextualKeywords ( contextToken , position ) ) {
552- if ( ! entryNames . has ( keywordEntry . name ) ) {
551+ if ( ! uniqueNames . has ( keywordEntry . name ) ) {
552+ uniqueNames . add ( keywordEntry . name )
553553 insertSorted ( entries , keywordEntry , compareCompletionEntries , /*allowDuplicates*/ true ) ;
554554 }
555555 }
556556
557557 for ( const literal of literals ) {
558- insertSorted ( entries , createCompletionEntryForLiteral ( sourceFile , preferences , literal ) , compareCompletionEntries , /*allowDuplicates*/ true ) ;
558+ const literalEntry = createCompletionEntryForLiteral ( sourceFile , preferences , literal ) ;
559+ uniqueNames . add ( literalEntry . name )
560+ insertSorted ( entries , literalEntry , compareCompletionEntries , /*allowDuplicates*/ true ) ;
559561 }
560562
561563 if ( ! isChecked ) {
0 commit comments