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

Daniil Ovchinnikov updated GROOVY-8263:
---------------------------------------
    Description: 
{code:title=com/foo/Bar.java}
package com.foo;
public class Bar {
    public static Object getSome() {return 42;}
}
{code}

{code:title=playground.groovy}
import static com.foo.Bar.some as getAbc
println abc // 42
println getAbc
println getGetAbc()
{code}

AFAIU an alias introduces property into a file which is being compiled (in this 
case {{getAbc}} and {{getGetAbc()}} become valid). This works as expected.
But {{abc}} should fail with MPE, instead it's actually resolved into a 
{{getSome()}}.
This happens when alias is itself a valid getter name.

Is it a bug or a feature?

One more thing to consider.
Given {{abc}} is valid, {{getAbc()}} should be valid too. Instead it behaves 
like {{getAbc.call()}}. 

  was:
{code:title=com/foo/Bar.java}
package com.foo;
public class Bar {
    public static Object getSome() {return 42;}
}
{code}

{code:title=playground.groovy}
import static com.foo.Bar.some as getAbc
println abc // 42
println getAbc
println getGetAbc()
{code}

AFAIU an alias introduces property into a file which is being compiled (in this 
case {{getAbc}} and {{getGetAbc()}}). This works as expected.
But {{abc}} should fail with MPE, instead it's actually resolved into a 
{{getSome()}}.
This happens when alias is itself a valid getter name.

Is it a bug or a feature?

One more thing to consider.
Given {{abc}} is valid, {{getAbc()}} should be valid too. Instead it behaves 
like {{getAbc.call()}}. 


> Import alias introduces weird property
> --------------------------------------
>
>                 Key: GROOVY-8263
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8263
>             Project: Groovy
>          Issue Type: Bug
>          Components: Compiler
>    Affects Versions: 2.4.12
>            Reporter: Daniil Ovchinnikov
>
> {code:title=com/foo/Bar.java}
> package com.foo;
> public class Bar {
>     public static Object getSome() {return 42;}
> }
> {code}
> {code:title=playground.groovy}
> import static com.foo.Bar.some as getAbc
> println abc // 42
> println getAbc
> println getGetAbc()
> {code}
> AFAIU an alias introduces property into a file which is being compiled (in 
> this case {{getAbc}} and {{getGetAbc()}} become valid). This works as 
> expected.
> But {{abc}} should fail with MPE, instead it's actually resolved into a 
> {{getSome()}}.
> This happens when alias is itself a valid getter name.
> Is it a bug or a feature?
> One more thing to consider.
> Given {{abc}} is valid, {{getAbc()}} should be valid too. Instead it behaves 
> like {{getAbc.call()}}. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to