@@ -485,7 +485,7 @@ function getStringLiteralCompletionsFromSignature(call: CallLikeExpression, arg:
485485 }
486486 }
487487 isNewIdentifier = isNewIdentifier || ! ! ( type . flags & TypeFlags . String ) ;
488- return getStringLiteralTypes ( type , uniques ) ;
488+ return getStringLiteralTypes ( type , uniques , arg . text ) ;
489489 } ) ;
490490 return length ( types ) ? { kind : StringLiteralCompletionKind . Types , types, isNewIdentifier } : undefined ;
491491}
@@ -517,11 +517,11 @@ function stringLiteralCompletionsForObjectLiteral(checker: TypeChecker, objectLi
517517 } ;
518518}
519519
520- function getStringLiteralTypes ( type : Type | undefined , uniques = new Map < string , true > ( ) ) : readonly StringLiteralType [ ] {
520+ function getStringLiteralTypes ( type : Type | undefined , uniques = new Map < string , true > ( ) , alreadyTyped = "" ) : readonly StringLiteralType [ ] {
521521 if ( ! type ) return emptyArray ;
522522 type = skipConstraint ( type ) ;
523- return type . isUnion ( ) ? flatMap ( type . types , t => getStringLiteralTypes ( t , uniques ) ) :
524- type . isStringLiteral ( ) && ! ( type . flags & TypeFlags . EnumLiteral ) && addToSeen ( uniques , type . value ) ? [ type ] : emptyArray ;
523+ return type . isUnion ( ) ? flatMap ( type . types , t => getStringLiteralTypes ( t , uniques , alreadyTyped ) ) :
524+ type . isStringLiteral ( ) && ! ( type . flags & TypeFlags . EnumLiteral ) && type . value . startsWith ( alreadyTyped ) && addToSeen ( uniques , type . value ) ? [ type ] : emptyArray ;
525525}
526526
527527interface NameAndKind {
0 commit comments