Marcin Zajaczkowski created GROOVY-10937:
--------------------------------------------
Summary: record + lombok + groovy == Cannot specify duplicate
annotation on the same member : lombok.NonNull
Key: GROOVY-10937
URL: https://issues.apache.org/jira/browse/GROOVY-10937
Project: Groovy
Issue Type: Bug
Components: Compiler
Affects Versions: 4.0.9
Reporter: Marcin Zajaczkowski
I've bumped into a strange looking compilation error in a project using JDK 17
record, Lombok's @NotNull and Groovy for tests. It took me a while to find a
construction which causes that, as:
# Compilation error occurs in a Groovy class not related to the problematic
Java record.
# Groovy class must have (non related) inner interface or class.
# Record has must have two (or more) fields with @NotNull annotation from
Lombok.
# Some (other) Groovy class has to refer to that record.
For example:
{code:java}
// Java
public record SampleRecordWithNonNullFromLombok(
@NonNull
String nonNullField,
@NonNull //Two or more @NulNull annotated fields are required to
trigger the problem
String nonNullField2
) {}
//Groovy
class ClassWithReferenceToRecord {
private SampleRecordWithNonNullFromLombok sampleRecord
}
class ReproducerClass { //it fails to compile
interface RequiredToReproduceProblem {
}
}{code}
The error is:
{code:java}
[ERROR] Failed to execute goal
org.codehaus.gmavenplus:gmavenplus-plugin:1.13.1:compileTests (default) on
project record-lombok-groovy: Error occurred while calling a method on a Groovy
class from classpath.: InvocationTargetException: startup failed:
[ERROR] .../ReproducerClass.groovy: -1: Cannot specify duplicate annotation on
the same member : lombok.NonNull
[ERROR] @ line -1, column -1.
[ERROR] 1 error
{code}
I created a shrank version of a reproducer:
[https://github.com/szpak/code-examples-and-poc/tree/master/record-lombok-groovy]
It might be a problem with the way how Lombok generates .class for Java record,
however, I start here as Groovy compilation is the final reason.
I have observed that error occasionally with Groovy 3(.0.14), but it occurs
every time with 4(0.9).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)