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:
parent
11f779dbd9
commit
450023d505
2 changed files with 21 additions and 24 deletions
|
@ -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() );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue