12a32f4359
This change updates the logic in the flow analysis method `promoteForPattern`, so that when the language feature `sound-flow-analysis` is enabled, the following additional behaviors are added: - If the matched value type is non-nullable, and the pattern implicitly performs an `is Null` test, then the pattern is known not to match. - If the matched value type is `Null`, and the pattern implicitly performs an `is T` test, where `T` is a non-nullable type, then the pattern is known not to match. Note that this reasoning step is sound regardless of whether the program is running with sound null safety enabled, but since it is a new reasoning step, it only takes place if the `sound-flow-analysis` feature is enabled. There is no behavioral change if the feature `sound-flow-analysis` is disabled. Bug: https://github.com/dart-lang/sdk/issues/60438 Change-Id: I5a6e8def050c95b6c1ad01d37584d17a0cd590c8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/421900 Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>