1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

fix bug 69662 - conversion operator definitions

This commit is contained in:
Andrew Niefer 2004-07-13 19:23:43 +00:00
parent 11f779dbd9
commit 450023d505
2 changed files with 21 additions and 24 deletions

View file

@ -2071,4 +2071,12 @@ public class CompleteParseASTTest extends CompleteParseBaseTest
parse( writer.toString() );
}
public void testBug69662() throws Exception{
Writer writer = new StringWriter();
writer.write( "class A { operator float * (); }; \n" );
writer.write( "A::operator float * () { } \n" );
parse( writer.toString() );
}
}

View file

@ -354,6 +354,10 @@ public class BasicTokenDuple implements ITokenDuple {
public String extractNameFromTemplateId(){
ITokenDuple nameDuple = getLastSegment();
List [] argLists = getTemplateIdArgLists();
if( argLists == null || argLists[ argLists.length - 1 ] == null )
return nameDuple.toString();
Iterator i = nameDuple.iterator();
if( !i.hasNext() )
@ -377,30 +381,15 @@ public class BasicTokenDuple implements ITokenDuple {
else if( token.getType() == IToken.t_operator ){
token = (IToken) i.next();
nameBuffer.append( ' ' );
nameBuffer.append( token.getImage() );
if( !i.hasNext() )
return nameBuffer.toString();
//operator new [] and operator delete []
if( (token.getType() == IToken.t_new || token.getType() == IToken.t_delete) &&
(token.getNext().getType() == IToken.tLBRACKET ) )
{
nameBuffer.append( ' ' );
nameBuffer.append( ((IToken)i.next()).getImage() );
nameBuffer.append( ((IToken)i.next()).getImage() );
}
//operator []
else if( token.getType() == IToken.tLBRACKET )
{
nameBuffer.append( ((IToken)i.next()).getImage() );
}
//operator ( )
else if( token.getType() == IToken.tLBRACE )
{
nameBuffer.append( ' ' );
nameBuffer.append( ((IToken)i.next()).getImage() );
}
IToken first = token;
IToken temp = null;
while( i.hasNext() ){
temp = (IToken) i.next();
if( temp.getType() != IToken.tLT )
token = temp;
}
nameBuffer.append( createStringRepresentation( first, token ) );
}
return nameBuffer.toString();