Community
Participate
Working Groups
The following code will crash upon execution: package bugs; class GenericClass< K > { public void f() {} } class ExtendsGenericHasITD extends GenericClass< Object > {} aspect VerifyError { public void ExtendsGenericHasITD.f() { super.f(); } public static void main( String[] args ) { new ExtendsGenericHasITD(); } } The error message is: Exception in thread "main" java.lang.VerifyError: (class: bugs/ExtendsGenericHasITD, method: ajc$superDispatch$bugs_ExtendsGenericHasITD$f signature: ()V) Illegal use of nonvirtual function call at bugs.VerifyError.main(ExtendsGenericHasITD.aj:13) Code runs without error if you change the class declaration to class ExtendsGenericHasITD extends GenericClass {}
fix committed - thanks for the testcase. There may be some other bugs lurking in this area but the couple of testcases I've tried are OK...I'm thinking problems will appear when really using type variables in the methods that are being delegated to via super. The problem here was generating bytecode targetting a parameterized type, when it should have targeted the real type that was being parameterized. should be in a 1.6.0 dev build shortly.
should of closed this - been fixed for a while!