Skip to content

Commit 0a08460

Browse files
authored
Merge pull request #1242 from joroKr21/witness-refinement-backport
Remove refinement from Witness.value
2 parents 833a6a4 + 8456f37 commit 0a08460

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package shapeless
2+
3+
import org.junit.Assert._
4+
import org.junit.Test
5+
6+
import scala.reflect.runtime.universe.WeakTypeTag
7+
8+
class WitnessJvmTests {
9+
10+
@Test
11+
def testRuntimeReflection: Unit = {
12+
val w1: Witness.Lt[Int] = Witness(1)
13+
val v1 = w1.value
14+
def infer[T](v: T)(implicit ev: WeakTypeTag[T]): WeakTypeTag[T] = ev
15+
val tag = infer(v1)
16+
assertEquals(tag.tpe.toString, "w1.T")
17+
}
18+
}

core/src/main/scala/shapeless/singletons.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import scala.util.Try
3131
*/
3232
trait Witness extends Serializable {
3333
type T
34-
val value: T {}
34+
val value: T
3535
}
3636

3737
object Witness extends Dynamic {

core/src/test/scala/shapeless/singletons.scala

+9
Original file line numberDiff line numberDiff line change
@@ -589,6 +589,15 @@ class SingletonTypesTests {
589589
assertTypedEquals[ObjectThis.type](ObjectThis.w1.value, ObjectThis.w2.value)
590590
}
591591

592+
@Test
593+
def testTypeInference: Unit = {
594+
val singletonW = Witness(3)
595+
def s3[T](v: T)(implicit ev: Witness.Aux[T]) = v
596+
val v = singletonW.value
597+
val s = s3(v)
598+
assertEquals(s, v)
599+
}
600+
592601
class NestingBug {
593602
val o: AnyRef = new Object {}
594603

0 commit comments

Comments
 (0)