Unverified Commit 9ec1601c authored by Paul Berry's avatar Paul Berry Committed by GitHub

Fix flutter in preparation for implementing Dart's "Infer non-nullability from...

Fix flutter in preparation for implementing Dart's "Infer non-nullability from local boolean variables" (#72494)

When https://github.com/dart-lang/language/issues/1274 (Infer
non-nullability from local boolean variables) is implemented, flow
analysis will detect that code like this no longer needs to perform a
null check:

    final bool contextIsValid = focus != null && focus.context != null;
    ...
    if (contextIsValid) {
      ... focus! ... // Null check unnecessary
    }

To avoid a build failure due to the unnecessary null check, we need to
temporarily write it in a way that we can ignore it.  Once the feature
is complete and rolled into flutter, I'll remove the null check
entirely.
parent 6bb58221
......@@ -118,8 +118,6 @@ class ImageConfiguration {
result.write('ImageConfiguration(');
bool hasArguments = false;
if (bundle != null) {
if (hasArguments)
result.write(', ');
result.write('bundle: $bundle');
hasArguments = true;
}
......
......@@ -983,7 +983,17 @@ class ScrollAction extends Action<ScrollIntent> {
final bool contextIsValid = focus != null && focus.context != null;
if (contextIsValid) {
// Check for primary scrollable within the current context
if (Scrollable.of(focus!.context!) != null)
// After https://github.com/dart-lang/language/issues/1274 is implemented,
// `focus` will be promoted to non-nullable so we won't need to null check
// it (and it will cause a build failure to try to do so). Until then, we
// need to null check it in a way that won't cause a build failure once
// the feature is implemented. We can do that using an explicit "if"
// test.
// TODO(paulberry): remove this hack once the feature is implemented.
if (focus == null) { // ignore: dead_code
throw 'This throw is unreachable';
}
if (Scrollable.of(focus.context!) != null)
return true;
// Check for fallback scrollable with context from PrimaryScrollController
if (PrimaryScrollController.of(focus.context!) != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment