File tree Expand file tree Collapse file tree 3 files changed +36
-1
lines changed
compiler/src/dotty/tools/dotc/transform/init Expand file tree Collapse file tree 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):
865865 Bottom
866866
867867 case Bottom =>
868- if field.isStaticObject then ObjectRef (field.moduleClass.asClass)
868+ if field.isStaticObject then accessObject (field.moduleClass.asClass)
869869 else Bottom
870870
871871 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