mirror of
				https://github.com/netwide-assembler/nasm.git
				synced 2025-10-10 00:25:06 -04:00 
			
		
		
		
	Macro aliases can legitimately point to nonexistent macros. Furthermore, %undef should remove the pointed-at macro, not the alias. This led to an infinite loop in the existing code; fix that. Add an %ifdefalias directive to test for the existence of an alias. Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
		
			
				
	
	
		
			53 lines
		
	
	
		
			941 B
		
	
	
	
		
			NASM
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			941 B
		
	
	
	
		
			NASM
		
	
	
	
	
	
| %defalias foo bar
 | |
| %ifdef foo
 | |
|   %error "foo should not be defined here!"
 | |
| %endif
 | |
| 
 | |
| %define foo 33
 | |
| %ifndef foo
 | |
|   %error "foo should be defined here!"
 | |
| %endif
 | |
| %ifndef bar
 | |
|   %error "bar should be defined here!"
 | |
| %endif
 | |
| %if bar != 33
 | |
|   %error "bar should have the value 33 here"
 | |
| %endif
 | |
| 
 | |
| %define bar 34
 | |
| %if foo != 34
 | |
|   %error "foo should have the value 34 here"
 | |
| %endif
 | |
| 
 | |
| %undef foo
 | |
| %ifdef foo
 | |
|   %error "foo should not be defined here!"
 | |
| %endif
 | |
| %ifdef bar
 | |
|   %error "bar should not be defined here!"
 | |
| %endif
 | |
| 
 | |
| %ifndefalias foo
 | |
|   %error "foo was removed as an alias!"
 | |
| %endif
 | |
| 
 | |
| %define bar 35
 | |
| %if foo != 35
 | |
|   %error "foo should have the value 35 here"
 | |
| %endif
 | |
| 
 | |
| %define foo 36
 | |
| %if bar != 36
 | |
|   %error "bar should have the value 36 here"
 | |
| %endif
 | |
| 
 | |
| %undefalias foo
 | |
| %ifdef foo
 | |
|   %error "foo is still defined after %undefalias"
 | |
| %elifdefalias foo
 | |
|   %error "foo is undefined, but still an alias"
 | |
| %endif
 | |
| %ifndef bar
 | |
|   %error "bar disappeared after %undefalias foo"
 | |
| %endif
 |