Daniil Ovchinnikov created GROOVY-9472:
------------------------------------------

             Summary: Static import causes unresolved reference to become 
resolved
                 Key: GROOVY-9472
                 URL: https://issues.apache.org/jira/browse/GROOVY-9472
             Project: Groovy
          Issue Type: Bug
          Components: Compiler, Static Type Checker
    Affects Versions: 2.5.10
            Reporter: Daniil Ovchinnikov


{code:groovy|title=com/foo/Person.groovy}
package com.foo

@groovy.transform.builder.Builder
class Person {
    String name
}
{code}
1.
{code:groovy|title=Main.groovy}
import com.foo.Person

class Main {
    static void main(String[] args) {
        Person.PersonBuilder pb = Person.builder() 
        println(pb.build())
    }
}
{code}
Trying to use it without a static import yields {{unable to resolve class 
Person.PersonBuilder}}, which is another issue.

2. Let's add a static import
{code:groovy|title=Main.groovy}
import com.foo.Person
import static com.foo.Person.PersonBuilder

class Main {
    static void main(String[] args) {
        PersonBuilder pb = Person.builder()
        println(pb.build())
    }
}
{code}
The code compiles, but fails with {{java.lang.NoClassDefFoundError: 
PersonBuilder}} when run.

3. Let's add {{@CompileStatic}}
{code:groovy|title=Main.groovy}
import com.foo.Person
import static com.foo.Person.PersonBuilder

class Main {
    static void main(String[] args) {
        PersonBuilder pb = Person.builder()
        println(pb.build())
    }
}
{code}
Compilation fails with: 
 {{Cannot assign value of type com.foo.Person$PersonBuilder to variable of type 
PersonBuilder}} and {{Cannot find matching method PersonBuilder#build()}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to