You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (JIRA)" <ji...@apache.org> on 2017/11/24 22:55:00 UTC
[jira] [Comment Edited] (GROOVY-8389) Static import of a property
messes with instance method
[ https://issues.apache.org/jira/browse/GROOVY-8389?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16265547#comment-16265547 ]
Paul King edited comment on GROOVY-8389 at 11/24/17 10:54 PM:
--------------------------------------------------------------
Another example:
{code}
import static A.baz
import static A.bar
class A {
static bar = { "Abar" }
static baz = { "Abaz" }
}
def bar() {
"bar"
}
@groovy.transform.CompileStatic
def usage() {
bar() + baz()
}
assert usage() == 'barAbaz'
{code}
Works with {{@CS}} commented out (and indicating that local explicit methods take precedence in dynamic Groovy - which I'm unsure is by design) but otherwise fails with:
{noformat}
2 compilation errors:
[Static type checking] - Cannot find matching method A#bar(). Please check if the declared type is right and if the method exists...
[Static type checking] - Cannot find matching method A#baz(). Please check if the declared type is right and if the method exists...
{noformat}
was (Author: paulk):
Another example:
{code}
import static A.baz
import static A.bar
class A {
static bar = { "Abar" }
static baz = { "Abaz" }
}
def bar() {
"bar"
}
@groovy.transform.CompileStatic
def usage() {
bar() + baz()
}
assert usage() == 'barAbaz'
{code}
Works with {{@CS}} commented out but otherwise fails with:
{noformat}
2 compilation errors:
[Static type checking] - Cannot find matching method A#bar(). Please check if the declared type is right and if the method exists...
[Static type checking] - Cannot find matching method A#baz(). Please check if the declared type is right and if the method exists...
{noformat}
> Static import of a property messes with instance method
> -------------------------------------------------------
>
> Key: GROOVY-8389
> URL: https://issues.apache.org/jira/browse/GROOVY-8389
> Project: Groovy
> Issue Type: Bug
> Components: Static compilation, Static Type Checker
> Affects Versions: 2.5.0-beta-2, 2.4.13
> Reporter: Daniil Ovchinnikov
>
> {code:title=bugs.groovy}
> import static A.bar
> class A {
> static bar = "A"
> }
> def bar() {
> "bar"
> }
> @groovy.transform.CompileStatic
> def usage() {
> bar()
> }
> println usage()
> {code}
> {noformat}
> 13: [Static type checking] - Cannot find matching method A#bar(). Please check if the declared type is right and if the method exists.
> @ line 13, column 3.
> bar()
> ^
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)