-
Notifications
You must be signed in to change notification settings - Fork 35
Open
Description
Calling vppreproc --simple
on the file below
`define EMPTY
////////////////////////////////////////////////////////////
`define macro_v0(LABEL) \
class foo_``LABEL; \
endclass : foo_``LABEL
package p_v0;
`macro_v0(bar)
endpackage
////////////////////////////////////////////////////////////
`define macro_v1(LABEL) \
class foo_``LABEL``; \
endclass : foo_``LABEL``
package p_v1;
`macro_v1(bar)
endpackage
////////////////////////////////////////////////////////////
`define macro_v2(LABEL) \
class foo_``LABEL``; \
endclass : foo_``LABEL``
package p_v2;
`macro_v2(bar)
`EMPTY
endpackage
////////////////////////////////////////////////////////////
`define macro_v3(LABEL) \
class foo_``LABEL``; \
endclass : foo_``LABEL`` // one line comment
package p_v3;
`macro_v3(bar)
endpackage
////////////////////////////////////////////////////////////
`define macro_v4(LABEL) \
class foo_``LABEL``; \
endclass : foo_``LABEL`` /* multi line comment */
package p_v4;
`macro_v4(bar)
endpackage
yields
package p_v0;
class foo_bar;
endclass : foo_bar
endpackage
package p_v1;
class foo_bar;
endclass :
foo_barendpackage
package p_v2;
class foo_bar;
endclass :
foo_bar
endpackage
package p_v3;
class foo_bar;
endclass :
foo_barendpackage
package p_v4;
class foo_bar;
endclass : foo_bar
endpackage
which is unexpected. I've annotated it below with my expectation
package p_v0;
class foo_bar;
endclass : foo_bar
endpackage
package p_v1;
class foo_bar;
endclass : <- unexpected newline before "foo_"
foo_barendpackage <- unexpected concatenation of "_bar" and "endpackage", expected newline post macro call to break both up
package p_v2;
class foo_bar;
endclass : <- unexpected newline before "foo_"
foo_bar
endpackage
package p_v3; <- same as v1
class foo_bar;
endclass :
foo_barendpackage
package p_v4;
class foo_bar;
endclass : foo_bar
endpackage
Compiling the original code w/ Cadence Xcellium (xrun) passes and seems to work fine.
Metadata
Metadata
Assignees
Labels
No labels