Support for Records in Java - false compilation error reported
See original GitHub issueShort 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
- Create a
record
type as follows
@lombok.AllArgsConstructor public record Java(String version) { }
- Create an instance of this class using the appropriate constructor and observe the behavior.
System.out.println(new Java("14").version());
- 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.
- 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
Issue Analytics
- State:
- Created 3 years ago
- Reactions:7
- Comments:18 (1 by maintainers)
Top GitHub Comments
Same issue here. We’re using
@Builder
on records, but IntelliJ doesn’t recognise them properly.This doesn’t work:
This does:
Both scenarios work when compiling from the command-line with Maven.
So, it’s pretty easy to work around, but we’re using Lombok to get rid of boilerplate, not introduce more of it 😉
@Builder
support would be very helpful 😃 https://youtrack.jetbrains.com/issue/IDEA-266513