jonenst commented on PR #1767: URL: https://github.com/apache/groovy/pull/1767#issuecomment-6643075904
hi @eric-milles , I think changes around GROOVY-8283 (specifically changes to ScriptBytecodeAdapter.java setProperty in commit f5914b9e76a085248c0ef1ca79c8e1e79ab9df7a ) trigger an arguable regression in error messages, visible in groovysh. Is this a regression and maybe worth fixing ? groovy 4 nice errors: ``` $ groovy-4.0.33/bin/groovysh Groovy Shell (4.0.33, JVM: 17.0.8) groovy:000> foo = null ===> null groovy:000> foo.bar ERROR java.lang.NullPointerException: Cannot get property 'bar' on null object groovy:000> foo.bar=3 ERROR java.lang.NullPointerException: Cannot set property 'bar' on null object groovy:000> baz = 'bar' ===> bar groovy:000> foo."$baz" ERROR java.lang.NullPointerException: Cannot get property 'bar' on null object groovy:000> foo."$baz" = 3 ERROR java.lang.NullPointerException: Cannot set property 'bar' on null object ``` groovy 5 less nice errors (except for static property getter using invokedynamic) ``` $ groovy-5.0.2/bin/groovysh Groovy Shell (5.0.2, JVM: 17.0.8, Term: linux) groovy> foo = null groovy> foo.bar NullPointerException: Cannot get property 'bar' on null object groovy> foo.bar=3 NullPointerException: Cannot invoke "Object.getClass()" because "obj" is null groovy> baz = 'bar' groovy> foo."$baz" NullPointerException: Cannot invoke "Object.getClass()" because "obj" is null groovy> foo."$baz" = 3 NullPointerException: Cannot invoke "Object.getClass()" because "obj" is null ``` groovy6 static property setter fixed (setter now uses invokedynamic https://github.com/apache/groovy/pull/2674 ) but not computed property name: ``` $ groovy-6.0.0/bin/groovysh Groovy Shell (6.0.0, JVM: 17.0.8, Term: linux) groovy> foo = null groovy> foo.bar NullPointerException: Cannot get property 'bar' on null object groovy> foo.bar=3 NullPointerException: Cannot set property 'bar' on null object groovy> baz = 'bar' groovy> foo."$baz" NullPointerException: Cannot invoke "Object.getClass()" because "obj" is null groovy> foo."$baz" = 3 NullPointerException: Cannot invoke "Object.getClass()" because "obj" is null groovy> ``` (note: commenting here since I couldn't find a PR for f5914b9e76a085248c0ef1ca79c8e1e79ab9df7a but it has the same message "propagate sender class for `getProperty` and `setProperty`" as other commits like 7c86803ca48aad and 4dbda66ab4cffeee which have "GROOVY-8283" in their message) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
