When we define a multi-line macro, such as:
6: #define THREE 1 \
7: + \
8: 2
we could expect that calling token.getLine() for Token representing number "2" would return line 8, but surprisingly the entire define definition is regarded as one-line preprocessor directive, so the result is 6.
The tokens list representing macro THREE:
[HASH@6,0]:"#"
[IDENTIFIER@6,1]:"define"
[IDENTIFIER@6,8]:"A"
[(@6,9]:"("
[IDENTIFIER@6,10]:"a"
[,@6,11]:","
[IDENTIFIER@6,13]:"b"
[)@6,14]:")"
[IDENTIFIER@6,16]:"a"
[WHITESPACE@6,17]:" "
[+@6,21]:"+"
[WHITESPACE@6,22]:" "
[IDENTIFIER@6,26]:"b"
[NL@6,27]:"
I'm aware that tokens list in Macro is not public, but still line and column numbers should be correct.