From 8d4ce1da77bd6bf4a2311c9e30bd815a9aedae1b Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Mon, 28 May 2012 10:31:50 +0200 Subject: SI-5845 Advances the example from a crasher to an inference failure. The inference failure itself seems like an instance of of SI-3346. But dependent method types (which triggered the crash), can be employed to avoid inferring the type constructor CC. class Num[T] { def mkOps = new Ops class Ops { def +++(rhs: T) = () } } class A { implicit def infixOps[T](lhs: T)(implicit num: Num[T]): num.Ops = num.mkOps implicit val n1: Num[Int] = new Num[Int] { } 5 +++ 5 } --- src/compiler/scala/reflect/internal/Types.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/compiler/scala/reflect/internal/Types.scala b/src/compiler/scala/reflect/internal/Types.scala index cfc45695a7..67c858356c 100644 --- a/src/compiler/scala/reflect/internal/Types.scala +++ b/src/compiler/scala/reflect/internal/Types.scala @@ -4318,7 +4318,7 @@ trait Types extends api.Types { self: SymbolTable => def throwError = abort("" + tp + sym.locationString + " cannot be instantiated from " + pre.widen) val symclazz = sym.owner - if (symclazz == clazz && !pre.isInstanceOf[TypeVar] && (pre.widen.typeSymbol isNonBottomSubClass symclazz)) { + if (symclazz == clazz && !pre.widen.isInstanceOf[TypeVar] && (pre.widen.typeSymbol isNonBottomSubClass symclazz)) { // have to deconst because it may be a Class[T]. pre.baseType(symclazz).deconst match { case TypeRef(_, basesym, baseargs) => -- cgit v1.2.3