support tuple instruction args #73
Merged
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.
Problem
Some programs, such as stake, use tuples for instruction arguments rather than structs with named fields. Codama currently does not support this pattern, and programs may not want to change their interface to use structs.
Tuple arguments are not necessarily bad practice, as the nature of these arguments can be clarified by using named types, such as stake's
Initialize(Authorized, Lockup), rather than relying on struct field names for clarity.Solution
Support tuples. Keys
arg0,arg1etc. are used for backwards compatibility.When tuples are used in a program rather than structs with named fields, the related named type definitions should be properly decorated with
#[derive(CodamaType)]so that the purpose of each argument is clear in the generated clients. The new tests briefly demonstrate how this can be done.