mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-10-31 12:04:43 +00:00 
			
		
		
		
	Improve asm support
Including:
 - Infer `label {}` and `const` operands.
 - Correctly handle unsafe check inside `label {}`.
 - Fix an embarrassing parser typo that cause labels to never be part of the AST
			
			
This commit is contained in:
		
							parent
							
								
									f8e784353b
								
							
						
					
					
						commit
						5ed11234cc
					
				
					 10 changed files with 186 additions and 40 deletions
				
			
		|  | @ -381,10 +381,14 @@ fn parse_asm_expr(p: &mut Parser<'_>, m: Marker) -> Option<CompletedMarker> { | |||
|             op.complete(p, ASM_REG_OPERAND); | ||||
|             op_n.complete(p, ASM_OPERAND_NAMED); | ||||
|         } else if p.eat_contextual_kw(T![label]) { | ||||
|             // test asm_label
 | ||||
|             // fn foo() {
 | ||||
|             //     builtin#asm("", label {});
 | ||||
|             // }
 | ||||
|             dir_spec.abandon(p); | ||||
|             block_expr(p); | ||||
|             op.complete(p, ASM_OPERAND_NAMED); | ||||
|             op_n.complete(p, ASM_LABEL); | ||||
|             op.complete(p, ASM_LABEL); | ||||
|             op_n.complete(p, ASM_OPERAND_NAMED); | ||||
|         } else if p.eat(T![const]) { | ||||
|             dir_spec.abandon(p); | ||||
|             expr(p); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Chayim Refael Friedman
						Chayim Refael Friedman