1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 17:56:01 +02:00

Bug 412380 Fix for LRParser Tests

Change-Id: I5567cebbace02efe038076ebaf6193308fa5289f
Reviewed-on: https://git.eclipse.org/r/16880
Reviewed-by: Andrew Gvozdev <angvoz.dev@gmail.com>
Reviewed-by: Chris Recoskie <recoskie@ca.ibm.com>
IP-Clean: Chris Recoskie <recoskie@ca.ibm.com>
Tested-by: Chris Recoskie <recoskie@ca.ibm.com>
This commit is contained in:
Thomas Corbat 2013-09-30 15:01:54 +02:00 committed by Chris Recoskie
parent 4eb628b862
commit 830c09b3be
12 changed files with 37 additions and 31 deletions

View file

@ -38,12 +38,12 @@ public class LRCPPImplicitNameTests extends AST2CPPImplicitNameTests {
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) { protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, int limitTrivialInitializers) {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -85,12 +85,12 @@ public class LRCPPSpecTest extends AST2CPPSpecTest {
} }
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -152,12 +152,12 @@ public class LRCPPTests extends AST2CPPTests {
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -42,13 +42,13 @@ public class LRCommentTests extends CommentTests {
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse(String code, ParserLanguage lang, protected IASTTranslationUnit parse(String code, ParserLanguage lang,
boolean useGNUExtensions, boolean expectNoProblems, boolean useGNUExtensions, boolean expectNoProblems,
boolean skipTrivialInitializers) throws ParserException { int limitTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.commentParse(code, language); return ParseHelper.commentParse(code, language);
} }
@ -68,7 +68,7 @@ public class LRCommentTests extends CommentTests {
"int x = MACRO; \n" + "int x = MACRO; \n" +
"//comment\n"; "//comment\n";
IASTTranslationUnit tu = parse(code, ParserLanguage.C, false, false, true); IASTTranslationUnit tu = parse(code, ParserLanguage.C, false, false, 0);
IASTComment[] comments = tu.getComments(); IASTComment[] comments = tu.getComments();
assertEquals(1, comments.length); assertEquals(1, comments.length);

View file

@ -34,12 +34,12 @@ public class LRImageLocationTests extends ImageLocationTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions,
boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -34,12 +34,12 @@ public class LRInactiveCodeTests extends ASTInactiveCodeTests {
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) { protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, int limitTrivialInitializers) {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -34,12 +34,12 @@ public class LRNodeSelectorTest extends ASTNodeSelectorTest {
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializer) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializer); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -34,12 +34,12 @@ public class LRSemanticsTests extends SemanticsTests {
@SuppressWarnings("unused") @SuppressWarnings("unused")
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions,
boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -29,16 +29,16 @@ public class LRTaskParserTest extends TaskParserTest {
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
return parse(code, lang, useGNUExtensions, expectNoProblems, false); return parse(code, lang, useGNUExtensions, expectNoProblems, -1);
} }
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -116,12 +116,12 @@ public class LRTemplateTests extends AST2TemplateTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -76,20 +76,26 @@ public class LRTests extends AST2Tests {
@Override @Override
public void testEmptyTrailingMacro_303152() throws Exception {} public void testEmptyTrailingMacro_303152() throws Exception {}
@Override // not applicable to lr parser memory usage. @Override // not applicable to lr parser memory usage.
public void testLargeTrivialAggregateInitializer_253690() throws Exception{} public void testLargeTrivialAggregateInitializer_253690() throws Exception {}
@Override
public void testMaximumTrivialExpressionsInInitializers_412380() throws Exception {}
@Override
public void testNoSkipTrivialAggregateInitializer_412380() throws Exception {}
@Override
public void testNoSkipNonTrivialAggregateInitializer_412380() throws Exception {}
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
return parse(code, lang, useGNUExtensions, expectNoProblems, false); return parse(code, lang, useGNUExtensions, expectNoProblems, -1);
} }
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, int limitTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setSkipTrivialInitializers(skipTrivialInitializers); options.setLimitTrivialInitializers(limitTrivialInitializers);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }

View file

@ -92,7 +92,7 @@ public class ParseHelper {
int expectedProblemBindings; int expectedProblemBindings;
String[] problems; String[] problems;
boolean skipTrivialInitializers; int limitTrivialInitializers = -1;
public Options setCheckSyntaxProblems(boolean checkSyntaxProblems) { public Options setCheckSyntaxProblems(boolean checkSyntaxProblems) {
this.checkSyntaxProblems = checkSyntaxProblems; this.checkSyntaxProblems = checkSyntaxProblems;
@ -116,8 +116,8 @@ public class ParseHelper {
setCheckBindings(true); setCheckBindings(true);
return this; return this;
} }
public Options setSkipTrivialInitializers(boolean skipTrivialInitializers) { public Options setLimitTrivialInitializers(int limitTrivialInitializers) {
this.skipTrivialInitializers = skipTrivialInitializers; this.limitTrivialInitializers = limitTrivialInitializers;
return this; return this;
} }
@ -152,7 +152,7 @@ public class ParseHelper {
IASTTranslationUnit tu; IASTTranslationUnit tu;
try { try {
int languageOptions = 0; int languageOptions = 0;
if(options.skipTrivialInitializers) if(options.limitTrivialInitializers >= 0 && options.limitTrivialInitializers != Integer.MAX_VALUE)
languageOptions |= ILanguage.OPTION_SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS; languageOptions |= ILanguage.OPTION_SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS;
tu = language.getASTTranslationUnit(codeReader, scanInfo, fileCreator, null, languageOptions, ParserUtil.getParserLogService()); tu = language.getASTTranslationUnit(codeReader, scanInfo, fileCreator, null, languageOptions, ParserUtil.getParserLogService());
@ -206,7 +206,7 @@ public class ParseHelper {
IASTTranslationUnit tu; IASTTranslationUnit tu;
try { try {
int languageOptions = 0; int languageOptions = 0;
if(options.skipTrivialInitializers) if(options.limitTrivialInitializers >= 0 && options.limitTrivialInitializers != Integer.MAX_VALUE)
languageOptions |= ILanguage.OPTION_SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS; languageOptions |= ILanguage.OPTION_SKIP_TRIVIAL_EXPRESSIONS_IN_AGGREGATE_INITIALIZERS;
tu = language.getASTTranslationUnit(fileContent, scanInfo, fileContentProvider, null, languageOptions, ParserUtil.getParserLogService()); tu = language.getASTTranslationUnit(fileContent, scanInfo, fileContentProvider, null, languageOptions, ParserUtil.getParserLogService());