(final Class<?> sender, final Object object, final String name, final MissingPropertyException mpe)
| 2153 | } |
| 2154 | |
| 2155 | private Object getOuterProperty(final Class<?> sender, final Object object, final String name, final MissingPropertyException mpe) { |
| 2156 | if (sender == theClass ? isGroovyObject() : GroovyObject.class.isAssignableFrom(sender)) { |
| 2157 | var outerClass = getNonClosureOuter(sender); // check outer class nesting of call site |
| 2158 | if (outerClass != null && (sender == theClass || sender.isAssignableFrom(theClass))) { |
| 2159 | MetaClass omc = registry.getMetaClass(outerClass); |
| 2160 | Object target = getOuterReference(sender, object); |
| 2161 | try { |
| 2162 | return omc.getProperty(outerClass, target, name, false, false); |
| 2163 | } catch (MissingPropertyException e) { |
| 2164 | mpe.addSuppressed(e); |
| 2165 | } |
| 2166 | } |
| 2167 | } |
| 2168 | throw mpe; |
| 2169 | } |
| 2170 | |
| 2171 | /** |
| 2172 | * Returns the effective readable meta property for a property access. |
no test coverage detected