It is the compiler telling you something. If you have an expression like
val foo = Some(List(1, 2, 3)) -> None
It will have the type (Some[List[Int]], None.type), which you can easily see from typing in the expression in the scala console
scala> val foo = Some(List(1, 2, 3)) -> None
foo: (Some[List[Int]], None.type) = (Some(List(1, 2, 3)),None)
So you know at compile time that the second element of the tuple can only ever be None, a match with Some can never succeed. Hence the error message.
If you give foo a less restrictive type it will work.
val foo : (Option[List[Int]], Option[String]) = Some(List(1, 2, 3) -> None
Note that this is exactly as it should be. Matching on something that can never happen is almost definitely an error. You have to upcast to any to avoid the compile time error (but then you will get a runtime error.