@@ -90,15 +90,15 @@ function CreateUnionTypeOfEquality(signatureType: ts.TypeNode | undefined, prima
9090}
9191
9292function ResolveParameterBranch ( declarations : ts . ParameterDeclaration [ ] , allDeclarations : ts . ParameterDeclaration [ ] , returnValue : ts . Expression , elseBranch : ts . Statement ) : ts . Statement {
93- const [ firstDeclaration , ...remainingDeclarations ] : ts . ParameterDeclaration [ ] = declarations ;
93+ const [ firstDeclaration , ...remainingDeclarations ] : Array < ts . ParameterDeclaration | undefined > = declarations ;
9494
9595 const condition : ts . Expression = remainingDeclarations . reduce (
9696 ( prevStatement : ts . Expression , declaration : ts . ParameterDeclaration , index : number ) =>
9797 ts . createLogicalAnd (
9898 prevStatement ,
9999 CreateUnionTypeOfEquality ( declaration . type , allDeclarations [ index + 1 ] ) ,
100100 ) ,
101- CreateUnionTypeOfEquality ( firstDeclaration . type , allDeclarations [ 0 ] ) ,
101+ CreateUnionTypeOfEquality ( firstDeclaration ? .type , allDeclarations [ 0 ] ) ,
102102 ) ;
103103
104104 return ts . createIf ( condition , ts . createReturn ( returnValue ) , elseBranch ) ;
@@ -107,16 +107,17 @@ function ResolveParameterBranch(declarations: ts.ParameterDeclaration[], allDecl
107107export function ResolveSignatureElseBranch ( signatures : MethodSignature [ ] , longestParameterList : ts . ParameterDeclaration [ ] ) : ts . Statement {
108108 const transformOverloadsOption : TsAutoMockOverloadOptions = GetTsAutoMockOverloadOptions ( ) ;
109109
110- const [ signature , ...remainingSignatures ] : MethodSignature [ ] = signatures . filter ( ( _ : unknown , i : number ) => transformOverloadsOption || i === 0 ) ;
110+ const [ signature , ...remainingSignatures ] : MethodSignature [ ] = signatures . filter ( ( _ : unknown , notFirst : number ) => transformOverloadsOption || ! notFirst ) ;
111111
112- if ( remainingSignatures . length ) {
113- const elseBranch : ts . Statement = ResolveSignatureElseBranch ( remainingSignatures , longestParameterList ) ;
114-
115- const currentParameters : ts . ParameterDeclaration [ ] = signature . parameters || [ ] ;
116- return ResolveParameterBranch ( currentParameters , longestParameterList , signature . returnValue , elseBranch ) ;
117- } else {
112+ const indistinctSignatures : boolean = signatures . every ( ( sig : MethodSignature ) => ! sig . parameters ?. length ) ;
113+ if ( ! remainingSignatures . length || indistinctSignatures ) {
118114 return ts . createReturn ( signature . returnValue ) ;
119115 }
116+
117+ const elseBranch : ts . Statement = ResolveSignatureElseBranch ( remainingSignatures , longestParameterList ) ;
118+
119+ const currentParameters : ts . ParameterDeclaration [ ] = signature . parameters || [ ] ;
120+ return ResolveParameterBranch ( currentParameters , longestParameterList , signature . returnValue , elseBranch ) ;
120121}
121122
122123function CreateProviderGetMethod ( ) : ts . PropertyAccessExpression {
0 commit comments