[ https://issues.apache.org/jira/browse/GROOVY-10546?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17512109#comment-17512109 ]
Eric Milles edited comment on GROOVY-10546 at 3/25/22, 2:06 PM: ---------------------------------------------------------------- The delegate gets preference inside {{with}}. You can add a qualifier to {{LABEL_INV}} inside the closure to refer to the {{owner}} or {{thisObject}} property. was (Author: emilles): The delegate gets preference inside with. You can add a qualifier to LABEL_INV inside the closure to refer to the owner or thisObject property. > Regression: Indy compiler in 4.0 uses wrong key for map lookup > -------------------------------------------------------------- > > Key: GROOVY-10546 > URL: https://issues.apache.org/jira/browse/GROOVY-10546 > Project: Groovy > Issue Type: Bug > Components: Compiler > Reporter: Christopher Smith > Priority: Critical > Attachments: closure.javap.txt > > > I have a Gremlin pipeline that returns a complex object as a nested map. > {code} > private static final String LABEL_INV = 'invitation-1234' > g./... > .select(LABEL_INV, LABEL_OTHER) > .next() > .with {] invitation: process(it[LABEL_INV]) ]} > {code} > This was working correctly in Groovy 3. In Groovy 4, however, the map lookup > is passed {{null}} instead of the value in the constant. The query builder > correctly passes the constant value, and the map contained in {{it}} has the > constant as a key as expected. However, {{DefaultGroovyMethods#getAt(Map, > Object)}} is passed the {{it}} map as self but {{null}} for the key. > I am a complete noob at InvokeDynamic, but _perhaps_ this seems to be a > sequencing issue where indy binds the value for {{key}} in bootstrap before > actually initializing it? -- This message was sent by Atlassian Jira (v8.20.1#820001)