diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index 070a08b0fc0..bf03cf3f9b3 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,3 +1,8 @@ +2003-09-12 John Camelon + Created QuickParseASTTests::testBug42985(). + Moved LokiFailures::testBug40419() to QuickParseASTTests. + Deleted LokiFailures as it was empty. + 2003-09-12 Andrew Niefer - added testBadParameterInfo to ParserSymbolTableTest diff --git a/core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java b/core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java deleted file mode 100644 index 762a5373539..00000000000 --- a/core/org.eclipse.cdt.core.tests/failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java +++ /dev/null @@ -1,40 +0,0 @@ -/********************************************************************** - * Copyright (c) 2002,2003 Rational Software 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 Rational Software - Initial API and implementation -***********************************************************************/ -package org.eclipse.cdt.core.parser.failedTests; - -import java.io.IOException; -import java.io.StringWriter; -import java.io.Writer; - -import org.eclipse.cdt.core.parser.tests.BaseASTTest; - -/** - * @author jcamelon - */ -public class LokiFailures extends BaseASTTest { - - public LokiFailures(String name) { - super(name); - } - - public void testBug40419() - { - Writer code = new StringWriter(); - try - { - code.write( "template struct SuperSubclass {\n" ); - code.write( "enum { value = (::Loki::Conversion::exists && \n" ); - code.write( "!::Loki::Conversion::sameType) }; };" ); - } catch( IOException ioe ){} - assertCodeFailsParse( code.toString() ); - - } -} diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java index 5db96617b46..e811c8798af 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/QuickParseASTTests.java @@ -9,6 +9,7 @@ * IBM Rational Software - Initial API and implementation ***********************************************************************/ package org.eclipse.cdt.core.parser.tests; +import java.io.IOException; import java.io.StringWriter; import java.io.Writer; import java.util.Iterator; @@ -1791,5 +1792,23 @@ public class QuickParseASTTests extends BaseASTTest { parse("int* gp_down = static_cast(gp_stat);"); } + + public void testBug42985() throws Exception + { + parse( "const int x = 4; int y = ::x;"); + } + + public void testBug40419() throws ParserException + { + Writer code = new StringWriter(); + try + { + code.write( "template struct SuperSubclass {\n" ); + code.write( "enum { value = (::Loki::Conversion::exists && \n" ); + code.write( "!::Loki::Conversion::sameType) }; };" ); + } catch( IOException ioe ){} + parse( code.toString() ); + } + } \ No newline at end of file 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 ef1d3665e8d..9af967b3b00 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 @@ -27,7 +27,6 @@ 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.LokiFailures; import org.eclipse.cdt.core.parser.failedTests.STLFailedTests; import org.eclipse.cdt.core.parser.tests.ParserTestSuite; import org.eclipse.cdt.core.search.tests.SearchTestSuite; @@ -93,7 +92,6 @@ public class AutomatedIntegrationSuite extends TestSuite // Add all failed tests suite.addTestSuite(ASTFailedTests.class); - suite.addTestSuite(LokiFailures.class); suite.addTestSuite(STLFailedTests.class); suite.addTestSuite(CModelElementsFailedTests.class); // suite.addTestSuite(FailedCompleteParseASTExpressionTest.class); diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog index 8cc522b9171..81ff90c66c1 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog +++ b/core/org.eclipse.cdt.core/parser/ChangeLog @@ -1,3 +1,7 @@ +2003-09-12 John Camelon + Fixed Bug 42985 : Search: Qualified function call is treated as a declaration + Fixed Bug 40419 : parser fails on heavily templated expressions + 2003-09-12 John Camelon Fixed Bug 43013 : IASTParameterDeclaration does not derive from IASTOffsetableNamedElement diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java index ea87052132a..42a352404f3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java @@ -936,7 +936,10 @@ public class Parser implements IParser { IASTDeclaration declaration = (IASTDeclaration)i.next(); declaration.enterScope( requestor ); - + + if ( !( declaration instanceof IASTScope ) ) + throw backtrack; + handleFunctionBody((IASTScope)declaration, sdw.isInline() ); ((IASTOffsetableElement)declaration).setEndingOffset( @@ -4450,6 +4453,7 @@ public class Parser implements IParser throw backtrack; } case IToken.tIDENTIFIER : + case IToken.tCOLONCOLON : ITokenDuple duple = name(); //TODO should be an ID Expression really try