Skip to content

Commit a697514

Browse files
committed
Fix init error in test
Note: due to const-fold, the code does not misbehave at runtime. However, it's still good to report errors here, as in this case const-fold changes the semantics of programs, which is too subtle for end users. The field `elemSeparator` and `caseSeparator` are used before they are initialized. -- Error: tests/run/typeclass-derivation2a.scala:31:22 ------------------------- 31 | private final val elemSeparator = '\000' | ^ |Access non-initialized field value elemSeparator. Calling trace: | -> initLabels(0, 0, new mutable.ArrayBuffer[String], new mutable.ArrayBuffer[Array[String]]) [ typeclass-derivation2a.scala:29 ] | -> else if (labelsStr(cur) == elemSeparator) [ typeclass-derivation2a.scala:43 ] -- Error: tests/run/typeclass-derivation2a.scala:32:22 ------------------------- 32 | private final val caseSeparator = '\001' | ^ |Access non-initialized field value caseSeparator. Calling trace: | -> initLabels(0, 0, new mutable.ArrayBuffer[String], new mutable.ArrayBuffer[Array[String]]) [ typeclass-derivation2a.scala:29 ] | -> else if (labelsStr(cur) == caseSeparator) [ typeclass-derivation2a.scala:41 ] 2 errors found
1 parent 8904c96 commit a697514

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

tests/run/typeclass-derivation2a.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ object TypeLevel {
2525
def mirror(ordinal: Int): Mirror =
2626
mirror(ordinal, EmptyProduct)
2727

28-
val label: Array[Array[String]] =
29-
initLabels(0, 0, new mutable.ArrayBuffer[String], new mutable.ArrayBuffer[Array[String]])
30-
3128
private final val elemSeparator = '\000'
3229
private final val caseSeparator = '\001'
3330

31+
val label: Array[Array[String]] =
32+
initLabels(0, 0, new mutable.ArrayBuffer[String], new mutable.ArrayBuffer[Array[String]])
33+
3434
private def initLabels(start: Int, cur: Int,
3535
elems: mutable.ArrayBuffer[String],
3636
cases: mutable.ArrayBuffer[Array[String]]): Array[Array[String]] = {

0 commit comments

Comments
 (0)