[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] [FIXED]77281, 77921, 76763
|
[FIXED][77281]Unable to parse assignment
statements
[FIXED][77921]Syntax Error on initializer
with floats
[FIXED][76763]Problem for #error has
extra characters
Devin Steffler
IBM's Eclipse CDT
Ottawa (Palladium), Ontario, Canada
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.87
diff -u -r1.87 Scanner2.java
--- parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java 17 Nov 2004 19:39:17 -0000 1.87
+++ parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java 18 Nov 2004 20:10:11 -0000
@@ -1327,7 +1327,11 @@
// must be float suffix
++bufferPos[bufferStackPos];
- continue;
+
+ if (buffer[bufferPos[bufferStackPos]] == 'i')
+ continue; // handle GCC extension 5.10 Complex Numbers
+
+ break; // fix for 77281 (used to be continue)
case 'p':
case 'P':
@@ -1531,7 +1535,8 @@
handleInvalidCompletion();
return;
case ppError:
- start = bufferPos[bufferStackPos];
+ skipOverWhiteSpace();
+ start = bufferPos[bufferStackPos] + 1;
skipToNewLine();
len = bufferPos[bufferStackPos] - start;
handleProblem( IProblem.PREPROCESSOR_POUND_ERROR, start, CharArrayUtils.extract( buffer, start, len ));
@@ -2533,7 +2538,14 @@
break;
}
return;
-
+ case '\r':
+ if (escaped && bufferPos[bufferStackPos] < limit && buffer[bufferPos[bufferStackPos] + 1] == '\n') {
+ escaped = false;
+ break;
+ } else if (!escaped && bufferPos[bufferStackPos] < limit && buffer[bufferPos[bufferStackPos] + 1] == '\n') {
+ return;
+ }
+ break;
}
escaped = false;
}
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.135
diff -u -r1.135 CompleteParseASTTest.java
--- parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java 18 Nov 2004 14:34:36 -0000 1.135
+++ parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java 18 Nov 2004 20:10:25 -0000
@@ -2266,12 +2266,12 @@
Object ipo = probs.next();
assertTrue( ipo instanceof IProblem );
IProblem ip = (IProblem)ipo;
- assertTrue(ip.getArguments().indexOf("This was equal, but not for the eclipse") > 0); //$NON-NLS-1$
+ assertTrue(ip.getArguments().indexOf("This was equal, but not for the eclipse") >= 0); //$NON-NLS-1$
assertTrue( probs.hasNext() );
ipo = probs.next();
assertTrue( ipo instanceof IProblem );
ip = (IProblem)ipo;
- assertTrue(ip.getArguments().indexOf("octal test") > 0); //$NON-NLS-1$
+ assertTrue(ip.getArguments().indexOf("octal test") >= 0); //$NON-NLS-1$
}
}
@@ -2341,5 +2341,38 @@
writer.write("temp = (TYPE*)(pType + 1); /* Parser error is here */\n}\n"); //$NON-NLS-1$
parse(writer.toString());
}
+
+ public void testBug77281() throws Exception {
+ Writer writer = new StringWriter();
+ writer.write("void fun2(float a, float b) {}\n"); //$NON-NLS-1$
+ writer.write("int main() { fun2(0.24f, 0.25f); }\n"); //$NON-NLS-1$
+ parse(writer.toString());
+ }
+
+ public void testBug77921() throws Exception {
+ Writer writer = new StringWriter();
+ writer.write("void f()\n{\n"); //$NON-NLS-1$
+ writer.write("static float v0[] = { -1.0f, -1.0f, 1.0f };\n}\n"); //$NON-NLS-1$
+ parse(writer.toString());
+ }
+
+ public void testBug76763() throws Exception
+ {
+ Writer writer = new StringWriter();
+ writer.write("#error oops!"); //$NON-NLS-1$
+ try {
+ parse(writer.toString());
+ } catch (ParserException pe) {
+ // expected IProblem
+ } finally {
+ Iterator i = callback.getProblems();
+ assertTrue( i.hasNext() );
+ Object ipo = i.next();
+ assertTrue( ipo instanceof IProblem );
+ IProblem ip = (IProblem)ipo;
+ assertTrue(new String(ip.getArguments()).equals("oops!")); //$NON-NLS-1$
+ assertFalse( i.hasNext() );
+ }
+ }
}