Skip to main content

type_literal_in_constant_pattern

Use 'TypeName _' instead of a type literal.

Description

#

The analyzer produces this diagnostic when a type literal appears as a pattern.

Example

#

The following code produces this diagnostic because a type literal is used as a constant pattern:

dart
void f(Object? x) {
  if (x case num) {
    // ...
  }
}

Common fixes

#

If the type literal is intended to match an object of the given type, then use either a variable pattern:

dart
void f(Object? x) {
  if (x case num _) {
    // ...
  }
}

Or an object pattern:

dart
void f(Object? x) {
  if (x case num()) {
    // ...
  }
}

If the type literal is intended to match the type literal, then write it as a constant pattern:

dart
void f(Object? x) {
  if (x case const (num)) {
    // ...
  }
}