public team class A<B b> { public void run() { System.out.println("A.run()"); } public class Q playedBy R<@b> { void run() <- replace void run(); // 1. originally the compiler forced to declare 'Object run()' // 2. compile process is fragile with circular references, like in this exercise callin void run() { base.run(); System.out.println("Q.run()"); } } } public team class B { public class R playedBy A { void run() <- replace void run(); callin void run() { base.run(); System.out.println("R.run()"); } } } public class TheTest { final B b = new B(); final A a = new A<@b>(); public void run() { within(b) { a.run(); } } }
eclipse.buildId=I20100129.OT-1.4.0M2 java.version=1.5.0_16 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=uk_UA Command-line arguments: -os win32 -ws win32 -arch x86 Error Mon Feb 22 12:21:48 EET 2010 Error checking callin/callout binding Java Model Exception: Core Exception [code 0] Base class for role A.Q not found. at org.objectteams.otdt.internal.core.RoleType.getBaseClass(RoleType.java:178) at org.objectteams.otdt.internal.core.CallinMapping.findBaseMethods(CallinMapping.java:228) at org.objectteams.otdt.internal.core.CallinMapping.getBoundBaseMethods(CallinMapping.java:202) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.searchMemberBindings(CallinMarkerCreator2.java:612) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.updateMethodMarkers(CallinMarkerCreator2.java:373) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.updateCallinMarkers(CallinMarkerCreator2.java:297) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.access$1(CallinMarkerCreator2.java:267) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2$3.updateMarkers(CallinMarkerCreator2.java:252) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerJob.run(CallinMarkerJob.java:58) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) Caused by: org.eclipse.core.runtime.CoreException: Base class for role A.Q not found. at org.objectteams.otdt.internal.core.RoleType.getBaseClass(RoleType.java:178) at org.objectteams.otdt.internal.core.CallinMapping.findBaseMethods(CallinMapping.java:228) at org.objectteams.otdt.internal.core.CallinMapping.getBoundBaseMethods(CallinMapping.java:202) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.searchMemberBindings(CallinMarkerCreator2.java:612) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.updateMethodMarkers(CallinMarkerCreator2.java:373) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.updateCallinMarkers(CallinMarkerCreator2.java:297) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.access$1(CallinMarkerCreator2.java:267) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2$3.updateMarkers(CallinMarkerCreator2.java:252) at org.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerJob.run(CallinMarkerJob.java:58) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)]]>