Defined empty trait Test:
trait Test
what used in compound type:
scala> val a : Int with Test = 10.asInstanceOf[Int with Test]
a: Int with Test = 10
and case class with parameter of compound type (like Unboxed Tagged Type):
scala> case class Foo(a: Int with Test)
error: type mismatch;
found : Double
required: AnyRef
Note: an implicit exists from scala.Double => java.lang.Double, but
methods inherited from Object are rendered ambiguous. This is to avoid
a blanket implicit which would convert any scala.Double to any AnyRef.
You may wish to use a type ascription: `x: java.lang.Double`.
But it is perfectly work for:
scala> case class Foo(a: List[Int] with Test)
defined class Foo
And no problem with method definition:
scala> def foo(a: Int with Test) = ???
foo: (a: Int with Test)Nothing
Scala version 2.10.3
Is it normal compiler behaviour?