rust_to_dtr 0.16.0

Convert Rust Soroban contracts to DTR format.
Documentation
use crate::common::compilation_state;
use crate::errors::not_translatable_error::NotTranslatableError;
use crate::instruction::Instruction;
use crate::translate::expression::parse_expression;
use syn::ExprParen;

pub fn handle_paren_expression(
    expr_paren: &ExprParen,
    compilation_state: &mut compilation_state::CompilationState,
) -> Result<Vec<Instruction>, NotTranslatableError> {
    Ok(parse_expression(&expr_paren.expr, compilation_state)?)
}

#[cfg(test)]
mod tests {
    use crate::instruction::Instruction;
    use crate::{
        common::compilation_state::CompilationState,
        translate::expression::paren_expression::handle_paren_expression,
    };
    use syn::{parse_quote, ExprParen};

    #[test]
    fn test_handle_paren_expression() {
        let mut compilation_state = CompilationState::new();
        let expr: ExprParen = parse_quote! { (Struct) };
        let instructions = handle_paren_expression(
            &expr,
            &mut compilation_state.with_assignment(Some("SomeAssignment".to_string())),
        )
        .unwrap();
        assert_eq!(
            instructions,
            vec![Instruction::new(
                0,
                "assign".to_string(),
                vec!["Struct".to_string()],
                "SomeAssignment".to_string(),
                0
            ),]
        );
    }
}