glcpp: Avoid accidental token pasting in preprocessed result.

Consider this test case:

	#define EMPTY
	int foo = 1+EMPTY+4;

The expression should compile as the sequence of tokens 1, PLUS,
UNARY_POSITIVE, 4. But glcpp has been failing for this case since it
results in the string "1++4" which a compiler correctly sees as a
syntax error, (1, POST_INCREMENT, 4).

We fix this by changing any macro with an empty definition to result
in a single SPACE token rather than nothing. This then gives "1+ +4"
which compiles correctly.

This commit does touch up the two existing test cases which already
have empty macros, (to add the space to the expected result).

It also adds a new test case to exercise the above scenario.
This commit is contained in:
Carl Worth
2010-07-20 16:44:03 -07:00
committed by Ian Romanick
parent 942ccc5170
commit e1acbfca32
5 changed files with 43 additions and 5 deletions
@@ -1,3 +1,3 @@