MCPcopy Index your code
hub / github.com/apache/groovy / invokeOuterMethod

Method invokeOuterMethod

src/main/java/groovy/lang/MetaClassImpl.java:1346–1360  ·  view source on GitHub ↗
(final Class<?> sender, final Object object, final String methodName, final Object[] arguments, final MissingMethodException mme)

Source from the content-addressed store, hash-verified

1344 }
1345
1346 private Object invokeOuterMethod(final Class<?> sender, final Object object, final String methodName, final Object[] arguments, final MissingMethodException mme) {
1347 if (sender == theClass ? isGroovyObject() : GroovyObject.class.isAssignableFrom(sender)) {
1348 var outerClass = getNonClosureOuter(sender); // check outer class nesting of call site
1349 if (outerClass != null && (sender == theClass || sender.isAssignableFrom(theClass))) {
1350 MetaClass omc = registry.getMetaClass(outerClass);
1351 Object target = getOuterReference(sender, object);
1352 try {
1353 return omc.invokeMethod(outerClass, target, methodName, arguments, false, false);
1354 } catch (MissingMethodException e) {
1355 mme.addSuppressed(e);
1356 }
1357 }
1358 }
1359 throw mme;
1360 }
1361
1362 private Object getOuterReference(final Class<?> innerClass, final Object object) {
1363 Object outer = null;

Callers 1

invokeMethodMethod · 0.95

Calls 6

isGroovyObjectMethod · 0.95
getNonClosureOuterMethod · 0.95
getOuterReferenceMethod · 0.95
invokeMethodMethod · 0.95
getMetaClassMethod · 0.65
isAssignableFromMethod · 0.45

Tested by

no test coverage detected