Bug 459219 - Wrong text hover over invocation of methods from ITeam.
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/SelectionEngine.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/SelectionEngine.java
index 9a47c73..42d0a40 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/SelectionEngine.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/SelectionEngine.java
@@ -130,6 +130,7 @@
import org.eclipse.jdt.internal.core.util.ASTNodeFinder;
import org.eclipse.jdt.internal.core.util.HashSetOfCharArrayArray;
import org.eclipse.jdt.internal.core.util.Util;
+import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
import org.eclipse.objectteams.otdt.internal.codeassist.SelectionNodesFound;
import org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration;
import org.eclipse.objectteams.otdt.internal.core.compiler.ast.MethodSpec;
@@ -139,6 +140,7 @@
import org.eclipse.objectteams.otdt.internal.core.compiler.control.ITranslationStates;
import org.eclipse.objectteams.otdt.internal.core.compiler.control.StateHelper;
import org.eclipse.objectteams.otdt.internal.core.compiler.model.RoleModel;
+import org.eclipse.objectteams.otdt.internal.core.compiler.statemachine.transformer.ReflectionGenerator;
/**
* The selection engine is intended to infer the nature of a selected name in some
@@ -2121,6 +2123,21 @@
}
}
}
+//{ObjectTeams: re-map some generated methods:
+ if (binding.declaringClass.isTeam() && ReflectionGenerator.isReflectionMethod(binding)) {
+ ReferenceBinding declaringClass = binding.declaringClass;
+ while (declaringClass.id != IOTConstants.T_OrgObjectTeamsTeam) {
+ declaringClass = declaringClass.superclass();
+ if (declaringClass == null)
+ return binding;
+ }
+ int nParam = binding.parameters.length;
+ for (MethodBinding teamMethod : declaringClass.getMethods(binding.selector)) {
+ if (teamMethod.getSourceParamLength() == nParam)
+ return teamMethod;
+ }
+ }
+// SH}
return binding;
}