0eac43bf6f
This allows more complicated field initializers that are written using
immediately invoked closures, like
@pragma("vm:platform-const")
final bool foo = () {
... do some stuff ...
}();
to be properly evaluated by the VM constant evaluator.
Also throws errors at compile time if the annotated member cannot be
evaluated to a constant or if an invalid member (not an
initialized static field or a static getter) is annotated.
TEST=pkg/vm/test/transformations/vm_constant_evaluator_test
Issue: https://github.com/dart-lang/sdk/issues/31969
Issue: https://github.com/dart-lang/sdk/issues/50473
Issue: https://github.com/flutter/flutter/issues/14233
Change-Id: I14be498bb5f7771f0f339baf7d3b1bec7df5903f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/348380
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Tess Strickland <sstrickl@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>