mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			132 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| #![allow(dead_code, path_statements)]
 | |
| #![deny(unused_attributes, unused_must_use)]
 | |
| #![feature(asm_experimental_arch, stmt_expr_attributes, trait_alias)]
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| extern crate std as std2;
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| mod test_mod {}
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| use std::arch::global_asm;
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| const CONST: usize = 4;
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| #[no_mangle]
 | |
| static STATIC: usize = 4;
 | |
| 
 | |
| #[must_use]
 | |
| struct X;
 | |
| 
 | |
| #[must_use]
 | |
| enum Y {
 | |
|     Z,
 | |
| }
 | |
| 
 | |
| #[must_use]
 | |
| union U {
 | |
|     unit: (),
 | |
| }
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| impl U {
 | |
|     #[must_use]
 | |
|     fn method() -> i32 {
 | |
|         4
 | |
|     }
 | |
| }
 | |
| 
 | |
| #[must_use]
 | |
| #[no_mangle]
 | |
| fn foo() -> i64 {
 | |
|     4
 | |
| }
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| extern "Rust" {
 | |
|     #[link_name = "STATIC"]
 | |
|     #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
|     static FOREIGN_STATIC: usize;
 | |
| 
 | |
|     #[link_name = "foo"]
 | |
|     #[must_use]
 | |
|     fn foreign_foo() -> i64;
 | |
| }
 | |
| 
 | |
| #[must_use] //~ ERROR unused attribute
 | |
| global_asm!("");
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| type UseMe = ();
 | |
| 
 | |
| fn qux<#[must_use] T>(_: T) {} //~ ERROR `#[must_use]` has no effect
 | |
| 
 | |
| #[must_use]
 | |
| trait Use {
 | |
|     #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
|     const ASSOC_CONST: usize = 4;
 | |
|     #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
|     type AssocTy;
 | |
| 
 | |
|     #[must_use]
 | |
|     fn get_four(&self) -> usize {
 | |
|         4
 | |
|     }
 | |
| }
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| impl Use for () {
 | |
|     type AssocTy = ();
 | |
| }
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| trait Alias = Use;
 | |
| 
 | |
| #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
| macro_rules! cool_macro {
 | |
|     () => {
 | |
|         4
 | |
|     };
 | |
| }
 | |
| 
 | |
| fn main() {
 | |
|     #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
|     let x = || {};
 | |
|     x();
 | |
| 
 | |
|     let x = #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
|     || {};
 | |
|     x();
 | |
| 
 | |
|     X; //~ ERROR that must be used
 | |
|     Y::Z; //~ ERROR that must be used
 | |
|     U { unit: () }; //~ ERROR that must be used
 | |
|     U::method(); //~ ERROR that must be used
 | |
|     foo(); //~ ERROR that must be used
 | |
| 
 | |
|     unsafe {
 | |
|         foreign_foo(); //~ ERROR that must be used
 | |
|     };
 | |
| 
 | |
|     CONST;
 | |
|     STATIC;
 | |
|     unsafe { FOREIGN_STATIC };
 | |
|     cool_macro!();
 | |
|     qux(4);
 | |
|     ().get_four(); //~ ERROR that must be used
 | |
| 
 | |
|     match Some(4) {
 | |
|         #[must_use] //~ ERROR `#[must_use]` has no effect
 | |
|         Some(res) => res,
 | |
|         None => 0,
 | |
|     };
 | |
| 
 | |
|     struct PatternField {
 | |
|         foo: i32,
 | |
|     }
 | |
|     let s = PatternField { #[must_use]  foo: 123 }; //~ ERROR `#[must_use]` has no effect
 | |
|     let PatternField { #[must_use] foo } = s; //~ ERROR `#[must_use]` has no effect
 | |
| }
 | 
