b083c9ac87
When const constructor is exposed through a dynamic interface, dynamic module can create constants with that const constructor and it can reference everything used in that constructor including default values of parameters and field initializers. So dynamic interface annotator should visit bodies of const constructors and add all references to implicit uses. Annotator should also visit initializers of instance fields of classes which can be used in a constant (as they participate in the constant evaluation too). Kernel trim tool should not remove such field initializers. TEST=pkg/dynamic_modules/test/data/const_constructor Fixes b/418928636 Change-Id: Ie216f3a4257fe5a905b83af8c60dfe8a5b774ecf Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/430002 Commit-Queue: Alexander Markov <alexmarkov@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com> Reviewed-by: Slava Egorov <vegorov@google.com>