Skip to content

Commit

Permalink
Add a test for global init checker (#21694)
Browse files Browse the repository at this point in the history
Add a test for global init checker
  • Loading branch information
olhotak authored Oct 5, 2024
2 parents ebbd685 + ca7553e commit f6c6ec6
Showing 1 changed file with 28 additions and 0 deletions.
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.

0 comments on commit f6c6ec6

Please sign in to comment.