[
https://issues.apache.org/jira/browse/GROOVY-10935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17689177#comment-17689177
]
Eric Milles commented on GROOVY-10935:
--------------------------------------
{code}
groovy.lang.MissingPropertyException: No such property: missing for class: Outer
at Outer$Inner.propertyMissing(Scratch.groovy)
{code}
The inner class has a synthetic {{propertyMissing}} method that tries the outer
class. This would need to catch MissingPropertyException and produce one for
the inner class (or modify the message of the outer's exception).
{code:java}
addSyntheticMethod(node,
"propertyMissing",
ACC_PUBLIC,
OBJECT_TYPE,
params(param(STRING_TYPE, "name")),
(methodBody, parameters) -> {
if (isStatic) {
setPropertyGetterDispatcher(methodBody,
classX(outerClass), parameters);
} else {
methodBody.addStatement(
new BytecodeSequence(new BytecodeInstruction() {
@Override
public void visit(final MethodVisitor mv) {
getThis(mv, classInternalName,
outerClassDescriptor, outerClassInternalName);
mv.visitVarInsn(ALOAD, 1);
mv.visitMethodInsn(INVOKEVIRTUAL,
outerClassInternalName, "this$dist$get$" + outerClassDistance,
"(Ljava/lang/String;)Ljava/lang/Object;", false);
mv.visitInsn(ARETURN);
}
})
);
}
}
);
{code}
> MissingPropertyException truncates nested class name
> ----------------------------------------------------
>
> Key: GROOVY-10935
> URL: https://issues.apache.org/jira/browse/GROOVY-10935
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 4.0.9
> Reporter: Christopher Smith
> Priority: Minor
>
> When a nested class is the target of an invalid property expression, the
> resulting error message has the wrong class name:
> {code:groovy}
> class Outer {
> static class Inner {}
> }
> new Outer.Inner().missing
> {code}
> results in
> {code}
> groovy.lang.MissingPropertyException: No such property: missing for class:
> com.example.Outer
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)