@@ -274,8 +274,8 @@ module.exports = class AbiCodeGenerator {
274
274
let isTupleType = util . isTupleType ( type )
275
275
let returnValue = typesCodegen . ethereumToAsc (
276
276
parentType === 'tuple'
277
- ? `this[${ index } ]`
278
- : `this._${ parentType } .${ parentField } [${ index } ].value` ,
277
+ ? `this[${ index } ]`
278
+ : `this._${ parentType } .${ parentField } [${ index } ].value` ,
279
279
type ,
280
280
tupleClassName ,
281
281
)
@@ -286,7 +286,9 @@ module.exports = class AbiCodeGenerator {
286
286
[ ] ,
287
287
util . isTupleArrayType ( type ) ? `Array<${ tupleClassName } >` : tupleClassName ,
288
288
`
289
- return ${ isTupleType ? `changetype<${ tupleClassName } >(${ returnValue } )` : `${ returnValue } ` }
289
+ return ${
290
+ isTupleType ? `changetype<${ tupleClassName } >(${ returnValue } )` : `${ returnValue } `
291
+ }
290
292
` ,
291
293
)
292
294
@@ -510,8 +512,8 @@ module.exports = class AbiCodeGenerator {
510
512
: ''
511
513
} ]`
512
514
513
- let methodCallBody = isTry =>
514
- `
515
+ let methodCallBody = isTry => {
516
+ const methodBody = `
515
517
${
516
518
isTry
517
519
? `
@@ -525,9 +527,9 @@ module.exports = class AbiCodeGenerator {
525
527
let result = super.call(${ superInputs } )
526
528
527
529
return (`
528
- }
529
- ${
530
- simpleReturnType
530
+ } `
531
+
532
+ const returnVal = simpleReturnType
531
533
? typesCodegen . ethereumToAsc (
532
534
isTry ? 'value[0]' : 'result[0]' ,
533
535
outputs . get ( 0 ) . get ( 'type' ) ,
@@ -542,34 +544,36 @@ module.exports = class AbiCodeGenerator {
542
544
)
543
545
: `new ${ returnType . name } (
544
546
${ outputs
545
- . map (
546
- ( output , index ) =>
547
- `${ typesCodegen . ethereumToAsc (
548
- isTry ? `value[${ index } ]` : `result[${ index } ]` ,
549
- output . get ( 'type' ) ,
550
- util . isTupleArrayType ( output . get ( 'type' ) )
551
- ? this . _tupleTypeName (
552
- output ,
553
- index ,
554
- tupleResultParentType ,
555
- this . abi . name ,
556
- )
557
- : '' ,
558
- ) } ${
559
- util . isTupleType ( output . get ( 'type' ) )
560
- ? 'as ' +
561
- this . _tupleTypeName (
562
- output ,
563
- index ,
564
- tupleResultParentType ,
565
- this . abi . name ,
566
- )
567
- : ''
568
- } `,
569
- )
547
+ . map ( ( output , index ) => {
548
+ const val = typesCodegen . ethereumToAsc (
549
+ isTry ? `value[${ index } ]` : `result[${ index } ]` ,
550
+ output . get ( 'type' ) ,
551
+ util . isTupleArrayType ( output . get ( 'type' ) )
552
+ ? this . _tupleTypeName (
553
+ output ,
554
+ index ,
555
+ tupleResultParentType ,
556
+ this . abi . name ,
557
+ )
558
+ : '' ,
559
+ )
560
+ return util . isTupleType ( output . get ( 'type' ) )
561
+ ? `changetype<${ this . _tupleTypeName (
562
+ output ,
563
+ index ,
564
+ tupleResultParentType ,
565
+ this . abi . name ,
566
+ ) } >(${ val } )`
567
+ : val
568
+ } )
570
569
. join ( ', ' ) }
571
570
)`
572
- } ${ util . isTupleType ( outputs . get ( 0 ) . get ( 'type' ) ) ? 'as ' + returnType : '' } )`
571
+
572
+ const isTuple = util . isTupleType ( outputs . get ( 0 ) . get ( 'type' ) )
573
+ return `${ methodBody } ${
574
+ isTuple ? `changetype<${ returnType } >(${ returnVal } )` : returnVal
575
+ } )`
576
+ }
573
577
574
578
// Generate method with an without `try_`.
575
579
klass . addMethod (
0 commit comments