跳转至主要内容

illegal_sync_generator_return_type

Functions marked 'sync*' must have a return type that is a supertype of 'Iterable' for some type 'T'.

Description

#

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:

dart
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:

dart
Iterable<int> f() sync* {}

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

dart
int f() => 0;