(final Class<?> sender, final Object object, final String methodName, final Object[] arguments, final MissingMethodException mme)
| 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; |
no test coverage detected