From b8a26a5d69c9169e7876ef24ecf0d2f553323ae7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Doeraene?= Date: Mon, 27 Nov 2023 10:52:45 +0100 Subject: [PATCH] Make the source compile with SIP-56 match types, for Scala 3.4. Refine the definition of `EnumerationUtil.Aux` to make it comply with the legal match types of SIP-56. Although weird, it is the "standard" trick for extracting enumeration Value's uner SIP-56. Refine the result type of `EnumerationReader.findEnumValue` to be path-dependent instead of using the match type. It is strictly more precise. --- src/main/scala-3/net/ceedubs/ficus/util/EnumerationUtil.scala | 2 +- .../ficus/readers/CaseInsensitiveEnumerationReader.scala | 2 +- .../scala/net/ceedubs/ficus/readers/EnumerationReader.scala | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/scala-3/net/ceedubs/ficus/util/EnumerationUtil.scala b/src/main/scala-3/net/ceedubs/ficus/util/EnumerationUtil.scala index 0ae472f..797f72a 100644 --- a/src/main/scala-3/net/ceedubs/ficus/util/EnumerationUtil.scala +++ b/src/main/scala-3/net/ceedubs/ficus/util/EnumerationUtil.scala @@ -1,7 +1,7 @@ package net.ceedubs.ficus.util private[ficus] object EnumerationUtil { - private[this] type Aux[A] = { type Value = A } + private[this] type Aux[A] = { type Value } { type Value = A } type EnumValue[A <: Enumeration] = A match { case Aux[a] => a diff --git a/src/main/scala/net/ceedubs/ficus/readers/CaseInsensitiveEnumerationReader.scala b/src/main/scala/net/ceedubs/ficus/readers/CaseInsensitiveEnumerationReader.scala index 1a0ceae..4822aff 100644 --- a/src/main/scala/net/ceedubs/ficus/readers/CaseInsensitiveEnumerationReader.scala +++ b/src/main/scala/net/ceedubs/ficus/readers/CaseInsensitiveEnumerationReader.scala @@ -4,6 +4,6 @@ import net.ceedubs.ficus.util.EnumerationUtil.EnumValue trait CaseInsensitiveEnumerationReader extends EnumerationReader { - override protected def findEnumValue[T <: Enumeration](`enum`: T, configValue: String): Option[EnumValue[T]] = + override protected def findEnumValue[T <: Enumeration](`enum`: T, configValue: String): Option[`enum`.Value] = `enum`.values.find(_.toString.toLowerCase == configValue.toLowerCase) } diff --git a/src/main/scala/net/ceedubs/ficus/readers/EnumerationReader.scala b/src/main/scala/net/ceedubs/ficus/readers/EnumerationReader.scala index 1ae8a28..c6d7532 100644 --- a/src/main/scala/net/ceedubs/ficus/readers/EnumerationReader.scala +++ b/src/main/scala/net/ceedubs/ficus/readers/EnumerationReader.scala @@ -35,7 +35,7 @@ trait EnumerationReader { } } - protected def findEnumValue[T <: Enumeration](`enum`: T, configValue: String): Option[EnumValue[T]] = + protected def findEnumValue[T <: Enumeration](`enum`: T, configValue: String): Option[`enum`.Value] = `enum`.values.find(_.toString == configValue) }