| // Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| finalLocalBool(int? x) { |
| final bool b = x == null; |
| if (!b) { |
| /*nonNullable*/ x; |
| } else { |
| x; |
| } |
| } |
| |
| localBool(int? x) { |
| bool b = x == null; |
| if (!b) { |
| /*nonNullable*/ x; |
| } else { |
| x; |
| } |
| } |
| |
| localBool_assigned(int? x, bool b1) { |
| bool b2 = b1; |
| b2 = x == null; |
| if (!b2) { |
| /*nonNullable*/ x; |
| } else { |
| x; |
| } |
| } |
| |
| localBool_assignedDynamic(int? x, bool b1) { |
| dynamic b2 = b1; |
| b2 = x == null; |
| if (!b2) { |
| /*nonNullable*/ x; |
| } else { |
| x; |
| } |
| } |
| |
| parameter_assigned(int? x, bool b) { |
| b = x == null; |
| if (!b) { |
| /*nonNullable*/ x; |
| } else { |
| x; |
| } |
| } |
| |
| parameter_assignedDynamic(int? x, dynamic b) { |
| b = x == null; |
| if (!b) { |
| /*nonNullable*/ x; |
| } else { |
| x; |
| } |
| } |
| |
| lateFinalLocalBool(int? x) { |
| late final bool b = x == null; |
| if (!b) { |
| // We don't promote based on the initializers of late locals because we |
| // don't know when they execute. |
| x; |
| } else { |
| x; |
| } |
| } |
| |
| lateLocalBool(int? x) { |
| late bool b = x == null; |
| if (!b) { |
| // We don't promote based on the initializers of late locals because we |
| // don't know when they execute. |
| x; |
| } else { |
| x; |
| } |
| } |
| |
| lateLocalBool_assignedAndInitialized(int? x, bool b1) { |
| late bool b2 = b1; |
| b2 = x == null; |
| if (!b2) { |
| /*nonNullable*/ x; |
| } else { |
| x; |
| } |
| } |
| |
| lateLocalBool_assignedButNotInitialized(int? x) { |
| late bool b; |
| b = x == null; |
| if (!b) { |
| /*nonNullable*/ x; |
| } else { |
| x; |
| } |
| } |
| |
| rebaseWithDemotion(int? x, int? y, int? z, int? a) { |
| x; |
| y; |
| z; |
| if (y == null) return; |
| x; |
| /*nonNullable*/ y; |
| z; |
| bool b = x == null; |
| x; |
| /*nonNullable*/ y; |
| z; |
| if (z == null) return; |
| x; |
| /*nonNullable*/ y; |
| /*nonNullable*/ z; |
| y = a; |
| x; |
| y; |
| /*nonNullable*/ z; |
| if (b) return; |
| /*nonNullable*/ x; |
| y; |
| /*nonNullable*/ z; |
| } |
| |
| compoundAssignment(int? x, dynamic b) { |
| b += x == null; |
| if (!b) { |
| // It's not safe to promote, because there's no guarantee that value of `b` |
| // has anything to do with the result of `x == null`. |
| x; |
| } else { |
| x; |
| } |
| } |
| |
| ifNullAssignment(int? x, dynamic b) { |
| b ??= x == null; |
| if (!b) { |
| // It's not safe to promote, because there's no guarantee that value of `b` |
| // has anything to do with the result of `x == null`. |
| x; |
| } else { |
| x; |
| } |
| } |