Skip to content

Commit

Permalink
Remove workarounds now that type promotion accounts for local boolean…
Browse files Browse the repository at this point in the history
… variables. (#23862)

This change removes workarounds that were introduced prior to landing
Dart language feature
dart-lang/language#1274, which allows type
promotion in null safe code to account for local boolean variables.
The workarounds ensured that the code would analyze the same
regardless of whether the feature was enabled, allowing for a smoother
transition.  Now that the feature has fully landed, the workarounds
aren't needed anymore.
  • Loading branch information
stereotype441 authored Jan 22, 2021
1 parent 31ef1dd commit 6dec57f
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 21 deletions.
12 changes: 1 addition & 11 deletions lib/web_ui/lib/src/engine/html/surface.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1092,17 +1092,7 @@ abstract class PersistedContainerSurface extends PersistedSurface {
for (int indexInOld = 0; indexInOld < oldChildCount; indexInOld += 1) {
final PersistedSurface? oldChild = oldChildren[indexInOld];
final bool childAlreadyClaimed = oldChild == null;
// After https://github.com/dart-lang/language/issues/1274 is
// implemented, `oldChild` will be promoted to non-nullable on the RHS
// of the `||`, 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 such a way that won't cause a build failure once the feature is
// implemented. We can do that by casting to `dynamic`, and then
// relying on the call to `canUpdateAsMatch` implicitly downcasting to
// PersistentSurface.
// TODO(paulberry): remove this workaround once the feature is
// implemented.
if (childAlreadyClaimed || !newChild.canUpdateAsMatch(oldChild as dynamic)) {
if (childAlreadyClaimed || !newChild.canUpdateAsMatch(oldChild)) {
continue;
}
allMatches.add(_PersistedSurfaceMatch(
Expand Down
10 changes: 0 additions & 10 deletions lib/web_ui/lib/src/engine/semantics/semantics.dart
Original file line number Diff line number Diff line change
Expand Up @@ -875,16 +875,6 @@ class SemanticsObject {
effectiveTransformIsIdentity = effectiveTransform.isIdentity();
}
} else if (!hasIdentityTransform) {
// After https://github.com/dart-lang/language/issues/1274 is implemented,
// `transform` 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 such 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 check once the feature is implemented.
if (transform == null) { // ignore: unnecessary_null_comparison
throw 'impossible';
}
effectiveTransform = Matrix4.fromFloat32List(transform);
effectiveTransformIsIdentity = false;
}
Expand Down

0 comments on commit 6dec57f

Please sign in to comment.