Open
Description
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.