Skip to content

prefer_void_to_null false positive in case of nullable generics #58959

Open
@maRci002

Description

@maRci002

Describe the issue

abstract class Data {}

abstract class DataHolder<T extends Data?> {
  const DataHolder({required this.data});

  final T? data;

  bool isNullable() => null is T;
}

class FooData extends Data {}

class FooHolder extends DataHolder<FooData> {
  FooHolder({required super.data});
}

// prefer_void_to_null: Don't use the Null type, unless you are positive that you don't want void.
class ExplicitNullHolder extends DataHolder<Null> {
  ExplicitNullHolder() : super(data: null);
}

class ImplicitNullHolder extends DataHolder {
  ImplicitNullHolder() : super(data: null);
}

void main() {
  print(FooHolder(data: FooData()).isNullable()); // false
  print(ExplicitNullHolder().isNullable()); // true
  print(ImplicitNullHolder().isNullable()); // true
}

Expected behavior
Using explicit Null shouldn't trigger prefer_void_to_null lint rule.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2A bug or feature request we're likely to work onarea-devexpFor issues related to the analysis server, IDE support, linter, `dart fix`, and diagnostic messages.devexp-linterIssues with the analyzer's support for the linter packagelinter-false-positivelinter-set-recommendedtype-bugIncorrect behavior (everything from a crash to more subtle misbehavior)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions