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() );
|
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(){
|
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() );
|
|
||||||
|
IToken first = token;
|
||||||
if( !i.hasNext() )
|
IToken temp = null;
|
||||||
return nameBuffer.toString();
|
while( i.hasNext() ){
|
||||||
|
temp = (IToken) i.next();
|
||||||
//operator new [] and operator delete []
|
if( temp.getType() != IToken.tLT )
|
||||||
if( (token.getType() == IToken.t_new || token.getType() == IToken.t_delete) &&
|
token = temp;
|
||||||
(token.getNext().getType() == IToken.tLBRACKET ) )
|
}
|
||||||
{
|
nameBuffer.append( createStringRepresentation( first, token ) );
|
||||||
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() );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nameBuffer.toString();
|
return nameBuffer.toString();
|
||||||
|
|
Loading…
Add table
Reference in a new issue