Fix line number handling in line directive callback.
The line argument passed into the lineCallback function is the literal value of the first argument of the #line directive. lastLine in DoPreprocessing() should be updated taking into consideration the different definitions for #line between specs. Add a test to reveal the bug.
This commit is contained in:
parent
3a194f7ba4
commit
5cbc990a0a
9 changed files with 40 additions and 13 deletions
|
|
@ -641,14 +641,7 @@ int TPpContext::CPPline(TPpToken* ppToken)
|
|||
if (token == '\n')
|
||||
++lineRes;
|
||||
|
||||
// Desktop, pre-version 3.30: "After processing this directive
|
||||
// (including its new-line), the implementation will behave as if it is compiling at line number line+1 and
|
||||
// source string number source-string-number."
|
||||
//
|
||||
// Desktop, version 3.30 and later, and ES: "After processing this directive
|
||||
// (including its new-line), the implementation will behave as if it is compiling at line number line and
|
||||
// source string number source-string-number.
|
||||
if (parseContext.profile == EEsProfile || parseContext.version >= 330)
|
||||
if (parseContext.lineDirectiveShouldSetNextLine())
|
||||
--lineRes;
|
||||
parseContext.setCurrentLine(lineRes);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue