I want to implement class, which describes action about setting some option value. I want to make option 's value type be depent of option type. I am trying to make this:
case class SetOptionMessage[T <: BaseOptionType](
option: T
value: Option[T#ValueType]
)
abstract class BaseOptionType {
type ValueType
}
object SomeBooleanOption extends BaseOptionType {
final type ValueType = Boolean
}
But when I am trying to use that classes like this:
val msg = SetOptionMessage(SomeBooleanOption, Some(true))
I got compilation error:
Error:(15, 43) type mismatch;
found : Some[Boolean]
required: Option[?#ValueType]
SetOptionMessage(SomeBooleanOption, Some(true))
^
How can I proper refer to nested type?