From f9189b1ee4b7388f3ea1bce3892d93f55a1ce859 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Tue, 26 Jul 2005 01:59:02 +0000 Subject: [PATCH] Committed JUnits to demonstrate behaviour of old parser re: bug 100992. --- .../parser/tests/CompleteParseASTTest.java | 21 +++++++++++++++++++ .../core/parser/tests/QuickParseASTTests.java | 21 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java index bba993dc9d7..174fad30c4a 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompleteParseASTTest.java @@ -2538,5 +2538,26 @@ public class CompleteParseASTTest extends CompleteParseBaseTest parse(writer.toString()); } + public void testBug100992() throws Exception { + Writer writer = new StringWriter(); + writer.write( "class String { public: String(); ~String(); };"); //$NON-NLS-1$ + writer.write( "String::String(){}"); //$NON-NLS-1$ + writer.write( "String::~String(){}"); //$NON-NLS-1$ + Iterator i = parse( writer.toString() ).getDeclarations(); + IASTAbstractTypeSpecifierDeclaration StringDecl = (IASTAbstractTypeSpecifierDeclaration) i.next(); + Iterator members = ((IASTClassSpecifier)StringDecl.getTypeSpecifier()).getDeclarations(); + IASTMethod cons_decl = (IASTMethod) members.next(); + assertTrue( cons_decl.isConstructor() ); + IASTMethod dest_decl = (IASTMethod) members.next(); + assertTrue( dest_decl.isDestructor() ); + assertFalse( members.hasNext() ); + IASTMethod cons_defn = (IASTMethod) i.next(); + assertTrue( cons_defn.isConstructor() ); + IASTMethod dest_defn = (IASTMethod) i.next(); + assertTrue( dest_defn.isDestructor() ); + assertFalse( i.hasNext() ); + } + + } 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 7a4e69bc882..150498ba1f9 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 @@ -2219,4 +2219,25 @@ public class QuickParseASTTests extends BaseASTTest writer.write( ".5,4x,\\002|proj g|= \\002,1p,d12.5)\";" ); //$NON-NLS-1$ IASTVariable v = (IASTVariable) assertSoleDeclaration( writer.toString(), ParserLanguage.C ); } + + public void testBug100992() throws Exception { + Writer writer = new StringWriter(); + writer.write( "class String { public: String(); ~String(); };"); //$NON-NLS-1$ + writer.write( "String::String(){}"); //$NON-NLS-1$ + writer.write( "String::~String(){}"); //$NON-NLS-1$ + Iterator i = parse( writer.toString() ).getDeclarations(); + IASTAbstractTypeSpecifierDeclaration StringDecl = (IASTAbstractTypeSpecifierDeclaration) i.next(); + Iterator members = ((IASTClassSpecifier)StringDecl.getTypeSpecifier()).getDeclarations(); + IASTMethod cons_decl = (IASTMethod) members.next(); + // this unfortunately doesn't work in QUICK_PARSE +// assertTrue( cons_decl.isConstructor() ); + IASTMethod dest_decl = (IASTMethod) members.next(); +// assertTrue( dest_decl.isDestructor() ); + assertFalse( members.hasNext() ); + IASTFunction cons_defn = (IASTFunction) i.next(); + assertFalse( cons_defn instanceof IASTMethod ); + IASTFunction dest_defn = (IASTFunction) i.next(); + assertFalse( dest_defn instanceof IASTMethod ); + assertFalse( i.hasNext() ); + } }