515d4bd7ad
Currently does not work for function and generic function types. Type object equality ignores legacy modifiers but preserves other nullability semantics. This scheme constructs the runtime type object (normalized) at runtime, caching it if necessary. This avoids the space overhead of emitting canonicalized normalized types at compile-time but incurs a cost when runtimeType is called for the first time per recursive subtype. See: https://github.com/dart-lang/language/blob/master/accepted/future-releases/nnbd/feature-specification.md#runtime-semantics Change-Id: I76d714c5e618d77f334d90862bb7d3c9b0b8d305 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/130727 Reviewed-by: Nicholas Shahan <nshahan@google.com> Commit-Queue: Mark Zhou <markzipan@google.com>