[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] [FIXED][79471][Parser] Syntax Errors: Problems with handling float value in the preprocessor statements
|
[FIXED][79471][Parser] Syntax Errors:
Problems with handling float value in the preprocessor statements
This is a scanner bug and should be
applied to 2.1/Head.
Thanks,
Devin Steffler
IBM's Eclipse CDT
Ottawa (Palladium), Ontario, Canada
Index: parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java,v
retrieving revision 1.140
diff -u -r1.140 CompleteParseASTTest.java
--- parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java 20 Nov 2004 17:48:43 -0000 1.140
+++ parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java 30 Nov 2004 14:04:13 -0000
@@ -2480,5 +2480,23 @@
IASTVariable pBase = (IASTVariable)i.next();
assertEquals(pBase.getStartingLine(), 19);
}
+
+ public void testBug79471() throws Exception {
+ Writer writer = new StringWriter();
+ writer.write("void testFloatAccess(float * fp) {\n"); //$NON-NLS-1$
+ writer.write("#define VAL 2.0f\n"); //$NON-NLS-1$
+ writer.write("if(*fp > VAL) { /* Syntax error is here */\n}\n}\n"); //$NON-NLS-1$
+ parse(writer.toString());
+ writer = new StringWriter();
+ writer.write("void testFloatAccess(float * fp) {\n"); //$NON-NLS-1$
+ writer.write("#define VAL 2.0l\n"); //$NON-NLS-1$
+ writer.write("if(*fp > VAL) { /* Syntax error is here */\n}\n}\n"); //$NON-NLS-1$
+ parse(writer.toString());
+ writer = new StringWriter();
+ writer.write("void testFloatAccess(float * fp) {\n"); //$NON-NLS-1$
+ writer.write("#define VAL 2.0f\n"); //$NON-NLS-1$
+ writer.write("if(VAL > VAL) { /* Syntax error is here */\n}\n}\n"); //$NON-NLS-1$
+ parse(writer.toString());
+ }
}
Index: parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt-core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java,v
retrieving revision 1.91
diff -u -r1.91 Scanner2.java
--- parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java 29 Nov 2004 21:00:31 -0000 1.91
+++ parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java 30 Nov 2004 14:03:59 -0000
@@ -1328,7 +1328,7 @@
// must be float suffix
++bufferPos[bufferStackPos];
- if (buffer[bufferPos[bufferStackPos]] == 'i')
+ if (bufferPos[bufferStackPos] < buffer.length && buffer[bufferPos[bufferStackPos]] == 'i')
continue; // handle GCC extension 5.10 Complex Numbers
break; // fix for 77281 (used to be continue)