diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index 5208a986a77..bb7a7a48a65 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -4289,4 +4289,22 @@ public class AST2CPPTests extends AST2BaseTest { ICPPFunction trace = (ICPPFunction) col.getName(0).resolveBinding(); assertSame( trace, col.getName(7).resolveBinding() ); } + + public void testBug95692() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append("class RTCharacter { \n"); //$NON-NLS-1$ + buffer.append(" char value; \n"); //$NON-NLS-1$ + buffer.append(" public: operator char (void) const; \n"); //$NON-NLS-1$ + buffer.append("}; \n"); //$NON-NLS-1$ + buffer.append("RTCharacter::operator char( void )const { \n"); //$NON-NLS-1$ + buffer.append(" return value; \n"); //$NON-NLS-1$ + buffer.append("} \n"); //$NON-NLS-1$ + + IASTTranslationUnit tu = parse( buffer.toString(), ParserLanguage.CPP ); + CPPNameCollector col = new CPPNameCollector(); + tu.accept(col); + + ICPPMethod op = (ICPPMethod) col.getName(2).resolveBinding(); + assertSame( op, col.getName(6).resolveBinding() ); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java index 619e2274a7d..80c49f88b84 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPVisitor.java @@ -1396,6 +1396,10 @@ public class CPPVisitor { } IASTName name = fnDtor.getName(); + if( name instanceof ICPPASTQualifiedName ){ + IASTName [] ns = ((ICPPASTQualifiedName)name).getNames(); + name = ns[ ns.length - 1 ]; + } if( name instanceof ICPPASTConversionName ){ returnType = createType( ((ICPPASTConversionName)name).getTypeId() ); } else {