You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This code throws an java.lang.AbstractMethodError:
classE[F]
classAclassBclassCtraitIntf {
typeRtypeRRdeff1(r: R) {
valrr= f2(r)
f3(rr) // This call throws an AbstractMethodError
}
deff2(r: R):RRdeff3(r: RR)
}
classImplextendsIntf {
typeF=AwithBtypeR=E[F]
typeRR=E[FwithC]
// works if I replace by://type RR = E[A with B with C]overridedeff2(r: R):RR=newE[FwithC]()
overridedeff3(rr: RR) { println("This should be printed")}
}
newImpl().f1(newE[AwithB]())
The text was updated successfully, but these errors were encountered:
Jonathan Brachthäuser (b-studios) said:
Added a byte code comparison the with working version (where the type alias is manually dealiased to E[A with B with C]) to https://gist.github.com/b-studios/e06f741434b2119ed0f2
The main difference is that the following method implementation is generated for the working version, while it isn't for the version with E[F with C]:
public java.lang.Object id(java.lang.Object);
Code:0: aload_0
1: aload_1
2: checkcast #27// class E5: invokevirtual #29// Method id:(LE;)LE;8: areturn
This code throws an java.lang.AbstractMethodError:
The text was updated successfully, but these errors were encountered: