From e0ba2b4f8441f7de45d592d4bea390af9302a824 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Tue, 6 Nov 2007 16:41:44 +0000 Subject: [PATCH] Parser tests using CPreprocessor --- .../core/parser/tests/ast2/AST2BaseTest.java | 18 +++- .../parser/tests/ast2/AST2CPPSpecTest.java | 12 +-- .../ast2/AST2SelectionParseBaseTest.java | 12 +-- .../parser/tests/ast2/AST2SpecBaseTest.java | 16 +--- .../cdt/core/parser/tests/ast2/AST2Tests.java | 3 +- .../tests/ast2/CompleteParser2Tests.java | 12 +-- .../tests/ast2/DOMLocationMacroTests.java | 9 +- .../parser/tests/ast2/DOMLocationTests.java | 14 ++- .../ast2/DOMPreprocessorInformationTest.java | 12 +-- .../parser/tests/ast2/DOMScannerTests.java | 27 ++++-- .../parser/tests/ast2/QuickParser2Tests.java | 12 +-- .../tests/prefix/CompletionTestBase.java | 13 +-- .../tests/scanner/PreprocessorTests.java | 86 +++++++++++++++++++ 13 files changed, 156 insertions(+), 90 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2BaseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2BaseTest.java index 12bc13dd865..53d2920cd27 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2BaseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2BaseTest.java @@ -56,6 +56,7 @@ import org.eclipse.cdt.core.dom.parser.cpp.ICPPParserExtensionConfiguration; import org.eclipse.cdt.core.parser.CodeReader; import org.eclipse.cdt.core.parser.IParserLogService; import org.eclipse.cdt.core.parser.IScanner; +import org.eclipse.cdt.core.parser.IScannerInfo; import org.eclipse.cdt.core.parser.NullLogService; import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserMode; @@ -68,6 +69,7 @@ import org.eclipse.cdt.internal.core.dom.parser.c.GNUCSourceParser; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor; import org.eclipse.cdt.internal.core.dom.parser.cpp.GNUCPPSourceParser; import org.eclipse.cdt.internal.core.parser.ParserException; +import org.eclipse.cdt.internal.core.parser.scanner.CPreprocessor; import org.eclipse.cdt.internal.core.parser.scanner2.DOMScanner; import org.eclipse.cdt.internal.core.parser.scanner2.FileCodeReaderFactory; @@ -77,6 +79,7 @@ import org.eclipse.cdt.internal.core.parser.scanner2.FileCodeReaderFactory; public class AST2BaseTest extends BaseTestCase { private static final IParserLogService NULL_LOG = new NullLogService(); + protected boolean fUsesCPreprocessor= false; public AST2BaseTest() { super(); @@ -106,6 +109,7 @@ public class AST2BaseTest extends BaseTestCase { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems , boolean parseComments) throws ParserException { IScanner scanner = createScanner(new CodeReader(code.toCharArray()), lang, ParserMode.COMPLETE_PARSE, new ScannerInfo(), parseComments); + fUsesCPreprocessor= scanner instanceof CPreprocessor; ISourceCodeParser parser2 = null; if( lang == ParserLanguage.CPP ) { @@ -151,14 +155,22 @@ public class AST2BaseTest extends BaseTestCase { } public static IScanner createScanner(CodeReader codeReader, ParserLanguage lang, ParserMode mode, - ScannerInfo scannerInfo, boolean parseComments) { + IScannerInfo scannerInfo, boolean parseComments) { IScannerExtensionConfiguration configuration = null; if( lang == ParserLanguage.C ) configuration = new GCCScannerExtensionConfiguration(); else configuration = new GPPScannerExtensionConfiguration(); - IScanner scanner = new DOMScanner( codeReader, scannerInfo, mode, lang, NULL_LOG, configuration, FileCodeReaderFactory.getInstance() ); - scanner.setScanComments(parseComments); + IScanner scanner; + if (CPreprocessor.PROP_VALUE.equals(System.getProperty("scanner"))) { + scanner= new CPreprocessor(codeReader, scannerInfo, lang, NULL_LOG, configuration, + FileCodeReaderFactory.getInstance()); + } + else { + scanner = new DOMScanner( codeReader, scannerInfo, mode, lang, NULL_LOG, configuration, + FileCodeReaderFactory.getInstance() ); + scanner.setScanComments(parseComments); + } return scanner; } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java index 0c7ed94ad6e..a23d8688bc6 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java @@ -6572,7 +6572,7 @@ public class AST2CPPSpecTest extends AST2SpecBaseTest { buffer.append("int i = cobj.c * 100; // value of cobj.c is unspecified\n"); //$NON-NLS-1$ buffer.append("cptr->c = 1;\n"); //$NON-NLS-1$ buffer.append("cout << cobj.c * 100 // value of cobj.c is unspecified\n"); //$NON-NLS-1$ - buffer.append("<< '\n';\n"); //$NON-NLS-1$ + buffer.append("<< '\\n';\n"); //$NON-NLS-1$ buffer.append("}\n"); //$NON-NLS-1$ parse(buffer.toString(), ParserLanguage.CPP, false, 0); } @@ -9734,7 +9734,7 @@ public class AST2CPPSpecTest extends AST2SpecBaseTest { buffer.append("void printall()\n"); //$NON-NLS-1$ buffer.append("{\n"); //$NON-NLS-1$ buffer.append("for (int i = 0; i