[jdk11u-dev] RFR: 8236210: javac generates wrong annotation for fields generated from record components
Liam Miller-Cushon
cushon at openjdk.java.net
Thu Jan 20 23:07:36 UTC 2022
On Thu, 20 Jan 2022 21:47:33 GMT, Goetz Lindenmaier <goetz at openjdk.org> wrote:
>> This is a backport of [JDK-8236210: javac generates wrong annotation for fields generated from record components](https://bugs.openjdk.java.net/browse/JDK-8236210)
>>
>> This is a partial backport.
>>
>> * The focus of JDK-8236210 was a bug with records and most of the diff was to logic that was added to deal with records. However the patch also included a fix to the logic for checking annotation applicability in `Check.annotationApplicable` that fixes a bug with annotations on `var`, so I backported the part that is relevant to Java 11.
>> * I added a test for the issue specific to `var`, since the original test is for records and cannot be backported.
>>
>> Testing: x86 build, affected tests, tier1
>
> Hi Liam,
> your change does not build with Java 10:
> src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java:3092: error: cannot find symbol
> return targets.isEmpty() || targets.isPresent() && !targets.get().isEmpty();
> ^
> symbol: method isEmpty()
> location: variable targets of type Optional<Set<Name>>
>
> See also DEFAULT_ACCEPTABLE_BOOT_VERSIONS in make/autoconf/version-numbers
@GoeLin thanks for the catch! I did my testing with 11 as the bootstrap JDK instead of with 10. I have pushed a fix to remove the use of `Optional.isEmpty`.
-------------
PR: https://git.openjdk.java.net/jdk11u-dev/pull/771
More information about the jdk-updates-dev
mailing list