RFR: 8254023: A module declaration is not allowed to be a target of an annotation that lacks an @Target meta-annotation

Guoxiong Li github.com+13688759+lgxbslgx at openjdk.java.net
Wed Oct 14 13:18:23 UTC 2020


Hi all,

The Java Language Specifications(JLS), from 8 to 13 included, state it as below:

> If an annotation of type java.lang.annotation.Target is not present on the
declaration of an annotation type T , then T is applicable in all declaration contexts
except type parameter declarations, and in no type contexts.
These contexts are the syntactic locations where annotations were allowed in Java SE 7.

The JLS 14 and 15 state it as below:

>If an annotation of type java.lang.annotation.Target is not present on the
declaration of an annotation type T , then T is applicable in all nine declaration
contexts and in all 16 type contexts.

This patch adds `names.MODULE, names.TYPE_PARAMETER, names.TYPE_USE` to `com.sun.tools.javac.comp.Check.dfltTargetMeta`
to fix this issue. Thank you for taking the time to review.

Best Regards.

-------------

Commit messages:
 - 8254023: A module declaration is not allowed to be a target of an annotation that lacks an @Target meta-annotation

Changes: https://git.openjdk.java.net/jdk/pull/622/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=622&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8254023
  Stats: 82 lines in 4 files changed: 81 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/622.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/622/head:pull/622

PR: https://git.openjdk.java.net/jdk/pull/622


More information about the compiler-dev mailing list