Type annotations on scoping mechanisms and type/declaration annotation errors

Alex Buckley alex.buckley at oracle.com
Tue Oct 8 18:01:24 PDT 2013


On 10/7/2013 7:35 PM, Werner Dietl wrote:
> Hi Alex,
>
>> 1. CantAnnotateStaticClass is still OK and CantAnnotateStaticClass2 still
>> makes me confused. Please see my question to you on
>> type-annotations-spec-observers, after your response to Srikanth on Y.YY.Z.
>
> Just replied.
> I agree that the test case CASC2 is not the cleanest and would
> appreciate somebody else independently testing the logic I
> implemented.

CantAnnotateStaticClass2.java and CantAnnotateStaticClass3.java would be 
clearer if each error line had only one annotation. For example, "@TB 
Outer . Inner" is enough to show the error - there's no need for "@TB 
Outer . @TC Inner".

What's missing are cases of the form "Top . @TB Outer . ..." - no 
annotation on Top. Currently, Top is always annotated and that's always 
an error (since Outer is not an inner class) but it means no information 
is gained from the many "@TA Top . ..." examples.

>> 2. CantAnnotateScoping.java looks good. FYI the @DA in "java. at DA
>> lang.Object" is illegal because @DA is decorating part of a type in a type
>> context, but DA is not applicable to type contexts.
>
> Do you agree with the error messages I raise in these examples?
> I also have a "java. at DA XXX.Object" test case and am not quite sure
> how many error messages would be most helpful.
> See the following test case:
>
> langtools/test/tools/javac/annotations/typeAnnotations/failures/CantAnnotateScoping.java
>
> fields f5 and f6.

Just one error message is preferable - because @DA applies to part of a 
type in a type context, but DA is not applicable to type contexts. 
'lang' should not be classified as a strict TypeName - I presume the 
presence of @DA is doing so, but it should not be revealed in an error 
message.

Alex


More information about the type-annotations-dev mailing list