From 0ab192cb95d19ec2b392dab45a2e6feb02a72178 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Mon, 28 Apr 2003 20:00:35 +0000 Subject: [PATCH] CORE Fixed Bug 37019 - RTS: Parser fails on variable defn using constructor Fixed Bug 36767 - STL Testing: Parser is confused and goes into template function body TESTS Moved testBug37019() from DOMFailedTests to DOMTests. --- core/org.eclipse.cdt.core/parser/ChangeLog | 4 +++ .../cdt/internal/core/parser/Parser.java | 28 +++++++++---------- core/org.eclipse.cdt.ui.tests/ChangeLog | 3 ++ .../parser/failedTests/DOMFailedTest.java | 13 ++++----- .../cdt/core/parser/tests/DOMTests.java | 4 +++ 5 files changed, 30 insertions(+), 22 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog index 67455267338..88529b9caa4 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog +++ b/core/org.eclipse.cdt.core/parser/ChangeLog @@ -1,3 +1,7 @@ +2003-04-28 John Camelon + Fixed Bug 37019 - RTS: Parser fails on variable defn using constructor + Fixed Bug 36767 - STL Testing: Parser is confused and goes into template function body + 2003-04-28 John Camelon Partial fix for Bug37002 - Order of Offsetables is wrong 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 c9ef636d835..49931512f7b 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 @@ -107,7 +107,7 @@ c, quick); checkToken = LA(1); declaration( translationUnit ); if( LA(1) == checkToken ) - consumeToNextSemicolon(); + errorHandling(); } catch (EndOfFile e) { // Good break; @@ -119,7 +119,7 @@ c, quick); if (lastBacktrack != null && lastBacktrack == LA(1)) { // we haven't progressed from the last backtrack // try and find tne next definition - consumeToNextSemicolon(); + errorHandling(); } else { // start again from here lastBacktrack = LA(1); @@ -136,12 +136,12 @@ c, quick); try{ callback.translationUnitEnd(translationUnit);} catch( Exception e ) {} } - protected void consumeToNextSemicolon() throws Backtrack { + protected void errorHandling() throws Backtrack { failParse(); consume(); // TODO - we should really check for matching braces too int depth = 0; - while (LT(1) != Token.tSEMI || depth != 0 ) { + while ( ! ( (LT(1) == Token.tSEMI && depth == 0 ) || ( LT(1) == Token.tRBRACE && depth == 1 ) ) ){ switch( LT(1)) { case Token.tLBRACE: @@ -154,8 +154,8 @@ c, quick); consume(); } - // eat the SEMI as well - consume(Token.tSEMI); + // eat the SEMI/RBRACE as well + consume(); } /** @@ -279,11 +279,11 @@ c, quick); { failParse(); if( checkToken == LA(1)) - consumeToNextSemicolon(); + errorHandling(); } } if (checkToken == LA(1)) - consumeToNextSemicolon(); + errorHandling(); } // consume the } consume(); @@ -548,11 +548,11 @@ c, quick); { failParse(); if (checkToken == LA(1)) - consumeToNextSemicolon(); + errorHandling(); } } if (checkToken == LA(1)) - consumeToNextSemicolon(); + errorHandling(); } // consume the } @@ -1184,7 +1184,7 @@ c, quick); try { try{ expression = callback.expressionBegin( declarator ); } catch( Exception e ) {} - constantExpression( expression ); + expression( expression ); try{ callback.expressionEnd( expression ); } catch( Exception e ) {} } catch( Backtrack b ) @@ -1429,7 +1429,7 @@ c, quick); break; default: System.out.println( "Unexpected Token =" + LA(1).getImage() ); - consumeToNextSemicolon(); + errorHandling(); continue; } } @@ -1685,11 +1685,11 @@ c, quick); { failParse(); if (checkToken == LA(1)) - consumeToNextSemicolon(); + errorHandling(); } } if (checkToken == LA(1)) - consumeToNextSemicolon(); + errorHandling(); } // consume the } try{ callback.classSpecifierEnd(classSpec, consume( Token.tRBRACE )); } catch( Exception e ) {} diff --git a/core/org.eclipse.cdt.ui.tests/ChangeLog b/core/org.eclipse.cdt.ui.tests/ChangeLog index a62d89b0a79..98135ee3504 100644 --- a/core/org.eclipse.cdt.ui.tests/ChangeLog +++ b/core/org.eclipse.cdt.ui.tests/ChangeLog @@ -1,3 +1,6 @@ +2003-04-28 John Camelon + Moved testBug36730() & testBug37019() from DOMFailedTests to DOMTests. + 2003-04-28 Andrew Niefer Added DOMFailedTest::testBug37019 Added DOMFailedTest::testBug36932 diff --git a/core/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java b/core/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java index 69be28c304f..1947c1b646d 100644 --- a/core/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java +++ b/core/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java @@ -21,15 +21,12 @@ public class DOMFailedTest extends BaseDOMTest { super(name); } - public void testBug36730(){ - failTest("FUNCTION_MACRO( 1, a );\n int i;"); - } - - public void testBug37019(){ - failTest("static const A a( 1, 0 );"); - } - public void testBug36932() { failTest("A::A( ) : var( new char [ (unsigned)bufSize ] ) {}"); } + + public void testBug36730()throws Exception { + failTest("FUNCTION_MACRO( 1, a )\n int i;"); + } + } diff --git a/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java b/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java index be81ca0a3a8..1e1a2fc7cd4 100644 --- a/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java +++ b/core/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java @@ -1779,5 +1779,9 @@ public class DOMTests extends BaseDOMTest { assertFalse( i.hasNext() ); } + public void testBug37019() throws Exception { + parse("static const A a( 1, 0 );"); + } + }