Skip to content

Commit 239bb72

Browse files
committed
fix: lsp hover/twoslash for abi overloads
1 parent e29cc70 commit 239bb72

3 files changed

Lines changed: 25 additions & 14 deletions

File tree

src/actions/public/readContract.test-d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ test('behavior', () => {
207207
name: 'bar',
208208
type: 'function',
209209
stateMutability: 'view',
210-
inputs: [{ type: 'address', name: '' }],
210+
inputs: [{ type: 'address', name: 'account' }],
211211
outputs: [{ type: 'address', name: '' }],
212212
},
213213
],
@@ -232,7 +232,7 @@ test('behavior', () => {
232232
const abi = parseAbi([
233233
'function foo() view returns (int8)',
234234
'function foo(address tokenId) view returns (string)',
235-
'function foo(address, address) view returns ((address foo, address bar))',
235+
'function foo(address spender, address account) view returns ((address foo, address bar))',
236236
'function bar() view returns (int8)',
237237
])
238238

src/actions/wallet/writeContract.test-d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ test('infers args', () => {
8888
transport: custom(window.ethereum!),
8989
})
9090
const abi = parseAbi([
91-
'function foo(address) payable returns (int8)',
92-
'function bar(address, uint256) returns (int8)',
91+
'function foo(address account) payable returns (int8)',
92+
'function bar(address account, uint256 amount) returns (int8)',
9393
])
9494

9595
type Result1 = WriteContractParameters<typeof abi, 'foo'>
@@ -275,8 +275,8 @@ test('overloads', async () => {
275275
})
276276
const abi = parseAbi([
277277
'function foo() returns (int8)',
278-
'function foo(address) returns (string)',
279-
'function foo(address, address) returns ((address foo, address bar))',
278+
'function foo(address account) returns (string)',
279+
'function foo(address sender, address account) returns ((address foo, address bar))',
280280
'function bar() returns (int8)',
281281
])
282282

src/types/contract.ts

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -217,15 +217,26 @@ export type ContractFunctionParameters<
217217
functionName:
218218
| allFunctionNames // show all options
219219
| (functionName extends allFunctionNames ? functionName : never) // infer value
220-
args?:
221-
| (abi extends Abi
222-
? UnionWiden<IsUnion<abiFunction> extends true ? args : allArgs>
223-
: never)
224-
| allArgs
225-
| undefined
226220
} & (readonly [] extends allArgs
227-
? {}
228-
: { args: Widen<IsUnion<abiFunction> extends true ? args : allArgs> }) &
221+
? {
222+
args?:
223+
| allArgs
224+
| (abi extends Abi
225+
? Abi extends abi
226+
? never
227+
: UnionWiden<IsUnion<abiFunction> extends true ? args : allArgs>
228+
: never)
229+
| undefined
230+
}
231+
: {
232+
args:
233+
| allArgs
234+
| (abi extends Abi
235+
? Abi extends abi
236+
? never
237+
: Widen<IsUnion<abiFunction> extends true ? args : allArgs>
238+
: never)
239+
}) &
229240
(deployless extends true
230241
? { address?: undefined; code: Hex }
231242
: { address: Address })

0 commit comments

Comments
 (0)