Skip to content

Commit 10169b1

Browse files
committed
Add test for Tree | (Context => Tree)
1 parent 58f506b commit 10169b1

File tree

2 files changed

+40
-15
lines changed

2 files changed

+40
-15
lines changed

compiler/src/dotty/tools/dotc/core/Annotations.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ object Annotations {
8686
myTree.asInstanceOf[Tree]
8787

8888
override def isEvaluating: Boolean = myTree == null
89-
override def isEvaluated: Boolean = myTree.isInstanceOf[Tree]
89+
override def isEvaluated: Boolean = myTree.isInstanceOf[Tree @unchecked]
9090
}
9191

9292
/** An annotation indicating the body of a right-hand side,
@@ -119,7 +119,7 @@ object Annotations {
119119
myTree.asInstanceOf[Tree]
120120

121121
override def isEvaluating: Boolean = myTree == null
122-
override def isEvaluated: Boolean = myTree.isInstanceOf[Tree]
122+
override def isEvaluated: Boolean = myTree.isInstanceOf[Tree @unchecked]
123123
}
124124

125125
object LazyBodyAnnotation {
Lines changed: 38 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,38 @@
1-
trait Tree
2-
trait Context
3-
4-
def foo(myTree: Tree | (Context => Tree)) =
5-
println(myTree.isInstanceOf[Tree])
6-
myTree match
7-
case treeFn: (Context => Tree) => // error
8-
case _ =>
9-
10-
def bar(myTree: Tree | (Context => Tree)) =
11-
myTree match
12-
case treeFn: (_ => _) => // ok
13-
case _ =>
1+
object Test1 {
2+
trait Tree
3+
trait Context
4+
5+
def foo1(myTree: Tree | (Context => Tree)) =
6+
println(myTree.isInstanceOf[Tree])
7+
8+
def foo2(myTree: Tree | (Context => Tree)) =
9+
myTree match
10+
case treeFn: (Context => Tree) => // error
11+
case _ =>
12+
13+
def foo3(myTree: Tree | (Context => Tree)) =
14+
myTree match
15+
case treeFn: (_ => _) => // ok
16+
case _ =>
17+
}
18+
19+
object Test2 {
20+
trait Tree[-T]
21+
trait Context
22+
23+
trait Type
24+
25+
def foo1(myTree: Tree[Type] | (Context => Tree[Type])) =
26+
println(myTree.isInstanceOf[Tree[Type]]) // error
27+
/* class DummyTree extends Tree[Nothing] with (Context => Tree[Type]) */
28+
29+
def foo2(myTree: Tree[Type] | (Context => Tree[Type])) =
30+
myTree match
31+
case treeFn: (Context => Tree[Type]) => // error
32+
case _ =>
33+
34+
def foo3(myTree: Tree[Type] | (Context => Tree[Type])) =
35+
myTree match
36+
case treeFn: (_ => _) => // ok
37+
case _ =>
38+
}

0 commit comments

Comments
 (0)