Closed
Description
Compiler version
3.3.1
Minimized code
extension (sc: StringContext)
def m: StringContext = sc
def unapply(string: String): Option[String] =
val pattern = sc.parts.head
if (string.length == pattern.length) Some(string) else None
def parse(x: PartialFunction[String, String]) = x
val pf = parse {
case m"x$s" => s
case m"xx$s" => s
}
pf.applyOrElse("a", _ => ".") // "a"
pf.applyOrElse("ab", _ => ".") // "ab"
pf.applyOrElse("abc", _ => ".") // "."
Output
-- [E030] Match case Unreachable Warning: --------------------------------------
17 | case m"xx$s" => s
| ^^^^^^^
| Unreachable case
Expectation
No warning, as with compiler version 3.3.0
Notes
There is no regression (and no warning) here:
extension (sc: StringContext) def m: SC = SC(sc)
class SC(sc: StringContext):
def unapply(string: String): Option[String] =
val pattern = sc.parts.head
if (string.length == pattern.length) Some(string) else None
def parse(x: PartialFunction[String, String]) = x
val pf = parse {
case m"x$s" => s
case m"xx$s" => s
}
pf.applyOrElse("a", _ => ".") // "a"
pf.applyOrElse("ab", _ => ".") // "ab"
pf.applyOrElse("abc", _ => ".") // "."