diff --git a/src/dotty/tools/dotc/typer/Inferencing.scala b/src/dotty/tools/dotc/typer/Inferencing.scala index 81a302717e30..f414d3bce112 100644 --- a/src/dotty/tools/dotc/typer/Inferencing.scala +++ b/src/dotty/tools/dotc/typer/Inferencing.scala @@ -82,7 +82,7 @@ object Inferencing { force.appliesTo(tvar) && { val direction = instDirection(tvar.origin) if (direction != 0) { - if (direction > 0) println(s"inst $tvar dir = up") + //if (direction > 0) println(s"inst $tvar dir = up") instantiate(tvar, direction < 0) } else { diff --git a/tests/pending/pos/contraImplicits.scala b/tests/pending/pos/contraImplicits.scala new file mode 100644 index 000000000000..c4d6596158b3 --- /dev/null +++ b/tests/pending/pos/contraImplicits.scala @@ -0,0 +1,18 @@ +import scala.reflect._ +// this needs to be fleshed out further +class Contra[-T] + +object Test { + def getParam[T](c: Contra[T])(implicit ct: ClassTag[T]): Unit = { + println(ct) + ct + } + def f[T](x: Contra[T]): Contra[T] = x + + def main(args: Array[String]): Unit = { + val x = f(new Contra[Int]) + val y: Contra[Int] = x + getParam(new Contra[Int]) + } +} + diff --git a/tests/pending/pos/depsel.scala b/tests/pending/pos/depsel.scala new file mode 100644 index 000000000000..2cec4349e18d --- /dev/null +++ b/tests/pending/pos/depsel.scala @@ -0,0 +1,14 @@ +// demonstrates selection on non-path types. Needs to be fleshed out to +// become a real test. +object Test { + + class C { + type T + val f: T => T = ??? + } + + var x = new C + val y = x.f + + +} diff --git a/tests/pending/run/ordered.scala b/tests/pending/run/ordered.scala new file mode 100644 index 000000000000..ffcdc624b413 --- /dev/null +++ b/tests/pending/run/ordered.scala @@ -0,0 +1,22 @@ +// infers wrong instance --> an implementatioin is missing +trait Ord[-T] { + def less(x: T, y: T): Boolean +} + +object Test { + + implicit val anyIsOrd: Ord[Any] = new Ord[Any] { + def less(x: Any, y: Any): Boolean = ??? + } + + implicit val intIsOrd: Ord[Int] = new Ord[Int] { + def less(x: Int, y: Int): Boolean = x < y + } + + def less[T: Ord](x: T, y: T): Boolean = + implicitly[Ord[T]].less(x, y) + + def main(args: Array[String]) = + assert(less(1, 2)) + +} diff --git a/tests/pos/finalvals.scala b/tests/pos/finalvals.scala new file mode 100644 index 000000000000..03a992053e55 --- /dev/null +++ b/tests/pos/finalvals.scala @@ -0,0 +1,8 @@ +object Test { + final val x = 2 + final val y = { println("x"); 2 } + val x1 = x + val y1 = y + object O { val x = 42 } + println(O.x) +} diff --git a/tests/pos/freezeBounds.scala b/tests/pos/freezeBounds.scala new file mode 100644 index 000000000000..6cc644d99a63 --- /dev/null +++ b/tests/pos/freezeBounds.scala @@ -0,0 +1,6 @@ +object Test { + + def f[X]: (Set[X], Set[X]) = ??? + + val a = if (true) f else (Set[Int](), Set[String]()) +} diff --git a/tests/pos/inf.scala b/tests/pos/inf.scala new file mode 100644 index 000000000000..71bb38f57ed1 --- /dev/null +++ b/tests/pos/inf.scala @@ -0,0 +1,28 @@ +object Test { + + def f[T](x: T, y: T): T = x + def g[T](x: T)(y: T): T = x + + val x: Int = 1 + val y: Long = x + + val xs: Seq[Int] = Seq(1) + val ys: Traversable[Int] = xs + + val r1 = f(x, y) + val s1: AnyVal = r1 + val r2 = f(y, x) + val s2: AnyVal = r2 + val r3 = f(xs, ys) + val s3: Traversable[Int] = r3 + val r4 = f(ys, xs) + val s4: Traversable[Int] = r4 + val r5 = g(x)(y) + val s5: AnyVal = r5 + val r6 = g(y)(x) + val s6: AnyVal = r6 + val r7 = g(xs)(ys) + val s7: Traversable[Int]= r7 + val r8 = g(ys)(xs) + val s8: Traversable[Int] = r8 +} diff --git a/tests/pos/sets.scala b/tests/pos/sets.scala new file mode 100644 index 000000000000..577d709f583b --- /dev/null +++ b/tests/pos/sets.scala @@ -0,0 +1,11 @@ +object Test { + + val subPatBinders = List[Symbol]() + + def extraStoredBinders: Set[Symbol] = ??? + + val storedBinders: Set[Symbol] = + (if (true) subPatBinders.toSet else Set.empty) ++ extraStoredBinders// -- ignoredSubPatBinders + + +} diff --git a/tests/run/i806.scala b/tests/run/i806.scala new file mode 100644 index 000000000000..8890850225ce --- /dev/null +++ b/tests/run/i806.scala @@ -0,0 +1,10 @@ +trait T{ + def foo(a: List[String]): String = "1" + def foo(a: List[Int]): Int = 1 + foo(List("1")) + foo(List(1)) +} +// to be compiled by dotty +object Test extends T{ + def main(args: Array[String]): Unit = () +} diff --git a/tests/run/puzzle.check b/tests/run/puzzle.check new file mode 100644 index 000000000000..fc788f21108c --- /dev/null +++ b/tests/run/puzzle.check @@ -0,0 +1,2 @@ +53.0 +53.0 diff --git a/tests/run/puzzle.scala b/tests/run/puzzle.scala new file mode 100644 index 000000000000..2f3052cb577e --- /dev/null +++ b/tests/run/puzzle.scala @@ -0,0 +1,11 @@ +object Test { + + def main(args: Array[String]): Unit = { + println(if (false) 5.0 else '5') + val x = if (false) 5.0 else '5' + println(x) + val z = 1L + val y: Float = z + } + +}