1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-09 03:23:07 +02:00

handle typedefs of functions

This commit is contained in:
Andrew Niefer 2005-04-06 19:11:41 +00:00
parent e465c18c34
commit 573d7a0dff
2 changed files with 14 additions and 2 deletions

View file

@ -3308,5 +3308,15 @@ public class AST2CPPTests extends AST2BaseTest {
assertNotNull( dtor.getInitializer() );
}
public void testTypedefFunction() throws Exception {
IASTTranslationUnit tu = parse( "typedef int foo (int);", ParserLanguage.CPP ); //$NON-NLS-1$
CPPNameCollector col = new CPPNameCollector();
tu.accept( col );
IBinding binding = col.getName(0).resolveBinding();
assertTrue( binding instanceof ITypedef );
assertTrue( ((ITypedef)binding).getType() instanceof IFunctionType );
}
}

View file

@ -465,8 +465,10 @@ public class CPPVisitor {
return function;
}
}
if( scope instanceof ICPPClassScope ){
IASTSimpleDeclaration simpleDecl = ( parent instanceof IASTSimpleDeclaration ) ? (IASTSimpleDeclaration)parent : null;
if( simpleDecl != null && simpleDecl.getDeclSpecifier().getStorageClass() == IASTDeclSpecifier.sc_typedef ){
binding = new CPPTypedef( name );
} else if( scope instanceof ICPPClassScope ){
if( isConstructor( scope, declarator) )
binding = template ? (ICPPConstructor) new CPPConstructorTemplate( name )
: new CPPConstructor( (ICPPASTFunctionDeclarator) declarator );