diff --git a/.travis.yml b/.travis.yml index e9ba02ddc..99f30f060 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ jdk: scala: - 2.11.12 - - 2.12.11 + - 2.12.12 - 2.13.3 env: diff --git a/README.md b/README.md index 5b7499948..bb282f78d 100644 --- a/README.md +++ b/README.md @@ -165,7 +165,7 @@ releases][olderusage] on the shapeless wiki. ## Building shapeless shapeless is built with SBT 1.3.10 or later, and its master branch is built with Scala 2.13.2 by default but also -cross-builds for 2.11.12 and 2.12.11. +cross-builds for 2.11.12 and 2.12.12. [namehashing]: https://github.com/sbt/sbt/issues/1640 diff --git a/build.sbt b/build.sbt index 6960c87c9..531e464cb 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ import sbtcrossproject.CrossPlugin.autoImport.{CrossType, crossProject} import sbtcrossproject.CrossProject val Scala211 = "2.11.12" -val Scala212 = "2.12.11" +val Scala212 = "2.12.12" val Scala213 = "2.13.3" val isScalaNative = System.getenv("SCALA_NATIVE") != null diff --git a/core/src/main/scala/shapeless/generic.scala b/core/src/main/scala/shapeless/generic.scala index a4e47bb79..a6781b590 100644 --- a/core/src/main/scala/shapeless/generic.scala +++ b/core/src/main/scala/shapeless/generic.scala @@ -975,7 +975,7 @@ class GenericMacros(val c: whitebox.Context) extends CaseClassMacros { val (p, ts) = ctorDtor.binding val to = cq"$p => ${mkHListValue(ts)}.asInstanceOf[$repr]" val (rp, rts) = ctorDtor.reprBinding - val from = cq"$rp => ${ctorDtor.construct(rts)}" + val from = cq"$rp => ${ctorDtor.construct(rts)}.asInstanceOf[$tpe]" q"$generic.instance[$tpe, $repr]({ case $to }, { case $from })" } diff --git a/core/src/test/scala_2.13+/shapeless/LabelledGenericTests213.scala b/core/src/test/scala_2.13+/shapeless/LabelledGenericTests213.scala new file mode 100644 index 000000000..7fbe26965 --- /dev/null +++ b/core/src/test/scala_2.13+/shapeless/LabelledGenericTests213.scala @@ -0,0 +1,22 @@ +package shapeless + +import org.junit.Assert._ +import org.junit.Test +import shapeless.ops.record.Selector + +class LabelledGenericTests213 { + import LabelledGenericTests213._ + + @Test + def testSelectorWithHkt(): Unit = { + assertEquals(0, new Func[Hkt[Option]].select("foo")) + assertEquals(0, new Func[Hkt[Id]].select("foo")) + } +} + +object LabelledGenericTests213 { + case class Hkt[F[_]](foo: F[String]) + class Func[T] { + def select[R <: HList](k: Witness)(implicit gen: LabelledGeneric.Aux[T, R], selector: Selector[R, k.T]) = 0 + } +}