aoqi@0: import java.lang.annotation.*; aoqi@0: import static java.lang.annotation.RetentionPolicy.*; aoqi@0: import static java.lang.annotation.ElementType.*; aoqi@0: import java.util.List; aoqi@0: aoqi@0: class testname { // TestN.class aoqi@0: _As _Bs _Cs _Ds String data = "test"; aoqi@0: _As _Bs _Cs _Ds Object mtest( _As _Bs _Cs _Ds testname t){ return null; } aoqi@0: Object mmtest( testname t){ return null; } aoqi@0: aoqi@0: class Inner { // TestN$1$Inner.class aoqi@0: _As _Bs _Cs _Ds String i_odata1 = "test"; aoqi@0: _As _Bs _Cs _Ds int i_pdata1 = 0; aoqi@0: _As _Bs _Cs _Ds U i_udata = null; aoqi@0: //8015257 aoqi@0: _As _Bs _Cs _Ds Object _As _Bs _Cs _Ds [] _As _Bs _Cs _Ds [] i_sa1 = null; aoqi@0: _As _Bs _Cs _Ds T i_tdata = null; aoqi@0: _As _Bs _Cs _Ds String i_m1(){ return null; }; aoqi@0: _As _Bs _Cs _Ds int i_m2( _As _Bs _Cs _Ds Object o){return 0;} aoqi@0: _As _Bs _Cs _Ds aoqi@0: <_TAs _TBs _Cs _Ds U> Object i_um( _As _Bs _Cs _Ds U u) { return null; } aoqi@0: } aoqi@0: //8015323 aoqi@0: _As _Bs _Cs _Ds Inner< _As _Bs _Cs _Ds String> IN = new Inner< String>(); aoqi@0: aoqi@0: public void test() { aoqi@0: aoqi@0: class Local1 { // TestN$Local1.class aoqi@0: _As _Bs _Cs _Ds String l_odata1 = "test"; aoqi@0: _As _Bs _Cs _Ds int l_pdata1 = 0; aoqi@0: _As _Bs _Cs _Ds U l_udata = null; aoqi@0: //8015257 aoqi@0: _As _Bs _Cs _Ds Object _As _Bs _Cs _Ds []_As _Bs _Cs _Ds [] l_sa1 = null; aoqi@0: _TAs _TBs _Cs _Ds T l_tdata = null; aoqi@0: _As _Bs _Cs _Ds String l_m1(){ return null; }; aoqi@0: _As _Bs _Cs _Ds int l_m2(_As _Bs _Cs _Ds Object o){return 0;} aoqi@0: _As _Bs _Cs _Ds aoqi@0: <_TAs _TBs _Cs _Ds U> Object l_um(_As _Bs _Cs _Ds U u) { return null; } aoqi@0: } aoqi@0: // The below, as a local variable, will show up on test() aoqi@0: _As _Bs _Cs _Ds Local1<_As _Bs _Cs _Ds String> LC = new Local1(); aoqi@0: aoqi@0: mtest( new testname() { // TestN$1 aoqi@0: class InnerAnon { // TestN$1$InnerAnon.class aoqi@0: _As _Bs _Cs _Ds String ia_odata1 = "test"; aoqi@0: _As _Bs _Cs _Ds int ia_pdata1 = 0; aoqi@0: _As _Bs _Cs _Ds U ia_udata = null; aoqi@0: //8015257 aoqi@0: _As _Bs _Cs _Ds Object _As _Bs _Cs _Ds []_As _Bs _Cs _Ds [] ia_sa1 = null; aoqi@0: _TAs _TBs _Cs _Ds T ia_tdata = null; aoqi@0: _As _Bs _Cs _Ds String ia_m1(){ return null; }; aoqi@0: _As _Bs _Cs _Ds int ia_m2(_As _Bs _Cs _Ds Object o){return 0;} aoqi@0: _As _Bs _Cs _Ds aoqi@0: <_TAs _TBs _Cs _Ds U> Object ia_um(_As _Bs _Cs _Ds U u) { return null; } aoqi@0: } aoqi@0: //8015257 aoqi@0: _As _Bs _Cs _Ds InnerAnon<_As _Bs _Cs _Ds String> IA = new InnerAnon< String>(); aoqi@0: aoqi@0: _As _Bs _Cs _Ds String odata1 = "test"; aoqi@0: _As _Bs _Cs _Ds int pdata1 = 0; aoqi@0: //8015257 aoqi@0: _As _Bs _Cs _Ds Object _As _Bs _Cs _Ds []_As _Bs _Cs _Ds [] sa1 = null; aoqi@0: _As _Bs _Cs _Ds T tdata = null; aoqi@0: aoqi@0: _As _Bs _Cs _Ds String m1(){ return null; }; aoqi@0: _As _Bs _Cs _Ds int m2(_As _Bs _Cs _Ds Object o){return 0;} aoqi@0: aoqi@0: _As _Bs _Cs _Ds Object _As _Bs _Cs _Ds [] _As _Bs _Cs _Ds [] aoqi@0: m3(String _As _Bs _Cs _Ds []_As _Bs _Cs _Ds [] sa){ return null; } aoqi@0: aoqi@0: _As _Bs _Cs _Ds aoqi@0: <_TAs _TBs _Cs _Ds T> Object tm(_As _Bs _Cs _Ds T t) { return null; } aoqi@0: aoqi@0: public void atest( testname t){ aoqi@0: t.mmtest( new testname() { // TestN$1$1.class aoqi@0: _As _Bs _Cs _Ds String mm_odata1 = "test"; aoqi@0: _As _Bs _Cs _Ds int mm_pdata1 = 0; aoqi@0: //8015257 aoqi@0: _As _Bs _Cs _Ds Object _As _Bs _Cs _Ds []_As _Bs _Cs _Ds [] mm_sa1 = null; aoqi@0: _TAs _TBs _Cs _Ds T mm_tdata = null; aoqi@0: aoqi@0: _As _Bs _Cs _Ds String mm_m1(){ return null; }; aoqi@0: _As _Bs _Cs _Ds int mm_m2(_As _Bs _Cs _Ds Object o){return 0;} aoqi@0: aoqi@0: _As _Bs _Cs _Ds String _As _Bs _Cs _Ds [] _As _Bs _Cs _Ds [] aoqi@0: mm_m3(String _As _Bs _Cs _Ds []_As _Bs _Cs _Ds [] sa){ return null; } aoqi@0: aoqi@0: _As _Bs _Cs _Ds aoqi@0: <_TAs _TBs _Cs _Ds T> Object mm_tm(_As _Bs _Cs _Ds T t) { return null; } aoqi@0: }); aoqi@0: } aoqi@0: }); aoqi@0: } aoqi@0: } aoqi@0: @Retention(RUNTIME) @Target({TYPE_USE,FIELD}) @Repeatable( AC.class ) @interface A { } aoqi@0: @Retention(RUNTIME) @Target({TYPE_USE,METHOD}) @Repeatable( BC.class ) @interface B { } aoqi@0: @Retention(RUNTIME) @Target({TYPE_USE,FIELD}) @interface AC { A[] value(); } aoqi@0: @Retention(RUNTIME) @Target({TYPE_USE,METHOD}) @interface BC { B[] value(); } aoqi@0: aoqi@0: @Retention(CLASS) @Target({TYPE_USE,FIELD}) @Repeatable( CC.class ) @interface C { } aoqi@0: @Retention(CLASS) @Target({TYPE_USE,METHOD}) @Repeatable( DC.class ) @interface D { } aoqi@0: @Retention(CLASS) @Target({TYPE_USE,FIELD}) @interface CC { C[] value(); } aoqi@0: @Retention(CLASS) @Target({TYPE_USE,METHOD}) @interface DC { D[] value(); } aoqi@0: aoqi@0: @Retention(RUNTIME) @Target({TYPE_USE,TYPE_PARAMETER,FIELD}) @Repeatable( TAC.class ) @interface TA { } aoqi@0: @Retention(RUNTIME) @Target({TYPE_USE,TYPE_PARAMETER,METHOD}) @Repeatable( TBC.class ) @interface TB { } aoqi@0: @Retention(RUNTIME) @Target({TYPE_USE,TYPE_PARAMETER,FIELD}) @interface TAC { TA[] value(); } aoqi@0: @Retention(RUNTIME) @Target({TYPE_USE,TYPE_PARAMETER,METHOD}) @interface TBC { TB[] value(); }