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