@@ -3551,10 +3551,22 @@ module ts {
3551
3551
3552
3552
function getSignatureHelpItemsFromCandidateInfo ( candidates : Signature [ ] , bestSignature : Signature , argumentListOrTypeArgumentList : Node ) : SignatureHelpItems {
3553
3553
var items = map ( candidates , candidateSignature => {
3554
- var parameterHelpItems = candidateSignature . parameters . length === 0 ? emptyArray : map ( candidateSignature . parameters , p => {
3555
- return new SignatureHelpParameter ( p . name , "" , "" , false ) ;
3554
+ var parameters = candidateSignature . parameters ;
3555
+ var parameterHelpItems = parameters . length === 0 ? emptyArray : map ( parameters , p => {
3556
+ var display = p . name ;
3557
+ if ( candidateSignature . hasRestParameter && parameters [ parameters . length - 1 ] === p ) {
3558
+ display = "..." + display ;
3559
+ }
3560
+ var isOptional = ! ! ( p . valueDeclaration . flags & NodeFlags . QuestionMark ) ;
3561
+ if ( isOptional ) {
3562
+ display += "?" ;
3563
+ }
3564
+ display += ": " + typeInfoResolver . typeToString ( typeInfoResolver . getTypeOfSymbol ( p ) ) ;
3565
+ return new SignatureHelpParameter ( p . name , "" , display , isOptional ) ;
3556
3566
} ) ;
3557
- return new SignatureHelpItem ( false , "" , "" , "" , parameterHelpItems , "" ) ;
3567
+ var prefix = ( candidateSignature . declaration . name . text || "" ) + "(" ;
3568
+ var suffix = "): " + typeInfoResolver . typeToString ( candidateSignature . getReturnType ( ) ) ;
3569
+ return new SignatureHelpItem ( candidateSignature . hasRestParameter , prefix , suffix , ", " , parameterHelpItems , "" ) ;
3558
3570
} ) ;
3559
3571
var selectedItemIndex = candidates . indexOf ( bestSignature ) ;
3560
3572
if ( selectedItemIndex < 0 ) {
0 commit comments