Daniel,

> On 9. 9. 2022, at 1:30, Daniel Sun <sun...@apache.org> wrote:
> Add a space between ? and [
> p ? [0] : [1]

Well thanks, but that really helps with new code only. On the other hand, with 
the existing codebase it is a royal PITA. Can't do that automatically, for I am 
afraid no regexp could reliably distinguish a real safe index from a ternary 
which returns a list or a map (actually, yesterday I've done this manually in 
one smaller project so that I can test Groovy 4 further — and even doing it 
manually I've made two mistakes of this kind).

All the best,
OC

> On 2022/09/08 13:39:21 Christopher Smith wrote:
>> The parser seems to be interpreting what you mean as a ternary as a
>> null-safe array index.
>> 
>> On Thu, Sep 8, 2022, 08:37 o...@ocs.cz <o...@ocs.cz> wrote:
>> 
>>> Hi there,
>>> 
>>> I've just decided it's time to upgrade from Groovy 3 to Groovy 4... and
>>> immediately bumped into a problem, which looks like a parser bug in an
>>> extremely trivial scenario, which seems weird.
>>> 
>>> Do I perhaps miss something? I've checked
>>> https://groovy-lang.org/releasenotes/groovy-4.0.html#Groovy4.0-breaking,
>>> but in vain :(
>>> 
>>> ===
>>> 2012 ocs /tmp> <q.groovy
>>> def p
>>> def x=p?[0]:[1]
>>> println "got $x"
>>> 2013 ocs /tmp> /usr/local/groovy-3.0.12/bin/groovy q
>>> got [1]
>>> 2014 ocs /tmp> /usr/local/groovy-4.0.4/bin/groovy q
>>> org.codehaus.groovy.control.MultipleCompilationErrorsException: startup
>>> failed:
>>> /private/tmp/q.groovy: 2: Unexpected input: ':' @ line 2, column 12.
>>>   def x=p?[0]:[1]
>>>              ^
>>> 
>>> 1 error
>>> 
>>> 2015 ocs /tmp>
>>> ===
>>> 
>>> Thanks for any insight,
>>> OC
>>> 
>>> 
>> 

Reply via email to