Skip to content

Commit 05eec87

Browse files
committed
New test and drop println
1 parent 7ffa731 commit 05eec87

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

compiler/src/dotty/tools/dotc/typer/PrepareTransparent.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,6 @@ object PrepareTransparent {
318318
case tp: NamedType if tp.prefix.member(sym.name).isOverloaded =>
319319
// refer to prefix instead of to ident directly, so that overloading can be resolved
320320
// again at expansion site
321-
println(i"RECORD start for $tree")
322321
typeAtPos(tree.pos.startPos) = tp.prefix
323322
case _ =>
324323
typeAtPos(tree.pos.toSynthetic) = tree.tpe

tests/run/typelevel-vector1.scala

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
object typelevel {
2+
case class Typed[T](value: T) { type Type = T }
3+
erased def erasedValue[T]: T = ???
4+
}
5+
6+
trait Nat
7+
case object Z extends Nat
8+
case class S[N <: Nat](n: N) extends Nat
9+
10+
case class Vec[T, N <: Nat](elems: List[T])
11+
12+
object Test {
13+
import typelevel._
14+
type Z = Z.type
15+
16+
transparent def add(x: Nat, y: Nat): Nat = x match {
17+
case Z => y
18+
case S(x1) => S(add(x1, y))
19+
}
20+
21+
val x = S(S(Z))
22+
val y = add(x, x)
23+
val z: S[S[S[S[Z]]]] = y
24+
25+
transparent def concat[T, N1 <: Nat, N2 <: Nat](xs: Vec[T, N1], ys: Vec[T, N2]): Vec[T, _] = {
26+
val length = Typed(add(erasedValue[N1], erasedValue[N2]))
27+
Vec[T, length.Type](xs.elems ++ ys.elems)
28+
}
29+
}
30+

0 commit comments

Comments
 (0)