diff --git a/compiler/src/dotty/tools/dotc/core/ConstraintHandling.scala b/compiler/src/dotty/tools/dotc/core/ConstraintHandling.scala index bbfbbb7f7503..16453d357fad 100644 --- a/compiler/src/dotty/tools/dotc/core/ConstraintHandling.scala +++ b/compiler/src/dotty/tools/dotc/core/ConstraintHandling.scala @@ -413,7 +413,7 @@ trait ConstraintHandling[AbstractContext] { def pruneLambdaParams(tp: Type) = if (comparedTypeLambdas.nonEmpty) { val approx = new ApproximatingTypeMap { - if (fromBelow) variance = -1 + if (!fromBelow) variance = -1 def apply(t: Type): Type = t match { case t @ TypeParamRef(tl: TypeLambda, n) if comparedTypeLambdas contains tl => val bounds = tl.paramInfos(n) diff --git a/compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala b/compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala index 337ece1c59e3..956b3cf610d5 100644 --- a/compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala +++ b/compiler/src/dotty/tools/dotc/printing/RefinedPrinter.scala @@ -194,7 +194,7 @@ class RefinedPrinter(_ctx: Context) extends PlainPrinter(_ctx) { case OrType(tp1, tp2) => return toTextInfixType(tpnme.raw.BAR, tp1, tp2) { toText(tpnme.raw.BAR) } - case EtaExpansion(tycon) => + case EtaExpansion(tycon) if !ctx.settings.YprintDebug.value => return toText(tycon) case tp: RefinedType if defn.isFunctionType(tp) => return toTextDependentFunction(tp.refinedInfo.asInstanceOf[MethodType]) diff --git a/tests/run/implicit-functors.check b/tests/run/implicit-functors.check deleted file mode 100644 index d042012a9681..000000000000 --- a/tests/run/implicit-functors.check +++ /dev/null @@ -1,2 +0,0 @@ -functorId -funcorConst diff --git a/tests/run/implicit-functors.scala b/tests/run/implicit-functors.scala index d3570c7f2c72..7788b68c7e56 100644 --- a/tests/run/implicit-functors.scala +++ b/tests/run/implicit-functors.scala @@ -7,19 +7,19 @@ import Utils._ class Instances[F[_[_]], T[_]] -trait Functor[F[_]] +class Functor[F[_]](val kind: String) object Functor { - implicit val functorId: Functor[Id] = { println("functorId"); null } - implicit def functorGen[F[_]](implicit inst: Instances[Functor, F]): Functor[F] = { println("funcorGen"); null } - implicit def functorConst[T]: Functor[Const[T]] = { println("funcorConst"); null } + implicit val functorId: Functor[Id] = new Functor[Id]("id") + implicit def functorGen[F[_]](implicit inst: Instances[Functor, F]): Functor[F] = new Functor[F]("gen") + implicit def functorConst[T]: Functor[Const[T]] = new Functor[Const[T]]("const") } case class Sm[A](value: A) object Sm { - implicit def smInstances[F[_[_]]]: Instances[F, Sm] = { println("smInstances"); null } + implicit def smInstances[F[_[_]]]: Instances[F, Sm] = null } object Test extends App { - implicitly[Functor[Sm]] + assert(implicitly[Functor[Sm]].kind == "gen") } \ No newline at end of file