diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java index 68964cff4a7..9f3b9a978c4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java @@ -313,7 +313,7 @@ public class CPPClassScope extends CPPScope implements ICPPClassScope { return super.find( name ); } - static protected boolean isConstructorReference( IASTName name ){ + public static boolean isConstructorReference( IASTName name ){ if( name.getPropertyInParent() == CPPSemantics.STRING_LOOKUP_PROPERTY ) return false; IASTNode node = name.getParent(); if( node instanceof ICPPASTTemplateId ) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java index f420bb4a26b..5d1b233c181 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java @@ -37,6 +37,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPField; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.internal.core.Util; import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding; +import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPClassScope; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPSemantics; import org.eclipse.cdt.internal.core.index.IIndexType; import org.eclipse.cdt.internal.core.pdom.PDOM; @@ -378,6 +379,14 @@ ICPPClassScope, IPDOMMemberOwner, IIndexType { public IBinding getBinding(IASTName name, boolean resolve) throws DOMException { try { + if (getDBName().equals(name.toCharArray())) { + if (CPPClassScope.isConstructorReference(name)){ + return CPPSemantics.resolveAmbiguities(name, getConstructors()); + } + //9.2 ... The class-name is also inserted into the scope of the class itself + return this; + } + BindingCollector visitor= new BindingCollector(name.toCharArray()); accept(visitor); return CPPSemantics.resolveAmbiguities(name, visitor.getBindings());