//! > MacroExpand

//! > test_runner_name
test_macro_expand

//! > cairo_project.toml
[crate_roots]
hello = "src"

[config.global]
edition = "2024_07"

//! > cairo_code
fn fib<caret>(mut n: u32) -> u32 {
  <caret>  pr<caret>intln!<caret>("some text")<caret>;<caret>
    let mut a: u32 = 0;
    let mut b: u32 = 1;
    while n != 0<caret> {
        n = n - 1;
        let temp = b;
        b = a + b;
        a = t<caret>emp;
    };
    a
}

//! > macro expand #0
// = source context
fn fib<caret>(mut n: u32) -> u32 {
// = expansion
// lib.cairo
// ---------

fn fib(mut n: u32) -> u32 {
    {
        let mut __formatter_for_print_macros__: core::fmt::Formatter =
            core::traits::Default::default();
        core::result::ResultTrait::<
            (), core::fmt::Error
        >::unwrap(
            {
                core::byte_array::ByteArrayTrait::append_word(
                    ref __formatter_for_print_macros__.buffer, 0x736f6d6520746578740a, 10
                );
                core::result::Result::<(), core::fmt::Error>::Ok(())
            }
        );
        core::debug::print_byte_array_as_string(@__formatter_for_print_macros__.buffer);
    };
    let mut a: u32 = 0;
    let mut b: u32 = 1;
    while n != 0 {
        n = n - 1;
        let temp = b;
        b = a + b;
        a = temp;
    };
    a
}

//! > macro expand #1
// = source context
  <caret>  println!("some text");
// = expansion
// lib.cairo
// ---------

{
    let mut __formatter_for_print_macros__: core::fmt::Formatter = core::traits::Default::default();
    core::result::ResultTrait::<
        (), core::fmt::Error
    >::unwrap(
        {
            core::byte_array::ByteArrayTrait::append_word(
                ref __formatter_for_print_macros__.buffer, 0x736f6d6520746578740a, 10
            );
            core::result::Result::<(), core::fmt::Error>::Ok(())
        }
    );
    core::debug::print_byte_array_as_string(@__formatter_for_print_macros__.buffer);
}

//! > macro expand #2
// = source context
    pr<caret>intln!("some text");
// = expansion
// lib.cairo
// ---------

{
    let mut __formatter_for_print_macros__: core::fmt::Formatter = core::traits::Default::default();
    core::result::ResultTrait::<
        (), core::fmt::Error
    >::unwrap(
        {
            core::byte_array::ByteArrayTrait::append_word(
                ref __formatter_for_print_macros__.buffer, 0x736f6d6520746578740a, 10
            );
            core::result::Result::<(), core::fmt::Error>::Ok(())
        }
    );
    core::debug::print_byte_array_as_string(@__formatter_for_print_macros__.buffer);
}

//! > macro expand #3
// = source context
    println!<caret>("some text");
// = expansion
// lib.cairo
// ---------

{
    let mut __formatter_for_print_macros__: core::fmt::Formatter = core::traits::Default::default();
    core::result::ResultTrait::<
        (), core::fmt::Error
    >::unwrap(
        {
            core::byte_array::ByteArrayTrait::append_word(
                ref __formatter_for_print_macros__.buffer, 0x736f6d6520746578740a, 10
            );
            core::result::Result::<(), core::fmt::Error>::Ok(())
        }
    );
    core::debug::print_byte_array_as_string(@__formatter_for_print_macros__.buffer);
}

//! > macro expand #4
// = source context
    println!("some text")<caret>;
// = expansion
// lib.cairo
// ---------

fn fib(mut n: u32) -> u32 {
    {
        let mut __formatter_for_print_macros__: core::fmt::Formatter =
            core::traits::Default::default();
        core::result::ResultTrait::<
            (), core::fmt::Error
        >::unwrap(
            {
                core::byte_array::ByteArrayTrait::append_word(
                    ref __formatter_for_print_macros__.buffer, 0x736f6d6520746578740a, 10
                );
                core::result::Result::<(), core::fmt::Error>::Ok(())
            }
        );
        core::debug::print_byte_array_as_string(@__formatter_for_print_macros__.buffer);
    };
    let mut a: u32 = 0;
    let mut b: u32 = 1;
    while n != 0 {
        n = n - 1;
        let temp = b;
        b = a + b;
        a = temp;
    };
    a
}

//! > macro expand #5
// = source context
    println!("some text");<caret>
// = expansion
// lib.cairo
// ---------

fn fib(mut n: u32) -> u32 {
    {
        let mut __formatter_for_print_macros__: core::fmt::Formatter =
            core::traits::Default::default();
        core::result::ResultTrait::<
            (), core::fmt::Error
        >::unwrap(
            {
                core::byte_array::ByteArrayTrait::append_word(
                    ref __formatter_for_print_macros__.buffer, 0x736f6d6520746578740a, 10
                );
                core::result::Result::<(), core::fmt::Error>::Ok(())
            }
        );
        core::debug::print_byte_array_as_string(@__formatter_for_print_macros__.buffer);
    };
    let mut a: u32 = 0;
    let mut b: u32 = 1;
    while n != 0 {
        n = n - 1;
        let temp = b;
        b = a + b;
        a = temp;
    };
    a
}

//! > macro expand #6
// = source context
    while n != 0<caret> {
// = expansion
// lib.cairo
// ---------

fn fib(mut n: u32) -> u32 {
    {
        let mut __formatter_for_print_macros__: core::fmt::Formatter =
            core::traits::Default::default();
        core::result::ResultTrait::<
            (), core::fmt::Error
        >::unwrap(
            {
                core::byte_array::ByteArrayTrait::append_word(
                    ref __formatter_for_print_macros__.buffer, 0x736f6d6520746578740a, 10
                );
                core::result::Result::<(), core::fmt::Error>::Ok(())
            }
        );
        core::debug::print_byte_array_as_string(@__formatter_for_print_macros__.buffer);
    };
    let mut a: u32 = 0;
    let mut b: u32 = 1;
    while n != 0 {
        n = n - 1;
        let temp = b;
        b = a + b;
        a = temp;
    };
    a
}

//! > macro expand #7
// = source context
        a = t<caret>emp;
// = expansion
// lib.cairo
// ---------

fn fib(mut n: u32) -> u32 {
    {
        let mut __formatter_for_print_macros__: core::fmt::Formatter =
            core::traits::Default::default();
        core::result::ResultTrait::<
            (), core::fmt::Error
        >::unwrap(
            {
                core::byte_array::ByteArrayTrait::append_word(
                    ref __formatter_for_print_macros__.buffer, 0x736f6d6520746578740a, 10
                );
                core::result::Result::<(), core::fmt::Error>::Ok(())
            }
        );
        core::debug::print_byte_array_as_string(@__formatter_for_print_macros__.buffer);
    };
    let mut a: u32 = 0;
    let mut b: u32 = 1;
    while n != 0 {
        n = n - 1;
        let temp = b;
        b = a + b;
        a = temp;
    };
    a
}
