e680c98881
This passes the [StaticType] for the context of a pattern to the pattern converter. This is used to restrict the static type of the created space. For instance when creating the space for an untyped wildcard pattern, the context type will be used instead of the nullable-object (top) type. For other patterns, if the context type is a subtype of the type for the pattern itself, the context type will be used instead. This has the benefit that when checking for unreachable cases we will not take a too broad case to mean that it has some that it could match. For instance in `Foo(:var hashCode)` the space for `var hashCode` would have been the nullable-object type, and if the preceeding case was `Foo(:int hashCode)`, the reachable check would fail to see that all cases are covered since nullable-object is not a subtype of int. With this change, such cases are now handled. Change-Id: I5b6248bf79c8cf0b365eee2f3ca78090c3f43512 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/288902 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
FE/analyzer shared code
This package contains logic that is shared between the front_end and analyzer packages. It is intended solely to facilitate development of the Dart SDK, and is not intended for use by end users. In particular, this package has no public API, so no guarantee is made of compatibility between one version of the package and the next.
End users should consider using the analyzer package to analyze Dart source code.