mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 06:56:14 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			37 lines
		
	
	
		
			777 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			777 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
//@ run-pass
 | 
						|
//@ proc-macro: attr-stmt-expr-rpass.rs
 | 
						|
 | 
						|
#![feature(stmt_expr_attributes, proc_macro_hygiene)]
 | 
						|
 | 
						|
extern crate attr_stmt_expr_rpass as attr_stmt_expr;
 | 
						|
use attr_stmt_expr::{expect_let, expect_print_stmt, expect_expr, expect_print_expr,
 | 
						|
                     no_output, noop};
 | 
						|
 | 
						|
fn print_str(string: &'static str) {
 | 
						|
    // macros are handled a bit differently
 | 
						|
    #[expect_print_expr]
 | 
						|
    println!("{}", string)
 | 
						|
}
 | 
						|
 | 
						|
fn main() {
 | 
						|
    #[expect_let]
 | 
						|
    let string = "Hello, world!";
 | 
						|
 | 
						|
    #[expect_print_stmt]
 | 
						|
    println!("{}", string);
 | 
						|
 | 
						|
    let _: () = {
 | 
						|
        #[no_output]
 | 
						|
        "Hello, world!"
 | 
						|
    };
 | 
						|
 | 
						|
    let _: &'static str = #[noop] "Hello, world!";
 | 
						|
 | 
						|
    let _: &'static str = {
 | 
						|
        #[noop] "Hello, world!"
 | 
						|
    };
 | 
						|
 | 
						|
    #[expect_expr]
 | 
						|
    print_str("string")
 | 
						|
}
 |