Похоже, что в 2.13 синглтон-типы обрабатываются немного менее консервативно, чем в 2.12.
Ошибка
Error: type mismatch;
found : Int(1)
required: App.Hello.NumericCol[_]
existentialsOnly(1, "str")
означает, что в 2.13 не выводится, что 1
в existentialsOnly(1, "str")
имеет тип Int
(и, следовательно, NumericCol[Int]
из-за неявного преобразования), а не одиночный тип Int(1)
.
Если вы добавите подсказки
existentialsOnly(1: Int, "str": String)
скомпилируется в 2.13.
Аналогично вы можете заменить numericFromInt
и numericFromString
на
implicit def numericFrom[U, T <: U](s: T)(implicit evidence: QueryValue[U]): NumericCol[T] = new NumericCol[T] {}
или
implicit def numericFrom[T](s: T)(implicit evidence: QueryValue[_ >: T]): NumericCol[T] = new NumericCol[T] {}
в 2.12 и 2.13, но с
implicit def numericFrom[T](s: T)(implicit evidence: QueryValue[T]): NumericCol[T] = new NumericCol[T] {}
(без подсказок) только в 2.12.