Community
Participate
Working Groups
Currently when matching parameter annotations we look at every signature for a joinpoint. This can cause some unfortunate matches: void foo(@Anno String s) {} execution(* *(!Anno (*))) Given that setup, it won't match. But if foo is overriding another method (e.g. implementing an interface method) then because the overridden method is likely: void foo(String s) then the pointcut which match the overriding one. That is because a joinpoint can have many signatures, per: https://eclipse.org/aspectj/doc/released/adk15notebook/jpsigs.html Reviewing that page you can see that some elements of a signature must match on the subject of the join point (modifiers) whilst others can match if any signature for that joinpoint match. The question then is whether parameter annotations should be treated like modifiers.