085e22dd72
Special sentinel values which are used for lazy initialization can be stored in variables of any type. In NNBD world Null is no longer a bottom type as null cannot be assigned into variables of non-nullable types. The new universal bottom type is Never, so type of sentinel values is changed from Null to Never. This also allows to make late fields non-nullable in the type propagation and avoid extra updates to field guards. This change also adds special handling of comparisons with sentinel values into constant propagation as it can constant fold comparisons of values with different cids. Fixes https://github.com/dart-lang/sdk/issues/40796 Change-Id: I8266cfba0cc434b78ffa9570c30d434d4380d4af Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143864 Reviewed-by: Liam Appelbe <liama@google.com> Reviewed-by: Ryan Macnak <rmacnak@google.com> Commit-Queue: Alexander Markov <alexmarkov@google.com>