()
| 402 | } |
| 403 | |
| 404 | private void fillMethodIndex() { |
| 405 | mainClassMethodHeader = metaMethodIndex.getHeader(theClass); |
| 406 | |
| 407 | Set<CachedClass> interfaces = theCachedClass.getInterfaces(); |
| 408 | List<CachedClass> superClasses = getSuperClasses(); // in reverse order |
| 409 | CachedClass firstGroovySuper = calcFirstGroovySuperClass(superClasses); |
| 410 | |
| 411 | for (CachedClass c : interfaces) { |
| 412 | for (CachedMethod m : c.getMethods()) { |
| 413 | if (c == theCachedClass || (m.isPublic() && !m.isStatic())) { // GROOVY-8164 |
| 414 | addMetaMethodToIndex(m, mainClassMethodHeader); |
| 415 | } |
| 416 | if (c != theCachedClass && isValidAccessorName(m.getName())) { // GROOVY-11803 |
| 417 | metaMethodIndex.addMetaMethod(m, metaMethodIndex.indexMap.computeIfAbsent(c.getTheClass(), k -> new HashMap<>())); |
| 418 | } |
| 419 | } |
| 420 | } |
| 421 | |
| 422 | populateMethods(superClasses, firstGroovySuper); |
| 423 | |
| 424 | inheritInterfaceNewMetaMethods(interfaces); |
| 425 | |
| 426 | if (isGroovyObject()) { |
| 427 | metaMethodIndex.copyMethodsToSuper(); // methods --> methodsForSuper |
| 428 | connectMultimethods(superClasses, firstGroovySuper); |
| 429 | removeMultimethodsOverloadedWithPrivateMethods(); |
| 430 | replaceWithMOPCalls(theCachedClass.mopMethods); |
| 431 | } |
| 432 | } |
| 433 | |
| 434 | private void populateMethods(final List<CachedClass> superClasses, final CachedClass firstGroovySuper) { |
| 435 | var header = metaMethodIndex.getHeader(firstGroovySuper.getTheClass()); |
no test coverage detected