Skip to content

Macro is not working very well #8178

Closed
Closed
@recrack

Description

@recrack

zz.rs

macro_rules! twice(
    ($a:expr) => ($a + $a);
)

macro_rules! twice_one(
    ($b:expr) => (1 + twice!($b) + 1);
)

fn main() {
    twice_one!(10);
}

result

#rustc --pretty expanded zz.rs

priv use std::prelude::*;
priv extern mod std;


mod __std_macros {
    #[macro_escape];
    #[doc(hidden)];
    priv use std::prelude::*;
    #[cfg(not(debug))]
    #[macro_escape]
    mod debug_macro {
        priv use std::prelude::*;
    }
}
fn main() { 1 + 10 + 10 + 1; }

zz-1.rs

macro_rules! twice(
    ($a:expr) => ($a + $a);
)

macro_rules! twice_one(
    ($b:expr) => (twice!($b) + 1);
)

fn main() {
    twice_one!(10);
}

result

#rustc --pretty expanded zz-1.rs
priv use std::prelude::*;
priv extern mod std;


mod __std_macros {
    #[macro_escape];
    #[doc(hidden)];
    priv use std::prelude::*;
    #[cfg(not(debug))]
    #[macro_escape]
    mod debug_macro {
        priv use std::prelude::*;
    }
}
fn main() { 10 + 10; }

result is different

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-syntaxextArea: Syntax extensions

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions