Improved Type Parsing and Added Test for Complex Nested Tuples #300
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description:
This pull request improves the Solidity type parsing in the read function within the ethabi crate and adds a new test to ensure the correct handling of complex nested tuples.
The previous implementation of the read function struggled with complex nested tuples and arrays of tuples. It used a procedural approach and a significant amount of state variables, which resulted in complexity and incorrect parsing for certain complex cases.
The improved read function takes a more modular and recursive approach to parsing Solidity types. It divides the parsing into separate functions (read, read_tuple, read_array, and read_primitive), each focused on handling a specific aspect of the parsing process. This division results in code that is more readable, maintainable, and extendable.
Additionally, this pull request adds a new test case to the suite. The test case examines a complex nested tuple scenario
("(((string,uint256),int256),uint256,int256)")
which previously resulted in an error. The updated function now successfully parses this and similar cases.These improvements enhance the robustness of the ethabi crate and ensure it is equipped to handle complex Solidity types correctly and efficiently.
Please review the changes, and feel free to provide any feedback.
Changes: