162091bd92
If a parameter of a public method is accessed using null-aware access (`?.`), the migration tool now considers that to be an indication that the parameter should be nullable. Rationale: when migration doesn't have access to the entire code base, the migration tool's approach of propagating nullability forward through the program doesn't always work, because it's possible that the sources of nulls are not visible to the migration tool. This has often resulted in the migration tool marking a function parameter as non-nullable, in spite of the fact that the use of `?.` in the method body makes it clear that it's intended to be nullable. This new heuristic is only applied to public methods; for private methods there's no chance of there being callers outside of the code that's immediately visible to the migration tool, so the problem doesn't arise. For local functions and closures, the situation is less clear-cut, but of the examples I've looked through so far in Google's internal code base, it seems like more often than not, the better behavior is to continue erring on the side of non-nullability. Bug: https://github.com/dart-lang/sdk/issues/49601 Change-Id: I76531591ce0b3eb9fe62273130aa45eb4ff6d456 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/253864 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Samuel Rawlins <srawlins@google.com>