Skip to content

Commit 1b626fb

Browse files
casperlabs-bors-ng[bot]Jakub Zajkowski
andauthored
5005: Fixed arg_handling code which forced optional arguments to be passed … r=zajko a=zajko …as actual Option This will affect the client-rs app Co-authored-by: Jakub Zajkowski <jakub@casperlabs.io>
2 parents 91871a3 + 0315d14 commit 1b626fb

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

node/src/types/transaction/arg_handling.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ use tracing::debug;
1515
const TRANSFER_ARG_AMOUNT: RequiredArg<U512> = RequiredArg::new("amount");
1616
const TRANSFER_ARG_SOURCE: OptionalArg<URef> = OptionalArg::new("source");
1717
const TRANSFER_ARG_TARGET: &str = "target";
18-
const TRANSFER_ARG_ID: OptionalArg<u64> = OptionalArg::new("id");
18+
// "id" for legacy reasons, if the argument is passed it is [Option]
19+
const TRANSFER_ARG_ID: OptionalArg<Option<u64>> = OptionalArg::new("id");
1920

2021
const ADD_BID_ARG_PUBLIC_KEY: RequiredArg<PublicKey> = RequiredArg::new("public_key");
2122
const ADD_BID_ARG_DELEGATION_RATE: RequiredArg<u8> = RequiredArg::new("delegation_rate");
@@ -111,16 +112,16 @@ impl<T> OptionalArg<T> {
111112
Some(value) => value,
112113
None => return Ok(None),
113114
};
114-
let value = parse_cl_value(cl_value, self.name)?;
115-
Ok(value)
115+
let value = parse_cl_value::<T>(cl_value, self.name)?;
116+
Ok(Some(value))
116117
}
117118

118119
#[cfg(test)]
119120
fn insert(&self, args: &mut RuntimeArgs, value: T) -> Result<(), CLValueError>
120121
where
121122
T: CLTyped + ToBytes,
122123
{
123-
args.insert(self.name, Some(value))
124+
args.insert(self.name, value)
124125
}
125126
}
126127

@@ -165,8 +166,8 @@ pub fn new_transfer_args<A: Into<U512>, T: Into<TransferTarget>>(
165166
TransferTarget::URef(uref) => args.insert(TRANSFER_ARG_TARGET, uref)?,
166167
}
167168
TRANSFER_ARG_AMOUNT.insert(&mut args, amount.into())?;
168-
if let Some(id) = maybe_id {
169-
TRANSFER_ARG_ID.insert(&mut args, id)?;
169+
if maybe_id.is_some() {
170+
TRANSFER_ARG_ID.insert(&mut args, maybe_id)?;
170171
}
171172
Ok(args)
172173
}
@@ -591,7 +592,7 @@ mod tests {
591592
};
592593
let expected_error = InvalidTransactionV1::UnexpectedArgType {
593594
arg_name: TRANSFER_ARG_SOURCE.name.to_string(),
594-
expected: vec![Option::<URef>::cl_type()],
595+
expected: vec![URef::cl_type()],
595596
got: CLType::U8,
596597
};
597598
assert_eq!(

types/src/transaction/transaction_v1/arg_handling.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ const TRANSFER_ARG_AMOUNT: RequiredArg<U512> = RequiredArg::new("amount");
88

99
const TRANSFER_ARG_SOURCE: OptionalArg<URef> = OptionalArg::new("source");
1010
const TRANSFER_ARG_TARGET: &str = "target";
11-
12-
const TRANSFER_ARG_ID: OptionalArg<u64> = OptionalArg::new("id");
11+
// "id" for legacy reasons, if the argument is passed it is [Option]
12+
const TRANSFER_ARG_ID: OptionalArg<Option<u64>> = OptionalArg::new("id");
1313

1414
const ADD_BID_ARG_PUBLIC_KEY: RequiredArg<PublicKey> = RequiredArg::new("public_key");
1515
const ADD_BID_ARG_DELEGATION_RATE: RequiredArg<u8> = RequiredArg::new("delegation_rate");
@@ -77,7 +77,7 @@ impl<T> OptionalArg<T> {
7777
where
7878
T: CLTyped + ToBytes,
7979
{
80-
args.insert(self.name, Some(value))
80+
args.insert(self.name, value)
8181
}
8282
}
8383

@@ -101,8 +101,8 @@ pub(crate) fn new_transfer_args<A: Into<U512>, T: Into<TransferTarget>>(
101101
TransferTarget::URef(uref) => args.insert(TRANSFER_ARG_TARGET, uref)?,
102102
}
103103
TRANSFER_ARG_AMOUNT.insert(&mut args, amount.into())?;
104-
if let Some(id) = maybe_id {
105-
TRANSFER_ARG_ID.insert(&mut args, id)?;
104+
if maybe_id.is_some() {
105+
TRANSFER_ARG_ID.insert(&mut args, maybe_id)?;
106106
}
107107
Ok(args)
108108
}

0 commit comments

Comments
 (0)