Annotating lambda expressions

Maurizio Cimadamore maurizio.cimadamore at
Fri Jul 10 09:31:55 UTC 2015

On 10/07/15 09:43, Ron Pressler wrote:
> (Related to 
> It is useful to add an annotation to a lambda expression -- as in 
> foo(@Special () -> { ...}) -- which will be applied to the static 
> method implementing the lambda (not to the interface the lambda 
> implements). This would allow instrumentation tools operating on 
> method implementations to handle lambdas. So far, AFAICT, this is not 
> possible (or am I wrong?).
This is not possible, currently - as Remi said; you have annotations on 
declarations (i.e. variable, classes, methods) - you have annotation on 
types (i.e. type of a cast, type argument, etc.) - but you don't have 
annotations on _expressions_.
I take it that, under the current translation scheme, there seems to be 
a plausible description for what should happen when the lambda is 
annotated; but what if the lambda is turned into a method reference (by 
some IDE refactoring, or human intervention) ? In that case it is not 
guaranteed that there would still be a physical place where to put the 
annotation (unless we tell the compiler to 'expand' all annotated method 

So, while I don't question the genuine nature of the use case you put 
forward, I'm not seeing a 100% straightforward path to get there w/o 
adding non trivial complexity to both implementation and the spec.

> Opinions?
> Ron

More information about the compiler-dev mailing list