Problem with type annotations on a type parameter
Jonathan Gibbons
jonathan.gibbons at oracle.com
Thu Apr 25 09:44:16 PDT 2013
Werner,
What are the invariants on the type anno position -- who should set it
and when? Is this something that gets set late, like in Gen (maybe
because of need to know bytecode offsets?)
-- Jon
On 04/04/2013 06:02 PM, Werner Dietl wrote:
> Jon, Steve, all,
>
> I'm debugging some strange behavior and I would appreciate a quick
> look by somebody else. I'm probably missing something very obvious.
>
> Take the attached class that contains a class nested within an
> anonymous class.
> Compile with the type-annotations javac and you'll get this output:
>
> ClassWriter: Position UNKNOWN in type annotation: @TA
> ClassWriter: Position UNKNOWN in type annotation: @TA
>
> That's bad, as it means that the type annotation is not written. We
> confirm this by running javap:
>
> javap -v NestedTest\$1\$Inner.class
>
> Nothing on the type parameter.
>
> The strange thing is that this works if we remove the declaration of
> field i1.
> It also works if instead of a method type parameter we declare a
> method parameter, or a class type parameter, or if the class is
> outside of the anonymous class.
>
> Does anybody understand the dependency between field i1 and the type
> parameter X?
>
> Steve: could you expand the tests in
> tools/javac/annotations/typeAnnotations/referenceinfos/ to ensure that
> annotations in anonymous classes and lambdas work as expected?
> Please also add a failing test for this.
>
> Thanks,
> cu, WMD.
>
> --
> http://www.google.com/profiles/wdietl
More information about the type-annotations-dev
mailing list