Fix correct line number reporting in errors/warnings when a macro definition ends with '/' and it is not the end of a C comment - swig.swg has some of these macro definitions.

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12215 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2010-09-11 11:02:18 +00:00
commit efb9090a87
6 changed files with 23 additions and 1 deletions

View file

@ -5,6 +5,10 @@ See the RELEASENOTES file for a summary of changes in each release.
Version 2.0.1 (in progress)
===========================
2010-09-11: wsfulton
Fix incorrect line number reporting in errors/warnings when a macro
definition ends with '/' and it is not the end of a C comment.
2010-09-11: wsfulton
Fix incorrect line number reporting in errors/warnings after parsing
macro invocations with parameters given over more than one line.

View file

@ -78,6 +78,8 @@ pp_constant.i:23: Warning 305: Bad constant value (ignored).
pp_constant.i:29: Warning 305: Bad constant value (ignored).
pp_constant.i:35: Warning 305: Bad constant value (ignored).
pp_constant.i:42: Warning 305: Bad constant value (ignored).
pp_constant.i:46: Warning 305: Bad constant value (ignored).
pp_constant.i:49: Warning 305: Bad constant value (ignored).
:::::::::::::::::::::::::::::::: pp_defined.i :::::::::::::::::::::::::::::::::::
pp_defined.i:6: Error: No arguments given to defined()

View file

@ -41,3 +41,10 @@ comment */
%constant int fff=;
// Test macro ending in /, that is not a C comment terminator
#define G1 1234
#define G2 1234 /
#define G3 1234
%constant int ggg=;

View file

@ -60,5 +60,9 @@ public class preproc_line_file_runme {
String inlineFile = preproc_line_file.INLINE_FILE;
if (!(inlineFile.equals(FILENAME_UNIX) || inlineFile.equals(FILENAME_WINDOWS)))
throw new RuntimeException("preproc failure");
if (Slash.LINE_NUM != 93)
throw new RuntimeException("preproc failure");
}
}

View file

@ -87,3 +87,9 @@ KLASS(SillyMultipleMacroStruct)
#define INLINE_LINE __LINE__
%}
#define MACRO_END_WITH_SLASH ABCD/
%inline %{
KLASS(Slash)
%}

View file

@ -1444,7 +1444,6 @@ String *Preprocessor_parse(String *s) {
else if (c == '\n') {
Putc('/', value);
Ungetc(c, s);
cpp_lines++;
state = 50;
} else {
Putc('/', value);