Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] [FIXED] 77097, 77276


[FIXED][77276]Preprocessor problem - Multi line #if are not accepted
[FIXED][77097]Preprocessor problem - Multi line #defines are not accepted

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.88
diff -u -r1.88 Scanner2.java
--- parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java	18 Nov 2004 20:30:27 -0000	1.88
+++ parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java	19 Nov 2004 15:38:09 -0000
@@ -2541,8 +2541,10 @@
 				case '\r':
 					if (escaped && bufferPos[bufferStackPos] < limit && buffer[bufferPos[bufferStackPos] + 1] == '\n') {
 						escaped = false;
+						bufferPos[bufferStackPos]++;
 						break;
 					} else if (!escaped && bufferPos[bufferStackPos] < limit && buffer[bufferPos[bufferStackPos] + 1] == '\n') {
+						bufferPos[bufferStackPos]++;
 						return;
 					}
 					break;
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.138
diff -u -r1.138 CompleteParseASTTest.java
--- parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java	18 Nov 2004 21:05:23 -0000	1.138
+++ parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java	19 Nov 2004 15:38:30 -0000
@@ -2416,5 +2416,22 @@
 	    	assertEquals(ip.getSourceLineNumber(), 4);
 		}
     }
+    
+    public void testBug77097() throws Exception {
+    	Writer writer = new StringWriter();
+    	writer.write("#define SOME_MACRO() { \\\r\n"); //$NON-NLS-1$
+    	writer.write("printf(\"Hello World\"); \\\r\n"); //$NON-NLS-1$
+    	writer.write("printf(\"Good morning\"); \\\r\n"); //$NON-NLS-1$
+    	parse(writer.toString());
+    }
+    
+    public void testBug77276() throws Exception {
+    	Writer writer = new StringWriter();
+    	writer.write("#if (!defined(OS_LIBMODE_R) && !defined(OS_LIBMODE_RP) && \\\r\n"); //$NON-NLS-1$
+    	writer.write("!defined(OS_LIBMODE_T))\r\n"); //$NON-NLS-1$
+    	writer.write("#define OS_LIBMODE_DP\r\n"); //$NON-NLS-1$
+    	writer.write("#endif\r\n"); //$NON-NLS-1$
+    	parse(writer.toString());
+    }
 }
 

Back to the top