Skip to content

Commit 0d4dcd0

Browse files
committed
Test case for #3920
1 parent 9067e86 commit 0d4dcd0

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

tests/pos/i3920.scala

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
2+
trait Ordering {
3+
type T
4+
def compare(t1:T, t2: T): Int
5+
}
6+
7+
class SetFunctor(tracked val ord: Ordering) {
8+
type Set = List[ord.T]
9+
def empty: Set = Nil
10+
11+
implicit class helper(s: Set) {
12+
def add(x: ord.T): Set = x :: remove(x)
13+
def remove(x: ord.T): Set = s.filter(e => ord.compare(x, e) != 0)
14+
def member(x: ord.T): Boolean = s.exists(e => ord.compare(x, e) == 0)
15+
}
16+
}
17+
18+
object Test {
19+
val orderInt = new Ordering {
20+
type T = Int
21+
def compare(t1: T, t2: T): Int = t1 - t2
22+
}
23+
24+
val IntSet = new SetFunctor(orderInt)
25+
import IntSet._
26+
27+
def main(args: Array[String]) = {
28+
val set = IntSet.empty.add(6).add(8).add(23)
29+
assert(!set.member(7))
30+
assert(set.member(8))
31+
}
32+
}

0 commit comments

Comments
 (0)