Skip to content

Commit 91727fd

Browse files
authored
Merge pull request #12293 from dotty-staging/enum/remove-unchecked
remove unchecked annotation from enum $values array
2 parents 96d02e8 + b210369 commit 91727fd

File tree

1 file changed

+2
-10
lines changed

1 file changed

+2
-10
lines changed

compiler/src/dotty/tools/dotc/ast/DesugarEnums.scala

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ object DesugarEnums {
104104

105105
/** The following lists of definitions for an enum type E and known value cases e_0, ..., e_n:
106106
*
107-
* private val $values = Array[E](this.e_0,...,this.e_n)(ClassTag[E](classOf[E])): @unchecked
107+
* private val $values = Array[E](this.e_0,...,this.e_n)(ClassTag[E](classOf[E]))
108108
* def values = $values.clone
109109
* def valueOf($name: String) = $name match {
110110
* case "e_0" => this.e_0
@@ -118,15 +118,7 @@ object DesugarEnums {
118118
extension (tpe: NamedType) def ofRawEnum = AppliedTypeTree(ref(tpe), rawEnumClassRef)
119119

120120
val privateValuesDef =
121-
val uncheckedValues =
122-
// Here we use an unchecked annotation to silence warnings from the init checker. Without it, we get a warning
123-
// that simple enum cases are promoting this from warm to initialised. This is because we are populating the
124-
// array by selecting enum values from `this`, a value under construction.
125-
// Singleton enum values always construct a new anonymous class, which will not be checked by the init-checker,
126-
// so this warning will always persist even if the implementation of the anonymous class is safe.
127-
// TODO: remove @unchecked after https://github.com/lampepfl/dotty-feature-requests/issues/135 is resolved.
128-
Annotated(ArrayLiteral(enumValues, rawEnumClassRef), New(ref(defn.UncheckedAnnot.typeRef), Nil))
129-
ValDef(nme.DOLLAR_VALUES, TypeTree(), uncheckedValues)
121+
ValDef(nme.DOLLAR_VALUES, TypeTree(), ArrayLiteral(enumValues, rawEnumClassRef))
130122
.withFlags(Private | Synthetic)
131123

132124
val valuesDef =

0 commit comments

Comments
 (0)