DeepSource has joined Harness. Learn more
Dart Analyze logoDart Analyze/
DRT-W1383

Functions marked 'sync*' must have a return type that is a supertype of 'Iterable<T>' for some type 'T'DRT-W1383

Major severityMajor
Bug Risk categoryBug Risk

The analyzer produces this diagnostic when the body of a function has the sync* modifier even though the return type of the function isn't either Iterable or a supertype of Iterable.

Example

The following code produces this diagnostic because the body of the function f has the 'sync*' modifier even though the return type int isn't a supertype of Iterable:

int f() sync* {}

Common fixes

If the function should return an iterable, then change the return type to be either Iterable or a supertype of Iterable:

Iterable<int> f() sync* {}

If the function should return a single value, then remove the sync* modifier:

int f() => 0;