From 1b95b94a146b024d922e3cb2270aa49528160db0 Mon Sep 17 00:00:00 2001 From: John Camelon Date: Mon, 26 Apr 2004 21:31:39 +0000 Subject: [PATCH] Fixed https://bugs.eclipse.org/bugs/show_bug.cgi?id=57898 --- .../core/parser/tests/SelectionParseTest.java | 87 ++++++++++++------- 1 file changed, 55 insertions(+), 32 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java index bc2e61e8b99..5b146802894 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/SelectionParseTest.java @@ -128,37 +128,60 @@ public class SelectionParseTest extends CompleteParseBaseTest { assertEquals( ((IASTParameterDeclaration)node).getName(), "argc" ); } -// public void testBug57898() throws Exception -// { -// Writer writer = new StringWriter(); -// writer.write( "class Gonzo { public: void playHorn(); };\n" ); -// writer.write( "void Gonzo::playHorn() { return; }\n" ); -// writer.write( "int main(int argc, char **argv) { Gonzo gonzo; gonzo.playHorn(); }\n" ); -// String code = writer.toString(); -// for( int i = 0; i < 3; ++i ) -// { -// int start = -1, stop = -1; -// switch( i ) -// { -// case 0: -// start = code.indexOf( "void playHorn") + 5; -// break; -// case 1: -// start = code.indexOf( "::playHorn") + 2; -// break; -// case 2: -// start = code.indexOf( ".playHorn") + 1; -// break; -// } -// stop = start + 8; -// IASTNode node = parse( code, start, stop ); -// assertNotNull( node ); -// assertTrue( node instanceof IASTMethod ); -// IASTMethod method = (IASTMethod) node; -// assertEquals( method.getName(), "playHorn"); -// IASTClassSpecifier gonzo = method.getOwnerClassSpecifier(); -// assertEquals( gonzo.getName(), "Gonzo"); -// } -// } + public void testBug57898() throws Exception + { + Writer writer = new StringWriter(); + writer.write( "class Gonzo { public: void playHorn(); };\n" ); + writer.write( "void Gonzo::playHorn() { return; }\n" ); + writer.write( "int main(int argc, char **argv) { Gonzo gonzo; gonzo.playHorn(); }\n" ); + String code = writer.toString(); + for( int i = 0; i < 3; ++i ) + { + int start = -1, stop = -1; + switch( i ) + { + case 0: + start = code.indexOf( "void playHorn") + 5; + break; + case 1: + start = code.indexOf( "::playHorn") + 2; + break; + case 2: + start = code.indexOf( ".playHorn") + 1; + break; + } + stop = start + 8; + IASTNode node = parse( code, start, stop ); + assertNotNull( node ); + assertTrue( node instanceof IASTMethod ); + IASTMethod method = (IASTMethod) node; + assertEquals( method.getName(), "playHorn"); + IASTClassSpecifier gonzo = method.getOwnerClassSpecifier(); + assertEquals( gonzo.getName(), "Gonzo"); + } + } + + public void testConstructorDestructorDeclaration() throws Exception + { + Writer writer = new StringWriter(); + writer.write( "class Gonzo { Gonzo(); ~Gonzo(); };"); + String code = writer.toString(); + int offset = code.indexOf( " Gonzo()") + 1; + IASTNode node = parse( code, offset, offset + 5 ); + assertNotNull( node ); + assertTrue( node instanceof IASTMethod ); + IASTMethod constructor = ((IASTMethod)node); + assertEquals( constructor.getName(), "Gonzo" ); + assertTrue( constructor.isConstructor() ); + offset = code.indexOf( "~Gonzo"); + node = parse( code, offset, offset + 6 ); + assertNotNull( node ); + assertTrue( node instanceof IASTMethod ); + IASTMethod destructor = ((IASTMethod)node); + assertEquals( destructor.getName(), "~Gonzo" ); + assertTrue( destructor.isDestructor() ); + + + } }