• P
    librustc: Always parse `macro!()`/`macro![]` as expressions if not · ddb2466f
    Patrick Walton 提交于
    followed by a semicolon.
    
    This allows code like `vec![1i, 2, 3].len();` to work.
    
    This breaks code that uses macros as statements without putting
    semicolons after them, such as:
    
        fn main() {
            ...
            assert!(a == b)
            assert!(c == d)
            println(...);
        }
    
    It also breaks code that uses macros as items without semicolons:
    
        local_data_key!(foo)
    
        fn main() {
            println("hello world")
        }
    
    Add semicolons to fix this code. Those two examples can be fixed as
    follows:
    
        fn main() {
            ...
            assert!(a == b);
            assert!(c == d);
            println(...);
        }
    
        local_data_key!(foo);
    
        fn main() {
            println("hello world")
        }
    
    RFC #378.
    
    Closes #18635.
    
    [breaking-change]
    ddb2466f
iter.rs 79.8 KB