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)