1b6f89d284
TFA tree shaker removes initializers of fields which cannot be accessed but retained due to an entry point pragma / dynamic interface. For late final fields with initializers that changes semantics as late final fields without initializers have an implicit setter. Such setter is not accounted in the kernel AST (Field.setterReference == null and Field.hasSetter == false) and it doesn't get an assigned selector id, which causes a crash in dispatch table generator. The change fixes this bug by retaining initializers for late final fields. The initializer code is still replaced with throw "Attempt to execute code removed by Dart AOT compiler (TFA)". TEST=pkg/vm/testcases/transformations/type_flow/transformer/regress_b404559785.dart Bug: b/404559785 Change-Id: Id998a715ea75a4768414997ce66bcdd1d4f19189 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/416720 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Slava Egorov <vegorov@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com>