From 79ec81a37b3c51fdfba6120ea2badcea97efda2d Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Fri, 30 May 2008 12:34:26 +0000 Subject: [PATCH] Testcase for bug 104869. --- .../tests/scanner/PreprocessorTests.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorTests.java index 52306c9d717..973e0d7ac83 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner/PreprocessorTests.java @@ -11,6 +11,9 @@ *******************************************************************************/ package org.eclipse.cdt.core.parser.tests.scanner; +import java.util.ArrayList; +import java.util.List; + import junit.framework.TestSuite; import org.eclipse.cdt.core.parser.IProblem; @@ -1274,4 +1277,49 @@ public class PreprocessorTests extends PreprocessorTestsBase { validateEOF(); validateProblemCount(0); } + + + // f(2 * (y+1)) + f(2 * (f(2 * (z[0])))) % f(2 * (0)) + t(1); + // f(2 * (2+(3,4)-0,1)) | f(2 * (~ 5)) & f(2 * (0,1))^m(0,1); + // int i[] = { 1, 23, 4, 5, }; + // char c[2][6] = { "hello", "" }; + // -- + // #define x 3 + // #define f(a) f(x * (a)) + // #undef x + // #define x 2 + // #define g f + // #define z z[0] + // #define h g(~ + // #define m(a) a(w) + // #define w 0,1 + // #define t(a) a + // #define p() int + // #define q(x) x + // #define r(x,y) x ## y + // #define str(x) # x + // + // f(y+1) + f(f(z)) % t(t(g)(0) + t)(1); + // g(x+(3,4)-w) | h 5) & m + // (f)^m(m); + // p() i[q()] = { q(1), r(2,3), r(4,), r(,5), r(,) }; + // char c[2][6] = { str(hello), str() }; + public void testC99_6_7_5_3_5_Bug104869() throws Exception { + initializeScanner(); + // read in expected tokens + List expect= new ArrayList(); + IToken t= fScanner.nextToken(); + while(t.getType() != IToken.tDECR) { + expect.add(t); + t= fScanner.nextToken(); + } + + for (IToken et : expect) { + t= fScanner.nextToken(); + assertEquals(et.getImage(), t.getImage()); + assertEquals(et.getType(), t.getType()); + } + validateEOF(); + validateProblemCount(0); + } }