File tree Expand file tree Collapse file tree 3 files changed +66
-36
lines changed Expand file tree Collapse file tree 3 files changed +66
-36
lines changed Original file line number Diff line number Diff line change @@ -47,40 +47,4 @@ object overloaded {
4747 val t5 : Int = r5
4848 val r6 = combine((x : String , y) => x ++ y.toString)
4949 val t6 : String = r6
50-
51- // test result disambiguation
52- trait A
53- trait B
54- class C extends A with B
55- def fr (x : A ): A = x
56- def fr (x : B ): B = x
57- val a : A = fr(new C )
58- val b : B = fr(new C )
59- }
60-
61- // from #1381
62-
63- object Foo {
64- class Bar [T ]
65- implicit def const [T ](x : T ): Bar [T ] = ???
66-
67- def bar [T ](e : T ): Any = ???
68- def bar [T ](e : Bar [T ]): Any = ???
69-
70- val b : Bar [Int ] = ???
71- bar(b)
72- }
73-
74- object Test2 {
75- trait A ; trait B
76- class C1 {
77- def f (x : A ): Unit = println(" A" )
78- }
79- class C2 extends C1 {
80- def f (x : B ): Unit = println(" B" )
81- }
82- object Test extends C2 with App {
83- implicit def a2b (x : A ): B = new B {}
84- f(new A {})
85- }
8650}
Original file line number Diff line number Diff line change 1+ 4
2+ 3
3+ 2
4+ A
5+ B
6+ frA
7+ frB
Original file line number Diff line number Diff line change 1+ object Test {
2+ def main (args : Array [String ]): Unit = {
3+ Test1 .test()
4+ Test2 .test()
5+ Test3 .test()
6+ }
7+ }
8+
9+ object Test1 {
10+ class Bar [T ](n : Int ) {
11+ println(n)
12+ }
13+ implicit def const [T ](x : T ): Bar [T ] = new Bar [T ](1 )
14+
15+ def bar [T ](e : T ): Any = new Bar [T ](2 )
16+ def bar [T ](e : Bar [T ]): Any = new Bar [T ](3 )
17+
18+ val b : Bar [Int ] = new Bar [Int ](4 )
19+
20+ def test (): Unit = {
21+ bar(b)
22+ bar(5 )
23+ }
24+ }
25+
26+ object Test2 {
27+ trait A ; trait B
28+ class C1 {
29+ def f (x : A ): Unit = println(" A" )
30+ }
31+ class C2 extends C1 {
32+ def f (x : B ): Unit = println(" B" )
33+ }
34+ object Test extends C2 with App {
35+ implicit def a2b (x : A ): B = new B {}
36+ def test (): Unit = {
37+ f(new A {})
38+ f(new B {})
39+ }
40+ }
41+ def test (): Unit = Test .test()
42+ }
43+
44+ object Test3 {
45+ trait A ; trait B
46+ class C extends A with B
47+ def fr (x : A ): A = {
48+ println(" frA" )
49+ x
50+ }
51+ def fr (x : B ): B = {
52+ println(" frB" )
53+ x
54+ }
55+ def test (): Unit = {
56+ val a : A = fr(new C )
57+ val b : B = fr(new C )
58+ }
59+ }
You can’t perform that action at this time.
0 commit comments