@@ -88,15 +88,15 @@ function CreateUnionTypeOfEquality(signatureType: ts.TypeNode | undefined, prima
8888}
8989
9090function ResolveParameterBranch ( declarations : ts . ParameterDeclaration [ ] , allDeclarations : ts . ParameterDeclaration [ ] , returnValue : ts . Expression , elseBranch : ts . Statement ) : ts . Statement {
91- const [ firstDeclaration , ...remainingDeclarations ] : ts . ParameterDeclaration [ ] = declarations ;
91+ const [ firstDeclaration , ...remainingDeclarations ] : Array < ts . ParameterDeclaration | undefined > = declarations ;
9292
9393 const condition : ts . Expression = remainingDeclarations . reduce (
9494 ( prevStatement : ts . Expression , declaration : ts . ParameterDeclaration , index : number ) =>
9595 ts . createLogicalAnd (
9696 prevStatement ,
9797 CreateUnionTypeOfEquality ( declaration . type , allDeclarations [ index + 1 ] ) ,
9898 ) ,
99- CreateUnionTypeOfEquality ( firstDeclaration . type , allDeclarations [ 0 ] ) ,
99+ CreateUnionTypeOfEquality ( firstDeclaration ? .type , allDeclarations [ 0 ] ) ,
100100 ) ;
101101
102102 return ts . createIf ( condition , ts . createReturn ( returnValue ) , elseBranch ) ;
@@ -105,16 +105,17 @@ function ResolveParameterBranch(declarations: ts.ParameterDeclaration[], allDecl
105105export function ResolveSignatureElseBranch ( signatures : MethodSignature [ ] , longestParameterList : ts . ParameterDeclaration [ ] ) : ts . Statement {
106106 const transformOverloadsOption : TsAutoMockOverloadOptions = GetTsAutoMockOverloadOptions ( ) ;
107107
108- const [ signature , ...remainingSignatures ] : MethodSignature [ ] = signatures . filter ( ( _ : unknown , i : number ) => transformOverloadsOption || i === 0 ) ;
108+ const [ signature , ...remainingSignatures ] : MethodSignature [ ] = signatures . filter ( ( _ : unknown , notFirst : number ) => transformOverloadsOption || ! notFirst ) ;
109109
110- if ( remainingSignatures . length ) {
111- const elseBranch : ts . Statement = ResolveSignatureElseBranch ( remainingSignatures , longestParameterList ) ;
112-
113- const currentParameters : ts . ParameterDeclaration [ ] = signature . parameters || [ ] ;
114- return ResolveParameterBranch ( currentParameters , longestParameterList , signature . returnValue , elseBranch ) ;
115- } else {
110+ const indistinctSignatures : boolean = signatures . every ( ( sig : MethodSignature ) => ! sig . parameters ?. length ) ;
111+ if ( ! remainingSignatures . length || indistinctSignatures ) {
116112 return ts . createReturn ( signature . returnValue ) ;
117113 }
114+
115+ const elseBranch : ts . Statement = ResolveSignatureElseBranch ( remainingSignatures , longestParameterList ) ;
116+
117+ const currentParameters : ts . ParameterDeclaration [ ] = signature . parameters || [ ] ;
118+ return ResolveParameterBranch ( currentParameters , longestParameterList , signature . returnValue , elseBranch ) ;
118119}
119120
120121function CreateProviderGetMethod ( ) : ts . PropertyAccessExpression {
0 commit comments