javac8 annotation processors don't visit parameter annotations

Alex Buckley alex.buckley at
Wed Mar 5 22:08:40 UTC 2014

Just to note that you're speaking about declaration annotations on a 
formal parameter. Type annotations on the type of a formal parameter are 
ignored during round processing.


On 3/5/2014 1:49 PM, Liam Miller-Cushon wrote:
> There appears to be a javac8 bug that prevents annotation processors
> from visiting annotations on parameters. When repeated annotations were
> implemented [1][2] the annotation scanners in JavacProcessingEnvironment
> and JavacRoundEnvironment were modified and the following override was
> added:
> @Override
> public Set<TypeElement> visitExecutable(ExecutableElement e,
> Set<TypeElement> p) {
>    // Type parameters are not considered to be enclosed by an executable
>    scan(e.getTypeParameters(), p);
>    return scan(e.getEnclosedElements(), p);
> }
> MethodSymbols don't have any enclosed elements, but they do have
> parameters (which currently aren't being visited). I think that line was
> meant to match the base implementation in ElementScanner:
> return scan(e.getParameters(), p);
> [1]
> [2]

More information about the compiler-dev mailing list