Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions tests/init-global/warn/Color.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
enum Color:
case None, White, Black

enum Player:
case Black, White

// Explanation: See the desugaring below
val color: Color =
if this == Player.Black // warn
then Color.Black
else Color.White

// From the desugaring of Player, we can see the field `Player.Black` is not yet
// initialized during evaluation of the first `new Player`:
//
// class Player:
// val color: Color =
// if this == Player.Black ...
//
// object Player:
// val Black: Player = new Player // <--- problem
// val White: Player = new Player
//
//
// The complex desugaring makes it difficult to see the initialization
// semantics and it is prone to make such hard-to-spot mistakes.
//
// Note: The desugaring above is simplified for presentation.
Loading