Lombok-intellij-plugin: Support for Records in Java - false compilation error reported

Created on 23 Mar 2020  路  7Comments  路  Source: mplushnikov/lombok-intellij-plugin

Short description

Incorrect compilation issue reported by the plugin while using the records.

Since the latest version of IntelliJ, the IDE has started supporting Records in Java introduced as a preview feature in Java-14.

Expected behavior

There should be no compile error reported by the plugin based on the .class generated.

Version information

IDEA Version:
IntelliJ IDEA 2020.1 EAP (Community Edition)
Build #IC-201.6487.11, built on March 18, 2020
Runtime version: 11.0.6+8-b765.15 x86_64
macOS 10.14.6

Plugin Version:
0.29-EAP

Steps to reproduce

  1. Create a record type as follows

@lombok.AllArgsConstructor public record Java(String version) { }

  1. Create an instance of this class using the appropriate constructor and observe the behavior.

System.out.println(new Java("14").version());

  1. The plugin highlights the "Cannot resolve constructor" message, on the other hand, the code compiles and executes correctly on the IDE.

Sample project

I have reported a reproducible issue on Stackoverflow with the observation and behavior with and without the plugin installed in the IDE.

  • [x] I am able to reproduce this error on the sample project by following the steps described above

Additional information

In general, seems like Lombok in itself needs to support Records as well - https://github.com/rzwitserloot/lombok/issues/2356

Most helpful comment

Hi, it seems that Lombok supports Java 16 records https://github.com/projectlombok/lombok/issues/2356, any update?

All 7 comments

Yes, lombok doesn't support 'records' at the moment

Hi, is there an idea of when this would be supported? I see the same problem with java 16

Hi, it seems that Lombok supports Java 16 records https://github.com/projectlombok/lombok/issues/2356, any update?

@mplushnikov Any update on this?
This is currently the only block for us to adopt using Records in our projects.
Lombok support for Records was added in v1.18.20, so it should be possible to implement :smile:
Thanks!

What's the purpose of the @AllArgsConstructor annotation? Records already have such a constructor.

Are you hoping Lombok will just ignore the annotation in this case?

What's the purpose of the @AllArgsConstructor annotation? Records already have such a constructor.

Are you hoping Lombok will just ignore the annotation in this case?

I'm not sure how useful the @AllArgsConstructor annotation is on a record - in my case it's the @Builder i'd like :smiley:

@Builder support would be very helpful :)
https://youtrack.jetbrains.com/issue/IDEA-266513

Was this page helpful?
0 / 5 - 0 ratings