From 27cfada85a9a9c84d1df1afa5502f7d9b9fec1fc Mon Sep 17 00:00:00 2001 From: John Camelon Date: Thu, 14 Jul 2005 21:29:09 +0000 Subject: [PATCH] Checked in JUnit for regression purposes. Patch for Andrew partial fix for Bug 103560 ClassCastException in LocationMap.endInclusion --- .../cdt/core/parser/tests/ast2/AST2CPPTests.java | 11 +++++++++++ .../core/parser/tests/ast2/CompleteParser2Tests.java | 7 +++++++ .../cdt/core/parser/tests/scanner2/Scanner2Test.java | 10 ++++++++++ .../internal/core/parser/scanner2/BaseScanner.java | 7 +++---- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index 42c7b164a7d..826624c42d4 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -103,6 +103,17 @@ import org.eclipse.cdt.internal.core.parser.ParserException; public class AST2CPPTests extends AST2BaseTest { + +// public void testBug102825() throws Exception { +// StringBuffer buffer = new StringBuffer("#define CURLOPTTYPE_OBJECTPOINT 10000\n" ); //$NON-NLS-1$ +// buffer.append("#define CINIT(name,type,number) CURLOPT_ ## name = CURLOPTTYPE_ ## type + number\n" ); //$NON-NLS-1$ +// buffer.append("typedef enum {\n" ); //$NON-NLS-1$ +// buffer.append("CINIT(FILE, OBJECTPOINT, 1),\n" ); //$NON-NLS-1$ +// buffer.append(" CINIT(URL, OBJECTPOINT, 2)\n" ); //$NON-NLS-1$ +// buffer.append("} CURLoption ;\n" ); //$NON-NLS-1$ +// parseAndCheckBindings(buffer.toString()); +// } + public void testBug78883() throws Exception { StringBuffer buffer = new StringBuffer("class B {\n"); //$NON-NLS-1$ buffer.append("public:\n"); //$NON-NLS-1$ diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java index 21d37476bab..a980bd7faa1 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/CompleteParser2Tests.java @@ -2468,4 +2468,11 @@ public class CompleteParser2Tests extends TestCase { parse( writer.toString() ); } + public void testBug103560() throws Exception { + Writer writer = new StringWriter(); + writer.write("#define A( a, b ) a ## b \n"); //$NON-NLS-1$ + writer.write("#define FOOBAR 1 \n"); //$NON-NLS-1$ + writer.write("int i = A( FOO, BAR ); \n"); //$NON-NLS-1$ + parse( writer.toString() ); + } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java index b843fe70c52..2eb672d075d 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java @@ -34,6 +34,16 @@ import org.eclipse.cdt.internal.core.parser.scanner2.FunctionStyleMacro; */ public class Scanner2Test extends BaseScanner2Test { +// public void testBug102825() throws Exception { +// StringBuffer buffer = new StringBuffer("#define CURLOPTTYPE_OBJECTPOINT 10000\n" ); //$NON-NLS-1$ +// buffer.append("#define CINIT(name,type,number) CURLOPT_##name = CURLOPTTYPE_##type + number\n" ); //$NON-NLS-1$ +// buffer.append("CINIT(FILE, OBJECTPOINT, 1)\n" ); //$NON-NLS-1$ +// initializeScanner(buffer.toString()); +// validateIdentifier( "CURLOPT_FILE"); //$NON-NLS-1$ +// validateToken( IToken.tASSIGN ); +// validateInteger( "10000"); //$NON-NLS-1$ +// } + public class TableRow { private int[] values; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java index a16d701e658..f908673f59b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/scanner2/BaseScanner.java @@ -4274,11 +4274,10 @@ abstract class BaseScanner implements IScanner { replacedArgs.put(repObject, rep); repObject = rep; } + + if (result != null ) + System.arraycopy(repObject, 0, result, outpos, repObject.length); } - - if (result != null) - System.arraycopy(repObject, 0, result, outpos, - repObject.length); outpos += repObject.length; lastcopy = pos;