The following code does not compile: ``` scala import scala.reflect.ClassTag import scala.util._ object Main { class A def constructAs[T <: A: ClassTag]: Try[T] = Try { new A() }.flatMap { case inst: T => Success(inst) case _ => val tag = implicitly[ClassTag[T]] Failure(new ClassCastException(s"Failed to construct instance of class ${tag.runtimeClass.getName}")) } } ``` Dotc gives the following error: ``` Main.scala:10: error: type mismatch: found : Main.A(inst) required: Nothing' case inst: T => Success(inst) ^ one error found ``` If I leave out the context bound, the code compiles fine. In Scala 2.11.8 it compiles too. Weirdly enough, if I leave out the explicit return type, it also compiles fine.