Given a MappedMember searches for members in parent classes that match the same name & desc. @param method
(MappedMember method)
| 340 | * @param method |
| 341 | */ |
| 342 | private static void addOverrides(MappedMember method) { |
| 343 | // This method has already been searched. Skip. |
| 344 | if (method.getFirstOverride() != null) { |
| 345 | return; |
| 346 | } |
| 347 | MappedClass mappedClass = method.getOwner(); |
| 348 | // Skip if already searched for methods |
| 349 | List<MappedMember> methodOverridens = new ArrayList<MappedMember>(); |
| 350 | MappedClass parent = mappedClass.getParent(); |
| 351 | // Search the parents (search is inclusive from parent all the way up |
| 352 | // the class hierarchy) for matching methods. |
| 353 | if (parent != null) { |
| 354 | MappedMember parentMethod = ParentUtils.findMethodInParentInclusive(parent, method.getOriginalName(), method.getDesc(), true); |
| 355 | if (parentMethod != null) { |
| 356 | methodOverridens.add(parentMethod); |
| 357 | } |
| 358 | } |
| 359 | // Search the interfaces (search is inclusive from parent all the way up |
| 360 | // the class hierarchy) for matching methods. |
| 361 | for (MappedClass interfacee : mappedClass.getInterfaces()) { |
| 362 | MappedMember interfaceMethod = ParentUtils.findMethodInParentInclusive(interfacee, method.getOriginalName(), method.getDesc(), true); |
| 363 | if (interfaceMethod != null) { |
| 364 | methodOverridens.add(interfaceMethod); |
| 365 | } |
| 366 | } |
| 367 | // Add each override. |
| 368 | for (MappedMember override : methodOverridens) { |
| 369 | // Check the overriden member for additional overrides. |
| 370 | addOverrides(override); |
| 371 | // Don't add duplicates. Set up override structure for the given |
| 372 | // method and the override. |
| 373 | if (!method.getOverrides().contains(override)) { |
| 374 | method.addOverride(override); |
| 375 | override.addMemberThatOverridesMe(method); |
| 376 | method.setIsLibrary(override.isLibrary()); |
| 377 | } |
| 378 | } |
| 379 | } |
| 380 | } |
no test coverage detected