Skip to content

Better warning for matching values with flexible types in explicit nulls #21577

Closed
@noti0na1

Description

@noti0na1

The code is from discussion in Scala 3.5.0 unreachable case which was working with 3.4.2.

Compiler version

Since 3.5 (after the flexible type was introduced)

Minimized example

-Yexplicit-nulls

def f(s: String) =
  val s2 = s.trim()
  s2 match
    case s3: String => println(1)
    case _ => println(2)

Output Error/Warning message

-- [E030] Match case Unreachable Warning: Stest.scala:1026:7 -------------------
1026 |  case _ => println(2)
     |       ^
     |       Unreachable case
1 warning found

Why this Error/Warning was not helpful

Should produce a better warning similar to without explicit nulls:

-- [E121] Pattern Match Warning: Stest.scala:1026:7 ----------------------------
1026 |  case _ => println(2)
     |       ^
     |Unreachable case except for null (if this is intentional, consider writing case null => instead).
1 warning found

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:nullabilityarea:private optionsIssues tied to -Y private/internal compiler settings.area:reportingError reporting including formatting, implicit suggestions, etcbetter-errorsIssues concerned with improving confusing/unhelpful diagnostic messagesgood first issuePerfect for someone who wants to get started contributingitype:enhancement

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions