Lines 1365-1375
Link Here
|
1365 |
if (isInnerBinaryTypeConstructor) |
1365 |
if (isInnerBinaryTypeConstructor) |
1366 |
parameterSignatures[0] = new String(enclosingType.genericTypeSignature()).replace('/', '.'); |
1366 |
parameterSignatures[0] = new String(enclosingType.genericTypeSignature()).replace('/', '.'); |
1367 |
for (int i = 0; i < length; i++) { |
1367 |
for (int i = 0; i < length; i++) { |
1368 |
parameterSignatures[declaringIndex + i] = new String(parameters[i].genericTypeSignature()).replace('/', '.'); |
1368 |
char[] signature = parameters[i].genericTypeSignature(); |
|
|
1369 |
if (isBinary) { |
1370 |
signature = CharOperation.replaceOnCopy(signature, '/', '.'); |
1371 |
} else { |
1372 |
signature = toUnresolvedTypeSignature(signature); |
1373 |
} |
1374 |
parameterSignatures[declaringIndex + i] = new String(signature); |
1369 |
} |
1375 |
} |
1370 |
IMethod result = declaringType.getMethod(selector, parameterSignatures); |
1376 |
IMethod result = declaringType.getMethod(selector, parameterSignatures); |
1371 |
if (isBinary) |
1377 |
if (isBinary) |
1372 |
return (JavaElement) result; |
1378 |
return (JavaElement) result; |
|
|
1379 |
if (result.exists()) // if perfect match (see https://bugs.eclipse.org/bugs/show_bug.cgi?id=249567 ) |
1380 |
return (JavaElement) result; |
1373 |
IMethod[] methods = null; |
1381 |
IMethod[] methods = null; |
1374 |
try { |
1382 |
try { |
1375 |
methods = declaringType.getMethods(); |
1383 |
methods = declaringType.getMethods(); |
Lines 2347-2352
Link Here
|
2347 |
} |
2355 |
} |
2348 |
return result; |
2356 |
return result; |
2349 |
} |
2357 |
} |
|
|
2358 |
private static char[] toUnresolvedTypeSignature(char[] signature) { |
2359 |
int length = signature.length; |
2360 |
if (length <= 1) |
2361 |
return signature; |
2362 |
StringBuffer buffer = new StringBuffer(length); |
2363 |
toUnresolvedTypeSignature(signature, 0, length, buffer); |
2364 |
int bufferLength = buffer.length(); |
2365 |
char[] result = new char[bufferLength]; |
2366 |
buffer.getChars(0, bufferLength, result, 0); |
2367 |
return result; |
2368 |
} |
2369 |
|
2370 |
private static int toUnresolvedTypeSignature(char[] signature, int start, int length, StringBuffer buffer) { |
2371 |
if (signature[start] == Signature.C_RESOLVED) |
2372 |
buffer.append(Signature.C_UNRESOLVED); |
2373 |
else |
2374 |
buffer.append(signature[start]); |
2375 |
for (int i = start+1; i < length; i++) { |
2376 |
char c = signature[i]; |
2377 |
switch (c) { |
2378 |
case '/': |
2379 |
case Signature.C_DOLLAR: |
2380 |
buffer.append(Signature.C_DOT); |
2381 |
break; |
2382 |
case Signature.C_GENERIC_START: |
2383 |
buffer.append(Signature.C_GENERIC_START); |
2384 |
i = toUnresolvedTypeSignature(signature, i+1, length, buffer); |
2385 |
break; |
2386 |
case Signature.C_GENERIC_END: |
2387 |
buffer.append(Signature.C_GENERIC_END); |
2388 |
return i; |
2389 |
default: |
2390 |
buffer.append(c); |
2391 |
break; |
2392 |
} |
2393 |
} |
2394 |
return length; |
2395 |
} |
2350 |
private static void appendArrayTypeSignature(char[] string, int start, StringBuffer buffer, boolean compact) { |
2396 |
private static void appendArrayTypeSignature(char[] string, int start, StringBuffer buffer, boolean compact) { |
2351 |
int length = string.length; |
2397 |
int length = string.length; |
2352 |
// need a minimum 2 char |
2398 |
// need a minimum 2 char |