1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

fix bug 89828

This commit is contained in:
Andrew Niefer 2005-04-01 15:38:01 +00:00
parent 7abf1397a2
commit f7566ee272
2 changed files with 34 additions and 6 deletions

View file

@ -3138,5 +3138,22 @@ public class AST2CPPTests extends AST2BaseTest {
assertTrue( col.getName(2).resolveBinding() instanceof ICPPClassType ); assertTrue( col.getName(2).resolveBinding() instanceof ICPPClassType );
assertTrue( col.getName(3).resolveBinding() instanceof ICPPClassType ); assertTrue( col.getName(3).resolveBinding() instanceof ICPPClassType );
} }
public void testBug89828() throws Exception {
IASTTranslationUnit tu = parse( "class B * b; void f(); void f( int );", ParserLanguage.CPP ); //$NON-NLS-1$
CPPNameCollector col = new CPPNameCollector();
tu.accept( col );
assertTrue( col.getName(0).resolveBinding() instanceof ICPPClassType );
assertTrue( col.getName(1).resolveBinding() instanceof ICPPVariable );
IFunction f1 = (IFunction) col.getName(2).resolveBinding();
IFunction f2 = (IFunction) col.getName(3).resolveBinding();
IScope scope = tu.getScope();
IBinding [] bs = scope.find("f"); //$NON-NLS-1$
assertEquals( bs.length, 2 );
assertSame( bs[0], f1 );
assertSame( bs[1], f2 );
}
} }

View file

@ -1301,13 +1301,24 @@ public class CPPSemantics {
return (IBinding) bindings[0]; return (IBinding) bindings[0];
} }
LookupData data = createLookupData( name, false ); if( name.getPropertyInParent() != STRING_LOOKUP_PROPERTY ) {
data.foundItems = bindings; LookupData data = createLookupData( name, false );
try { data.foundItems = bindings;
return resolveAmbiguities( data, name ); try {
} catch ( DOMException e ) { return resolveAmbiguities( data, name );
return e.getProblem(); } catch ( DOMException e ) {
return e.getProblem();
}
}
IBinding [] result = null;
for ( int i = 0; i < bindings.length; i++ ) {
if( bindings[i] instanceof IASTName )
result = (IBinding[]) ArrayUtil.append( IBinding.class, result, ((IASTName)bindings[i]).resolveBinding() );
else if( bindings[i] instanceof IBinding )
result = (IBinding[]) ArrayUtil.append( IBinding.class, result, bindings[i] );
} }
return new CPPCompositeBinding( result );
} }
static public boolean declaredBefore( Object obj, IASTNode node ){ static public boolean declaredBefore( Object obj, IASTNode node ){