Mercurial > hg > openjdk > jdk9 > langtools
changeset 4037:6b51827c339c
8175198: Javac incorrectly allows receiver parameters in annotation methods
Reviewed-by: mcimadamore
author | vromero |
---|---|
date | Fri, 10 Mar 2017 09:52:49 -0800 |
parents | 7888a3e99700 |
children | 35252ae6a7d3 |
files | src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java test/tools/javac/T8175198/AnnotationsAndFormalParamsTest.java test/tools/javac/T8175198/AnnotationsAndFormalParamsTest.out |
diffstat | 3 files changed, 19 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Thu Mar 09 23:42:32 2017 -0800 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Fri Mar 10 09:52:49 2017 -0800 @@ -974,8 +974,11 @@ ClassSymbol owner = env.enclClass.sym; if ((owner.flags() & ANNOTATION) != 0 && - tree.params.nonEmpty()) - log.error(tree.params.head.pos(), + (tree.params.nonEmpty() || + tree.recvparam != null)) + log.error(tree.params.nonEmpty() ? + tree.params.head.pos() : + tree.recvparam.pos(), "intf.annotation.members.cant.have.params"); // Attribute all value parameters.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/T8175198/AnnotationsAndFormalParamsTest.java Fri Mar 10 09:52:49 2017 -0800 @@ -0,0 +1,11 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8175198 + * @summary Javac incorrectly allows receiver parameters in annotation methods + * @compile/fail/ref=AnnotationsAndFormalParamsTest.out -XDrawDiagnostics -Werror -Xlint:unchecked AnnotationsAndFormalParamsTest.java + */ + +@interface AnnotationsAndFormalParamsTest { + int value(int i); + int foo(AnnotationsAndFormalParamsTest this); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/T8175198/AnnotationsAndFormalParamsTest.out Fri Mar 10 09:52:49 2017 -0800 @@ -0,0 +1,3 @@ +AnnotationsAndFormalParamsTest.java:9:19: compiler.err.intf.annotation.members.cant.have.params +AnnotationsAndFormalParamsTest.java:10:44: compiler.err.intf.annotation.members.cant.have.params +2 errors