Skip to content

Commit

Permalink
Fix functions Result obj (ethers-io/ethers.js#869)
Browse files Browse the repository at this point in the history
  • Loading branch information
zemse committed Jun 20, 2020
1 parent 18f1aa4 commit 7347599
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 11 deletions.
14 changes: 7 additions & 7 deletions packages/target-ethers-v5/src/codegen/functions.ts
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
import { FunctionDeclaration, isConstant, isConstantFn, FunctionDocumentation, getSignatureForFn } from 'typechain'
import { generateInputTypes, generateOutputTypes } from './types'

export function codegenFunctions(fns: FunctionDeclaration[]): string {
export function codegenFunctions(returnResultObject: boolean, fns: FunctionDeclaration[]): string {
if (fns.length === 1) {
return generateFunction(fns[0])
return generateFunction(returnResultObject, fns[0])
}

return codegenForOverloadedFunctions(fns)
return codegenForOverloadedFunctions(returnResultObject, fns)
}

export function codegenForOverloadedFunctions(fns: FunctionDeclaration[]): string {
return fns.map((fn) => generateFunction(fn, `"${getSignatureForFn(fn)}"`)).join('\n')
export function codegenForOverloadedFunctions(returnResultObject: boolean, fns: FunctionDeclaration[]): string {
return fns.map((fn) => generateFunction(returnResultObject, fn, `"${getSignatureForFn(fn)}"`)).join('\n')
}

function isPayable(fn: FunctionDeclaration): boolean {
return fn.stateMutability === 'payable'
}

function generateFunction(fn: FunctionDeclaration, overloadedName?: string): string {
function generateFunction(returnResultObject: boolean, fn: FunctionDeclaration, overloadedName?: string): string {
return `
${generateFunctionDocumentation(fn.documentation)}
${overloadedName ?? fn.name}(${generateInputTypes(fn.inputs)}${
!isConstant(fn) && !isConstantFn(fn) ? `overrides?: ${isPayable(fn) ? 'PayableOverrides' : 'Overrides'}` : ''
}): Promise<${
fn.stateMutability === 'pure' || fn.stateMutability === 'view'
? generateOutputTypes(fn.outputs)
? generateOutputTypes(returnResultObject, fn.outputs)
: 'ContractTransaction'
}>;
`
Expand Down
4 changes: 2 additions & 2 deletions packages/target-ethers-v5/src/codegen/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,10 @@ export function codegenContractTypings(contract: Contract) {
interface: ${contract.name}Interface;
functions: {
${values(contract.functions).map(codegenFunctions).join('\n')}
${values(contract.functions).map(codegenFunctions.bind(null, true)).join('\n')}
};
${values(contract.functions).map(codegenFunctions).join('\n')}
${values(contract.functions).map(codegenFunctions.bind(null, false)).join('\n')}
filters: {
${values(contract.events)
Expand Down
4 changes: 2 additions & 2 deletions packages/target-ethers-v5/src/codegen/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ export function generateInputTypes(input: Array<AbiParameter>): string {
)
}

export function generateOutputTypes(outputs: Array<AbiOutputParameter>): string {
if (outputs.length === 1) {
export function generateOutputTypes(returnResultObject: boolean, outputs: Array<AbiOutputParameter>): string {
if (!returnResultObject && outputs.length === 1) {
return generateOutputType(outputs[0].type)
} else {
return `{
Expand Down

0 comments on commit 7347599

Please sign in to comment.