File tree Expand file tree Collapse file tree 2 files changed +46
-6
lines changed
src/reflect/scala/reflect/internal Expand file tree Collapse file tree 2 files changed +46
-6
lines changed Original file line number Diff line number Diff line change @@ -3592,12 +3592,6 @@ trait Types extends api.Types { self: SymbolTable =>
3592
3592
val pre1 = pre match {
3593
3593
case x : SuperType if sym1.isEffectivelyFinal || sym1.isDeferred =>
3594
3594
x.thistpe
3595
- case _ : CompoundType if sym1.isClass =>
3596
- // sharpen prefix so that it is maximal and still contains the class.
3597
- pre.parents.reverse dropWhile (_.member(sym1.name) != sym1) match {
3598
- case Nil => pre
3599
- case parent :: _ => parent
3600
- }
3601
3595
case _ => pre
3602
3596
}
3603
3597
if (pre eq pre1) TypeRef (pre, sym1, args)
Original file line number Diff line number Diff line change
1
+ import scala .language .reflectiveCalls
2
+
3
+ class A {
4
+ this_a =>
5
+
6
+ def b = new B
7
+ class B { def a : this_a.type = this_a }
8
+ }
9
+ trait A2 { def c = () }
10
+
11
+ object Test {
12
+ val v1 = new A { def c = () }
13
+ val v2 = new A with A2 { }
14
+ val v3 : A { def c : Unit } = null
15
+ def d1 = new A { def c = () }
16
+ def d2 = new A with A2 { }
17
+ def d3 : A { def c : Unit } = null
18
+ var x1 = new A { def c = () }
19
+ var x2 = new A with A2 { }
20
+ var x3 : A { def c : Unit } = null
21
+
22
+ def main (args : Array [String ]): Unit = {
23
+ val mv1 = new A { def c = () }
24
+ val mv2 = new A with A2 { }
25
+ val mv3 : A { def c : Unit } = null
26
+ def md1 = new A { def c = () }
27
+ def md2 = new A with A2 { }
28
+ def md3 : A { def c : Unit } = null
29
+
30
+ v1.b.a.c
31
+ v2.b.a.c
32
+ v3.b.a.c
33
+ d1.b.a.c
34
+ d2.b.a.c
35
+ d3.b.a.c
36
+ x1.b.a.c
37
+ x2.b.a.c
38
+ x3.b.a.c
39
+ mv1.b.a.c
40
+ mv2.b.a.c
41
+ mv3.b.a.c
42
+ md1.b.a.c
43
+ md2.b.a.c
44
+ md3.b.a.c
45
+ }
46
+ }
You can’t perform that action at this time.
0 commit comments