File tree 3 files changed +36
-1
lines changed
compiler/src/dotty/tools/dotc/transform/init
3 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -865,7 +865,7 @@ class Objects(using Context @constructorOnly):
865
865
Bottom
866
866
867
867
case Bottom =>
868
- if field.isStaticObject then ObjectRef (field.moduleClass.asClass)
868
+ if field.isStaticObject then accessObject (field.moduleClass.asClass)
869
869
else Bottom
870
870
871
871
case ValueSet (values) =>
Original file line number Diff line number Diff line change
1
+ package cyclicObject
2
+
3
+ object O1 { // warn
4
+ val o = cyclicObject.O2
5
+ }
6
+
7
+ object O2 {
8
+ val o = cyclicObject.O1
9
+ }
Original file line number Diff line number Diff line change
1
+ // example of cyclic initialization causing deadlock
2
+
3
+ package pkg
4
+
5
+ object Main extends App {
6
+ val createPredef = new Runnable { def run = { val _ = Predef } }
7
+ val createSeq = new Runnable { def run = { val _ = Seq } }
8
+ new Thread (createPredef).start()
9
+ new Thread (createSeq).start()
10
+ Thread .sleep(100 )
11
+ val seq = Predef .seq
12
+ val predef = Seq .predef
13
+ println(" done" )
14
+ }
15
+
16
+ object Predef { // warn
17
+ Thread .sleep(10 )
18
+ val seq = Seq
19
+ println(" done Predef" )
20
+ }
21
+
22
+ object Seq {
23
+ Thread .sleep(10 )
24
+ val predef = Predef
25
+ println(" done Seq" )
26
+ }
You can’t perform that action at this time.
0 commit comments