From d84488d6959f355da5850f1fb19cb266c21924f4 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Mon, 28 Jul 2003 17:21:50 +0000 Subject: [PATCH] Patch for Andrew Niefer. This patch creates a new failing test class : FullParseFailedTests. This is for writing failed tests on the parser doing COMPLETE_PARSE. The first failed test is for bug 40842 "Parser: NPE while parsing class declaration in full parse mode" --- core/org.eclipse.cdt.core.tests/ChangeLog | 4 ++ .../failedTests/FullParseFailedTests.java | 45 +++++++++++++++++++ .../cdt/core/parser/tests/BaseASTTest.java | 19 ++++++++ .../core/suite/AutomatedIntegrationSuite.java | 2 + 4 files changed, 70 insertions(+) create mode 100644 core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/FullParseFailedTests.java diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index faef813f3d8..fc7492a5c92 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,3 +1,7 @@ +2003-07-28 Andrew Niefer + This patch creates a new failing test class : FullParseFailedTests. This + is for writing failed tests on the parser doing COMPLETE_PARSE. + 2003-07-28 Victor Mozgin Moved testBug39537() from ASTFailedTests.java to QuickParseASTTests.java. diff --git a/core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/FullParseFailedTests.java b/core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/FullParseFailedTests.java new file mode 100644 index 00000000000..ff8d84fe73b --- /dev/null +++ b/core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/FullParseFailedTests.java @@ -0,0 +1,45 @@ +/******************************************************************************* + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM Corp. - Rational Software - initial implementation + ******************************************************************************/ +/* + * Created on Jul 28, 2003 + */ +package org.eclipse.cdt.core.parser.failedTests; + +import java.io.StringWriter; +import java.io.Writer; + +import org.eclipse.cdt.core.parser.tests.BaseASTTest; + +/** + * @author aniefer + * + * To change the template for this generated type comment go to + * Window>Preferences>Java>Code Generation>Code and Comments + */ +public class FullParseFailedTests extends BaseASTTest { + + /** + * @param a + */ + public FullParseFailedTests(String name) { + super(name); + } + + public void testBug40842() throws Exception{ + Writer code = new StringWriter(); + + //note that if the parse fails at EOF, parse.failParse never sets + //parsePassed = false because it will throw EOF on LA(1), so get + //around this by adding more code after the error. + code.write("class A {} a;\n int x;"); + assertCodeFailsFullParse(code.toString()); + } +} \ No newline at end of file diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java index 1bfb7ab0d7f..1623ec5624c 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseASTTest.java @@ -57,6 +57,11 @@ public class BaseASTTest extends TestCase return parse( code, true, true ); } + protected IASTCompilationUnit fullParse( String code ) throws ParserException + { + return parse( code, false, true ); + } + protected IASTDeclaration assertSoleDeclaration( String code ) throws ParserException { Iterator declarationIter = null; @@ -96,6 +101,20 @@ public class BaseASTTest extends TestCase fail("The expected error did not occur."); } + public void assertCodeFailsFullParse(String code) { + boolean testPassed = false; + try { + IASTCompilationUnit tu = fullParse(code); + testPassed = true; + fail( "We should not reach this point"); + } catch (Throwable e) { + if (!(e instanceof ParserException)) + fail("Unexpected Error: " + e.getMessage()); + } + if (testPassed) + fail("The expected error did not occur."); + } + protected void assertSimpleReturnType(IASTFunction function, IASTSimpleTypeSpecifier.Type type) { assertEquals( ((IASTSimpleTypeSpecifier)function.getReturnType().getTypeSpecifier()).getType(), type ); diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java index 8829b751be0..e5a8af6d1a4 100644 --- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java +++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java @@ -25,6 +25,7 @@ import org.eclipse.cdt.core.model.tests.BinaryTests; import org.eclipse.cdt.core.model.tests.ElementDeltaTests; import org.eclipse.cdt.core.model.tests.WorkingCopyTests; import org.eclipse.cdt.core.parser.failedTests.ASTFailedTests; +import org.eclipse.cdt.core.parser.failedTests.FullParseFailedTests; import org.eclipse.cdt.core.parser.failedTests.LokiFailures; import org.eclipse.cdt.core.parser.failedTests.STLFailedTests; import org.eclipse.cdt.core.parser.tests.ParserTestSuite; @@ -97,6 +98,7 @@ public class AutomatedIntegrationSuite extends TestSuite suite.addTestSuite(LokiFailures.class); suite.addTestSuite(STLFailedTests.class); suite.addTestSuite(CModelElementsFailedTests.class); + suite.addTestSuite(FullParseFailedTests.class); // Last test to trigger report generation suite.addTest(suite.new GenerateReport("generateReport"));