eec56c088e
When an `is` test is trivially satisfied (i.e. `expr is T`, when the static type of `expr` is a subtype of `T`), the `is` test is guaranteed by soundness to evaluate to `true`, so any code path that follows from the `is` test evaluating to `false` is unreachable. This reasoning wasn't valid prior to sound null safety, because in mixed mode programs, it was possible for an expression to evaluate to `null` even if its static type wasn't nullable, and hence `expr is T` might evaluate to `false` even if the static type of `expr` was a subtype of `T`. So this change is gated on the `sound-flow-analysis` language flag (which is enabled in Dart 3.9). Fixes https://github.com/dart-lang/sdk/issues/60718. Change-Id: I66a65580b738162f23b6fb468b71fcac66bfbb95 Bug: https://github.com/dart-lang/sdk/issues/60718 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/431740 Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>