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
objectTest {
importParboiledLite._
implicitly[RunResult[String=>Unit]]
}
objectParboiledLite {
traitHListfinalcaseclass::[+H, +T<:HList](head : H, tail : T) extendsHListtraitHNilextendsHListtraitReversePrepend[P<:HList, S<:HList] extendsDepFn2[P, S] { typeOut<:HList }
traitDepFn2[A, B]
traitLowPriorityReversePrepend {
typeAux[P<:HList, S<:HList, Out0<:HList] =ReversePrepend[P, S] { typeOut=Out0 }
implicitdefhnilReversePrepend0[P<:HList, S<:HNil]
(implicitrv: Reverse[P]):Aux[P, S, rv.Out] =???
}
traitReverse[T] { typeOut }
objectReversePrependextendsLowPriorityReversePrepend {
defapply[P<:HList, S<:HList](implicitprepend: ReversePrepend[P, S]):Aux[P, S, prepend.Out] = prepend
implicitdefhnilReversePrepend1[P<:HNil, S<:HList]:Aux[P, S, S] =???implicitdefhlistReversePrepend[PH, PT<:HList, S<:HList]
(implicitrpt : ReversePrepend[PT, PH::S]):Aux[PH::PT, S, rpt.Out] =???
}
// import org.parboiled2.{Rule0, Rule, RuleX}sealedtraitRuleXsealedclassRule[-I<:HList, +O<:HList] extendsRuleXtypeRuleN[L<:HList] =Rule[HNil, L]
typeRule0=RuleN[HNil]
def`n/a`=???sealedtraitRunResult[T] {
typeOut<:RuleX
}
objectRunResult {
implicitdeffromAux[T, Out0<:RuleX](implicitaux: Aux[T, Out0]):RunResult[T] { typeOut=Out0 } = `n/a`
sealedtraitAux[T, Out]
objectAuxextendsAux1 {
implicitdefforRule[R<:RuleX]:Aux[R, R] = `n/a`
implicitdefforFHList[I<:HList, R, In0<:HList, Out0<:HList](implicitx: JA[I, R, In0, Out0]):Aux[I⇒R, Rule[In0, Out0]] = `n/a`
}
abstractclassAux1extendsAux2 {
implicitdefforF1[Z, R, In0<:HList, Out0<:HList](implicitx: JA[Z::HNil, R, In0, Out0]):Aux[Z⇒R, Rule[In0, Out0]] = `n/a`
implicitdefforF2[Y, Z, R, In0<:HList, Out0<:HList](implicitx: JA[Y::Z::HNil, R, In0, Out0]):Aux[(Y, Z) ⇒R, Rule[In0, Out0]] = `n/a`
implicitdefforF3[X, Y, Z, R, In0<:HList, Out0<:HList](implicitx: JA[X::Y::Z::HNil, R, In0, Out0]):Aux[(X, Y, Z) ⇒R, Rule[In0, Out0]] = `n/a`
implicitdefforF4[W, X, Y, Z, R, In0<:HList, Out0<:HList](implicitx: JA[W::X::Y::Z::HNil, R, In0, Out0]):Aux[(W, X, Y, Z) ⇒R, Rule[In0, Out0]] = `n/a`
implicitdefforF5[V, W, X, Y, Z, R, In0<:HList, Out0<:HList](implicitx: JA[V::W::X::Y::Z::HNil, R, In0, Out0]):Aux[(V, W, X, Y, Z) ⇒R, Rule[In0, Out0]] = `n/a`
}
abstractclassAux2 {
protectedtypeJA[I<:HList, R, In0<:HList, Out0<:HList] =Join.Aux[I, HNil, HNil, R, HNil, In0, Out0]
implicitdefforAny[T]:Aux[T, Rule0] = `n/a`
}
}
sealedtraitJoin[I<:HList, L1<:HList, L2<:HList, R] {
typeIn<:HListtypeOut<:HList
}
objectJoin {
implicitdefjoin[I<:HList, L1<:HList, L2<:HList, R, In0<:HList, Out0<:HList]
(implicitx: Aux[I, L1, L2, R, HNil, In0, Out0]):Join[I, L1, L2, R] { typeIn=In0; typeOut=Out0 } = `n/a`
sealedtraitAux[I<:HList, L1<:HList, L2<:HList, R, Acc<:HList, In<:HList, Out<:HList]
objectAuxextendsAux1 {
// if R == Unit convert to HNilimplicitdefforUnit[I<:HList, L1<:HList, L2<:HList, Acc<:HList, Out<:HList]
(implicitx: Aux[I, L1, L2, HNil, Acc, I, Out]):Aux[I, L1, L2, Unit, Acc, I, Out] = `n/a`
// if R <: HList and L1 non-empty move head of L1 to Accimplicitdefiter1[I<:HList, H, T<:HList, L2<:HList, R<:HList, Acc<:HList, Out<:HList]
(implicitx: Aux[I, T, L2, R, H::Acc, I, Out]):Aux[I, H::T, L2, R, Acc, I, Out] = `n/a`
// if R <: HList and L1 empty and L2 non-empty move head of L2 to Accimplicitdefiter2[I<:HList, H, T<:HList, R<:HList, Acc<:HList, Out<:HList]
(implicitx: Aux[I, HNil, T, R, H::Acc, I, Out]):Aux[I, HNil, H::T, R, Acc, I, Out] = `n/a`
// if R <: HList and L1 and L2 empty set Out = reversePrepend Acc before Rimplicitdefterminate[I<:HList, R<:HList, Acc<:HList, Out<:HList](implicitx: ReversePrepend.Aux[Acc, R, Out]):Aux[I, HNil, HNil, R, Acc, I, Out] = `n/a`
// if R <: Rule and L1 non-empty move head of L1 to AccimplicitdefiterRule1[I<:HList, L2<:HList, I2<:HList, O2<:HList, In0<:HList, Acc<:HList, Out0<:HList, H, T<:HList]
(implicitx: Aux[I, T, L2, Rule[I2, O2], H::Acc, In0, Out0]):Aux[I, H::T, L2, Rule[I2, O2], HNil, In0, Out0] = `n/a`
// if R <: Rule and L1 empty and Acc non-empty move head of Acc to L2implicitdefiterRule2[I<:HList, L2<:HList, I2<:HList, O2<:HList, In0<:HList, Out0<:HList, H, T<:HList]
(implicitx: Aux[I, HNil, H::L2, Rule[I2, O2], T, In0, Out0]):Aux[I, HNil, L2, Rule[I2, O2], H::T, In0, Out0] = `n/a`
}
abstractclassAux1 {
// convert R to R :: HNilimplicitdefforAny[I<:HList, L1<:HList, L2<:HList, R, Acc<:HList, Out<:HList](implicitx: Aux[I, L1, L2, R::HNil, Acc, I, Out]):Aux[I, L1, L2, R, Acc, I, Out] = `n/a`
}
}
}
Compiles in 2.10.4 but reports divergence in 2.11.0. I think the root problem exists in both versions and was unmasked by Hubert's fix to implicit divergence suppression in 2.11.
First pass at a minimization from 78974e6241b8f4498c7ae2669fc406947282a660 in https://github.com/sirthias/parboiled2/tree/wip/scala-2.11-possible-regression
Compiles in 2.10.4 but reports divergence in 2.11.0. I think the root problem exists in both versions and was unmasked by Hubert's fix to implicit divergence suppression in 2.11.
I've got some WIP on the compiler side here: https://github.com/retronym/scala/tree/ticket/8460-3
The text was updated successfully, but these errors were encountered: