From 87785b3e675eadddb1ddaf145a3dc5168eff054a Mon Sep 17 00:00:00 2001 From: John Camelon Date: Fri, 19 Nov 2004 16:05:43 +0000 Subject: [PATCH] Patch for Devin Steffler Fixed 77276 - Preprocessor problem - Multi line #if are not accepted Fixed 77097 - Preprocessor problem - Multi line #defines are not accepted --- .../core/parser/tests/CompleteParseASTTest.java | 17 +++++++++++++++++ .../internal/core/parser/scanner2/Scanner2.java | 2 ++ 2 files changed, 19 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java index 60173f7d583..bc967101b7e 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java @@ -2416,5 +2416,22 @@ public class CompleteParseASTTest extends CompleteParseBaseTest 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()); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java index f724918bc79..c6648253fc1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/Scanner2.java @@ -2541,8 +2541,10 @@ public class Scanner2 implements IScanner, IScannerData { 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;