Preprocessor doesn't handle one case of definition substitution properly
If you run the preprocessor on this code
`define test(a1,a2) ((a1) + (a2)) `test val ( 1,2)
Output will be
((val 1) + (2))
It should give an error since there is no opening parenthesis after the definition name "test". However, what happens is that everything between the definition name and opening parenthesis gets prepended into the first argument.
This issue can mess up the code without the user detecting any errors. For example, user forgets to pass arguments to the definition name and a few lines later has a function call with same number of arguments.
Also available in: Atom