mirror of
https://github.com/netwide-assembler/nasm.git
synced 2024-12-15 09:09:58 +08:00
e91f5cc132
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
|