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 348a17a1647..a5688da4f6e 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 @@ -1919,4 +1919,17 @@ public class CompleteParseASTTest extends CompleteParseBaseTest { parse( "class Sample;\nstruct Sample { /* ... */ };" ); //$NON-NLS-1$ } + + public void testBug64268() throws Exception + { + Writer writer = new StringWriter(); + writer.write("#define BODY \\\n"); //$NON-NLS-1$ + writer.write("for (;;) { \\\n"); //$NON-NLS-1$ + writer.write("/* this multi-line comment messes \\\n"); //$NON-NLS-1$ + writer.write("up the parser. */ }\n"); //$NON-NLS-1$ + writer.write(" void abc() {\n"); //$NON-NLS-1$ + writer.write("BODY\n"); //$NON-NLS-1$ + writer.write("}\n"); //$NON-NLS-1$ + parse( writer.toString() ); + } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java index a0d4fa34f8f..00f437a1a53 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java @@ -1631,4 +1631,18 @@ public class ScannerTestCase extends BaseScannerTest validateToken( IToken.tSEMI ); validateEOF(); } + + public void testBug64268() throws Exception + { + Writer writer = new StringWriter(); + writer.write("#define BODY \\\n"); //$NON-NLS-1$ + writer.write(" { \\\n"); //$NON-NLS-1$ + writer.write(" /* this multi-line comment messes \\\n"); //$NON-NLS-1$ + writer.write(" up the parser. */ }\n"); //$NON-NLS-1$ + writer.write("BODY "); //$NON-NLS-1$ + initializeScanner( writer.toString() ); + validateToken( IToken.tLBRACE); + validateToken( IToken.tRBRACE); + validateEOF(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java index 823d97e6e4e..0f755f6212a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner/Scanner.java @@ -471,8 +471,7 @@ public final class Scanner implements IScanner, IScannerData { break; } else if (next == '*') { // multiline comment - if (skipOverMultilineComment()) - break; + skipOverMultilineComment(); c = getChar( true ); continue; } else {