@@ -485,7 +485,7 @@ function getStringLiteralCompletionsFromSignature(call: CallLikeExpression, arg:
485
485
}
486
486
}
487
487
isNewIdentifier = isNewIdentifier || ! ! ( type . flags & TypeFlags . String ) ;
488
- return getStringLiteralTypes ( type , uniques ) ;
488
+ return getStringLiteralTypes ( type , uniques , arg . text ) ;
489
489
} ) ;
490
490
return length ( types ) ? { kind : StringLiteralCompletionKind . Types , types, isNewIdentifier } : undefined ;
491
491
}
@@ -517,11 +517,11 @@ function stringLiteralCompletionsForObjectLiteral(checker: TypeChecker, objectLi
517
517
} ;
518
518
}
519
519
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 [ ] {
521
521
if ( ! type ) return emptyArray ;
522
522
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 ;
525
525
}
526
526
527
527
interface NameAndKind {
0 commit comments