Skip to content

fix: include fixed-size arrays in ABI schema paths#287

Closed
Maroutis wants to merge 5 commits intoLedgerHQ:mainfrom
Maroutis:fix/fixed-array-abi-schema-paths
Closed

fix: include fixed-size arrays in ABI schema paths#287
Maroutis wants to merge 5 commits intoLedgerHQ:mainfrom
Maroutis:fix/fixed-array-abi-schema-paths

Conversation

@Maroutis
Copy link
Copy Markdown
Collaborator

Summary

  • count fixed-size array dimensions when deriving ABI schema paths for display-field validation
  • allow indexed fixed-array references like _route.[0] and multidimensional fixed arrays to resolve to valid ABI schema paths
  • add regression coverage for fixed-size scalar arrays and fixed-size tuple arrays

Test plan

  • PYTHONPATH=src python -m pytest -o addopts='' tests/model/paths/test_path_schemas.py tests/common/test_abi.py
  • Manually checked that compute_abi_schema_paths() now includes #._route.[] and #._swap_params.[].[] for a Curve-like fixed-array signature
  • Manually exercised the patched v2 linter against calldata-test.json with a mocked ABI and confirmed the previous invalid #._route.[] error disappears

Made with Cursor

Maroutis and others added 5 commits March 17, 2026 10:27
## 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)
Count fixed-size array dimensions when deriving ABI schema paths so display-field validation can match indexed fixed-array references like `_route.[0]`. Add regressions for fixed-size scalar arrays and tuple arrays to keep dynamic-array behavior unchanged.

Made-with: Cursor
@Maroutis Maroutis requested a review from a team as a code owner March 26, 2026 10:56
@Maroutis Maroutis closed this Mar 27, 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