### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.core
Index: model/org/eclipse/jdt/internal/core/BinaryMethod.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryMethod.java,v
retrieving revision 1.107
diff -u -r1.107 BinaryMethod.java
--- model/org/eclipse/jdt/internal/core/BinaryMethod.java 7 Sep 2010 03:17:29 -0000 1.107
+++ model/org/eclipse/jdt/internal/core/BinaryMethod.java 25 Nov 2010 04:16:09 -0000
@@ -28,10 +28,12 @@
/* package */ class BinaryMethod extends BinaryMember implements IMethod {
/**
* The parameter type signatures of the method - stored locally
- * to perform equality test. null
indicates no
+ * to perform equality test. CharOperation.NO_STRINGS
indicates no
* parameters.
*/
protected String[] parameterTypes;
+ protected String [] erasedParamaterTypes; // lazily initialized via call to getErasedParameterTypes
+
/**
* The parameter names for the method.
*/
@@ -52,7 +54,7 @@
}
public boolean equals(Object o) {
if (!(o instanceof BinaryMethod)) return false;
- return super.equals(o) && Util.equalArraysOrNull(this.parameterTypes, ((BinaryMethod)o).parameterTypes);
+ return super.equals(o) && Util.equalArraysOrNull(getErasedParameterTypes(), ((BinaryMethod)o).getErasedParameterTypes());
}
public IAnnotation[] getAnnotations() throws JavaModelException {
IBinaryMethod info = (IBinaryMethod) getElementInfo();
@@ -372,6 +374,29 @@
return this.parameterTypes;
}
+// https://bugs.eclipse.org/bugs/show_bug.cgi?id=299384
+private String [] getErasedParameterTypes() {
+ if (this.erasedParamaterTypes == null) {
+ int paramCount = this.parameterTypes.length;
+ String [] erasedTypes = new String [paramCount];
+ boolean erasureNeeded = false;
+ for (int i = 0; i < paramCount; i++) {
+ String parameterType = this.parameterTypes[i];
+ if (parameterType.indexOf(Signature.C_GENERIC_START, 0) >= 0) {
+ erasedTypes[i] = new String(Signature.getTypeErasure(parameterType.toCharArray()));
+ erasureNeeded = true;
+ } else {
+ erasedTypes[i] = parameterType;
+ }
+ }
+ this.erasedParamaterTypes = erasureNeeded ? erasedTypes : this.parameterTypes;
+ }
+ return this.erasedParamaterTypes;
+}
+private String getErasedParameterType(int index) {
+ return getErasedParameterTypes()[index];
+}
+
public ITypeParameter getTypeParameter(String typeParameterName) {
return new TypeParameter(this, typeParameterName);
}
@@ -446,7 +471,7 @@
public int hashCode() {
int hash = super.hashCode();
for (int i = 0, length = this.parameterTypes.length; i < length; i++) {
- hash = Util.combineHashCodes(hash, this.parameterTypes[i].hashCode());
+ hash = Util.combineHashCodes(hash, getErasedParameterType(i).hashCode());
}
return hash;
}
#P org.eclipse.jdt.core.tests.model
Index: src/org/eclipse/jdt/core/tests/model/ResolveTests.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ResolveTests.java,v
retrieving revision 1.95
diff -u -r1.95 ResolveTests.java
--- src/org/eclipse/jdt/core/tests/model/ResolveTests.java 19 Nov 2010 14:21:59 -0000 1.95
+++ src/org/eclipse/jdt/core/tests/model/ResolveTests.java 25 Nov 2010 04:16:11 -0000
@@ -2610,7 +2610,7 @@
);
}
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=299384
-public void _testCodeSelectInHybrid1415Projects() throws CoreException, IOException {
+public void testCodeSelectInHybrid1415Projects() throws CoreException, IOException {
String jarName = "bug299384.jar";
String srcName = "bug299384_src.zip";
try {
@@ -2641,7 +2641,7 @@
assertElementsEqual(
"Unexpected elements",
- "TestSuite(java.lang.Class extends TestCase>) [in TestSuite [in TestSuite.class [in [in bug299384.jar [in Resolve]]]]]",
+ "TestSuite(java.lang.Class) [in TestSuite [in TestSuite.class [in [in bug299384.jar [in Resolve]]]]]",
elements
);
} finally {