§2.3.4.(c) Actual ambiguity

At runtime actual ambiguity may occur if for the dynamic type of a base to be lifted the conditions of (b) above hold accordingly. Actual ambiguity is only possible in cases reported by the compiler as potential ambiguity.

Effect:
An actual ambiguity is reported at runtime by throwing a org.objectteams.LiftingFailedException.
Example code (Actual Ambiguity):
1
team class MyTeam {
2
  public class SuperRole playedBy MyBase {...}
3
  public class SubRoleA extends SuperRole playedBy SubBase {...}
4
  public class SubRoleB extends SuperRole playedBy SubBase {...}
5
  
6
  public void useSuperRole(MyBase as SuperRole r) {...}
7
}
8
// plus these calls:
9
MyTeam mt = new MyTeam();
10
mt.useSuperRole(new SubBase());