[ 
https://issues.apache.org/jira/browse/GROOVY-8549?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16440952#comment-16440952
 ] 

John Wagenleitner commented on GROOVY-8549:
-------------------------------------------

Another work-around is to cast the expression to an {{int/Integer}}, ex. 
{{list[(int)idx-1]++}}

The following may be somewhat related though might warrant a separate issue 
since it doesn't seem to work in any 2.x release.
{code:groovy}
import groovy.transform.CompileStatic

@CompileStatic
def method() {
    def list = [0, 1, 2, 3]
    List<Integer> board = [1]
    //works with casting to `int`/`Integer`, list[board[0] as Integer]++
    //and up to 2.4.12 works if part of an expression, list[board[0] - 0]++
    list[board[0]]++
    list
}

assert method() == [0, 2, 2, 3]{code}
 

> Compile Static causes getAt to fail
> -----------------------------------
>
>                 Key: GROOVY-8549
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8549
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 2.4.13, 2.5.0-beta-3, 2.4.14, 3.0.0-alpha-2, 2.4.15
>         Environment: Intellij plus various versions of Groovy; the same 
> problem also occurs in Eclipse-Groovy with the same versions
>            Reporter: Jon Kerridge
>            Priority: Major
>
> I can reproduce by adding @CompileStatic to the example I tried previously 
> and can confirm that 2.4.13 is where the regression started. Workaround would 
> be to remove @CompileStatic until we can get a fix in place. If you can raise 
> a bug issue in Jira, that would be great.
> the reproducer following is a shortened version created by Paul King:
> {code}
> import groovy.transform.CompileStatic
>  
> @CompileStatic
> def method() {
>   def list = [0, 1, 2, 3]
>   for (idx in 1..2) {
>     list[idx-1]++
>   }
>   list
> }
>  
> assert method() == [1, 2, 2, 3]
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to