Skip to content

Commit 4012ade

Browse files
authored
fix: allow_hyphen_values for constructor args (#9225)
* fix: unescape ints * use allow_hyp
1 parent 9501589 commit 4012ade

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

crates/forge/bin/cmd/create.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ pub struct CreateArgs {
4545
num_args(1..),
4646
conflicts_with = "constructor_args_path",
4747
value_name = "ARGS",
48+
allow_hyphen_values = true,
4849
)]
4950
constructor_args: Vec<String>,
5051

@@ -633,6 +634,7 @@ impl From<PendingTransactionError> for ContractDeploymentError {
633634
#[cfg(test)]
634635
mod tests {
635636
use super::*;
637+
use alloy_primitives::I256;
636638

637639
#[test]
638640
fn can_parse_create() {
@@ -688,4 +690,17 @@ mod tests {
688690
let constructor: Constructor = serde_json::from_str(r#"{"type":"constructor","inputs":[{"name":"_points","type":"tuple[]","internalType":"struct Point[]","components":[{"name":"x","type":"uint256","internalType":"uint256"},{"name":"y","type":"uint256","internalType":"uint256"}]}],"stateMutability":"nonpayable"}"#).unwrap();
689691
let _params = args.parse_constructor_args(&constructor, &args.constructor_args).unwrap();
690692
}
693+
694+
#[test]
695+
fn test_parse_int_constructor_args() {
696+
let args: CreateArgs = CreateArgs::parse_from([
697+
"foundry-cli",
698+
"src/Domains.sol:Domains",
699+
"--constructor-args",
700+
"-5",
701+
]);
702+
let constructor: Constructor = serde_json::from_str(r#"{"type":"constructor","inputs":[{"name":"_name","type":"int256","internalType":"int256"}],"stateMutability":"nonpayable"}"#).unwrap();
703+
let params = args.parse_constructor_args(&constructor, &args.constructor_args).unwrap();
704+
assert_eq!(params, vec![DynSolValue::Int(I256::unchecked_from(-5), 256)]);
705+
}
691706
}

0 commit comments

Comments
 (0)