mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-03 22:49:17 +00:00 
			
		
		
		
	THIR unsafety checking was getting a cycle of function unsafety checking -> building THIR for the function -> evaluating pattern inline constants in the function -> building MIR for the inline constant -> checking unsafety of functions (so that THIR can be stolen) This is fixed by not stealing THIR when generating MIR but instead when unsafety checking. This leaves an issue with pattern inline constants not being unsafety checked because they are evaluated away when generating THIR. To fix that we now represent inline constants in THIR patterns and visit them in THIR unsafety checking.
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
error[E0133]: call to unsafe function `S::f` is unsafe and requires unsafe function or block
 | 
						|
  --> $DIR/async-unsafe-fn-call-in-safe.rs:14:5
 | 
						|
   |
 | 
						|
LL |     S::f();
 | 
						|
   |     ^^^^^^ call to unsafe function
 | 
						|
   |
 | 
						|
   = note: consult the function's documentation for information on how to avoid undefined behavior
 | 
						|
 | 
						|
error[E0133]: call to unsafe function `f` is unsafe and requires unsafe function or block
 | 
						|
  --> $DIR/async-unsafe-fn-call-in-safe.rs:17:5
 | 
						|
   |
 | 
						|
LL |     f();
 | 
						|
   |     ^^^ call to unsafe function
 | 
						|
   |
 | 
						|
   = note: consult the function's documentation for information on how to avoid undefined behavior
 | 
						|
 | 
						|
error[E0133]: call to unsafe function `S::f` is unsafe and requires unsafe function or block
 | 
						|
  --> $DIR/async-unsafe-fn-call-in-safe.rs:23:5
 | 
						|
   |
 | 
						|
LL |     S::f();
 | 
						|
   |     ^^^^^^ call to unsafe function
 | 
						|
   |
 | 
						|
   = note: consult the function's documentation for information on how to avoid undefined behavior
 | 
						|
 | 
						|
error[E0133]: call to unsafe function `f` is unsafe and requires unsafe function or block
 | 
						|
  --> $DIR/async-unsafe-fn-call-in-safe.rs:26:5
 | 
						|
   |
 | 
						|
LL |     f();
 | 
						|
   |     ^^^ call to unsafe function
 | 
						|
   |
 | 
						|
   = note: consult the function's documentation for information on how to avoid undefined behavior
 | 
						|
 | 
						|
error: aborting due to 4 previous errors
 | 
						|
 | 
						|
For more information about this error, try `rustc --explain E0133`.
 |