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]

Reply via email to