8ba4a714a5
Scope.forEach iterates through the builder immediately mapped in the scope. For duplicate declarations, this means that it'll give direct access to the last defined declaration and not to the first defined declaration, which is inconsistent with how we generally handle duplications. It also doesn't skip builders that are not "owned" by the scope but merely accessible, which means that we easily have duplicate handling of patches and augmentations which are part of both the scope in which the were declared and the scope of the origin. To normalize the handle of scope, this CL removes Scope.forEach with iterators that explicit filter what subset of the builder that we want to have access to. This prepares for the more complex scope introduced by the augmentation libraries in which all scopes have access to all declarations from the origin library as well as other augmentation libraries. Change-Id: I88bdfb1068fbb4eb9dd6fa3881b86a61104e50e3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255240 Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>