mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-10-31 12:04:43 +00:00 
			
		
		
		
	Differentiate between asm!(), global_asm!() and naked_asm!(), and make only asm!() unsafe
				
					
				
			This commit is contained in:
		
							parent
							
								
									edb804a100
								
							
						
					
					
						commit
						bd8087e86e
					
				
					 16 changed files with 198 additions and 16 deletions
				
			
		|  | @ -125,8 +125,8 @@ register_builtin! { | |||
|     (assert, Assert) => assert_expand, | ||||
|     (stringify, Stringify) => stringify_expand, | ||||
|     (asm, Asm) => asm_expand, | ||||
|     (global_asm, GlobalAsm) => asm_expand, | ||||
|     (naked_asm, NakedAsm) => asm_expand, | ||||
|     (global_asm, GlobalAsm) => global_asm_expand, | ||||
|     (naked_asm, NakedAsm) => naked_asm_expand, | ||||
|     (cfg, Cfg) => cfg_expand, | ||||
|     (core_panic, CorePanic) => panic_expand, | ||||
|     (std_panic, StdPanic) => panic_expand, | ||||
|  | @ -325,6 +325,36 @@ fn asm_expand( | |||
|     ExpandResult::ok(expanded) | ||||
| } | ||||
| 
 | ||||
| fn global_asm_expand( | ||||
|     _db: &dyn ExpandDatabase, | ||||
|     _id: MacroCallId, | ||||
|     tt: &tt::TopSubtree, | ||||
|     span: Span, | ||||
| ) -> ExpandResult<tt::TopSubtree> { | ||||
|     let mut tt = tt.clone(); | ||||
|     tt.top_subtree_delimiter_mut().kind = tt::DelimiterKind::Parenthesis; | ||||
|     let pound = mk_pound(span); | ||||
|     let expanded = quote! {span => | ||||
|         builtin #pound global_asm #tt | ||||
|     }; | ||||
|     ExpandResult::ok(expanded) | ||||
| } | ||||
| 
 | ||||
| fn naked_asm_expand( | ||||
|     _db: &dyn ExpandDatabase, | ||||
|     _id: MacroCallId, | ||||
|     tt: &tt::TopSubtree, | ||||
|     span: Span, | ||||
| ) -> ExpandResult<tt::TopSubtree> { | ||||
|     let mut tt = tt.clone(); | ||||
|     tt.top_subtree_delimiter_mut().kind = tt::DelimiterKind::Parenthesis; | ||||
|     let pound = mk_pound(span); | ||||
|     let expanded = quote! {span => | ||||
|         builtin #pound naked_asm #tt | ||||
|     }; | ||||
|     ExpandResult::ok(expanded) | ||||
| } | ||||
| 
 | ||||
| fn cfg_expand( | ||||
|     db: &dyn ExpandDatabase, | ||||
|     id: MacroCallId, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Chayim Refael Friedman
						Chayim Refael Friedman