RFR: JDK-8138822 Source version error missing version number
Jonathan Gibbons
jonathan.gibbons at oracle.com
Fri Sep 16 15:44:17 UTC 2016
Approved, but fix would be even better if you used the typesafe Error
methods to access the diagnostic.
-- Jon
On 9/15/16 10:34 AM, Dan Smith wrote:
> This is a trivial fix for an error message that is missing a parameter. Just need a quick review.
>
> https://bugs.openjdk.java.net/browse/JDK-8138822
>
> Patch is below.
>
> —Dan
>
> ---------------------
>
> # HG changeset patch
> # Parent 6e028413ea0835895813b3c84d78cc46e815cf07
>
> diff -r 6e028413ea08 src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.java
> --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.java Wed Sep 14 20:00:20 2016 +0530
> +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Annotate.java Wed Sep 14 16:45:20 2016 -0600
> @@ -92,6 +92,7 @@
>
> private final Attribute theUnfinishedDefaultValue;
> private final boolean allowRepeatedAnnos;
> + private final String sourceName;
>
> protected Annotate(Context context) {
> context.put(annotateKey, this);
> @@ -114,6 +115,7 @@
>
> Source source = Source.instance(context);
> allowRepeatedAnnos = source.allowRepeatedAnnotations();
> + sourceName = source.name;
> }
>
> /** Semaphore to delay annotation processing */
> @@ -322,7 +324,7 @@
>
> if (annotated.containsKey(a.type.tsym)) {
> if (!allowRepeatedAnnos) {
> - log.error(DiagnosticFlag.SOURCE_LEVEL, a.pos(), "repeatable.annotations.not.supported.in.source");
> + log.error(DiagnosticFlag.SOURCE_LEVEL, a.pos(), "repeatable.annotations.not.supported.in.source", sourceName);
> }
> ListBuffer<T> l = annotated.get(a.type.tsym);
> l = l.append(c);
> diff -r 6e028413ea08 test/tools/javac/annotations/repeatingAnnotations/WrongVersion.java
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/test/tools/javac/annotations/repeatingAnnotations/WrongVersion.java Wed Sep 14 16:45:20 2016 -0600
> @@ -0,0 +1,22 @@
> +/*
> + * @test /nodynamiccopyright/
> + * @bug 8138822
> + * @summary test that only Java 8+ allows repeating annotations
> + * @compile WrongVersion.java
> + * @compile/fail/ref=WrongVersion6.out -XDrawDiagnostics -Xlint:-options -source 6 WrongVersion.java
> + * @compile/fail/ref=WrongVersion7.out -XDrawDiagnostics -Xlint:-options -source 7 WrongVersion.java
> + */
> +import java.lang.annotation.Repeatable;
> +
> + at Ann(1) @Ann(2)
> +class C {
> +}
> +
> + at Repeatable(AnnContainer.class)
> + at interface Ann {
> + int value();
> +}
> +
> + at interface AnnContainer {
> + Ann[] value();
> +}
> diff -r 6e028413ea08 test/tools/javac/annotations/repeatingAnnotations/WrongVersion6.out
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/test/tools/javac/annotations/repeatingAnnotations/WrongVersion6.out Wed Sep 14 16:45:20 2016 -0600
> @@ -0,0 +1,2 @@
> +WrongVersion.java:11:9: compiler.err.repeatable.annotations.not.supported.in.source: 1.6
> +1 error
> diff -r 6e028413ea08 test/tools/javac/annotations/repeatingAnnotations/WrongVersion7.out
> --- /dev/null Thu Jan 01 00:00:00 1970 +0000
> +++ b/test/tools/javac/annotations/repeatingAnnotations/WrongVersion7.out Wed Sep 14 16:45:20 2016 -0600
> @@ -0,0 +1,2 @@
> +WrongVersion.java:11:9: compiler.err.repeatable.annotations.not.supported.in.source: 1.7
> +1 error
>
More information about the compiler-dev
mailing list