mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 07:41:08 +00:00
handle returns correctly for transactional (#7301)
This commit is contained in:
@@ -29,7 +29,7 @@ pub fn transactional(_attr: TokenStream, input: TokenStream) -> Result<TokenStre
|
||||
#vis #sig {
|
||||
use #crate_::storage::{with_transaction, TransactionOutcome};
|
||||
with_transaction(|| {
|
||||
let r = #block;
|
||||
let r = (|| { #block })();
|
||||
if r.is_ok() {
|
||||
TransactionOutcome::Commit(r)
|
||||
} else {
|
||||
|
||||
@@ -182,15 +182,20 @@ fn storage_transaction_commit_then_rollback() {
|
||||
|
||||
#[test]
|
||||
fn transactional_annotation() {
|
||||
fn set_value(v: u32) -> DispatchResult {
|
||||
Value::set(v);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[transactional]
|
||||
fn value_commits(v: u32) -> result::Result<u32, &'static str> {
|
||||
Value::set(v);
|
||||
set_value(v)?;
|
||||
Ok(v)
|
||||
}
|
||||
|
||||
#[transactional]
|
||||
fn value_rollbacks(v: u32) -> result::Result<u32, &'static str> {
|
||||
Value::set(v);
|
||||
set_value(v)?;
|
||||
Err("nah")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user