Skip to content

Commit e92668c

Browse files
committed
Merge pull request #835 from dotty-staging/add-more-tests
Add more tests
2 parents 6b7c51c + b8c8718 commit e92668c

File tree

11 files changed

+131
-1
lines changed

11 files changed

+131
-1
lines changed

src/dotty/tools/dotc/typer/Inferencing.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ object Inferencing {
8282
force.appliesTo(tvar) && {
8383
val direction = instDirection(tvar.origin)
8484
if (direction != 0) {
85-
if (direction > 0) println(s"inst $tvar dir = up")
85+
//if (direction > 0) println(s"inst $tvar dir = up")
8686
instantiate(tvar, direction < 0)
8787
}
8888
else {
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import scala.reflect._
2+
// this needs to be fleshed out further
3+
class Contra[-T]
4+
5+
object Test {
6+
def getParam[T](c: Contra[T])(implicit ct: ClassTag[T]): Unit = {
7+
println(ct)
8+
ct
9+
}
10+
def f[T](x: Contra[T]): Contra[T] = x
11+
12+
def main(args: Array[String]): Unit = {
13+
val x = f(new Contra[Int])
14+
val y: Contra[Int] = x
15+
getParam(new Contra[Int])
16+
}
17+
}
18+

tests/pending/pos/depsel.scala

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// demonstrates selection on non-path types. Needs to be fleshed out to
2+
// become a real test.
3+
object Test {
4+
5+
class C {
6+
type T
7+
val f: T => T = ???
8+
}
9+
10+
var x = new C
11+
val y = x.f
12+
13+
14+
}

tests/pending/run/ordered.scala

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// infers wrong instance --> an implementatioin is missing
2+
trait Ord[-T] {
3+
def less(x: T, y: T): Boolean
4+
}
5+
6+
object Test {
7+
8+
implicit val anyIsOrd: Ord[Any] = new Ord[Any] {
9+
def less(x: Any, y: Any): Boolean = ???
10+
}
11+
12+
implicit val intIsOrd: Ord[Int] = new Ord[Int] {
13+
def less(x: Int, y: Int): Boolean = x < y
14+
}
15+
16+
def less[T: Ord](x: T, y: T): Boolean =
17+
implicitly[Ord[T]].less(x, y)
18+
19+
def main(args: Array[String]) =
20+
assert(less(1, 2))
21+
22+
}

tests/pos/finalvals.scala

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
object Test {
2+
final val x = 2
3+
final val y = { println("x"); 2 }
4+
val x1 = x
5+
val y1 = y
6+
object O { val x = 42 }
7+
println(O.x)
8+
}

tests/pos/freezeBounds.scala

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
object Test {
2+
3+
def f[X]: (Set[X], Set[X]) = ???
4+
5+
val a = if (true) f else (Set[Int](), Set[String]())
6+
}

tests/pos/inf.scala

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
object Test {
2+
3+
def f[T](x: T, y: T): T = x
4+
def g[T](x: T)(y: T): T = x
5+
6+
val x: Int = 1
7+
val y: Long = x
8+
9+
val xs: Seq[Int] = Seq(1)
10+
val ys: Traversable[Int] = xs
11+
12+
val r1 = f(x, y)
13+
val s1: AnyVal = r1
14+
val r2 = f(y, x)
15+
val s2: AnyVal = r2
16+
val r3 = f(xs, ys)
17+
val s3: Traversable[Int] = r3
18+
val r4 = f(ys, xs)
19+
val s4: Traversable[Int] = r4
20+
val r5 = g(x)(y)
21+
val s5: AnyVal = r5
22+
val r6 = g(y)(x)
23+
val s6: AnyVal = r6
24+
val r7 = g(xs)(ys)
25+
val s7: Traversable[Int]= r7
26+
val r8 = g(ys)(xs)
27+
val s8: Traversable[Int] = r8
28+
}

tests/pos/sets.scala

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
object Test {
2+
3+
val subPatBinders = List[Symbol]()
4+
5+
def extraStoredBinders: Set[Symbol] = ???
6+
7+
val storedBinders: Set[Symbol] =
8+
(if (true) subPatBinders.toSet else Set.empty) ++ extraStoredBinders// -- ignoredSubPatBinders
9+
10+
11+
}

tests/run/i806.scala

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
trait T{
2+
def foo(a: List[String]): String = "1"
3+
def foo(a: List[Int]): Int = 1
4+
foo(List("1"))
5+
foo(List(1))
6+
}
7+
// to be compiled by dotty
8+
object Test extends T{
9+
def main(args: Array[String]): Unit = ()
10+
}

tests/run/puzzle.check

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
53.0
2+
53.0

tests/run/puzzle.scala

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
object Test {
2+
3+
def main(args: Array[String]): Unit = {
4+
println(if (false) 5.0 else '5')
5+
val x = if (false) 5.0 else '5'
6+
println(x)
7+
val z = 1L
8+
val y: Float = z
9+
}
10+
11+
}

0 commit comments

Comments
 (0)