amarna
amarna copied to clipboard
Improve Unused arguments rule
Currently, the rule finds unused function arguments. However, Cairo programs commonly use the pattern:
struct BatchConfig:
member general_config : GeneralConfig*
member signed_min_oracle_prices : OraclePrice*
member signed_max_oracle_prices : OraclePrice*
member n_oracle_prices : felt
member min_expiration_timestamp : felt
end
func batch_config_new(
general_config : GeneralConfig*, signed_min_oracle_prices : OraclePrice*,
signed_max_oracle_prices : OraclePrice*, n_oracle_prices, min_expiration_timestamp) -> (
batch_config : BatchConfig*):
let (fp_val, pc_val) = get_fp_and_pc()
return (batch_config=cast(fp_val - 2 - BatchConfig.SIZE, BatchConfig*))
end
https://github.com/starkware-libs/stark-perpetual/blob/9327c640e59bd15764833505560478d33aa6a8b1/src/services/perpetual/cairo/transactions/batch_config.cairo#L1-L19
We need to
- check the usage of cast(fp_val - 2 - STRUCT.SIZE, STRUCT*)
- check that all struct members and function parameters match in number and type