some new bugs

Werner Dietl wdietl at gmail.com
Fri Feb 22 18:25:09 PST 2013


We previously agreed that Joel will look into the tests that only fail
for repeated type annotations.

cu, WMD.

On Fri, Feb 22, 2013 at 6:14 PM, Steve Sides <steve.sides at oracle.com> wrote:
> yep.
>
>  I had entered an earlier one,
> 8008182 - Repeated type-annotation on type arg in method reference not
> written to class file
> and I'm wondering is that last one is related.
>
> -steve
>
>
> On 2/22/2013 6:09 PM, Werner Dietl wrote:
>
> Thanks for these tests!
> I'll work on fixing them in the type-annotations repository ASAP.
>
> cu, WMD.
>
> On Fri, Feb 22, 2013 at 6:07 PM, Steve Sides <steve.sides at oracle.com> wrote:
>
> Hi Werner,
> I have been looking at type-annotations in anonymous and inner classes.
> I have a few new bugs. They are showing yet in bugs.sun.com, but they should
> by tomorrow(?).
> Only the first one is a jtreg test. The other 2 are part of a larger test
> with some classfile checking, but I
> put the sample code here so you can javac,javap it.
>
> -steve
>
> 8008751 - Type Annotation on array level in nested class of anonymous class
> results in NPE at
> com.sun.tools.javac.code.TypeAnnotations$TypeAnnotationPositions.resolveFrame(TypeAnnotations.java:792)
> 8<- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> - - - - - - - -
> /*
>  * @test
>  * @summary type-annotation on array level in nested class results in NPE
>  * @bug 8008751
>  */
> import java.lang.annotation.*;
> import static java.lang.annotation.RetentionPolicy.*;
> import static java.lang.annotation.ElementType.*;
> import java.util.List;
>
> class T8008751 {
>     Object mtest( T8008751 t){ return null;  }
>     Object mmtest( T8008751 t){ return null;  }
>     public void test() {
>        mtest( new T8008751() {
>                 class InnerAnon {
>                     @A("ok") String s = (@A("ok") String)( new @A("ok")
> Object());
>                     @A("ok") Object @A("NPE")[] [] ia_sa1 = null;
>                 }
>                 // If not instanciated, no crash.
>                 InnerAnon IA = new InnerAnon();
>            });
>    }
> }
> @Retention(RUNTIME) @Target(TYPE_USE)  @interface A { String value(); }
>
>
> 8008762 - Type annotation on inner class in anonymous class show up as
> regular type annotations
> 8<- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> - - - - - - - -
> import java.lang.annotation.*;
> import static java.lang.annotation.RetentionPolicy.*;
> import static java.lang.annotation.ElementType.*;
>
> class Test1 { // Test1.class
>     @A @B String data = "test";
>     @A @B String m(){ return null; };
>     Object mtest( Test1 t){ return null; }
>     public void test() {
>         mtest( new Test1() { // Test1$1.class
>                 @A @B String a_data = "test";
>                 @A @B String a_m(){ return null; };
>                 class InnerAnon { // Test1$1$InnerAnon.class
>                      @A @B String ai_data = "test";
>                      @A @B String ai_m(){ return null; };
>                 }
>                  InnerAnon IA = new InnerAnon();
>            });
>    }
> }
>
> @Retention(RUNTIME) @Target(TYPE_USE) @interface A { }
> @Retention(CLASS) @Target(TYPE_USE) @interface B { }
>
>
> 8008769 - Repeated type-annotations on type parameter of local variable are
> not written to classfile.
> 8<- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> - - - - - - - -
> import java.lang.annotation.*;
> import static java.lang.annotation.RetentionPolicy.*;
> import static java.lang.annotation.ElementType.*;
>
> class Test<T> {
>     Test<@A @A @A String> t = new Test<>(); //ok
>
>     public void test() {
>         Test<@B String> t1 = new Test<>(); //ok
>         Test<@A @A @A String> t2 = new Test<>(); //not ok
>    }
> }
>
> @Target(TYPE_USE) @Repeatable( AC.class ) @interface A { }
> @Target(TYPE_USE) @interface AC { A[] value(); }
> @Target(TYPE_USE) @Repeatable( BC.class ) @interface B { }
> @Target(TYPE_USE) @interface BC { B[] value(); }
>
>
>
>
>



-- 
http://www.google.com/profiles/wdietl


More information about the type-annotations-dev mailing list