Index: dart/sdk/lib/_internal/compiler/implementation/enqueue.dart |
diff --git a/dart/sdk/lib/_internal/compiler/implementation/enqueue.dart b/dart/sdk/lib/_internal/compiler/implementation/enqueue.dart |
index 7397b2f3ea3e96396d712953df555cd66dbd7b8a..f60fd00fa70382d8b8a766c786c9d2690bbecfc2 100644 |
--- a/dart/sdk/lib/_internal/compiler/implementation/enqueue.dart |
+++ b/dart/sdk/lib/_internal/compiler/implementation/enqueue.dart |
@@ -231,9 +231,12 @@ abstract class Enqueuer { |
// Native fields need to go into instanceMembersByName as they |
// are virtual instantiation points and escape points. |
} else { |
- // The codegen inlines instance fields initialization, so it |
- // does not need to add individual fields in the work list. |
if (isResolutionQueue) { |
+ // All field initializers must be resolved as they could |
+ // have an observable side-effect (and cannot be tree-shaken |
+ // away). However, codegen inlines field initializers, so |
+ // it does not need to add individual fields in the work |
+ // list. |
addToWorkList(member); |
} |
return; |