3c16fdd3b0
This was broken after https://dart-review.googlesource.com/c/sdk/+/230948, the example would be ```dart class A { m() sync* { yield* [1]; } } ``` Inferred type for expression in `yield*` statement is `List<FutureOr<dynamic>>` after the above CL, while I'd expect it to be `List<int>`. The change modified the behaivor while passing the imposed return type a bit: `InferenceContext.setType` resets the type to `null` if it's `dynamic`, while the logic that passes the type down explicitly doesn't do that. My change restores the behavior of resetting the imposed type to `null` if it's `dynamic`. Interestingly enough, this is not a problem for function declarations: `FunctionExpressionResolver.resolve(FunctionExpressionImpl)` has special clause that resets the imposed type to null. But for reasons I don't understand `FunctionExpressionResolver` is used for function declarations but not for method declaration. Change-Id: I63cfde01f067c25442afed64843861d09c7474a1 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/231702 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Paul Berry <paulberry@google.com> Commit-Queue: Ilya Yanok <yanok@google.com>