Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.5.10
-
None
Description
com/foo/Person.groovy
package com.foo @groovy.transform.builder.Builder class Person { String name }
1.
Main.groovy
import com.foo.Person class Main { static void main(String[] args) { Person.PersonBuilder pb = Person.builder() println(pb.build()) } }
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
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()) } }
The code compiles, but fails with java.lang.NoClassDefFoundError: PersonBuilder when run.
3. Let's add @CompileStatic
Main.groovy
import com.foo.Person import static com.foo.Person.PersonBuilder import groovy.transform.CompileStatic @CompileStatic class Main { static void main(String[] args) { PersonBuilder pb = Person.builder() println(pb.build()) } }
Compilation fails with:
Cannot assign value of type com.foo.Person$PersonBuilder to variable of type PersonBuilder and Cannot find matching method PersonBuilder#build()