8be535350d
This CL plumbs the types of `this` and property get expression from the CFE and analyzer into flow analysis, so that flow analysis will be able to create more accurate "why not promoted" information for those expression types. This made it possible to eliminate a clumsy aspect of the previous implementation, namely that we would consider a promotion attempt like `if (x.y == null) return;` as an attempt to promote the type of `x.y` to `Object`; now we compute the type the user is actually trying to promote to, so we will be able to generate more accurate "why not promoted" messages. Bug: https://github.com/dart-lang/sdk/issues/44898 Change-Id: I67f9fc59e72103194a1ea6b1c4dfeae8aeb194a2 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/187064 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Paul Berry <paulberry@google.com>