cd005ecdd4
This change addresses a corner case discovered during internal testing of the fix for https://github.com/dart-lang/language/issues/731 (improved inference for fold etc.): if there is no order dependency forcing us to do a round of horizontal inference between visiting non-closure arguments and closure arguments, then it's important that we *don't* do a round of horizontal inference before visiting the closure, because there is a risk of inferring too narrow a type. The new algorithm includes all the invocation arguments in dependency analysis, and the dependency rules are structured such that non-closure arguments always wind up in stage 1. If there is no dependency between non-closure arguments and closure arguments, then the closure arguments also wind up in stage 1, and no horizontal inference occurs. If there is a dependency, then closure arguments wind up in stage 2 or later, and horizontal inference occurs between stages. Change-Id: Ida0b28da211f63191c9c9c39e6004893617507bf Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/240442 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Samuel Rawlins <srawlins@google.com>
This directory contains tests of the language and core library implementations. For more information, see https://github.com/dart-lang/sdk/wiki/Testing.