You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Cédric Champeau (JIRA)" <ji...@apache.org> on 2015/06/07 10:48:00 UTC

[jira] [Resolved] (GROOVY-7449) power operator needs specific typing for result

     [ https://issues.apache.org/jira/browse/GROOVY-7449?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Cédric Champeau resolved GROOVY-7449.
-------------------------------------
    Resolution: Won't Fix

Unfortunately this is not possible. The {{power}} operator return type depends both on the *values* of the input arguments *and* the value of the result of the operation. It is therefore impossible to determine the type the result at compile time, even given specific input types.

Changing this would require breaking changes in the way Groovy handles math operations.

> power operator needs specific typing for result
> -----------------------------------------------
>
>                 Key: GROOVY-7449
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7449
>             Project: Groovy
>          Issue Type: Bug
>          Components: Static Type Checker
>    Affects Versions: 2.4.3
>            Reporter: Christopher Smith
>            Assignee: Cédric Champeau
>            Priority: Minor
>
> I wanted to use the power operator to set a static constant field:
> {code}
> public static final int DIGITS_IN_CODE = 4
> static final int mod = 10 ** DIGITS_IN_CODE
> {code}
> This results in a compile-time exception when used with {{@CompileStatic}}:
> {code}
> Groovy:[Static type checking] - Cannot assign value of type java.lang.Number to variable of type int
> {code}
> Replacing the symbolic constant with just {{10 ** 4}} produces the same bug. It appears that power expressions are not getting resolved until runtime even if they're compile-time constant expressions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)