diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-05 09:47:41 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2014-02-05 09:47:41 -0800 |
commit | 01770aa7ff1d5b89a6b67a964a818320c8c9d15e (patch) | |
tree | e77ffa7ed4d7370c617f3f83059c89f9768006cf /test | |
parent | d41e6d501b63445003867e3f4e13628a4918213b (diff) | |
parent | a02fae978bbf3a4296e7ab0baffdbe0b80d6c126 (diff) | |
download | scala-01770aa7ff1d5b89a6b67a964a818320c8c9d15e.tar.gz scala-01770aa7ff1d5b89a6b67a964a818320c8c9d15e.tar.bz2 scala-01770aa7ff1d5b89a6b67a964a818320c8c9d15e.zip |
Merge pull request #3400 from retronym/ticket/8170
SI-8170 Fix regression in TypeRef#transform w. PolyTypes
Diffstat (limited to 'test')
-rw-r--r-- | test/files/pos/t8170.scala | 27 | ||||
-rw-r--r-- | test/files/pos/t8170b.scala | 25 |
2 files changed, 52 insertions, 0 deletions
diff --git a/test/files/pos/t8170.scala b/test/files/pos/t8170.scala new file mode 100644 index 0000000000..b65f4b8572 --- /dev/null +++ b/test/files/pos/t8170.scala @@ -0,0 +1,27 @@ +object O { + trait X + trait B extends A { + override type T[F1 <: X] = F1 + } + trait A { + type T[F <: X] + } +} + +object Test { + import O._ + val a: B = ??? + val b: a.T[X] = ??? + b.ensuring(x => true) // trigger an implicit search +} + + +/* +this = {AliasArgsTypeRef@3004}"Test#7680.a#14899.T#14823[O#7702.X#7793]" + sym = type T#14823 + info = namer: [F#14824 <: O#7703.X#7793]F#14824 +result = {AbstractNoArgsTypeRef@3237}"F#24451" +tp = {PolyType@3235}"[F#14824 <: O#7703.X#7793]F#14824" +tparams = + (0) = {AbstractTypeSymbol@3247}"type F#24451" +*/
\ No newline at end of file diff --git a/test/files/pos/t8170b.scala b/test/files/pos/t8170b.scala new file mode 100644 index 0000000000..53036f6c8a --- /dev/null +++ b/test/files/pos/t8170b.scala @@ -0,0 +1,25 @@ +import language._ + +object ScalaZeee { + trait HFold[M[_], U] { + type Apply[E, A <: U] <: U + } + trait GenericCons[M[_], H, +T <: GenericList[M]] extends GenericList[M] { + val tail: T + override type Folded[N[X] >: M[X], U, F <: HFold[N, U]] = F#Apply[H, tail.Folded[N, U, F]] + } + val KNil: GenericList[Nothing] = ??? + sealed trait GenericList[+M[_]] { + type Folded[N[X] >: M[X], U, F <: HFold[N, U]] <: U + } +} + +object TypelevelUsage { + import ScalaZeee._ + type T = GenericCons[Some, String, KNil.type] + val klist1: T = ??? + type T2 = klist1.Folded[Option, Int, HFold[Option, Int]] + val count2: T2 = ??? + + count2.ensuring(x => true).toChar // trigger an implicit search +} |