1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug 334569 - Source hover for implicit constructor calls

Patch by Marc-Andre Laperle
This commit is contained in:
Anton Leherbauer 2011-01-19 10:26:43 +00:00
parent 96e5dddddb
commit a21582bcea

View file

@ -50,6 +50,7 @@ import org.eclipse.cdt.core.dom.IName;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
import org.eclipse.cdt.core.dom.ast.IASTImplicitNameOwner;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
@ -64,6 +65,7 @@ import org.eclipse.cdt.core.dom.ast.IProblemBinding;
import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.ITypedef;
import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
@ -137,6 +139,19 @@ public class CSourceHover extends AbstractCEditorTextHover {
if (name != null) {
IBinding binding= name.resolveBinding();
if (binding != null) {
// Check for implicit names first, could be an implicit constructor call
if(name.getParent() instanceof IASTImplicitNameOwner) {
IASTImplicitNameOwner iastImplicitNameOwner = (IASTImplicitNameOwner) name.getParent();
IASTName [] implicitNames = iastImplicitNameOwner.getImplicitNames();
if(implicitNames.length == 1) {
IBinding implicitNameBinding = implicitNames[0].resolveBinding();
if(implicitNameBinding instanceof ICPPConstructor) {
binding = implicitNameBinding;
}
}
}
if (binding instanceof IProblemBinding) {
// report problem as source comment
if (DEBUG) {