4474e81545
When a field gets never read TFA may remove the field entirely. The initializer of the field may still need to be executed as it may have side-effects. The initializer is then moved to a `LocalInitializer` with a unused variable. Currently this variable is typed `dynamic` but could be strenghtened to be the type of the field, which this CL does. The usage of `dynamic` can have problems for some backends that have types that aren't part of the Dart object hierarchy (e.g. a `WasmArray`). Those types cannot flow into top types as they are not real Dart objects. By typing the `LocalInitializer` variable the same as the field type, we avoid assigning such foreign, no-Dart objects to variables of Dart top-type. TEST=pkg/vm/testcases/transformations/type_flow/transformer/write_only_field.dart.expect Change-Id: Idd4bf944afad83ceb1850f478e7a9d9cd47bf00d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/415201 Commit-Queue: Martin Kustermann <kustermann@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com>