diff options
author | Mike Kucera | 2009-01-02 14:58:24 +0000 |
---|---|---|
committer | Mike Kucera | 2009-01-02 14:58:24 +0000 |
commit | cfa1a4f42e74dc726e6e91d6cc448804e9a59fa3 (patch) | |
tree | 780ed0cc4fc26831b221f79647dfc01548c641da /lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt | |
parent | 60d92373d09eba3d2b19baf4fa52d8a60fc8ab4d (diff) | |
download | org.eclipse.cdt-cfa1a4f42e74dc726e6e91d6cc448804e9a59fa3.tar.gz org.eclipse.cdt-cfa1a4f42e74dc726e6e91d6cc448804e9a59fa3.tar.xz org.eclipse.cdt-cfa1a4f42e74dc726e6e91d6cc448804e9a59fa3.zip |
Added ability to pass ILanguage options to LR parser, refactored ParseHelper, partial fix for bug 253690
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt')
19 files changed, 170 insertions, 77 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecFailingTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecFailingTest.java index 2ca06bdf816..c869f5e4b5b 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecFailingTest.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecFailingTest.java @@ -41,13 +41,18 @@ public class LRCPPSpecFailingTest extends AST2CPPSpecFailingTest { @Override protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean checkBindings, int expectedProblemBindings ) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); - return ParseHelper.parse(code, language, true, checkBindings, expectedProblemBindings ); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckBindings(checkBindings); + options.setExpectedProblemBindings(expectedProblemBindings); + return ParseHelper.parse(code, language, options); } @Override protected IASTTranslationUnit parse(String code, ParserLanguage lang, String[] problems) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); - return ParseHelper.parse(code, language, problems); + ParseHelper.Options options = new ParseHelper.Options(); + options.setProblems(problems); + return ParseHelper.parse(code, language, options); } diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java index bc2477fecd8..2e36c90f831 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java @@ -38,16 +38,22 @@ public class LRCPPSpecTest extends AST2CPPSpecTest { parse(code, ParserLanguage.CPP, checkBindings, expectedProblemBindings); } + @Override protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean checkBindings, int expectedProblemBindings ) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); - return ParseHelper.parse(code, language, true, checkBindings, expectedProblemBindings ); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckBindings(checkBindings); + options.setExpectedProblemBindings(expectedProblemBindings); + return ParseHelper.parse(code, language, options); } @Override protected IASTTranslationUnit parse(String code, ParserLanguage lang, String[] problems) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); - return ParseHelper.parse(code, language, problems); + ParseHelper.Options options = new ParseHelper.Options(); + options.setProblems(problems); + return ParseHelper.parse(code, language, options); } protected BaseExtensibleLanguage getCLanguage() { diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPTests.java index ed439fbd562..bdf4affdb25 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPTests.java @@ -39,9 +39,13 @@ public class LRCPPTests extends AST2CPPTests { @Override - protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, @SuppressWarnings("unused") boolean parseComments) throws ParserException { + protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(expectNoProblems); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setSkipTrivialInitializers(skipTrivialInitializers); + return ParseHelper.parse(code, language, options); } protected ILanguage getC99Language() { diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java index 6c3833ff6f5..c5910b620a0 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java @@ -37,17 +37,26 @@ public class LRCSpecTests extends AST2CSpecTest { parse(code, ParserLanguage.C, checkBindings, expectedProblemBindings); parse(code, ParserLanguage.CPP, checkBindings, expectedProblemBindings); } - + @Override protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean checkBindings, int expectedProblemBindings ) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); - return ParseHelper.parse(code, language, true, checkBindings, expectedProblemBindings ); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(true); + options.setCheckPreprocessorProblems(true); + options.setCheckBindings(checkBindings); + options.setExpectedProblemBindings(expectedProblemBindings); + return ParseHelper.parse(code, language, options); } - + @Override protected IASTTranslationUnit parse(String code, ParserLanguage lang, String[] problems) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); - return ParseHelper.parse(code, language, problems); + ParseHelper.Options options = new ParseHelper.Options(); + options.setProblems(problems); + options.setCheckSyntaxProblems(true); + options.setCheckPreprocessorProblems(true); + return ParseHelper.parse(code, language, options); } protected ILanguage getCLanguage() { diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCommentTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCommentTests.java index 087c2a91961..305d702508e 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCommentTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCommentTests.java @@ -42,9 +42,13 @@ public class LRCommentTests extends CommentTests { @SuppressWarnings("unused") protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, - boolean parseComments) throws ParserException { + boolean skipTrivialInitializers) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(expectNoProblems); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setSkipTrivialInitializers(skipTrivialInitializers); return ParseHelper.commentParse(code, language); } diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationMacroTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationMacroTests.java index 8fcc5d505f9..e498795b2e4 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationMacroTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationMacroTests.java @@ -35,7 +35,8 @@ public class LRDOMLocationMacroTests extends DOMLocationMacroTests { @SuppressWarnings("unused") protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems); + return ParseHelper.parse(code, language, options); } diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationTests.java index 11af2e14cef..c4ae424ad8d 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMLocationTests.java @@ -35,7 +35,8 @@ public class LRDOMLocationTests extends DOMLocationTests { @SuppressWarnings("unused") protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems); + return ParseHelper.parse(code, language, options); } protected ILanguage getC99Language() { diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMPreprocessorInformationTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMPreprocessorInformationTest.java index b6b7cce7716..1d8a151a114 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMPreprocessorInformationTest.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDOMPreprocessorInformationTest.java @@ -31,7 +31,8 @@ public class LRDOMPreprocessorInformationTest extends DOMPreprocessorInformation @SuppressWarnings("unused") protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems); + return ParseHelper.parse(code, language, options); } diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDigraphTrigraphTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDigraphTrigraphTests.java index fafc19cd4d7..4bfb085b178 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDigraphTrigraphTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRDigraphTrigraphTests.java @@ -52,7 +52,10 @@ public class LRDigraphTrigraphTests extends TestCase { protected IASTTranslationUnit parse(String code) { - return ParseHelper.parse(code, getCLanguage(), true); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(true); + options.setCheckPreprocessorProblems(true); + return ParseHelper.parse(code, getCLanguage(), options); } diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCTests.java index 0b6603470de..bad5ea5b4dc 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRGCCTests.java @@ -35,7 +35,8 @@ public class LRGCCTests extends GCCTests { @SuppressWarnings("unused") protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems); + return ParseHelper.parse(code, language, options); } diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRImageLocationTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRImageLocationTests.java index 2bca1e7c61a..73966c7e981 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRImageLocationTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRImageLocationTests.java @@ -32,9 +32,13 @@ public class LRImageLocationTests extends ImageLocationTests { @Override @SuppressWarnings("unused") protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, - boolean expectNoProblems, boolean parseComments) throws ParserException { + boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(expectNoProblems); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setSkipTrivialInitializers(skipTrivialInitializers); + return ParseHelper.parse(code, language, options); } protected ILanguage getC99Language() { diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java index 9e47a0dc9f7..790a53a5d5f 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java @@ -34,9 +34,13 @@ public class LRNodeSelectorTest extends ASTNodeSelectorTest { @Override - protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, @SuppressWarnings("unused") boolean parseComments) throws ParserException { + protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializer) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(expectNoProblems); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setSkipTrivialInitializers(skipTrivialInitializer); + return ParseHelper.parse(code, language, options); } @Override diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRQuickParser2Tests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRQuickParser2Tests.java index 7ddb87c712f..7dff08ca8bf 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRQuickParser2Tests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRQuickParser2Tests.java @@ -13,11 +13,8 @@ import junit.framework.AssertionFailedError; import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.model.ILanguage; -import org.eclipse.cdt.core.parser.CodeReader; import org.eclipse.cdt.core.parser.ParserLanguage; -import org.eclipse.cdt.core.parser.ScannerInfo; import org.eclipse.cdt.core.parser.tests.ast2.QuickParser2Tests; -import org.eclipse.cdt.core.parser.tests.scanner.FileCodeReaderFactory; public class LRQuickParser2Tests extends QuickParser2Tests { @@ -29,9 +26,11 @@ public class LRQuickParser2Tests extends QuickParser2Tests { protected void parse(String code, boolean expectedToPass, ParserLanguage lang, @SuppressWarnings("unused") boolean gcc) throws Exception { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - CodeReader reader = new CodeReader(code.toCharArray()); // don't check preprocessor problems for this test suite (causes tons of failures) - ParseHelper.parse(reader, language, new ScannerInfo(), FileCodeReaderFactory.getInstance(), expectedToPass, false, 0, null, false); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(expectedToPass); + options.setCheckPreprocessorProblems(false); + ParseHelper.parse(code, language, options); } diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java index 40dc773e455..c7839c8144c 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java @@ -56,8 +56,10 @@ public class LRSelectionParseTest extends AST2SelectionParseTest { @Override protected IASTNode parse(String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, int offset, int length) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - - IASTTranslationUnit tu = ParseHelper.parse(code, language, useGNUExtensions, expectNoProblems, 0); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setCheckSyntaxProblems(expectNoProblems); + IASTTranslationUnit tu = ParseHelper.parse(code, language, options); return tu.selectNodeForLocation(tu.getFilePath(), offset, length); } @@ -68,7 +70,13 @@ public class LRSelectionParseTest extends AST2SelectionParseTest { String fileName = file.getLocation().toOSString(); ICodeReaderFactory fileCreator = SavedCodeReaderFactory.getInstance(); CodeReader reader = fileCreator.createCodeReaderForTranslationUnit(fileName); - return ParseHelper.parse(reader, language, scanInfo, fileCreator, expectNoProblems, true, 0, null, true); + + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setCheckSyntaxProblems(expectNoProblems); + options.setCheckBindings(true); + + return ParseHelper.parse(reader, language, scanInfo, fileCreator, options); } @Override diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSemanticsTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSemanticsTests.java index c5ffa32c1cd..0064cb64247 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSemanticsTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSemanticsTests.java @@ -32,9 +32,13 @@ public class LRSemanticsTests extends SemanticsTests { @SuppressWarnings("unused") @Override protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, - boolean expectNoProblems, boolean parseComments) throws ParserException { + boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(expectNoProblems); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setSkipTrivialInitializers(skipTrivialInitializers); + return ParseHelper.parse(code, language, options); } protected ILanguage getC99Language() { diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java index 1882fc7a1ed..2340cd3cddd 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java @@ -30,14 +30,17 @@ public class LRTaskParserTest extends TaskParserTest { @Override @SuppressWarnings("unused") protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { - ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - - return ParseHelper.parse(code, language, expectNoProblems); + return parse(code, lang, useGNUExtensions, expectNoProblems, false); } @Override - protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, @SuppressWarnings("unused") boolean parseComments) throws ParserException { - return parse(code,lang, useGNUExtensions, expectNoProblems ); + protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { + ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(expectNoProblems); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setSkipTrivialInitializers(skipTrivialInitializers); + return ParseHelper.parse(code, language, options); } protected ILanguage getC99Language() { diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTemplateTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTemplateTests.java index 4ccf6596ea0..03d977111fe 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTemplateTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTemplateTests.java @@ -31,9 +31,13 @@ public class LRTemplateTests extends AST2TemplateTests { @Override @SuppressWarnings("unused") - protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean parseComments) throws ParserException { + protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(expectNoProblems); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setSkipTrivialInitializers(skipTrivialInitializers); + return ParseHelper.parse(code, language, options); } protected ILanguage getC99Language() { diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java index 85609357d57..de0fe373b1d 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java @@ -42,14 +42,18 @@ public class LRTests extends AST2Tests { @Override - protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { - ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); - return ParseHelper.parse(code, language, expectNoProblems); + protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { + return parse(code, lang, useGNUExtensions, expectNoProblems, false); } @Override - protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, @SuppressWarnings("unused") boolean parseComments) throws ParserException { - return parse(code,lang, useGNUExtensions, expectNoProblems ); + protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { + ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); + ParseHelper.Options options = new ParseHelper.Options(); + options.setCheckSyntaxProblems(expectNoProblems); + options.setCheckPreprocessorProblems(expectNoProblems); + options.setSkipTrivialInitializers(skipTrivialInitializers); + return ParseHelper.parse(code, language, options); } protected ILanguage getC99Language() { diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java index 8ce2fbcad4c..66b022a7f7c 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java +++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java @@ -75,56 +75,84 @@ public class ParseHelper { } - - public static IASTTranslationUnit parse(char[] code, ILanguage lang, boolean expectNoProblems, boolean checkBindings, int expectedProblemBindings) { - CodeReader codeReader = new CodeReader(code); - return parse(codeReader, lang, new ScannerInfo(), null, expectNoProblems, checkBindings, expectedProblemBindings, null, expectNoProblems); - } - public static IASTTranslationUnit parse(String code, ILanguage lang, boolean expectNoProblems, boolean checkBindings, int expectedProblemBindings) { - return parse(code.toCharArray(), lang, expectNoProblems, checkBindings, expectedProblemBindings); + public static class Options { + + boolean checkSyntaxProblems = true; + boolean checkPreprocessorProblems = true; + boolean checkBindings = false; + + int expectedProblemBindings; + String[] problems; + boolean skipTrivialInitializers; + + public Options setCheckSyntaxProblems(boolean checkSyntaxProblems) { + this.checkSyntaxProblems = checkSyntaxProblems; + return this; + } + public Options setCheckBindings(boolean checkBindings) { + this.checkBindings = checkBindings; + return this; + } + public Options setCheckPreprocessorProblems(boolean checkPreprocessorProblems) { + this.checkPreprocessorProblems = checkPreprocessorProblems; + return this; + } + public Options setExpectedProblemBindings(int expectedProblemBindings) { + this.expectedProblemBindings = expectedProblemBindings; + return this; + } + public Options setProblems(String[] problems) { + this.problems = problems; + setExpectedProblemBindings(problems.length); + setCheckBindings(true); + return this; + } + public Options setSkipTrivialInitializers(boolean skipTrivialInitializers) { + this.skipTrivialInitializers = skipTrivialInitializers; + return this; + } + } + public static IASTTranslationUnit parse(String code, ILanguage lang, boolean expectNoProblems) { - return parse(code, lang, expectNoProblems, false, 0); + Options options = new Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems); + return parse(code.toCharArray(), lang, options); } - public static IASTTranslationUnit parse(String code, ILanguage lang, String[] problems) { - CodeReader codeReader = new CodeReader(code.toCharArray()); - return parse(codeReader, lang, new ScannerInfo(), null, true, true, problems.length, problems, true); + public static IASTTranslationUnit parse(String code, ILanguage lang, Options options) { + return parse(code.toCharArray(), lang, options); } - + + public static IASTTranslationUnit parse(char[] code, ILanguage lang, Options options) { + CodeReader codeReader = new CodeReader(code); + return parse(codeReader, lang, new ScannerInfo(), null, options); + } + + /** * TODO thats WAY too many parameters, need to use a parameter object, need to refactor the * DOM parser test suite so that its a lot cleaner. - * - * @param codeReader - * @param language - * @param scanInfo - * @param fileCreator - * @param checkSyntaxProblems - * @param checkBindings - * @param expectedProblemBindings - * @param problems - * @param checkPreprocessorProblems - * @return */ public static IASTTranslationUnit parse(CodeReader codeReader, ILanguage language, IScannerInfo scanInfo, - ICodeReaderFactory fileCreator, boolean checkSyntaxProblems, - boolean checkBindings, int expectedProblemBindings, String[] problems, - boolean checkPreprocessorProblems) { + ICodeReaderFactory fileCreator, Options options) { testsRun++; IASTTranslationUnit tu; try { - tu = language.getASTTranslationUnit(codeReader, scanInfo, fileCreator, null, ParserUtil.getParserLogService()); + int languageOptions = 0; + if(options.skipTrivialInitializers) + languageOptions |= ILanguage.OPTION_SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS; + + tu = language.getASTTranslationUnit(codeReader, scanInfo, fileCreator, null, languageOptions, ParserUtil.getParserLogService()); } catch (CoreException e) { throw new AssertionFailedError(e.toString()); } // should parse correctly first before we look at the bindings - if(checkSyntaxProblems) { + if(options.checkSyntaxProblems) { // this should work for C++ also, CVisitor.getProblems() and CPPVisitor.getProblems() are exactly the same code! if (CVisitor.getProblems(tu).length != 0) { @@ -132,22 +160,22 @@ public class ParseHelper { } } - if(checkPreprocessorProblems) { + if(options.checkPreprocessorProblems) { if (tu.getPreprocessorProblems().length != 0) { throw new AssertionFailedError(language.getName() + " TranslationUnit has Preprocessor Problems " ); } } // resolve all bindings - if (checkBindings) { + if (options.checkBindings) { NameResolver res = new NameResolver(); tu.accept( res ); - if(res.problemBindings.size() != expectedProblemBindings) - throw new AssertionFailedError("Expected " + expectedProblemBindings + " problem(s), encountered " + res.problemBindings.size()); + if(res.problemBindings.size() != options.expectedProblemBindings) + throw new AssertionFailedError("Expected " + options.expectedProblemBindings + " problem(s), encountered " + res.problemBindings.size()); - if(problems != null) { - for(int i = 0; i < problems.length; i++) { - String expected = problems[i]; + if(options.problems != null) { + for(int i = 0; i < options.problems.length; i++) { + String expected = options.problems[i]; String actual = res.problemBindings.get(i); if(!expected.equals(actual)) throw new AssertionFailedError(String.format("Problem binding not equal, expected: %s, got: %s", expected, actual)); |