Skip to content

fix: support fixed-size array dimensions in signature parser#276

Closed
Maroutis wants to merge 4 commits intoLedgerHQ:mainfrom
Maroutis:main
Closed

fix: support fixed-size array dimensions in signature parser#276
Maroutis wants to merge 4 commits intoLedgerHQ:mainfrom
Maroutis:main

Conversation

@Maroutis
Copy link
Collaborator

@Maroutis Maroutis commented Mar 17, 2026

Summary

  • The Lark grammar for ABI signature parsing only handled dynamic arrays ([]) but rejected fixed-size arrays ([N]), causing lint failures on valid Solidity types like address[11], uint256[5][5], and address[5].
  • Extended the array grammar rule to accept both [] and [N], updated the array transformer to preserve the size, and fixed the named_tuple filter to correctly identify fixed-size array suffixes.
  • Added 5 test cases covering single-dimension, multi-dimension, mixed fixed/dynamic, tuple, and 3D fixed-size arrays.

Test plan

  • Existing test_reduce_signature parametrized tests still pass (no regressions)
  • New test cases pass: address[11], uint256[5][5], uint256[3], bytes32[2][], (uint256,address)[3], uint256[2][3][4]

Made with Cursor

## Summary

- The Lark grammar for ABI signature parsing only handled dynamic arrays (`[]`) but rejected fixed-size arrays (`[N]`), causing lint failures on valid Solidity types like `address[11]`, `uint256[5][5]`, and `address[5]`.
- Extended the `array` grammar rule to accept both `[]` and `[N]`, updated the `array` transformer to preserve the size, and fixed the `named_tuple` filter to correctly identify fixed-size array suffixes.
- Added 5 test cases covering single-dimension, multi-dimension, mixed fixed/dynamic, tuple, and 3D fixed-size arrays.

## Test plan

- [x] Existing `test_reduce_signature` parametrized tests still pass (no regressions)
- [x] New test cases pass: `address[11]`, `uint256[5][5]`, `uint256[3]`, `bytes32[2][]`, `(uint256,address)[3]`, `uint256[2][3][4]`
- [x] `erc7730 lint calldata-curve.json` no longer errors on the Curve router signature


Made with [Cursor](https://cursor.com)
@Maroutis Maroutis requested a review from a team as a code owner March 17, 2026 09:38
@Maroutis Maroutis closed this Mar 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants