|
Lines 210-220
Link Here
|
| 210 |
} |
210 |
} |
| 211 |
|
211 |
|
| 212 |
if(type != null) { |
212 |
if(type != null) { |
| 213 |
String[] args = new String[length]; |
213 |
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=316937 |
| 214 |
for(int i = 0; i< length ; i++){ |
214 |
// BinaryType#getMethod() creates a new instance of BinaryMethod, which is a dummy. |
| 215 |
args[i] = new String(paramTypeNames[i]); |
215 |
// Instead we have to use IType#findMethods() to get a handle to the method of our interest. |
| 216 |
} |
216 |
IMethod method = findMethod(type, selector, paramTypeNames); |
| 217 |
IMethod method = type.getMethod(new String(selector),args); |
|
|
| 218 |
|
217 |
|
| 219 |
if (this.hasNoParameterNamesFromIndex) { |
218 |
if (this.hasNoParameterNamesFromIndex) { |
| 220 |
IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot)type.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); |
219 |
IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot)type.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT); |
|
Lines 307-317
Link Here
|
| 307 |
} |
306 |
} |
| 308 |
|
307 |
|
| 309 |
if(type != null) { |
308 |
if(type != null) { |
| 310 |
String[] args = new String[length]; |
309 |
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=316937 |
| 311 |
for(int i = 0; i< length ; i++){ |
310 |
// BinaryType#getMethod() creates a new instance of BinaryMethod, which is a dummy. |
| 312 |
args[i] = new String(paramTypeNames[i]); |
311 |
// Instead we have to use IType#findMethods() to get a handle to the method of our interest. |
| 313 |
} |
312 |
IMethod method = findMethod(type, selector, paramTypeNames); |
| 314 |
IMethod method = type.getMethod(new String(selector),args); |
|
|
| 315 |
try{ |
313 |
try{ |
| 316 |
parameters = new char[length][]; |
314 |
parameters = new char[length][]; |
| 317 |
String[] params = method.getParameterNames(); |
315 |
String[] params = method.getParameterNames(); |
|
Lines 331-336
Link Here
|
| 331 |
return parameters; |
329 |
return parameters; |
| 332 |
} |
330 |
} |
| 333 |
|
331 |
|
|
|
332 |
private IMethod findMethod(IType type, char[] selector, char[][] paramTypeNames) { |
| 333 |
IMethod method = null; |
| 334 |
int startingIndex = 0; |
| 335 |
String[] args; |
| 336 |
IType enclosingType = type.getDeclaringType(); |
| 337 |
// If the method is a constructor of an inner type, add the enclosing type as an |
| 338 |
// additional parameter to the constructor. |
| 339 |
if (enclosingType != null && CharOperation.equals(type.getElementName().toCharArray(), selector)) { |
| 340 |
args = new String[paramTypeNames.length+1]; |
| 341 |
startingIndex = 1; |
| 342 |
args[0] = Signature.createTypeSignature(enclosingType.getFullyQualifiedName(), true); |
| 343 |
} |
| 344 |
else { |
| 345 |
args = new String[paramTypeNames.length]; |
| 346 |
} |
| 347 |
int length = args.length; |
| 348 |
for(int i = startingIndex; i< length ; i++){ |
| 349 |
args[i] = new String(paramTypeNames[i-startingIndex]); |
| 350 |
} |
| 351 |
method = type.getMethod(new String(selector), args); |
| 352 |
|
| 353 |
IMethod[] methods = type.findMethods(method); |
| 354 |
if (methods != null && methods.length > 0) { |
| 355 |
method = methods[0]; |
| 356 |
} |
| 357 |
return method; |
| 358 |
} |
| 359 |
|
| 334 |
protected char[] getDeclarationPackageName() { |
360 |
protected char[] getDeclarationPackageName() { |
| 335 |
return this.declarationPackageName; |
361 |
return this.declarationPackageName; |
| 336 |
} |
362 |
} |