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

ASF GitHub Bot commented on GROOVY-7291:
----------------------------------------

GitHub user jwagenleitner opened a pull request:

    https://github.com/apache/groovy/pull/331

    GROOVY-7291 - Declaration of double variable without value assignment 
referrenced in closure

    Commit e08c389d67809a421f4f33c27012c54294f98259 made the change that broke 
this by resolving the type (Double) whereas the original method call resolved 
to `getOriginType` (double).  This change tries to preserve the call to the 
type resolver where the origin is not a primitive.  It should also be noted 
that fully reverting the call back to the original 
(`compileStack.defineVariable(ve, false)`) version prior to commit 
e08c389d67809a421f4f33c27012c54294f98259  also passes all tests.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/jwagenleitner/groovy GROOVY-7291

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/groovy/pull/331.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #331
    
----
commit a50582bfb6ed015d700bd8899a2fb1c4e7387d6e
Author: John Wagenleitner <jwagenleit...@apache.org>
Date:   2016-05-08T18:56:45Z

    GROOVY-7291 - Declaration of double variable without value assignment 
referrenced in closure

----


> Declaration of double variable without value assignment referrenced in closure
> ------------------------------------------------------------------------------
>
>                 Key: GROOVY-7291
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7291
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 1.8.6, 2.2.1, 2.4.0
>         Environment: Windows 8.1, JDK 1.7_71 and 1.8_25
>            Reporter: David Richter
>            Priority: Critical
>         Attachments: groovyBug.zip
>
>
> I have problem with following code:
> double a;
> def b = {
>    a = a + 1;
> }
> b();
> I tried to compile it with groovy 1.8.6 and it worked 
> variable 'a' was instantiated with value 0.0
> but after upgrade to groovy 2.2.1
> it throws NullPointerException because variable 'a' is instantiated to null
> I tried to decompile class files and declaration of 'a' looked like this:
> version 1.8.6
> CallSite[] var1 = $getCallSiteArray();
>         final Reference a = new 
> Reference((Double)DefaultTypeTransformation.box(0.0D));
>         DefaultTypeTransformation.doubleUnbox(a.get());
> ...
> version 2.2.1
> CallSite[] var1 = $getCallSiteArray();
> final Reference a = new Reference((Object)null);
> Double var10000 = (Double)a.get();
> ...
> I tried it also with version 2.4.0 but it has same result as 2.2.1
> In attachment are groovy classes, compiled classes and consoleOutputs for 
> versions 1.8.6 and 2.2.1



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

Reply via email to