From a3f294cc64bf0d0d78b75ea05d83d8d1c5d3412e Mon Sep 17 00:00:00 2001 From: Chloe Stefantsova Date: Mon, 15 Apr 2024 06:39:50 +0000 Subject: [PATCH] [cfe] Adjust typing in more kinds of if-null expressions This is a follow-up to https://dart-review.googlesource.com/c/sdk/+/360865 Closes https://github.com/dart-lang/sdk/issues/55372 Change-Id: Ib2f17d2ee60ac8604ff0314472cd09fc1fb5308f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/362101 Reviewed-by: Johnni Winther Commit-Queue: Chloe Stefantsova --- .../type_inference/inference_visitor.dart | 32 ++++--- .../extension_setter2.dart.strong.expect | 4 +- ...ion_setter2.dart.strong.transformed.expect | 4 +- .../extension_setter2.dart.weak.expect | 4 +- ...extension_setter2.dart.weak.modular.expect | 4 +- ...nsion_setter2.dart.weak.transformed.expect | 4 +- .../extensions/index2.dart.strong.expect | 8 +- .../index2.dart.strong.transformed.expect | 8 +- .../extensions/index2.dart.weak.expect | 8 +- .../index2.dart.weak.modular.expect | 8 +- .../index2.dart.weak.transformed.expect | 8 +- .../extensions/null_aware2.dart.strong.expect | 4 +- ...null_aware2.dart.strong.transformed.expect | 4 +- .../extensions/null_aware2.dart.weak.expect | 4 +- .../null_aware2.dart.weak.modular.expect | 4 +- .../null_aware2.dart.weak.transformed.expect | 4 +- .../general/issue47223b.dart.strong.expect | 2 +- ...issue47223b.dart.strong.transformed.expect | 2 +- .../general/issue47223b.dart.weak.expect | 2 +- .../issue47223b.dart.weak.modular.expect | 2 +- .../issue47223b.dart.weak.transformed.expect | 2 +- .../testcases/general/issue55372.dart | 71 +++++++++++++++ .../general/issue55372.dart.strong.expect | 64 ++++++++++++++ .../issue55372.dart.strong.transformed.expect | 88 +++++++++++++++++++ .../issue55372.dart.textual_outline.expect | 18 ++++ ...55372.dart.textual_outline_modelled.expect | 18 ++++ .../general/issue55372.dart.weak.expect | 64 ++++++++++++++ .../issue55372.dart.weak.modular.expect | 64 ++++++++++++++ .../issue55372.dart.weak.outline.expect | 31 +++++++ .../issue55372.dart.weak.transformed.expect | 88 +++++++++++++++++++ .../general/null_aware2.dart.strong.expect | 4 +- ...null_aware2.dart.strong.transformed.expect | 4 +- .../general/null_aware2.dart.weak.expect | 4 +- .../null_aware2.dart.weak.modular.expect | 4 +- .../null_aware2.dart.weak.transformed.expect | 4 +- .../super_signature_access.dart.strong.expect | 4 +- ...ture_access.dart.strong.transformed.expect | 4 +- .../super_signature_access.dart.weak.expect | 4 +- ..._signature_access.dart.weak.modular.expect | 4 +- ...nature_access.dart.weak.transformed.expect | 4 +- ...to_property_null_aware2.dart.strong.expect | 2 +- ...null_aware2.dart.strong.transformed.expect | 2 +- ...n_to_property_null_aware2.dart.weak.expect | 2 +- ...perty_null_aware2.dart.weak.modular.expect | 2 +- ...y_null_aware2.dart.weak.transformed.expect | 2 +- .../nnbd/issue43278.dart.strong.expect | 12 +-- .../issue43278.dart.strong.transformed.expect | 12 +-- .../nnbd/issue43278.dart.weak.expect | 12 +-- .../nnbd/issue43278.dart.weak.modular.expect | 12 +-- .../issue43278.dart.weak.transformed.expect | 12 +-- .../nnbd/null_access.dart.strong.expect | 8 +- ...null_access.dart.strong.transformed.expect | 8 +- .../nnbd/null_access.dart.weak.expect | 8 +- .../nnbd/null_access.dart.weak.modular.expect | 8 +- .../null_access.dart.weak.transformed.expect | 8 +- .../nnbd/null_shorting.dart.strong.expect | 4 +- ...ll_shorting.dart.strong.transformed.expect | 4 +- .../nnbd/null_shorting.dart.weak.expect | 4 +- .../null_shorting.dart.weak.modular.expect | 4 +- ...null_shorting.dart.weak.transformed.expect | 4 +- ...ting_explicit_extension.dart.strong.expect | 4 +- ...t_extension.dart.strong.transformed.expect | 4 +- ...orting_explicit_extension.dart.weak.expect | 4 +- ...xplicit_extension.dart.weak.modular.expect | 4 +- ...cit_extension.dart.weak.transformed.expect | 4 +- ...null_shorting_extension.dart.strong.expect | 4 +- ...g_extension.dart.strong.transformed.expect | 4 +- .../null_shorting_extension.dart.weak.expect | 4 +- ...horting_extension.dart.weak.modular.expect | 4 +- ...ing_extension.dart.weak.transformed.expect | 4 +- .../null_shorting_index.dart.strong.expect | 8 +- ...rting_index.dart.strong.transformed.expect | 8 +- .../nnbd/null_shorting_index.dart.weak.expect | 8 +- ...ll_shorting_index.dart.weak.modular.expect | 8 +- ...horting_index.dart.weak.transformed.expect | 8 +- .../pure_index_expressions.dart.strong.expect | 12 +-- ...expressions.dart.strong.transformed.expect | 12 +-- .../pure_index_expressions.dart.weak.expect | 12 +-- ...index_expressions.dart.weak.modular.expect | 12 +-- ...x_expressions.dart.weak.transformed.expect | 12 +-- ...y_non_nullable_warnings.dart.strong.expect | 10 +-- ...le_warnings.dart.strong.transformed.expect | 10 +-- ...tly_non_nullable_warnings.dart.weak.expect | 10 +-- ...nullable_warnings.dart.weak.modular.expect | 10 +-- ...able_warnings.dart.weak.transformed.expect | 10 +-- .../unsound_checks.dart.weak.expect | 8 +- .../unsound_checks.dart.weak.modular.expect | 8 +- ...nsound_checks.dart.weak.transformed.expect | 8 +- ...return_compound_assign2.dart.strong.expect | 2 +- ...und_assign2.dart.strong.transformed.expect | 2 +- ...r_return_compound_assign2.dart.weak.expect | 2 +- ..._compound_assign2.dart.weak.modular.expect | 2 +- ...pound_assign2.dart.weak.transformed.expect | 2 +- 93 files changed, 769 insertions(+), 253 deletions(-) create mode 100644 pkg/front_end/testcases/general/issue55372.dart create mode 100644 pkg/front_end/testcases/general/issue55372.dart.strong.expect create mode 100644 pkg/front_end/testcases/general/issue55372.dart.strong.transformed.expect create mode 100644 pkg/front_end/testcases/general/issue55372.dart.textual_outline.expect create mode 100644 pkg/front_end/testcases/general/issue55372.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/general/issue55372.dart.weak.expect create mode 100644 pkg/front_end/testcases/general/issue55372.dart.weak.modular.expect create mode 100644 pkg/front_end/testcases/general/issue55372.dart.weak.outline.expect create mode 100644 pkg/front_end/testcases/general/issue55372.dart.weak.transformed.expect diff --git a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart index d890c3869c9..97cfd5b60a1 100644 --- a/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart +++ b/pkg/front_end/lib/src/fasta/type_inference/inference_visitor.dart @@ -5238,8 +5238,11 @@ class InferenceVisitorImpl extends InferenceVisitorBase // Expression equalsNull = createEqualsNull(read, fileOffset: node.fileOffset); - ConditionalExpression conditional = new ConditionalExpression(equalsNull, - write, new NullLiteral()..fileOffset = node.fileOffset, inferredType) + ConditionalExpression conditional = new ConditionalExpression( + equalsNull, + write, + new NullLiteral()..fileOffset = node.fileOffset, + computeNullable(inferredType)) ..fileOffset = node.fileOffset; replacement = new Let(receiverVariable, conditional..fileOffset = node.fileOffset) @@ -5741,9 +5744,7 @@ class InferenceVisitorImpl extends InferenceVisitorBase equalsNull, write, new NullLiteral()..fileOffset = node.testOffset, - isNonNullableByDefault - ? inferredType.withDeclaredNullability(Nullability.nullable) - : inferredType) + computeNullable(inferredType)) ..fileOffset = node.testOffset; inner = conditional; } else { @@ -5903,8 +5904,11 @@ class InferenceVisitorImpl extends InferenceVisitorBase assert(valueVariable == null); Expression equalsNull = createEqualsNull(read, fileOffset: node.testOffset); - replacement = new ConditionalExpression(equalsNull, write, - new NullLiteral()..fileOffset = node.testOffset, inferredType) + replacement = new ConditionalExpression( + equalsNull, + write, + new NullLiteral()..fileOffset = node.testOffset, + computeNullable(inferredType)) ..fileOffset = node.testOffset; } else { // Encode `o[a] ??= b` as: @@ -6063,8 +6067,11 @@ class InferenceVisitorImpl extends InferenceVisitorBase assert(valueVariable == null); Expression equalsNull = createEqualsNull(read, fileOffset: node.testOffset); - replacement = new ConditionalExpression(equalsNull, write, - new NullLiteral()..fileOffset = node.testOffset, inferredType) + replacement = new ConditionalExpression( + equalsNull, + write, + new NullLiteral()..fileOffset = node.testOffset, + computeNullable(inferredType)) ..fileOffset = node.testOffset; } else { // Encode `Extension(o)[a] ??= b` as: @@ -7735,8 +7742,11 @@ class InferenceVisitorImpl extends InferenceVisitorBase Expression readEqualsNull = createEqualsNull(read, fileOffset: node.readOffset); - replacement = new ConditionalExpression(readEqualsNull, write, - new NullLiteral()..fileOffset = node.writeOffset, inferredType) + replacement = new ConditionalExpression( + readEqualsNull, + write, + new NullLiteral()..fileOffset = node.writeOffset, + computeNullable(inferredType)) ..fileOffset = node.writeOffset; } else { // Encode `receiver?.name ??= value` as: diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.strong.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.strong.expect index 8c3e7b687c4..a9e7ccd8d1c 100644 --- a/pkg/front_end/testcases/extensions/extension_setter2.dart.strong.expect +++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.strong.expect @@ -192,13 +192,13 @@ static method test(self::Class c, self::Class? cn) → dynamic { self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t101 = c in let final core::int #t102 = 8.{core::int::unary-}(){() → core::int} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102); self::expect(8, let final self::Class? #t104 = cn in #t104 == null ?{core::int?} null : #t104{self::Class}.{self::Class::field}{core::int}); c.{self::Class::nullableField} = null; - let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t105, 1) : null; + let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t105, 1) : null; self::expect(1, c.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class #t106 = c in let final core::int? #t107 = self::Extension|get#simpleNullableSetter(#t106) in #t107 == null ?{core::int} let final core::int #t108 = 2 in let final void #t109 = self::Extension|set#simpleNullableSetter(#t106, #t108) in #t108 : #t107{core::int}); c.{self::Class::nullableField} = null; self::expect(2, let final self::Class #t110 = c in let final core::int? #t111 = self::Extension|get#simpleNullableSetter(#t110) in #t111 == null ?{core::int} let final core::int #t112 = 2 in let final void #t113 = self::Extension|set#simpleNullableSetter(#t110, #t112) in #t112 : #t111{core::int}); let final self::Class? #t114 = cn in #t114 == null ?{Null} null : #t114{self::Class}.{self::Class::nullableField} = null; - let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t115, 1) : null; + let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t115, 1) : null; self::expect(1, let final self::Class? #t116 = cn in #t116 == null ?{core::int?} null : #t116{self::Class}.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class? #t117 = cn in #t117 == null ?{core::int?} null : let final core::int? #t118 = self::Extension|get#simpleNullableSetter(#t117) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117, #t119) in #t119 : #t118{core::int}); let final self::Class? #t121 = cn in #t121 == null ?{Null} null : #t121{self::Class}.{self::Class::nullableField} = null; diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.strong.transformed.expect index 414c029d006..11f6be53d2b 100644 --- a/pkg/front_end/testcases/extensions/extension_setter2.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.strong.transformed.expect @@ -192,13 +192,13 @@ static method test(self::Class c, self::Class? cn) → dynamic { self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t101 = c in let final core::int #t102 = 8.{core::int::unary-}(){() → core::int} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102); self::expect(8, let final self::Class? #t104 = cn in #t104 == null ?{core::int?} null : #t104{self::Class}.{self::Class::field}{core::int}); c.{self::Class::nullableField} = null; - let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t105, 1) : null; + let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t105, 1) : null; self::expect(1, c.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class #t106 = c in let final core::int? #t107 = self::Extension|get#simpleNullableSetter(#t106) in #t107 == null ?{core::int} let final core::int #t108 = 2 in let final void #t109 = self::Extension|set#simpleNullableSetter(#t106, #t108) in #t108 : #t107{core::int}); c.{self::Class::nullableField} = null; self::expect(2, let final self::Class #t110 = c in let final core::int? #t111 = self::Extension|get#simpleNullableSetter(#t110) in #t111 == null ?{core::int} let final core::int #t112 = 2 in let final void #t113 = self::Extension|set#simpleNullableSetter(#t110, #t112) in #t112 : #t111{core::int}); let final self::Class? #t114 = cn in #t114 == null ?{Null} null : #t114{self::Class}.{self::Class::nullableField} = null; - let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t115, 1) : null; + let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t115, 1) : null; self::expect(1, let final self::Class? #t116 = cn in #t116 == null ?{core::int?} null : #t116{self::Class}.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class? #t117 = cn in #t117 == null ?{core::int?} null : let final core::int? #t118 = self::Extension|get#simpleNullableSetter(#t117) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117, #t119) in #t119 : #t118{core::int}); let final self::Class? #t121 = cn in #t121 == null ?{Null} null : #t121{self::Class}.{self::Class::nullableField} = null; diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.expect index 8c3e7b687c4..a9e7ccd8d1c 100644 --- a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.expect +++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.expect @@ -192,13 +192,13 @@ static method test(self::Class c, self::Class? cn) → dynamic { self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t101 = c in let final core::int #t102 = 8.{core::int::unary-}(){() → core::int} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102); self::expect(8, let final self::Class? #t104 = cn in #t104 == null ?{core::int?} null : #t104{self::Class}.{self::Class::field}{core::int}); c.{self::Class::nullableField} = null; - let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t105, 1) : null; + let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t105, 1) : null; self::expect(1, c.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class #t106 = c in let final core::int? #t107 = self::Extension|get#simpleNullableSetter(#t106) in #t107 == null ?{core::int} let final core::int #t108 = 2 in let final void #t109 = self::Extension|set#simpleNullableSetter(#t106, #t108) in #t108 : #t107{core::int}); c.{self::Class::nullableField} = null; self::expect(2, let final self::Class #t110 = c in let final core::int? #t111 = self::Extension|get#simpleNullableSetter(#t110) in #t111 == null ?{core::int} let final core::int #t112 = 2 in let final void #t113 = self::Extension|set#simpleNullableSetter(#t110, #t112) in #t112 : #t111{core::int}); let final self::Class? #t114 = cn in #t114 == null ?{Null} null : #t114{self::Class}.{self::Class::nullableField} = null; - let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t115, 1) : null; + let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t115, 1) : null; self::expect(1, let final self::Class? #t116 = cn in #t116 == null ?{core::int?} null : #t116{self::Class}.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class? #t117 = cn in #t117 == null ?{core::int?} null : let final core::int? #t118 = self::Extension|get#simpleNullableSetter(#t117) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117, #t119) in #t119 : #t118{core::int}); let final self::Class? #t121 = cn in #t121 == null ?{Null} null : #t121{self::Class}.{self::Class::nullableField} = null; diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.modular.expect index 8c3e7b687c4..a9e7ccd8d1c 100644 --- a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.modular.expect @@ -192,13 +192,13 @@ static method test(self::Class c, self::Class? cn) → dynamic { self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t101 = c in let final core::int #t102 = 8.{core::int::unary-}(){() → core::int} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102); self::expect(8, let final self::Class? #t104 = cn in #t104 == null ?{core::int?} null : #t104{self::Class}.{self::Class::field}{core::int}); c.{self::Class::nullableField} = null; - let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t105, 1) : null; + let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t105, 1) : null; self::expect(1, c.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class #t106 = c in let final core::int? #t107 = self::Extension|get#simpleNullableSetter(#t106) in #t107 == null ?{core::int} let final core::int #t108 = 2 in let final void #t109 = self::Extension|set#simpleNullableSetter(#t106, #t108) in #t108 : #t107{core::int}); c.{self::Class::nullableField} = null; self::expect(2, let final self::Class #t110 = c in let final core::int? #t111 = self::Extension|get#simpleNullableSetter(#t110) in #t111 == null ?{core::int} let final core::int #t112 = 2 in let final void #t113 = self::Extension|set#simpleNullableSetter(#t110, #t112) in #t112 : #t111{core::int}); let final self::Class? #t114 = cn in #t114 == null ?{Null} null : #t114{self::Class}.{self::Class::nullableField} = null; - let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t115, 1) : null; + let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t115, 1) : null; self::expect(1, let final self::Class? #t116 = cn in #t116 == null ?{core::int?} null : #t116{self::Class}.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class? #t117 = cn in #t117 == null ?{core::int?} null : let final core::int? #t118 = self::Extension|get#simpleNullableSetter(#t117) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117, #t119) in #t119 : #t118{core::int}); let final self::Class? #t121 = cn in #t121 == null ?{Null} null : #t121{self::Class}.{self::Class::nullableField} = null; diff --git a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.transformed.expect index 414c029d006..11f6be53d2b 100644 --- a/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extensions/extension_setter2.dart.weak.transformed.expect @@ -192,13 +192,13 @@ static method test(self::Class c, self::Class? cn) → dynamic { self::expect(8.{core::int::unary-}(){() → core::int}, let final self::Class #t101 = c in let final core::int #t102 = 8.{core::int::unary-}(){() → core::int} in let final void #t103 = self::Extension|set#setterWithClosure(#t101, #t102) in #t102); self::expect(8, let final self::Class? #t104 = cn in #t104 == null ?{core::int?} null : #t104{self::Class}.{self::Class::field}{core::int}); c.{self::Class::nullableField} = null; - let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t105, 1) : null; + let final self::Class #t105 = c in self::Extension|get#simpleNullableSetter(#t105) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t105, 1) : null; self::expect(1, c.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class #t106 = c in let final core::int? #t107 = self::Extension|get#simpleNullableSetter(#t106) in #t107 == null ?{core::int} let final core::int #t108 = 2 in let final void #t109 = self::Extension|set#simpleNullableSetter(#t106, #t108) in #t108 : #t107{core::int}); c.{self::Class::nullableField} = null; self::expect(2, let final self::Class #t110 = c in let final core::int? #t111 = self::Extension|get#simpleNullableSetter(#t110) in #t111 == null ?{core::int} let final core::int #t112 = 2 in let final void #t113 = self::Extension|set#simpleNullableSetter(#t110, #t112) in #t112 : #t111{core::int}); let final self::Class? #t114 = cn in #t114 == null ?{Null} null : #t114{self::Class}.{self::Class::nullableField} = null; - let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int} self::Extension|set#simpleNullableSetter(#t115, 1) : null; + let final self::Class? #t115 = cn in #t115 == null ?{core::int?} null : self::Extension|get#simpleNullableSetter(#t115) == null ?{core::int?} self::Extension|set#simpleNullableSetter(#t115, 1) : null; self::expect(1, let final self::Class? #t116 = cn in #t116 == null ?{core::int?} null : #t116{self::Class}.{self::Class::nullableField}{core::int?}); self::expect(1, let final self::Class? #t117 = cn in #t117 == null ?{core::int?} null : let final core::int? #t118 = self::Extension|get#simpleNullableSetter(#t117) in #t118 == null ?{core::int} let final core::int #t119 = 2 in let final void #t120 = self::Extension|set#simpleNullableSetter(#t117, #t119) in #t119 : #t118{core::int}); let final self::Class? #t121 = cn in #t121 == null ?{Null} null : #t121{self::Class}.{self::Class::nullableField} = null; diff --git a/pkg/front_end/testcases/extensions/index2.dart.strong.expect b/pkg/front_end/testcases/extensions/index2.dart.strong.expect index 66a8d20ed59..38fc67f55f4 100644 --- a/pkg/front_end/testcases/extensions/index2.dart.strong.expect +++ b/pkg/front_end/testcases/extensions/index2.dart.strong.expect @@ -81,11 +81,11 @@ static method explicitWithTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t48 = map1 in let final core::String #t49 = "2" in let final void #t50 = self::Extension|[]=(#t48, 1, #t49) in #t49); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String} self::Extension|[]=(#t51, #t52, "3") : null; + let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String?} self::Extension|[]=(#t51, #t52, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t53 = map1 in let final core::int #t54 = 1 in let final core::String? #t55 = self::Extension|[](#t53, #t54) in #t55 == null ?{core::String} let final core::String #t56 = "4" in let final void #t57 = self::Extension|[]=(#t53, #t54, #t56) in #t56 : #t55{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String} self::Extension|[]=(#t58, #t59, "2") : null; + let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String?} self::Extension|[]=(#t58, #t59, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t60 = map1 in let final core::int #t61 = 3 in let final core::String? #t62 = self::Extension|[](#t60, #t61) in #t62 == null ?{core::String} let final core::String #t63 = "3" in let final void #t64 = self::Extension|[]=(#t60, #t61, #t63) in #t63 : #t62{core::String}); self::expect("3", self::Extension|[](map1, 3)); @@ -108,11 +108,11 @@ static method explicitInferredTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t84 = map1 in let final core::String #t85 = "2" in let final void #t86 = self::Extension|[]=(#t84, 1, #t85) in #t85); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String} self::Extension|[]=(#t87, #t88, "3") : null; + let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String?} self::Extension|[]=(#t87, #t88, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t89 = map1 in let final core::int #t90 = 1 in let final core::String? #t91 = self::Extension|[](#t89, #t90) in #t91 == null ?{core::String} let final core::String #t92 = "4" in let final void #t93 = self::Extension|[]=(#t89, #t90, #t92) in #t92 : #t91{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String} self::Extension|[]=(#t94, #t95, "2") : null; + let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String?} self::Extension|[]=(#t94, #t95, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t96 = map1 in let final core::int #t97 = 3 in let final core::String? #t98 = self::Extension|[](#t96, #t97) in #t98 == null ?{core::String} let final core::String #t99 = "3" in let final void #t100 = self::Extension|[]=(#t96, #t97, #t99) in #t99 : #t98{core::String}); self::expect("3", self::Extension|[](map1, 3)); diff --git a/pkg/front_end/testcases/extensions/index2.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/index2.dart.strong.transformed.expect index e491b90edd5..4bddf0a7415 100644 --- a/pkg/front_end/testcases/extensions/index2.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extensions/index2.dart.strong.transformed.expect @@ -81,11 +81,11 @@ static method explicitWithTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t48 = map1 in let final core::String #t49 = "2" in let final void #t50 = self::Extension|[]=(#t48, 1, #t49) in #t49); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String} self::Extension|[]=(#t51, #t52, "3") : null; + let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String?} self::Extension|[]=(#t51, #t52, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t53 = map1 in let final core::int #t54 = 1 in let final core::String? #t55 = self::Extension|[](#t53, #t54) in #t55 == null ?{core::String} let final core::String #t56 = "4" in let final void #t57 = self::Extension|[]=(#t53, #t54, #t56) in #t56 : #t55{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String} self::Extension|[]=(#t58, #t59, "2") : null; + let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String?} self::Extension|[]=(#t58, #t59, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t60 = map1 in let final core::int #t61 = 3 in let final core::String? #t62 = self::Extension|[](#t60, #t61) in #t62 == null ?{core::String} let final core::String #t63 = "3" in let final void #t64 = self::Extension|[]=(#t60, #t61, #t63) in #t63 : #t62{core::String}); self::expect("3", self::Extension|[](map1, 3)); @@ -108,11 +108,11 @@ static method explicitInferredTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t84 = map1 in let final core::String #t85 = "2" in let final void #t86 = self::Extension|[]=(#t84, 1, #t85) in #t85); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String} self::Extension|[]=(#t87, #t88, "3") : null; + let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String?} self::Extension|[]=(#t87, #t88, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t89 = map1 in let final core::int #t90 = 1 in let final core::String? #t91 = self::Extension|[](#t89, #t90) in #t91 == null ?{core::String} let final core::String #t92 = "4" in let final void #t93 = self::Extension|[]=(#t89, #t90, #t92) in #t92 : #t91{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String} self::Extension|[]=(#t94, #t95, "2") : null; + let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String?} self::Extension|[]=(#t94, #t95, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t96 = map1 in let final core::int #t97 = 3 in let final core::String? #t98 = self::Extension|[](#t96, #t97) in #t98 == null ?{core::String} let final core::String #t99 = "3" in let final void #t100 = self::Extension|[]=(#t96, #t97, #t99) in #t99 : #t98{core::String}); self::expect("3", self::Extension|[](map1, 3)); diff --git a/pkg/front_end/testcases/extensions/index2.dart.weak.expect b/pkg/front_end/testcases/extensions/index2.dart.weak.expect index 66a8d20ed59..38fc67f55f4 100644 --- a/pkg/front_end/testcases/extensions/index2.dart.weak.expect +++ b/pkg/front_end/testcases/extensions/index2.dart.weak.expect @@ -81,11 +81,11 @@ static method explicitWithTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t48 = map1 in let final core::String #t49 = "2" in let final void #t50 = self::Extension|[]=(#t48, 1, #t49) in #t49); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String} self::Extension|[]=(#t51, #t52, "3") : null; + let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String?} self::Extension|[]=(#t51, #t52, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t53 = map1 in let final core::int #t54 = 1 in let final core::String? #t55 = self::Extension|[](#t53, #t54) in #t55 == null ?{core::String} let final core::String #t56 = "4" in let final void #t57 = self::Extension|[]=(#t53, #t54, #t56) in #t56 : #t55{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String} self::Extension|[]=(#t58, #t59, "2") : null; + let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String?} self::Extension|[]=(#t58, #t59, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t60 = map1 in let final core::int #t61 = 3 in let final core::String? #t62 = self::Extension|[](#t60, #t61) in #t62 == null ?{core::String} let final core::String #t63 = "3" in let final void #t64 = self::Extension|[]=(#t60, #t61, #t63) in #t63 : #t62{core::String}); self::expect("3", self::Extension|[](map1, 3)); @@ -108,11 +108,11 @@ static method explicitInferredTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t84 = map1 in let final core::String #t85 = "2" in let final void #t86 = self::Extension|[]=(#t84, 1, #t85) in #t85); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String} self::Extension|[]=(#t87, #t88, "3") : null; + let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String?} self::Extension|[]=(#t87, #t88, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t89 = map1 in let final core::int #t90 = 1 in let final core::String? #t91 = self::Extension|[](#t89, #t90) in #t91 == null ?{core::String} let final core::String #t92 = "4" in let final void #t93 = self::Extension|[]=(#t89, #t90, #t92) in #t92 : #t91{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String} self::Extension|[]=(#t94, #t95, "2") : null; + let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String?} self::Extension|[]=(#t94, #t95, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t96 = map1 in let final core::int #t97 = 3 in let final core::String? #t98 = self::Extension|[](#t96, #t97) in #t98 == null ?{core::String} let final core::String #t99 = "3" in let final void #t100 = self::Extension|[]=(#t96, #t97, #t99) in #t99 : #t98{core::String}); self::expect("3", self::Extension|[](map1, 3)); diff --git a/pkg/front_end/testcases/extensions/index2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/index2.dart.weak.modular.expect index 66a8d20ed59..38fc67f55f4 100644 --- a/pkg/front_end/testcases/extensions/index2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/extensions/index2.dart.weak.modular.expect @@ -81,11 +81,11 @@ static method explicitWithTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t48 = map1 in let final core::String #t49 = "2" in let final void #t50 = self::Extension|[]=(#t48, 1, #t49) in #t49); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String} self::Extension|[]=(#t51, #t52, "3") : null; + let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String?} self::Extension|[]=(#t51, #t52, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t53 = map1 in let final core::int #t54 = 1 in let final core::String? #t55 = self::Extension|[](#t53, #t54) in #t55 == null ?{core::String} let final core::String #t56 = "4" in let final void #t57 = self::Extension|[]=(#t53, #t54, #t56) in #t56 : #t55{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String} self::Extension|[]=(#t58, #t59, "2") : null; + let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String?} self::Extension|[]=(#t58, #t59, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t60 = map1 in let final core::int #t61 = 3 in let final core::String? #t62 = self::Extension|[](#t60, #t61) in #t62 == null ?{core::String} let final core::String #t63 = "3" in let final void #t64 = self::Extension|[]=(#t60, #t61, #t63) in #t63 : #t62{core::String}); self::expect("3", self::Extension|[](map1, 3)); @@ -108,11 +108,11 @@ static method explicitInferredTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t84 = map1 in let final core::String #t85 = "2" in let final void #t86 = self::Extension|[]=(#t84, 1, #t85) in #t85); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String} self::Extension|[]=(#t87, #t88, "3") : null; + let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String?} self::Extension|[]=(#t87, #t88, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t89 = map1 in let final core::int #t90 = 1 in let final core::String? #t91 = self::Extension|[](#t89, #t90) in #t91 == null ?{core::String} let final core::String #t92 = "4" in let final void #t93 = self::Extension|[]=(#t89, #t90, #t92) in #t92 : #t91{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String} self::Extension|[]=(#t94, #t95, "2") : null; + let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String?} self::Extension|[]=(#t94, #t95, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t96 = map1 in let final core::int #t97 = 3 in let final core::String? #t98 = self::Extension|[](#t96, #t97) in #t98 == null ?{core::String} let final core::String #t99 = "3" in let final void #t100 = self::Extension|[]=(#t96, #t97, #t99) in #t99 : #t98{core::String}); self::expect("3", self::Extension|[](map1, 3)); diff --git a/pkg/front_end/testcases/extensions/index2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/index2.dart.weak.transformed.expect index e491b90edd5..4bddf0a7415 100644 --- a/pkg/front_end/testcases/extensions/index2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extensions/index2.dart.weak.transformed.expect @@ -81,11 +81,11 @@ static method explicitWithTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t48 = map1 in let final core::String #t49 = "2" in let final void #t50 = self::Extension|[]=(#t48, 1, #t49) in #t49); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String} self::Extension|[]=(#t51, #t52, "3") : null; + let final self::MapLike #t51 = map1 in let final core::int #t52 = 1 in self::Extension|[](#t51, #t52) == null ?{core::String?} self::Extension|[]=(#t51, #t52, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t53 = map1 in let final core::int #t54 = 1 in let final core::String? #t55 = self::Extension|[](#t53, #t54) in #t55 == null ?{core::String} let final core::String #t56 = "4" in let final void #t57 = self::Extension|[]=(#t53, #t54, #t56) in #t56 : #t55{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String} self::Extension|[]=(#t58, #t59, "2") : null; + let final self::MapLike #t58 = map1 in let final core::int #t59 = 2 in self::Extension|[](#t58, #t59) == null ?{core::String?} self::Extension|[]=(#t58, #t59, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t60 = map1 in let final core::int #t61 = 3 in let final core::String? #t62 = self::Extension|[](#t60, #t61) in #t62 == null ?{core::String} let final core::String #t63 = "3" in let final void #t64 = self::Extension|[]=(#t60, #t61, #t63) in #t63 : #t62{core::String}); self::expect("3", self::Extension|[](map1, 3)); @@ -108,11 +108,11 @@ static method explicitInferredTypeArguments() → dynamic { self::expect("1", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t84 = map1 in let final core::String #t85 = "2" in let final void #t86 = self::Extension|[]=(#t84, 1, #t85) in #t85); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String} self::Extension|[]=(#t87, #t88, "3") : null; + let final self::MapLike #t87 = map1 in let final core::int #t88 = 1 in self::Extension|[](#t87, #t88) == null ?{core::String?} self::Extension|[]=(#t87, #t88, "3") : null; self::expect("2", self::Extension|[](map1, 1)); self::expect("2", let final self::MapLike #t89 = map1 in let final core::int #t90 = 1 in let final core::String? #t91 = self::Extension|[](#t89, #t90) in #t91 == null ?{core::String} let final core::String #t92 = "4" in let final void #t93 = self::Extension|[]=(#t89, #t90, #t92) in #t92 : #t91{core::String}); self::expect("2", self::Extension|[](map1, 1)); - let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String} self::Extension|[]=(#t94, #t95, "2") : null; + let final self::MapLike #t94 = map1 in let final core::int #t95 = 2 in self::Extension|[](#t94, #t95) == null ?{core::String?} self::Extension|[]=(#t94, #t95, "2") : null; self::expect("2", self::Extension|[](map1, 2)); self::expect("3", let final self::MapLike #t96 = map1 in let final core::int #t97 = 3 in let final core::String? #t98 = self::Extension|[](#t96, #t97) in #t98 == null ?{core::String} let final core::String #t99 = "3" in let final void #t100 = self::Extension|[]=(#t96, #t97, #t99) in #t99 : #t98{core::String}); self::expect("3", self::Extension|[](map1, 3)); diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.strong.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.strong.expect index ac2f7122414..cfa156554a8 100644 --- a/pkg/front_end/testcases/extensions/null_aware2.dart.strong.expect +++ b/pkg/front_end/testcases/extensions/null_aware2.dart.strong.expect @@ -57,9 +57,9 @@ static method test2(self::Class? c) → dynamic { self::expect(42, let final self::Class? #t31 = c in #t31 == null ?{core::int?} null : let final core::int? #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32{core::int}); self::expect(42, let final self::Class? #t35 = c in #t35 == null ?{core::int?} null : let final core::int? #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36{core::int}); self::expect(null, let final self::Class? #t39 = c in #t39 == null ?{Null} null : let final has-declared-initializer Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39{self::Class}, #t40) in #t40); - let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int} self::Extension|set#property(#t42, 42) : null; + let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int?} self::Extension|set#property(#t42, 42) : null; self::expect(42, let final self::Class? #t43 = c in #t43 == null ?{core::int?} null : self::Extension|get#property(#t43{self::Class})); - let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int} self::Extension|set#property(#t44, 87) : null; + let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int?} self::Extension|set#property(#t44, 87) : null; self::expect(42, let final self::Class? #t45 = c in #t45 == null ?{core::int?} null : self::Extension|get#property(#t45{self::Class})); let final self::Class? #t46 = c in #t46 == null ?{void} null : self::Extension|set#property(#t46{self::Class}, null); self::expect(null, let final self::Class? #t47 = c in #t47 == null ?{core::int?} null : self::Extension|get#property(#t47{self::Class})); diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.strong.transformed.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.strong.transformed.expect index 72a75b66d6f..7b40e6daaba 100644 --- a/pkg/front_end/testcases/extensions/null_aware2.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/extensions/null_aware2.dart.strong.transformed.expect @@ -57,9 +57,9 @@ static method test2(self::Class? c) → dynamic { self::expect(42, let final self::Class? #t31 = c in #t31 == null ?{core::int?} null : let final core::int? #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32{core::int}); self::expect(42, let final self::Class? #t35 = c in #t35 == null ?{core::int?} null : let final core::int? #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36{core::int}); self::expect(null, let final self::Class? #t39 = c in #t39 == null ?{Null} null : let final has-declared-initializer Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39{self::Class}, #t40) in #t40); - let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int} self::Extension|set#property(#t42, 42) : null; + let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int?} self::Extension|set#property(#t42, 42) : null; self::expect(42, let final self::Class? #t43 = c in #t43 == null ?{core::int?} null : self::Extension|get#property(#t43{self::Class})); - let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int} self::Extension|set#property(#t44, 87) : null; + let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int?} self::Extension|set#property(#t44, 87) : null; self::expect(42, let final self::Class? #t45 = c in #t45 == null ?{core::int?} null : self::Extension|get#property(#t45{self::Class})); let final self::Class? #t46 = c in #t46 == null ?{void} null : self::Extension|set#property(#t46{self::Class}, null); self::expect(null, let final self::Class? #t47 = c in #t47 == null ?{core::int?} null : self::Extension|get#property(#t47{self::Class})); diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.expect index ac2f7122414..cfa156554a8 100644 --- a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.expect +++ b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.expect @@ -57,9 +57,9 @@ static method test2(self::Class? c) → dynamic { self::expect(42, let final self::Class? #t31 = c in #t31 == null ?{core::int?} null : let final core::int? #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32{core::int}); self::expect(42, let final self::Class? #t35 = c in #t35 == null ?{core::int?} null : let final core::int? #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36{core::int}); self::expect(null, let final self::Class? #t39 = c in #t39 == null ?{Null} null : let final has-declared-initializer Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39{self::Class}, #t40) in #t40); - let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int} self::Extension|set#property(#t42, 42) : null; + let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int?} self::Extension|set#property(#t42, 42) : null; self::expect(42, let final self::Class? #t43 = c in #t43 == null ?{core::int?} null : self::Extension|get#property(#t43{self::Class})); - let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int} self::Extension|set#property(#t44, 87) : null; + let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int?} self::Extension|set#property(#t44, 87) : null; self::expect(42, let final self::Class? #t45 = c in #t45 == null ?{core::int?} null : self::Extension|get#property(#t45{self::Class})); let final self::Class? #t46 = c in #t46 == null ?{void} null : self::Extension|set#property(#t46{self::Class}, null); self::expect(null, let final self::Class? #t47 = c in #t47 == null ?{core::int?} null : self::Extension|get#property(#t47{self::Class})); diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.modular.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.modular.expect index ac2f7122414..cfa156554a8 100644 --- a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.modular.expect @@ -57,9 +57,9 @@ static method test2(self::Class? c) → dynamic { self::expect(42, let final self::Class? #t31 = c in #t31 == null ?{core::int?} null : let final core::int? #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32{core::int}); self::expect(42, let final self::Class? #t35 = c in #t35 == null ?{core::int?} null : let final core::int? #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36{core::int}); self::expect(null, let final self::Class? #t39 = c in #t39 == null ?{Null} null : let final has-declared-initializer Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39{self::Class}, #t40) in #t40); - let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int} self::Extension|set#property(#t42, 42) : null; + let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int?} self::Extension|set#property(#t42, 42) : null; self::expect(42, let final self::Class? #t43 = c in #t43 == null ?{core::int?} null : self::Extension|get#property(#t43{self::Class})); - let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int} self::Extension|set#property(#t44, 87) : null; + let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int?} self::Extension|set#property(#t44, 87) : null; self::expect(42, let final self::Class? #t45 = c in #t45 == null ?{core::int?} null : self::Extension|get#property(#t45{self::Class})); let final self::Class? #t46 = c in #t46 == null ?{void} null : self::Extension|set#property(#t46{self::Class}, null); self::expect(null, let final self::Class? #t47 = c in #t47 == null ?{core::int?} null : self::Extension|get#property(#t47{self::Class})); diff --git a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.transformed.expect b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.transformed.expect index 72a75b66d6f..7b40e6daaba 100644 --- a/pkg/front_end/testcases/extensions/null_aware2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/extensions/null_aware2.dart.weak.transformed.expect @@ -57,9 +57,9 @@ static method test2(self::Class? c) → dynamic { self::expect(42, let final self::Class? #t31 = c in #t31 == null ?{core::int?} null : let final core::int? #t32 = self::Extension|get#property(#t31) in #t32 == null ?{core::int} let final core::int #t33 = 42 in let final void #t34 = self::Extension|set#property(#t31, #t33) in #t33 : #t32{core::int}); self::expect(42, let final self::Class? #t35 = c in #t35 == null ?{core::int?} null : let final core::int? #t36 = self::Extension|get#property(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 87 in let final void #t38 = self::Extension|set#property(#t35, #t37) in #t37 : #t36{core::int}); self::expect(null, let final self::Class? #t39 = c in #t39 == null ?{Null} null : let final has-declared-initializer Null #t40 = null in let final void #t41 = self::Extension|set#property(#t39{self::Class}, #t40) in #t40); - let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int} self::Extension|set#property(#t42, 42) : null; + let final self::Class? #t42 = c in #t42 == null ?{core::int?} null : self::Extension|get#property(#t42) == null ?{core::int?} self::Extension|set#property(#t42, 42) : null; self::expect(42, let final self::Class? #t43 = c in #t43 == null ?{core::int?} null : self::Extension|get#property(#t43{self::Class})); - let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int} self::Extension|set#property(#t44, 87) : null; + let final self::Class? #t44 = c in #t44 == null ?{core::int?} null : self::Extension|get#property(#t44) == null ?{core::int?} self::Extension|set#property(#t44, 87) : null; self::expect(42, let final self::Class? #t45 = c in #t45 == null ?{core::int?} null : self::Extension|get#property(#t45{self::Class})); let final self::Class? #t46 = c in #t46 == null ?{void} null : self::Extension|set#property(#t46{self::Class}, null); self::expect(null, let final self::Class? #t47 = c in #t47 == null ?{core::int?} null : self::Extension|get#property(#t47{self::Class})); diff --git a/pkg/front_end/testcases/general/issue47223b.dart.strong.expect b/pkg/front_end/testcases/general/issue47223b.dart.strong.expect index a0df2dcda62..b718730ed42 100644 --- a/pkg/front_end/testcases/general/issue47223b.dart.strong.expect +++ b/pkg/front_end/testcases/general/issue47223b.dart.strong.expect @@ -3,6 +3,6 @@ import self as self; import "dart:core" as core; static method test() → void { - let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String} #t1.{Never}foo = "foo" : null; + let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String?} #t1.{Never}foo = "foo" : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/general/issue47223b.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue47223b.dart.strong.transformed.expect index a0df2dcda62..b718730ed42 100644 --- a/pkg/front_end/testcases/general/issue47223b.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/issue47223b.dart.strong.transformed.expect @@ -3,6 +3,6 @@ import self as self; import "dart:core" as core; static method test() → void { - let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String} #t1.{Never}foo = "foo" : null; + let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String?} #t1.{Never}foo = "foo" : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/general/issue47223b.dart.weak.expect b/pkg/front_end/testcases/general/issue47223b.dart.weak.expect index a0df2dcda62..b718730ed42 100644 --- a/pkg/front_end/testcases/general/issue47223b.dart.weak.expect +++ b/pkg/front_end/testcases/general/issue47223b.dart.weak.expect @@ -3,6 +3,6 @@ import self as self; import "dart:core" as core; static method test() → void { - let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String} #t1.{Never}foo = "foo" : null; + let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String?} #t1.{Never}foo = "foo" : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/general/issue47223b.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue47223b.dart.weak.modular.expect index a0df2dcda62..b718730ed42 100644 --- a/pkg/front_end/testcases/general/issue47223b.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/issue47223b.dart.weak.modular.expect @@ -3,6 +3,6 @@ import self as self; import "dart:core" as core; static method test() → void { - let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String} #t1.{Never}foo = "foo" : null; + let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String?} #t1.{Never}foo = "foo" : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/general/issue47223b.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue47223b.dart.weak.transformed.expect index a0df2dcda62..b718730ed42 100644 --- a/pkg/front_end/testcases/general/issue47223b.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/issue47223b.dart.weak.transformed.expect @@ -3,6 +3,6 @@ import self as self; import "dart:core" as core; static method test() → void { - let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String} #t1.{Never}foo = "foo" : null; + let final Never #t1 = throw "some value" in #t1{Never}.foo == null ?{core::String?} #t1.{Never}foo = "foo" : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/general/issue55372.dart b/pkg/front_end/testcases/general/issue55372.dart new file mode 100644 index 00000000000..0caf056a0dd --- /dev/null +++ b/pkg/front_end/testcases/general/issue55372.dart @@ -0,0 +1,71 @@ +// Copyright (c) 2024, 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. + +class A { + double? foo1; + String? foo2; + int foo3 = 0; + + void operator []=(bool key, String? value) {} + String? operator [](bool key) => ""; +} + +class B extends A { + test() { + // IfNullSuperIndexSet + { + super[false] ??= ""; // forEffect=true + var x = super[false] ??= ""; // forEffect=false + } + } +} + +extension E on dynamic { + void operator []=(String key, int? value) {} + int? operator [](String key) => 0; +} + +main() { + // NullAwareIfNullSet + { + A a = new A(); + a?.foo1 ??= 42; // forEffect=true + var x = a?.foo1 ??= 42; // forEffect=false + } + + // IfNullIndexSet + { + final Map> nestedMap = + >{}; + nestedMap?['hello'] ??= {}; // forEffect=true + var x = nestedMap?['hello'] ??= {}; // forEffect=false + } + + // IfNullExtensionIndexSet + { + E(false)['hello'] ??= 1; // forEffect=true + var x = E(false)['hello'] ??= 1; // forEffect=false + } + + // IfNullPropertySet + { + A a = new A(); + a.foo2 ??= ""; // forEffect=true + var x = a.foo2 ??= ""; // forEffect=false + } + + // IfNullSet + { + bool? b1; + bool? b2; + b1 ??= false; // forEffect=true + var x = b2 ??= false; // forEffect=false + } + + // NullAwareCompoundSet + { + A? a = new A(); + a?.foo3 += 1; + } +} diff --git a/pkg/front_end/testcases/general/issue55372.dart.strong.expect b/pkg/front_end/testcases/general/issue55372.dart.strong.expect new file mode 100644 index 00000000000..bf0d7cae41a --- /dev/null +++ b/pkg/front_end/testcases/general/issue55372.dart.strong.expect @@ -0,0 +1,64 @@ +library; +import self as self; +import "dart:core" as core; + +class A extends core::Object { + field core::double? foo1 = null; + field core::String? foo2 = null; + field core::int foo3 = 0; + synthetic constructor •() → self::A + : super core::Object::•() + ; + operator []=(core::bool key, core::String? value) → void {} + operator [](core::bool key) → core::String? + return ""; +} +class B extends self::A { + synthetic constructor •() → self::B + : super self::A::•() + ; + method test() → dynamic { + { + let final core::bool #t1 = false in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "") : null; + core::String x = let final core::bool #t2 = false in let final core::String? #t3 = super.{self::A::[]}(#t2) in #t3 == null ?{core::String} let final core::String #t4 = "" in let final void #t5 = super.{self::A::[]=}(#t2, #t4) in #t4 : #t3{core::String}; + } + } +} +extension E on dynamic { + operator []= = self::E|[]=; + operator [] = self::E|[]; +} +static extension-member method E|[]=(lowered final dynamic #this, core::String key, core::int? value) → void {} +static extension-member method E|[](lowered final dynamic #this, core::String key) → core::int? + return 0; +static method main() → dynamic { + { + self::A a = new self::A::•(); + let final self::A #t6 = a in #t6 == null ?{core::double?} null : #t6.{self::A::foo1}{core::double?} == null ?{core::double?} #t6.{self::A::foo1} = 42.0 : null; + core::double? x = let final self::A #t7 = a in #t7 == null ?{core::double?} null : let final core::double? #t8 = #t7.{self::A::foo1}{core::double?} in #t8 == null ?{core::double} #t7.{self::A::foo1} = 42.0 : #t8{core::double}; + } + { + final core::Map> nestedMap = >{}; + let final core::Map> #t9 = nestedMap in #t9 == null ?{core::Map?} null : let final core::String #t10 = "hello" in #t9.{core::Map::[]}(#t10){(core::Object?) → core::Map?} == null ?{core::Map?} #t9.{core::Map::[]=}(#t10, {}){(core::String, core::Map) → void} : null; + core::Map? x = let final core::Map> #t11 = nestedMap in #t11 == null ?{core::Map?} null : let final core::String #t12 = "hello" in let final core::Map? #t13 = #t11.{core::Map::[]}(#t12){(core::Object?) → core::Map?} in #t13 == null ?{core::Map} let final core::Map #t14 = {} in let final void #t15 = #t11.{core::Map::[]=}(#t12, #t14){(core::String, core::Map) → void} in #t14 : #t13{core::Map}; + } + { + let final dynamic #t16 = false in let final core::String #t17 = "hello" in self::E|[](#t16, #t17) == null ?{core::int?} self::E|[]=(#t16, #t17, 1) : null; + core::int x = let final dynamic #t18 = false in let final core::String #t19 = "hello" in let final core::int? #t20 = self::E|[](#t18, #t19) in #t20 == null ?{core::int} let final core::int #t21 = 1 in let final void #t22 = self::E|[]=(#t18, #t19, #t21) in #t21 : #t20{core::int}; + } + { + self::A a = new self::A::•(); + let final self::A #t23 = a in #t23.{self::A::foo2}{core::String?} == null ?{core::String?} #t23.{self::A::foo2} = "" : null; + core::String x = let final self::A #t24 = a in let final core::String? #t25 = #t24.{self::A::foo2}{core::String?} in #t25 == null ?{core::String} #t24.{self::A::foo2} = "" : #t25{core::String}; + } + { + core::bool? b1; + core::bool? b2; + b1 == null ?{core::bool?} b1 = false : null; + core::bool x = let final core::bool? #t26 = b2 in #t26 == null ?{core::bool} b2 = false : #t26{core::bool}; + } + { + self::A? a = new self::A::•(); + let final self::A #t27 = a{self::A} in #t27 == null ?{core::int?} null : #t27.{self::A::foo3} = #t27.{self::A::foo3}{core::int}.{core::num::+}(1){(core::num) → core::int}; + } +} diff --git a/pkg/front_end/testcases/general/issue55372.dart.strong.transformed.expect b/pkg/front_end/testcases/general/issue55372.dart.strong.transformed.expect new file mode 100644 index 00000000000..cbaf35b0537 --- /dev/null +++ b/pkg/front_end/testcases/general/issue55372.dart.strong.transformed.expect @@ -0,0 +1,88 @@ +library; +import self as self; +import "dart:core" as core; + +class A extends core::Object { + field core::double? foo1 = null; + field core::String? foo2 = null; + field core::int foo3 = 0; + synthetic constructor •() → self::A + : super core::Object::•() + ; + operator []=(core::bool key, core::String? value) → void {} + operator [](core::bool key) → core::String? + return ""; +} +class B extends self::A { + synthetic constructor •() → self::B + : super self::A::•() + ; + method test() → dynamic { + { + let final core::bool #t1 = false in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "") : null; + core::String x = let final core::bool #t2 = false in let final core::String? #t3 = super.{self::A::[]}(#t2) in #t3 == null ?{core::String} let final core::String #t4 = "" in let final void #t5 = super.{self::A::[]=}(#t2, #t4) in #t4 : #t3{core::String}; + } + } +} +extension E on dynamic { + operator []= = self::E|[]=; + operator [] = self::E|[]; +} +static extension-member method E|[]=(lowered final dynamic #this, core::String key, core::int? value) → void {} +static extension-member method E|[](lowered final dynamic #this, core::String key) → core::int? + return 0; +static method main() → dynamic { + { + self::A a = new self::A::•(); + let final self::A #t6 = a in #t6 == null ?{core::double?} null : #t6.{self::A::foo1}{core::double?} == null ?{core::double?} #t6.{self::A::foo1} = 42.0 : null; + core::double? x = let final self::A #t7 = a in #t7 == null ?{core::double?} null : let final core::double? #t8 = #t7.{self::A::foo1}{core::double?} in #t8 == null ?{core::double} #t7.{self::A::foo1} = 42.0 : #t8{core::double}; + } + { + final core::Map> nestedMap = >{}; + let final core::Map> #t9 = nestedMap in #t9 == null ?{core::Map?} null : let final core::String #t10 = "hello" in #t9.{core::Map::[]}(#t10){(core::Object?) → core::Map?} == null ?{core::Map?} #t9.{core::Map::[]=}(#t10, {}){(core::String, core::Map) → void} : null; + core::Map? x = let final core::Map> #t11 = nestedMap in #t11 == null ?{core::Map?} null : let final core::String #t12 = "hello" in let final core::Map? #t13 = #t11.{core::Map::[]}(#t12){(core::Object?) → core::Map?} in #t13 == null ?{core::Map} let final core::Map #t14 = {} in let final void #t15 = #t11.{core::Map::[]=}(#t12, #t14){(core::String, core::Map) → void} in #t14 : #t13{core::Map}; + } + { + let final core::bool* #t16 = false in let final core::String #t17 = "hello" in self::E|[](#t16, #t17) == null ?{core::int?} self::E|[]=(#t16, #t17, 1) : null; + core::int x = let final core::bool* #t18 = false in let final core::String #t19 = "hello" in let final core::int? #t20 = self::E|[](#t18, #t19) in #t20 == null ?{core::int} let final core::int #t21 = 1 in let final void #t22 = self::E|[]=(#t18, #t19, #t21) in #t21 : #t20{core::int}; + } + { + self::A a = new self::A::•(); + let final self::A #t23 = a in #t23.{self::A::foo2}{core::String?} == null ?{core::String?} #t23.{self::A::foo2} = "" : null; + core::String x = let final self::A #t24 = a in let final core::String? #t25 = #t24.{self::A::foo2}{core::String?} in #t25 == null ?{core::String} #t24.{self::A::foo2} = "" : #t25{core::String}; + } + { + core::bool? b1; + core::bool? b2; + b1 == null ?{core::bool?} b1 = false : null; + core::bool x = let final core::bool? #t26 = b2 in #t26 == null ?{core::bool} b2 = false : #t26{core::bool}; + } + { + self::A? a = new self::A::•(); + let final self::A #t27 = a{self::A} in #t27 == null ?{core::int?} null : #t27.{self::A::foo3} = #t27.{self::A::foo3}{core::int}.{core::num::+}(1){(core::num) → core::int}; + } +} + + +Extra constant evaluation status: +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:18:13 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:18:13 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:19:21 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:19:21 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:19:32 -> StringConstant("") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:19:32 -> StringConstant("") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:41:16 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:41:16 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:42:24 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:42:24 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:47:7 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:47:14 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:47:7 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:47:14 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:15 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:22 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:15 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:22 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:35 -> IntConstant(1) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:35 -> IntConstant(1) +Extra constant evaluation: evaluated: 154, effectively constant: 20 diff --git a/pkg/front_end/testcases/general/issue55372.dart.textual_outline.expect b/pkg/front_end/testcases/general/issue55372.dart.textual_outline.expect new file mode 100644 index 00000000000..739747a4f7b --- /dev/null +++ b/pkg/front_end/testcases/general/issue55372.dart.textual_outline.expect @@ -0,0 +1,18 @@ +class A { + double? foo1; + String? foo2; + int foo3 = 0; + void operator []=(bool key, String? value) {} + String? operator [](bool key) => ""; +} + +class B extends A { + test() {} +} + +extension E on dynamic { + void operator []=(String key, int? value) {} + int? operator [](String key) => 0; +} + +main() {} diff --git a/pkg/front_end/testcases/general/issue55372.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/issue55372.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..71ecf378676 --- /dev/null +++ b/pkg/front_end/testcases/general/issue55372.dart.textual_outline_modelled.expect @@ -0,0 +1,18 @@ +class A { + String? foo2; + String? operator [](bool key) => ""; + double? foo1; + int foo3 = 0; + void operator []=(bool key, String? value) {} +} + +class B extends A { + test() {} +} + +extension E on dynamic { + int? operator [](String key) => 0; + void operator []=(String key, int? value) {} +} + +main() {} diff --git a/pkg/front_end/testcases/general/issue55372.dart.weak.expect b/pkg/front_end/testcases/general/issue55372.dart.weak.expect new file mode 100644 index 00000000000..bf0d7cae41a --- /dev/null +++ b/pkg/front_end/testcases/general/issue55372.dart.weak.expect @@ -0,0 +1,64 @@ +library; +import self as self; +import "dart:core" as core; + +class A extends core::Object { + field core::double? foo1 = null; + field core::String? foo2 = null; + field core::int foo3 = 0; + synthetic constructor •() → self::A + : super core::Object::•() + ; + operator []=(core::bool key, core::String? value) → void {} + operator [](core::bool key) → core::String? + return ""; +} +class B extends self::A { + synthetic constructor •() → self::B + : super self::A::•() + ; + method test() → dynamic { + { + let final core::bool #t1 = false in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "") : null; + core::String x = let final core::bool #t2 = false in let final core::String? #t3 = super.{self::A::[]}(#t2) in #t3 == null ?{core::String} let final core::String #t4 = "" in let final void #t5 = super.{self::A::[]=}(#t2, #t4) in #t4 : #t3{core::String}; + } + } +} +extension E on dynamic { + operator []= = self::E|[]=; + operator [] = self::E|[]; +} +static extension-member method E|[]=(lowered final dynamic #this, core::String key, core::int? value) → void {} +static extension-member method E|[](lowered final dynamic #this, core::String key) → core::int? + return 0; +static method main() → dynamic { + { + self::A a = new self::A::•(); + let final self::A #t6 = a in #t6 == null ?{core::double?} null : #t6.{self::A::foo1}{core::double?} == null ?{core::double?} #t6.{self::A::foo1} = 42.0 : null; + core::double? x = let final self::A #t7 = a in #t7 == null ?{core::double?} null : let final core::double? #t8 = #t7.{self::A::foo1}{core::double?} in #t8 == null ?{core::double} #t7.{self::A::foo1} = 42.0 : #t8{core::double}; + } + { + final core::Map> nestedMap = >{}; + let final core::Map> #t9 = nestedMap in #t9 == null ?{core::Map?} null : let final core::String #t10 = "hello" in #t9.{core::Map::[]}(#t10){(core::Object?) → core::Map?} == null ?{core::Map?} #t9.{core::Map::[]=}(#t10, {}){(core::String, core::Map) → void} : null; + core::Map? x = let final core::Map> #t11 = nestedMap in #t11 == null ?{core::Map?} null : let final core::String #t12 = "hello" in let final core::Map? #t13 = #t11.{core::Map::[]}(#t12){(core::Object?) → core::Map?} in #t13 == null ?{core::Map} let final core::Map #t14 = {} in let final void #t15 = #t11.{core::Map::[]=}(#t12, #t14){(core::String, core::Map) → void} in #t14 : #t13{core::Map}; + } + { + let final dynamic #t16 = false in let final core::String #t17 = "hello" in self::E|[](#t16, #t17) == null ?{core::int?} self::E|[]=(#t16, #t17, 1) : null; + core::int x = let final dynamic #t18 = false in let final core::String #t19 = "hello" in let final core::int? #t20 = self::E|[](#t18, #t19) in #t20 == null ?{core::int} let final core::int #t21 = 1 in let final void #t22 = self::E|[]=(#t18, #t19, #t21) in #t21 : #t20{core::int}; + } + { + self::A a = new self::A::•(); + let final self::A #t23 = a in #t23.{self::A::foo2}{core::String?} == null ?{core::String?} #t23.{self::A::foo2} = "" : null; + core::String x = let final self::A #t24 = a in let final core::String? #t25 = #t24.{self::A::foo2}{core::String?} in #t25 == null ?{core::String} #t24.{self::A::foo2} = "" : #t25{core::String}; + } + { + core::bool? b1; + core::bool? b2; + b1 == null ?{core::bool?} b1 = false : null; + core::bool x = let final core::bool? #t26 = b2 in #t26 == null ?{core::bool} b2 = false : #t26{core::bool}; + } + { + self::A? a = new self::A::•(); + let final self::A #t27 = a{self::A} in #t27 == null ?{core::int?} null : #t27.{self::A::foo3} = #t27.{self::A::foo3}{core::int}.{core::num::+}(1){(core::num) → core::int}; + } +} diff --git a/pkg/front_end/testcases/general/issue55372.dart.weak.modular.expect b/pkg/front_end/testcases/general/issue55372.dart.weak.modular.expect new file mode 100644 index 00000000000..bf0d7cae41a --- /dev/null +++ b/pkg/front_end/testcases/general/issue55372.dart.weak.modular.expect @@ -0,0 +1,64 @@ +library; +import self as self; +import "dart:core" as core; + +class A extends core::Object { + field core::double? foo1 = null; + field core::String? foo2 = null; + field core::int foo3 = 0; + synthetic constructor •() → self::A + : super core::Object::•() + ; + operator []=(core::bool key, core::String? value) → void {} + operator [](core::bool key) → core::String? + return ""; +} +class B extends self::A { + synthetic constructor •() → self::B + : super self::A::•() + ; + method test() → dynamic { + { + let final core::bool #t1 = false in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "") : null; + core::String x = let final core::bool #t2 = false in let final core::String? #t3 = super.{self::A::[]}(#t2) in #t3 == null ?{core::String} let final core::String #t4 = "" in let final void #t5 = super.{self::A::[]=}(#t2, #t4) in #t4 : #t3{core::String}; + } + } +} +extension E on dynamic { + operator []= = self::E|[]=; + operator [] = self::E|[]; +} +static extension-member method E|[]=(lowered final dynamic #this, core::String key, core::int? value) → void {} +static extension-member method E|[](lowered final dynamic #this, core::String key) → core::int? + return 0; +static method main() → dynamic { + { + self::A a = new self::A::•(); + let final self::A #t6 = a in #t6 == null ?{core::double?} null : #t6.{self::A::foo1}{core::double?} == null ?{core::double?} #t6.{self::A::foo1} = 42.0 : null; + core::double? x = let final self::A #t7 = a in #t7 == null ?{core::double?} null : let final core::double? #t8 = #t7.{self::A::foo1}{core::double?} in #t8 == null ?{core::double} #t7.{self::A::foo1} = 42.0 : #t8{core::double}; + } + { + final core::Map> nestedMap = >{}; + let final core::Map> #t9 = nestedMap in #t9 == null ?{core::Map?} null : let final core::String #t10 = "hello" in #t9.{core::Map::[]}(#t10){(core::Object?) → core::Map?} == null ?{core::Map?} #t9.{core::Map::[]=}(#t10, {}){(core::String, core::Map) → void} : null; + core::Map? x = let final core::Map> #t11 = nestedMap in #t11 == null ?{core::Map?} null : let final core::String #t12 = "hello" in let final core::Map? #t13 = #t11.{core::Map::[]}(#t12){(core::Object?) → core::Map?} in #t13 == null ?{core::Map} let final core::Map #t14 = {} in let final void #t15 = #t11.{core::Map::[]=}(#t12, #t14){(core::String, core::Map) → void} in #t14 : #t13{core::Map}; + } + { + let final dynamic #t16 = false in let final core::String #t17 = "hello" in self::E|[](#t16, #t17) == null ?{core::int?} self::E|[]=(#t16, #t17, 1) : null; + core::int x = let final dynamic #t18 = false in let final core::String #t19 = "hello" in let final core::int? #t20 = self::E|[](#t18, #t19) in #t20 == null ?{core::int} let final core::int #t21 = 1 in let final void #t22 = self::E|[]=(#t18, #t19, #t21) in #t21 : #t20{core::int}; + } + { + self::A a = new self::A::•(); + let final self::A #t23 = a in #t23.{self::A::foo2}{core::String?} == null ?{core::String?} #t23.{self::A::foo2} = "" : null; + core::String x = let final self::A #t24 = a in let final core::String? #t25 = #t24.{self::A::foo2}{core::String?} in #t25 == null ?{core::String} #t24.{self::A::foo2} = "" : #t25{core::String}; + } + { + core::bool? b1; + core::bool? b2; + b1 == null ?{core::bool?} b1 = false : null; + core::bool x = let final core::bool? #t26 = b2 in #t26 == null ?{core::bool} b2 = false : #t26{core::bool}; + } + { + self::A? a = new self::A::•(); + let final self::A #t27 = a{self::A} in #t27 == null ?{core::int?} null : #t27.{self::A::foo3} = #t27.{self::A::foo3}{core::int}.{core::num::+}(1){(core::num) → core::int}; + } +} diff --git a/pkg/front_end/testcases/general/issue55372.dart.weak.outline.expect b/pkg/front_end/testcases/general/issue55372.dart.weak.outline.expect new file mode 100644 index 00000000000..66ac686f64c --- /dev/null +++ b/pkg/front_end/testcases/general/issue55372.dart.weak.outline.expect @@ -0,0 +1,31 @@ +library; +import self as self; +import "dart:core" as core; + +class A extends core::Object { + field core::double? foo1; + field core::String? foo2; + field core::int foo3; + synthetic constructor •() → self::A + ; + operator []=(core::bool key, core::String? value) → void + ; + operator [](core::bool key) → core::String? + ; +} +class B extends self::A { + synthetic constructor •() → self::B + ; + method test() → dynamic + ; +} +extension E on dynamic { + operator []= = self::E|[]=; + operator [] = self::E|[]; +} +static extension-member method E|[]=(lowered final dynamic #this, core::String key, core::int? value) → void + ; +static extension-member method E|[](lowered final dynamic #this, core::String key) → core::int? + ; +static method main() → dynamic + ; diff --git a/pkg/front_end/testcases/general/issue55372.dart.weak.transformed.expect b/pkg/front_end/testcases/general/issue55372.dart.weak.transformed.expect new file mode 100644 index 00000000000..cbaf35b0537 --- /dev/null +++ b/pkg/front_end/testcases/general/issue55372.dart.weak.transformed.expect @@ -0,0 +1,88 @@ +library; +import self as self; +import "dart:core" as core; + +class A extends core::Object { + field core::double? foo1 = null; + field core::String? foo2 = null; + field core::int foo3 = 0; + synthetic constructor •() → self::A + : super core::Object::•() + ; + operator []=(core::bool key, core::String? value) → void {} + operator [](core::bool key) → core::String? + return ""; +} +class B extends self::A { + synthetic constructor •() → self::B + : super self::A::•() + ; + method test() → dynamic { + { + let final core::bool #t1 = false in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "") : null; + core::String x = let final core::bool #t2 = false in let final core::String? #t3 = super.{self::A::[]}(#t2) in #t3 == null ?{core::String} let final core::String #t4 = "" in let final void #t5 = super.{self::A::[]=}(#t2, #t4) in #t4 : #t3{core::String}; + } + } +} +extension E on dynamic { + operator []= = self::E|[]=; + operator [] = self::E|[]; +} +static extension-member method E|[]=(lowered final dynamic #this, core::String key, core::int? value) → void {} +static extension-member method E|[](lowered final dynamic #this, core::String key) → core::int? + return 0; +static method main() → dynamic { + { + self::A a = new self::A::•(); + let final self::A #t6 = a in #t6 == null ?{core::double?} null : #t6.{self::A::foo1}{core::double?} == null ?{core::double?} #t6.{self::A::foo1} = 42.0 : null; + core::double? x = let final self::A #t7 = a in #t7 == null ?{core::double?} null : let final core::double? #t8 = #t7.{self::A::foo1}{core::double?} in #t8 == null ?{core::double} #t7.{self::A::foo1} = 42.0 : #t8{core::double}; + } + { + final core::Map> nestedMap = >{}; + let final core::Map> #t9 = nestedMap in #t9 == null ?{core::Map?} null : let final core::String #t10 = "hello" in #t9.{core::Map::[]}(#t10){(core::Object?) → core::Map?} == null ?{core::Map?} #t9.{core::Map::[]=}(#t10, {}){(core::String, core::Map) → void} : null; + core::Map? x = let final core::Map> #t11 = nestedMap in #t11 == null ?{core::Map?} null : let final core::String #t12 = "hello" in let final core::Map? #t13 = #t11.{core::Map::[]}(#t12){(core::Object?) → core::Map?} in #t13 == null ?{core::Map} let final core::Map #t14 = {} in let final void #t15 = #t11.{core::Map::[]=}(#t12, #t14){(core::String, core::Map) → void} in #t14 : #t13{core::Map}; + } + { + let final core::bool* #t16 = false in let final core::String #t17 = "hello" in self::E|[](#t16, #t17) == null ?{core::int?} self::E|[]=(#t16, #t17, 1) : null; + core::int x = let final core::bool* #t18 = false in let final core::String #t19 = "hello" in let final core::int? #t20 = self::E|[](#t18, #t19) in #t20 == null ?{core::int} let final core::int #t21 = 1 in let final void #t22 = self::E|[]=(#t18, #t19, #t21) in #t21 : #t20{core::int}; + } + { + self::A a = new self::A::•(); + let final self::A #t23 = a in #t23.{self::A::foo2}{core::String?} == null ?{core::String?} #t23.{self::A::foo2} = "" : null; + core::String x = let final self::A #t24 = a in let final core::String? #t25 = #t24.{self::A::foo2}{core::String?} in #t25 == null ?{core::String} #t24.{self::A::foo2} = "" : #t25{core::String}; + } + { + core::bool? b1; + core::bool? b2; + b1 == null ?{core::bool?} b1 = false : null; + core::bool x = let final core::bool? #t26 = b2 in #t26 == null ?{core::bool} b2 = false : #t26{core::bool}; + } + { + self::A? a = new self::A::•(); + let final self::A #t27 = a{self::A} in #t27 == null ?{core::int?} null : #t27.{self::A::foo3} = #t27.{self::A::foo3}{core::int}.{core::num::+}(1){(core::num) → core::int}; + } +} + + +Extra constant evaluation status: +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:18:13 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:18:13 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:19:21 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:19:21 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:19:32 -> StringConstant("") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:19:32 -> StringConstant("") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:41:16 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:41:16 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:42:24 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:42:24 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:47:7 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:47:14 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:47:7 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:47:14 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:15 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:22 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:15 -> BoolConstant(false) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:22 -> StringConstant("hello") +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:35 -> IntConstant(1) +Evaluated: VariableGet @ org-dartlang-testcase:///issue55372.dart:48:35 -> IntConstant(1) +Extra constant evaluation: evaluated: 154, effectively constant: 20 diff --git a/pkg/front_end/testcases/general/null_aware2.dart.strong.expect b/pkg/front_end/testcases/general/null_aware2.dart.strong.expect index 08e343f0f6c..78aa23ea0f3 100644 --- a/pkg/front_end/testcases/general/null_aware2.dart.strong.expect +++ b/pkg/front_end/testcases/general/null_aware2.dart.strong.expect @@ -24,9 +24,9 @@ static method test() → dynamic { self::Foo foo = new self::Foo::•(); let final self::Foo #t1 = foo in #t1 == null ?{core::int?} null : #t1.{self::Foo::field} = 5; self::Foo::staticField = 5; - let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int} #t2.{self::Foo::field} = 5 : null; + let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int?} #t2.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; - let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int} #t3.{self::Foo::field} = 5 : null; + let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int?} #t3.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; core::int intValue = let final core::int #t4 = foo.{self::Foo::field}{core::int} in #t4 == null ?{core::int} 6 : #t4; core::num numValue = let final core::int #t5 = foo.{self::Foo::field}{core::int} in #t5 == null ?{core::num} 4.5 : #t5; diff --git a/pkg/front_end/testcases/general/null_aware2.dart.strong.transformed.expect b/pkg/front_end/testcases/general/null_aware2.dart.strong.transformed.expect index 08e343f0f6c..78aa23ea0f3 100644 --- a/pkg/front_end/testcases/general/null_aware2.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/null_aware2.dart.strong.transformed.expect @@ -24,9 +24,9 @@ static method test() → dynamic { self::Foo foo = new self::Foo::•(); let final self::Foo #t1 = foo in #t1 == null ?{core::int?} null : #t1.{self::Foo::field} = 5; self::Foo::staticField = 5; - let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int} #t2.{self::Foo::field} = 5 : null; + let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int?} #t2.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; - let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int} #t3.{self::Foo::field} = 5 : null; + let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int?} #t3.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; core::int intValue = let final core::int #t4 = foo.{self::Foo::field}{core::int} in #t4 == null ?{core::int} 6 : #t4; core::num numValue = let final core::int #t5 = foo.{self::Foo::field}{core::int} in #t5 == null ?{core::num} 4.5 : #t5; diff --git a/pkg/front_end/testcases/general/null_aware2.dart.weak.expect b/pkg/front_end/testcases/general/null_aware2.dart.weak.expect index 08e343f0f6c..78aa23ea0f3 100644 --- a/pkg/front_end/testcases/general/null_aware2.dart.weak.expect +++ b/pkg/front_end/testcases/general/null_aware2.dart.weak.expect @@ -24,9 +24,9 @@ static method test() → dynamic { self::Foo foo = new self::Foo::•(); let final self::Foo #t1 = foo in #t1 == null ?{core::int?} null : #t1.{self::Foo::field} = 5; self::Foo::staticField = 5; - let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int} #t2.{self::Foo::field} = 5 : null; + let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int?} #t2.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; - let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int} #t3.{self::Foo::field} = 5 : null; + let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int?} #t3.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; core::int intValue = let final core::int #t4 = foo.{self::Foo::field}{core::int} in #t4 == null ?{core::int} 6 : #t4; core::num numValue = let final core::int #t5 = foo.{self::Foo::field}{core::int} in #t5 == null ?{core::num} 4.5 : #t5; diff --git a/pkg/front_end/testcases/general/null_aware2.dart.weak.modular.expect b/pkg/front_end/testcases/general/null_aware2.dart.weak.modular.expect index 08e343f0f6c..78aa23ea0f3 100644 --- a/pkg/front_end/testcases/general/null_aware2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/null_aware2.dart.weak.modular.expect @@ -24,9 +24,9 @@ static method test() → dynamic { self::Foo foo = new self::Foo::•(); let final self::Foo #t1 = foo in #t1 == null ?{core::int?} null : #t1.{self::Foo::field} = 5; self::Foo::staticField = 5; - let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int} #t2.{self::Foo::field} = 5 : null; + let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int?} #t2.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; - let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int} #t3.{self::Foo::field} = 5 : null; + let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int?} #t3.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; core::int intValue = let final core::int #t4 = foo.{self::Foo::field}{core::int} in #t4 == null ?{core::int} 6 : #t4; core::num numValue = let final core::int #t5 = foo.{self::Foo::field}{core::int} in #t5 == null ?{core::num} 4.5 : #t5; diff --git a/pkg/front_end/testcases/general/null_aware2.dart.weak.transformed.expect b/pkg/front_end/testcases/general/null_aware2.dart.weak.transformed.expect index 08e343f0f6c..78aa23ea0f3 100644 --- a/pkg/front_end/testcases/general/null_aware2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/null_aware2.dart.weak.transformed.expect @@ -24,9 +24,9 @@ static method test() → dynamic { self::Foo foo = new self::Foo::•(); let final self::Foo #t1 = foo in #t1 == null ?{core::int?} null : #t1.{self::Foo::field} = 5; self::Foo::staticField = 5; - let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int} #t2.{self::Foo::field} = 5 : null; + let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int?} #t2.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; - let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int} #t3.{self::Foo::field} = 5 : null; + let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int?} #t3.{self::Foo::field} = 5 : null; self::Foo::staticField == null ?{core::int?} self::Foo::staticField = 5 : null; core::int intValue = let final core::int #t4 = foo.{self::Foo::field}{core::int} in #t4 == null ?{core::int} 6 : #t4; core::num numValue = let final core::int #t5 = foo.{self::Foo::field}{core::int} in #t5 == null ?{core::num} 4.5 : #t5; diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.strong.expect b/pkg/front_end/testcases/general/super_signature_access.dart.strong.expect index 93d32c4b08c..b731615fda7 100644 --- a/pkg/front_end/testcases/general/super_signature_access.dart.strong.expect +++ b/pkg/front_end/testcases/general/super_signature_access.dart.strong.expect @@ -196,7 +196,7 @@ class Subclass1 extends self::Class1 { } operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num} super.{self::Class1::[]=}(#t4, c) : null; + let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num?} super.{self::Class1::[]=}(#t4, c) : null; let final self::Class1 #t5 = new self::Class1::•() in let final core::int #t6 = b in #t5.{self::Class1::[]}(#t6){(core::int) → core::num?} == null ?{core::num?} #t5.{self::Class1::[]=}(#t6, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. Class1()[b] ??= c; // Error. ^" in c as{TypeError} core::int){(core::int, core::int) → void} : null; @@ -262,7 +262,7 @@ abstract class Mixin extends self::Class /*isMixinDeclaration*/ { abstract class Mixin1 extends self::Class1 /*isMixinDeclaration*/ { operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. + let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num?} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. super[a] ??= c; // Error. ^" in c as{TypeError} core::int) : null; let final self::Class1 #t11 = new self::Class1::•() in let final core::int #t12 = b in #t11.{self::Class1::[]}(#t12){(core::int) → core::num?} == null ?{core::num?} #t11.{self::Class1::[]=}(#t12, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.strong.transformed.expect b/pkg/front_end/testcases/general/super_signature_access.dart.strong.transformed.expect index 93d32c4b08c..b731615fda7 100644 --- a/pkg/front_end/testcases/general/super_signature_access.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/general/super_signature_access.dart.strong.transformed.expect @@ -196,7 +196,7 @@ class Subclass1 extends self::Class1 { } operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num} super.{self::Class1::[]=}(#t4, c) : null; + let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num?} super.{self::Class1::[]=}(#t4, c) : null; let final self::Class1 #t5 = new self::Class1::•() in let final core::int #t6 = b in #t5.{self::Class1::[]}(#t6){(core::int) → core::num?} == null ?{core::num?} #t5.{self::Class1::[]=}(#t6, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. Class1()[b] ??= c; // Error. ^" in c as{TypeError} core::int){(core::int, core::int) → void} : null; @@ -262,7 +262,7 @@ abstract class Mixin extends self::Class /*isMixinDeclaration*/ { abstract class Mixin1 extends self::Class1 /*isMixinDeclaration*/ { operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. + let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num?} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. super[a] ??= c; // Error. ^" in c as{TypeError} core::int) : null; let final self::Class1 #t11 = new self::Class1::•() in let final core::int #t12 = b in #t11.{self::Class1::[]}(#t12){(core::int) → core::num?} == null ?{core::num?} #t11.{self::Class1::[]=}(#t12, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.weak.expect b/pkg/front_end/testcases/general/super_signature_access.dart.weak.expect index 93d32c4b08c..b731615fda7 100644 --- a/pkg/front_end/testcases/general/super_signature_access.dart.weak.expect +++ b/pkg/front_end/testcases/general/super_signature_access.dart.weak.expect @@ -196,7 +196,7 @@ class Subclass1 extends self::Class1 { } operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num} super.{self::Class1::[]=}(#t4, c) : null; + let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num?} super.{self::Class1::[]=}(#t4, c) : null; let final self::Class1 #t5 = new self::Class1::•() in let final core::int #t6 = b in #t5.{self::Class1::[]}(#t6){(core::int) → core::num?} == null ?{core::num?} #t5.{self::Class1::[]=}(#t6, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. Class1()[b] ??= c; // Error. ^" in c as{TypeError} core::int){(core::int, core::int) → void} : null; @@ -262,7 +262,7 @@ abstract class Mixin extends self::Class /*isMixinDeclaration*/ { abstract class Mixin1 extends self::Class1 /*isMixinDeclaration*/ { operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. + let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num?} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. super[a] ??= c; // Error. ^" in c as{TypeError} core::int) : null; let final self::Class1 #t11 = new self::Class1::•() in let final core::int #t12 = b in #t11.{self::Class1::[]}(#t12){(core::int) → core::num?} == null ?{core::num?} #t11.{self::Class1::[]=}(#t12, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.weak.modular.expect b/pkg/front_end/testcases/general/super_signature_access.dart.weak.modular.expect index 93d32c4b08c..b731615fda7 100644 --- a/pkg/front_end/testcases/general/super_signature_access.dart.weak.modular.expect +++ b/pkg/front_end/testcases/general/super_signature_access.dart.weak.modular.expect @@ -196,7 +196,7 @@ class Subclass1 extends self::Class1 { } operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num} super.{self::Class1::[]=}(#t4, c) : null; + let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num?} super.{self::Class1::[]=}(#t4, c) : null; let final self::Class1 #t5 = new self::Class1::•() in let final core::int #t6 = b in #t5.{self::Class1::[]}(#t6){(core::int) → core::num?} == null ?{core::num?} #t5.{self::Class1::[]=}(#t6, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. Class1()[b] ??= c; // Error. ^" in c as{TypeError} core::int){(core::int, core::int) → void} : null; @@ -262,7 +262,7 @@ abstract class Mixin extends self::Class /*isMixinDeclaration*/ { abstract class Mixin1 extends self::Class1 /*isMixinDeclaration*/ { operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. + let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num?} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. super[a] ??= c; // Error. ^" in c as{TypeError} core::int) : null; let final self::Class1 #t11 = new self::Class1::•() in let final core::int #t12 = b in #t11.{self::Class1::[]}(#t12){(core::int) → core::num?} == null ?{core::num?} #t11.{self::Class1::[]=}(#t12, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. diff --git a/pkg/front_end/testcases/general/super_signature_access.dart.weak.transformed.expect b/pkg/front_end/testcases/general/super_signature_access.dart.weak.transformed.expect index 93d32c4b08c..b731615fda7 100644 --- a/pkg/front_end/testcases/general/super_signature_access.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/general/super_signature_access.dart.weak.transformed.expect @@ -196,7 +196,7 @@ class Subclass1 extends self::Class1 { } operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num} super.{self::Class1::[]=}(#t4, c) : null; + let final core::int #t4 = a in super.{self::Class1::[]}(#t4) == null ?{core::num?} super.{self::Class1::[]=}(#t4, c) : null; let final self::Class1 #t5 = new self::Class1::•() in let final core::int #t6 = b in #t5.{self::Class1::[]}(#t6){(core::int) → core::num?} == null ?{core::num?} #t5.{self::Class1::[]=}(#t6, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:71:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. Class1()[b] ??= c; // Error. ^" in c as{TypeError} core::int){(core::int, core::int) → void} : null; @@ -262,7 +262,7 @@ abstract class Mixin extends self::Class /*isMixinDeclaration*/ { abstract class Mixin1 extends self::Class1 /*isMixinDeclaration*/ { operator []=(covariant-by-declaration core::int a, covariant-by-declaration core::int b) → void { core::num c = a; - let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. + let final core::int #t10 = a in super.{self::Class1::[]}(#t10) == null ?{core::num?} super.{self::Class1::[]=}(#t10, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:111:18: Error: A value of type 'num' can't be assigned to a variable of type 'int'. super[a] ??= c; // Error. ^" in c as{TypeError} core::int) : null; let final self::Class1 #t11 = new self::Class1::•() in let final core::int #t12 = b in #t11.{self::Class1::[]}(#t12){(core::int) → core::num?} == null ?{core::num?} #t11.{self::Class1::[]=}(#t12, invalid-expression "pkg/front_end/testcases/general/super_signature_access.dart:112:21: Error: A value of type 'num' can't be assigned to a variable of type 'int'. diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.strong.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.strong.expect index 5f8d644a640..c037da9b746 100644 --- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.strong.expect +++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.strong.expect @@ -40,7 +40,7 @@ class Test extends core::Object { ; static method test(self::Test? t) → void { let final self::Test? #t1 = t in #t1 == null ?{self::B?} null : #t1{self::Test}.{self::Test::member} = self::f(); - let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B} #t2.{self::Test::member} = self::f() : null; + let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B?} #t2.{self::Test::member} = self::f() : null; let final self::Test? #t3 = t in #t3 == null ?{self::B?} null : #t3.{self::Test::member} = #t3.{self::Test::member}{self::B}.{self::B::+}(self::f()){(self::C) → self::B}; let final self::Test? #t4 = t in #t4 == null ?{self::B?} null : #t4.{self::Test::member} = #t4.{self::Test::member}{self::B}.{self::B::*}(self::f()){(self::B) → self::B}; let final self::Test? #t5 = t in #t5 == null ?{self::C?} null : #t5.{self::Test::member} = #t5.{self::Test::member}{self::B}.{self::B::&}(self::f()){(self::A) → self::C}; diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.strong.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.strong.transformed.expect index 5f8d644a640..c037da9b746 100644 --- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.strong.transformed.expect @@ -40,7 +40,7 @@ class Test extends core::Object { ; static method test(self::Test? t) → void { let final self::Test? #t1 = t in #t1 == null ?{self::B?} null : #t1{self::Test}.{self::Test::member} = self::f(); - let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B} #t2.{self::Test::member} = self::f() : null; + let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B?} #t2.{self::Test::member} = self::f() : null; let final self::Test? #t3 = t in #t3 == null ?{self::B?} null : #t3.{self::Test::member} = #t3.{self::Test::member}{self::B}.{self::B::+}(self::f()){(self::C) → self::B}; let final self::Test? #t4 = t in #t4 == null ?{self::B?} null : #t4.{self::Test::member} = #t4.{self::Test::member}{self::B}.{self::B::*}(self::f()){(self::B) → self::B}; let final self::Test? #t5 = t in #t5 == null ?{self::C?} null : #t5.{self::Test::member} = #t5.{self::Test::member}{self::B}.{self::B::&}(self::f()){(self::A) → self::C}; diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.expect index 5f8d644a640..c037da9b746 100644 --- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.expect +++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.expect @@ -40,7 +40,7 @@ class Test extends core::Object { ; static method test(self::Test? t) → void { let final self::Test? #t1 = t in #t1 == null ?{self::B?} null : #t1{self::Test}.{self::Test::member} = self::f(); - let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B} #t2.{self::Test::member} = self::f() : null; + let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B?} #t2.{self::Test::member} = self::f() : null; let final self::Test? #t3 = t in #t3 == null ?{self::B?} null : #t3.{self::Test::member} = #t3.{self::Test::member}{self::B}.{self::B::+}(self::f()){(self::C) → self::B}; let final self::Test? #t4 = t in #t4 == null ?{self::B?} null : #t4.{self::Test::member} = #t4.{self::Test::member}{self::B}.{self::B::*}(self::f()){(self::B) → self::B}; let final self::Test? #t5 = t in #t5 == null ?{self::C?} null : #t5.{self::Test::member} = #t5.{self::Test::member}{self::B}.{self::B::&}(self::f()){(self::A) → self::C}; diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.modular.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.modular.expect index 5f8d644a640..c037da9b746 100644 --- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.modular.expect @@ -40,7 +40,7 @@ class Test extends core::Object { ; static method test(self::Test? t) → void { let final self::Test? #t1 = t in #t1 == null ?{self::B?} null : #t1{self::Test}.{self::Test::member} = self::f(); - let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B} #t2.{self::Test::member} = self::f() : null; + let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B?} #t2.{self::Test::member} = self::f() : null; let final self::Test? #t3 = t in #t3 == null ?{self::B?} null : #t3.{self::Test::member} = #t3.{self::Test::member}{self::B}.{self::B::+}(self::f()){(self::C) → self::B}; let final self::Test? #t4 = t in #t4 == null ?{self::B?} null : #t4.{self::Test::member} = #t4.{self::Test::member}{self::B}.{self::B::*}(self::f()){(self::B) → self::B}; let final self::Test? #t5 = t in #t5 == null ?{self::C?} null : #t5.{self::Test::member} = #t5.{self::Test::member}{self::B}.{self::B::&}(self::f()){(self::A) → self::C}; diff --git a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.transformed.expect b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.transformed.expect index 5f8d644a640..c037da9b746 100644 --- a/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/inference/infer_assign_to_property_null_aware2.dart.weak.transformed.expect @@ -40,7 +40,7 @@ class Test extends core::Object { ; static method test(self::Test? t) → void { let final self::Test? #t1 = t in #t1 == null ?{self::B?} null : #t1{self::Test}.{self::Test::member} = self::f(); - let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B} #t2.{self::Test::member} = self::f() : null; + let final self::Test? #t2 = t in #t2 == null ?{self::B?} null : #t2.{self::Test::member}{self::B} == null ?{self::B?} #t2.{self::Test::member} = self::f() : null; let final self::Test? #t3 = t in #t3 == null ?{self::B?} null : #t3.{self::Test::member} = #t3.{self::Test::member}{self::B}.{self::B::+}(self::f()){(self::C) → self::B}; let final self::Test? #t4 = t in #t4 == null ?{self::B?} null : #t4.{self::Test::member} = #t4.{self::Test::member}{self::B}.{self::B::*}(self::f()){(self::B) → self::B}; let final self::Test? #t5 = t in #t5 == null ?{self::C?} null : #t5.{self::Test::member} = #t5.{self::Test::member}{self::B}.{self::B::&}(self::f()){(self::A) → self::C}; diff --git a/pkg/front_end/testcases/nnbd/issue43278.dart.strong.expect b/pkg/front_end/testcases/nnbd/issue43278.dart.strong.expect index 99727dc57e9..96b5742613e 100644 --- a/pkg/front_end/testcases/nnbd/issue43278.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/issue43278.dart.strong.expect @@ -49,7 +49,7 @@ static method test(self::A? a, self::test::T% t, dynamic d, - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. - ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. + ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. @@ -57,12 +57,12 @@ Try accessing using ?. instead. let final self::test::T% #t2 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. - ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. + ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. ^^^" in #t2.{self::A::foo}{}. = x : null; let final dynamic #t3 = d in #t3{dynamic}.foo == null ?{dynamic} #t3.{dynamic}foo = x : null; - let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int} #t5.{self::A::foo} = x : null; + let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int?} #t5.{self::A::foo} = x : null; } static extension-member method Extension|get#fooExtension(lowered final self::B #this) → core::int? return null; @@ -74,7 +74,7 @@ static method testExtension(self::B? b, self::testExtension: - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. @@ -82,10 +82,10 @@ Try accessing using ?. instead. let final self::testExtension::T% #t7 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. ^^^^^^^^^^^^" in self::Extension|set#fooExtension(#t7, x) : null; - let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int} self::Extension|set#fooExtension(#t9, x) : null; + let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int?} self::Extension|set#fooExtension(#t9, x) : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/issue43278.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/issue43278.dart.strong.transformed.expect index 99727dc57e9..96b5742613e 100644 --- a/pkg/front_end/testcases/nnbd/issue43278.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue43278.dart.strong.transformed.expect @@ -49,7 +49,7 @@ static method test(self::A? a, self::test::T% t, dynamic d, - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. - ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. + ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. @@ -57,12 +57,12 @@ Try accessing using ?. instead. let final self::test::T% #t2 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. - ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. + ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. ^^^" in #t2.{self::A::foo}{}. = x : null; let final dynamic #t3 = d in #t3{dynamic}.foo == null ?{dynamic} #t3.{dynamic}foo = x : null; - let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int} #t5.{self::A::foo} = x : null; + let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int?} #t5.{self::A::foo} = x : null; } static extension-member method Extension|get#fooExtension(lowered final self::B #this) → core::int? return null; @@ -74,7 +74,7 @@ static method testExtension(self::B? b, self::testExtension: - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. @@ -82,10 +82,10 @@ Try accessing using ?. instead. let final self::testExtension::T% #t7 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. ^^^^^^^^^^^^" in self::Extension|set#fooExtension(#t7, x) : null; - let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int} self::Extension|set#fooExtension(#t9, x) : null; + let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int?} self::Extension|set#fooExtension(#t9, x) : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.expect b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.expect index 99727dc57e9..96b5742613e 100644 --- a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.expect @@ -49,7 +49,7 @@ static method test(self::A? a, self::test::T% t, dynamic d, - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. - ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. + ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. @@ -57,12 +57,12 @@ Try accessing using ?. instead. let final self::test::T% #t2 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. - ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. + ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. ^^^" in #t2.{self::A::foo}{}. = x : null; let final dynamic #t3 = d in #t3{dynamic}.foo == null ?{dynamic} #t3.{dynamic}foo = x : null; - let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int} #t5.{self::A::foo} = x : null; + let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int?} #t5.{self::A::foo} = x : null; } static extension-member method Extension|get#fooExtension(lowered final self::B #this) → core::int? return null; @@ -74,7 +74,7 @@ static method testExtension(self::B? b, self::testExtension: - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. @@ -82,10 +82,10 @@ Try accessing using ?. instead. let final self::testExtension::T% #t7 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. ^^^^^^^^^^^^" in self::Extension|set#fooExtension(#t7, x) : null; - let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int} self::Extension|set#fooExtension(#t9, x) : null; + let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int?} self::Extension|set#fooExtension(#t9, x) : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.modular.expect index 99727dc57e9..96b5742613e 100644 --- a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.modular.expect @@ -49,7 +49,7 @@ static method test(self::A? a, self::test::T% t, dynamic d, - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. - ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. + ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. @@ -57,12 +57,12 @@ Try accessing using ?. instead. let final self::test::T% #t2 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. - ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. + ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. ^^^" in #t2.{self::A::foo}{}. = x : null; let final dynamic #t3 = d in #t3{dynamic}.foo == null ?{dynamic} #t3.{dynamic}foo = x : null; - let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int} #t5.{self::A::foo} = x : null; + let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int?} #t5.{self::A::foo} = x : null; } static extension-member method Extension|get#fooExtension(lowered final self::B #this) → core::int? return null; @@ -74,7 +74,7 @@ static method testExtension(self::B? b, self::testExtension: - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. @@ -82,10 +82,10 @@ Try accessing using ?. instead. let final self::testExtension::T% #t7 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. ^^^^^^^^^^^^" in self::Extension|set#fooExtension(#t7, x) : null; - let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int} self::Extension|set#fooExtension(#t9, x) : null; + let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int?} self::Extension|set#fooExtension(#t9, x) : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.transformed.expect index 99727dc57e9..96b5742613e 100644 --- a/pkg/front_end/testcases/nnbd/issue43278.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/issue43278.dart.weak.transformed.expect @@ -49,7 +49,7 @@ static method test(self::A? a, self::test::T% t, dynamic d, - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. - ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. + ^^^" in #t1.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:13:5: Error: Property 'foo' cannot be accessed on 'A?' because it is potentially null. - 'A' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. a.foo ??= x; // Error. @@ -57,12 +57,12 @@ Try accessing using ?. instead. let final self::test::T% #t2 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. - ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. + ^^^" in #t2.{self::A::foo}{}.{core::int?} == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:14:5: Error: Property 'foo' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.foo ??= x; // Error. ^^^" in #t2.{self::A::foo}{}. = x : null; let final dynamic #t3 = d in #t3{dynamic}.foo == null ?{dynamic} #t3.{dynamic}foo = x : null; - let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int} #t5.{self::A::foo} = x : null; + let final self::A? #t4 = a in #t4 == null ?{core::int?} null : let final self::A #t5 = #t4{self::A}.{self::A::bar}{self::A} in #t5.{self::A::foo}{core::int?} == null ?{core::int?} #t5.{self::A::foo} = x : null; } static extension-member method Extension|get#fooExtension(lowered final self::B #this) → core::int? return null; @@ -74,7 +74,7 @@ static method testExtension(self::B? b, self::testExtension: - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t6) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:28:5: Error: Property 'fooExtension' cannot be accessed on 'B?' because it is potentially null. - 'B' is from 'pkg/front_end/testcases/nnbd/issue43278.dart'. Try accessing using ?. instead. b.fooExtension ??= x; // Error. @@ -82,10 +82,10 @@ Try accessing using ?. instead. let final self::testExtension::T% #t7 = t in invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. - ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. + ^^^^^^^^^^^^" in self::Extension|get#fooExtension(#t7) == null ?{core::int?} invalid-expression "pkg/front_end/testcases/nnbd/issue43278.dart:29:5: Error: Property 'fooExtension' cannot be accessed on 'T' because it is potentially null. Try accessing using ?. instead. t.fooExtension ??= x; // Error. ^^^^^^^^^^^^" in self::Extension|set#fooExtension(#t7, x) : null; - let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int} self::Extension|set#fooExtension(#t9, x) : null; + let final self::B? #t8 = b in #t8 == null ?{core::int?} null : let final self::B #t9 = self::Extension|get#barExtension(#t8{self::B}) in self::Extension|get#fooExtension(#t9) == null ?{core::int?} self::Extension|set#fooExtension(#t9, x) : null; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/null_access.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_access.dart.strong.expect index d9cb5b699b0..d273c3907b9 100644 --- a/pkg/front_end/testcases/nnbd/null_access.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/null_access.dart.strong.expect @@ -175,10 +175,10 @@ Try accessing using ?. instead. ^" in invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null. nullableClass?.nullableField += 2; // error ^" in #t20.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num} as{TypeError} core::int?; - let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t21.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int} #t22.{self::Class::nullableField} = 0 : null; - let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t24.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int} #t26.{self::Class::nullableField} = 0 : null; + let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t21.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t22.{self::Class::nullableField} = 0 : null; + let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t24.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t26.{self::Class::nullableField} = 0 : null; invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:57:16: Error: Can't use an expression of type 'Class?' as a function because it's potentially null. - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'. Try calling using ?.call instead. diff --git a/pkg/front_end/testcases/nnbd/null_access.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_access.dart.strong.transformed.expect index 0234465f56b..569e1c37474 100644 --- a/pkg/front_end/testcases/nnbd/null_access.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_access.dart.strong.transformed.expect @@ -175,10 +175,10 @@ Try accessing using ?. instead. ^" in invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null. nullableClass?.nullableField += 2; // error ^" in #t20.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num} as{TypeError,Unchecked} core::int?; - let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t21.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int} #t22.{self::Class::nullableField} = 0 : null; - let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t24.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int} #t26.{self::Class::nullableField} = 0 : null; + let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t21.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t22.{self::Class::nullableField} = 0 : null; + let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t24.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t26.{self::Class::nullableField} = 0 : null; invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:57:16: Error: Can't use an expression of type 'Class?' as a function because it's potentially null. - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'. Try calling using ?.call instead. diff --git a/pkg/front_end/testcases/nnbd/null_access.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_access.dart.weak.expect index d9cb5b699b0..d273c3907b9 100644 --- a/pkg/front_end/testcases/nnbd/null_access.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/null_access.dart.weak.expect @@ -175,10 +175,10 @@ Try accessing using ?. instead. ^" in invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null. nullableClass?.nullableField += 2; // error ^" in #t20.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num} as{TypeError} core::int?; - let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t21.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int} #t22.{self::Class::nullableField} = 0 : null; - let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t24.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int} #t26.{self::Class::nullableField} = 0 : null; + let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t21.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t22.{self::Class::nullableField} = 0 : null; + let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t24.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t26.{self::Class::nullableField} = 0 : null; invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:57:16: Error: Can't use an expression of type 'Class?' as a function because it's potentially null. - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'. Try calling using ?.call instead. diff --git a/pkg/front_end/testcases/nnbd/null_access.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/null_access.dart.weak.modular.expect index d9cb5b699b0..d273c3907b9 100644 --- a/pkg/front_end/testcases/nnbd/null_access.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/null_access.dart.weak.modular.expect @@ -175,10 +175,10 @@ Try accessing using ?. instead. ^" in invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null. nullableClass?.nullableField += 2; // error ^" in #t20.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num} as{TypeError} core::int?; - let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t21.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int} #t22.{self::Class::nullableField} = 0 : null; - let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t24.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int} #t26.{self::Class::nullableField} = 0 : null; + let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t21.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t22.{self::Class::nullableField} = 0 : null; + let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t24.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t26.{self::Class::nullableField} = 0 : null; invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:57:16: Error: Can't use an expression of type 'Class?' as a function because it's potentially null. - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'. Try calling using ?.call instead. diff --git a/pkg/front_end/testcases/nnbd/null_access.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_access.dart.weak.transformed.expect index 0234465f56b..569e1c37474 100644 --- a/pkg/front_end/testcases/nnbd/null_access.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_access.dart.weak.transformed.expect @@ -175,10 +175,10 @@ Try accessing using ?. instead. ^" in invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:49:32: Error: Operator '+' cannot be called on 'int?' because it is potentially null. nullableClass?.nullableField += 2; // error ^" in #t20.{self::Class::nullableField}{core::int?}.{core::num::+}(2){(core::num) → core::num} as{TypeError,Unchecked} core::int?; - let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t21.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int} #t22.{self::Class::nullableField} = 0 : null; - let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int} #t24.{self::Class::nonNullableField} = 0 : null; - let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int} #t26.{self::Class::nullableField} = 0 : null; + let final self::Class? #t21 = nullableClass in #t21 == null ?{core::int?} null : #t21.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t21.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t22 = nullableClass in #t22 == null ?{core::int?} null : #t22.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t22.{self::Class::nullableField} = 0 : null; + let final self::Class? #t23 = nullableClass in #t23 == null ?{core::int?} null : let final self::Class #t24 = #t23{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t24.{self::Class::nonNullableField}{core::int} == null ?{core::int?} #t24.{self::Class::nonNullableField} = 0 : null; + let final self::Class? #t25 = nullableClass in #t25 == null ?{core::int?} null : let final self::Class #t26 = #t25{self::Class}.{self::Class::nonNullableClass}{self::Class} in #t26.{self::Class::nullableField}{core::int?} == null ?{core::int?} #t26.{self::Class::nullableField} = 0 : null; invalid-expression "pkg/front_end/testcases/nnbd/null_access.dart:57:16: Error: Can't use an expression of type 'Class?' as a function because it's potentially null. - 'Class' is from 'pkg/front_end/testcases/nnbd/null_access.dart'. Try calling using ?.call instead. diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect index 71464624c87..e0f02c152b2 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.expect @@ -251,9 +251,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t260 = n1 in #t260 == null ?{self::Class1?} null : let final self::Class1? #t261 = #t260.{self::Class1::nullable1}{self::Class1?} in #t261 == null ?{self::Class1} #t260.{self::Class1::nullable1} = n1{self::Class1} : #t261{self::Class1}; - let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t264 = n1 in #t264 == null ?{self::Class1?} null : let final self::Class1 #t265 = #t264{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t266 = #t265.{self::Class1::nullable1}{self::Class1?} in #t266 == null ?{self::Class1} #t265.{self::Class1::nullable1} = n1{self::Class1} : #t266{self::Class1}; let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class1?} null : let final self::Class1 #t268 = #t267{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t269 = n1{self::Class1} in #t268.{self::Class1::[]}(#t269){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t268.{self::Class1::[]=}(#t269, n1{self::Class1}){(self::Class1?, self::Class1?) → void} : null; n1 = let final self::Class1? #t270 = n1 in #t270 == null ?{self::Class1?} null : let final self::Class1 #t271 = #t270{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t272 = n1{self::Class1} in let final self::Class1? #t273 = #t271.{self::Class1::[]}(#t272){(self::Class1?) → self::Class1?} in #t273 == null ?{self::Class1} let final self::Class1 #t274 = n1{self::Class1} in let final void #t275 = #t271.{self::Class1::[]=}(#t272, #t274){(self::Class1?, self::Class1?) → void} in #t274 : #t273{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect index 71464624c87..e0f02c152b2 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.strong.transformed.expect @@ -251,9 +251,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t260 = n1 in #t260 == null ?{self::Class1?} null : let final self::Class1? #t261 = #t260.{self::Class1::nullable1}{self::Class1?} in #t261 == null ?{self::Class1} #t260.{self::Class1::nullable1} = n1{self::Class1} : #t261{self::Class1}; - let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t264 = n1 in #t264 == null ?{self::Class1?} null : let final self::Class1 #t265 = #t264{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t266 = #t265.{self::Class1::nullable1}{self::Class1?} in #t266 == null ?{self::Class1} #t265.{self::Class1::nullable1} = n1{self::Class1} : #t266{self::Class1}; let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class1?} null : let final self::Class1 #t268 = #t267{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t269 = n1{self::Class1} in #t268.{self::Class1::[]}(#t269){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t268.{self::Class1::[]=}(#t269, n1{self::Class1}){(self::Class1?, self::Class1?) → void} : null; n1 = let final self::Class1? #t270 = n1 in #t270 == null ?{self::Class1?} null : let final self::Class1 #t271 = #t270{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t272 = n1{self::Class1} in let final self::Class1? #t273 = #t271.{self::Class1::[]}(#t272){(self::Class1?) → self::Class1?} in #t273 == null ?{self::Class1} let final self::Class1 #t274 = n1{self::Class1} in let final void #t275 = #t271.{self::Class1::[]=}(#t272, #t274){(self::Class1?, self::Class1?) → void} in #t274 : #t273{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect index 71464624c87..e0f02c152b2 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.expect @@ -251,9 +251,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t260 = n1 in #t260 == null ?{self::Class1?} null : let final self::Class1? #t261 = #t260.{self::Class1::nullable1}{self::Class1?} in #t261 == null ?{self::Class1} #t260.{self::Class1::nullable1} = n1{self::Class1} : #t261{self::Class1}; - let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t264 = n1 in #t264 == null ?{self::Class1?} null : let final self::Class1 #t265 = #t264{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t266 = #t265.{self::Class1::nullable1}{self::Class1?} in #t266 == null ?{self::Class1} #t265.{self::Class1::nullable1} = n1{self::Class1} : #t266{self::Class1}; let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class1?} null : let final self::Class1 #t268 = #t267{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t269 = n1{self::Class1} in #t268.{self::Class1::[]}(#t269){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t268.{self::Class1::[]=}(#t269, n1{self::Class1}){(self::Class1?, self::Class1?) → void} : null; n1 = let final self::Class1? #t270 = n1 in #t270 == null ?{self::Class1?} null : let final self::Class1 #t271 = #t270{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t272 = n1{self::Class1} in let final self::Class1? #t273 = #t271.{self::Class1::[]}(#t272){(self::Class1?) → self::Class1?} in #t273 == null ?{self::Class1} let final self::Class1 #t274 = n1{self::Class1} in let final void #t275 = #t271.{self::Class1::[]=}(#t272, #t274){(self::Class1?, self::Class1?) → void} in #t274 : #t273{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.modular.expect index 71464624c87..e0f02c152b2 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.modular.expect @@ -251,9 +251,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t260 = n1 in #t260 == null ?{self::Class1?} null : let final self::Class1? #t261 = #t260.{self::Class1::nullable1}{self::Class1?} in #t261 == null ?{self::Class1} #t260.{self::Class1::nullable1} = n1{self::Class1} : #t261{self::Class1}; - let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t264 = n1 in #t264 == null ?{self::Class1?} null : let final self::Class1 #t265 = #t264{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t266 = #t265.{self::Class1::nullable1}{self::Class1?} in #t266 == null ?{self::Class1} #t265.{self::Class1::nullable1} = n1{self::Class1} : #t266{self::Class1}; let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class1?} null : let final self::Class1 #t268 = #t267{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t269 = n1{self::Class1} in #t268.{self::Class1::[]}(#t269){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t268.{self::Class1::[]=}(#t269, n1{self::Class1}){(self::Class1?, self::Class1?) → void} : null; n1 = let final self::Class1? #t270 = n1 in #t270 == null ?{self::Class1?} null : let final self::Class1 #t271 = #t270{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t272 = n1{self::Class1} in let final self::Class1? #t273 = #t271.{self::Class1::[]}(#t272){(self::Class1?) → self::Class1?} in #t273 == null ?{self::Class1} let final self::Class1 #t274 = n1{self::Class1} in let final void #t275 = #t271.{self::Class1::[]=}(#t272, #t274){(self::Class1?, self::Class1?) → void} in #t274 : #t273{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect index 71464624c87..e0f02c152b2 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting.dart.weak.transformed.expect @@ -251,9 +251,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t259 = n1 in #t259 == null ?{self::Class1?} null : #t259.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t259.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t260 = n1 in #t260 == null ?{self::Class1?} null : let final self::Class1? #t261 = #t260.{self::Class1::nullable1}{self::Class1?} in #t261 == null ?{self::Class1} #t260.{self::Class1::nullable1} = n1{self::Class1} : #t261{self::Class1}; - let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; + let final self::Class1? #t262 = n1 in #t262 == null ?{self::Class1?} null : let final self::Class1 #t263 = #t262{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in #t263.{self::Class1::nullable1}{self::Class1?} == null ?{self::Class1?} #t263.{self::Class1::nullable1} = n1{self::Class1} : null; n1 = let final self::Class1? #t264 = n1 in #t264 == null ?{self::Class1?} null : let final self::Class1 #t265 = #t264{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1? #t266 = #t265.{self::Class1::nullable1}{self::Class1?} in #t266 == null ?{self::Class1} #t265.{self::Class1::nullable1} = n1{self::Class1} : #t266{self::Class1}; let final self::Class1? #t267 = n1 in #t267 == null ?{self::Class1?} null : let final self::Class1 #t268 = #t267{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t269 = n1{self::Class1} in #t268.{self::Class1::[]}(#t269){(self::Class1?) → self::Class1?} == null ?{self::Class1?} #t268.{self::Class1::[]=}(#t269, n1{self::Class1}){(self::Class1?, self::Class1?) → void} : null; n1 = let final self::Class1? #t270 = n1 in #t270 == null ?{self::Class1?} null : let final self::Class1 #t271 = #t270{self::Class1}.{self::Class1::nonNullable1}{self::Class1} in let final self::Class1 #t272 = n1{self::Class1} in let final self::Class1? #t273 = #t271.{self::Class1::[]}(#t272){(self::Class1?) → self::Class1?} in #t273 == null ?{self::Class1} let final self::Class1 #t274 = n1{self::Class1} in let final void #t275 = #t271.{self::Class1::[]=}(#t272, #t274){(self::Class1?, self::Class1?) → void} in #t274 : #t273{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect index bc88c64345b..6680625fd89 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; + let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1?} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; n1 = let final self::Class1? #t350 = n1 in #t350 == null ?{self::Class1?} null : let final self::Class1? #t351 = self::Extension1|get#nullable1(#t350) in #t351 == null ?{self::Class1} let final self::Class1 #t352 = n1{self::Class1} in let final void #t353 = self::Extension1|set#nullable1(#t350, #t352) in #t352 : #t351{self::Class1}; - let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; + let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1?} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; n1 = let final self::Class1? #t356 = n1 in #t356 == null ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in let final self::Class1? #t358 = self::Extension1|get#nullable1(#t357) in #t358 == null ?{self::Class1} let final self::Class1 #t359 = n1{self::Class1} in let final void #t360 = self::Extension1|set#nullable1(#t357, #t359) in #t359 : #t358{self::Class1}; let final self::Class1? #t361 = n1 in #t361 == null ?{self::Class1?} null : let final self::Class1 #t362 = self::Extension1|get#nonNullable1(#t361{self::Class1}) in let final self::Class1 #t363 = n1{self::Class1} in self::Extension1|[](#t362, #t363) == null ?{self::Class1?} self::Extension1|[]=(#t362, #t363, n1{self::Class1}) : null; n1 = let final self::Class1? #t364 = n1 in #t364 == null ?{self::Class1?} null : let final self::Class1 #t365 = self::Extension1|get#nonNullable1(#t364{self::Class1}) in let final self::Class1 #t366 = n1{self::Class1} in let final self::Class1? #t367 = self::Extension1|[](#t365, #t366) in #t367 == null ?{self::Class1} let final self::Class1 #t368 = n1{self::Class1} in let final void #t369 = self::Extension1|[]=(#t365, #t366, #t368) in #t368 : #t367{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect index bc88c64345b..6680625fd89 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.strong.transformed.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; + let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1?} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; n1 = let final self::Class1? #t350 = n1 in #t350 == null ?{self::Class1?} null : let final self::Class1? #t351 = self::Extension1|get#nullable1(#t350) in #t351 == null ?{self::Class1} let final self::Class1 #t352 = n1{self::Class1} in let final void #t353 = self::Extension1|set#nullable1(#t350, #t352) in #t352 : #t351{self::Class1}; - let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; + let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1?} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; n1 = let final self::Class1? #t356 = n1 in #t356 == null ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in let final self::Class1? #t358 = self::Extension1|get#nullable1(#t357) in #t358 == null ?{self::Class1} let final self::Class1 #t359 = n1{self::Class1} in let final void #t360 = self::Extension1|set#nullable1(#t357, #t359) in #t359 : #t358{self::Class1}; let final self::Class1? #t361 = n1 in #t361 == null ?{self::Class1?} null : let final self::Class1 #t362 = self::Extension1|get#nonNullable1(#t361{self::Class1}) in let final self::Class1 #t363 = n1{self::Class1} in self::Extension1|[](#t362, #t363) == null ?{self::Class1?} self::Extension1|[]=(#t362, #t363, n1{self::Class1}) : null; n1 = let final self::Class1? #t364 = n1 in #t364 == null ?{self::Class1?} null : let final self::Class1 #t365 = self::Extension1|get#nonNullable1(#t364{self::Class1}) in let final self::Class1 #t366 = n1{self::Class1} in let final self::Class1? #t367 = self::Extension1|[](#t365, #t366) in #t367 == null ?{self::Class1} let final self::Class1 #t368 = n1{self::Class1} in let final void #t369 = self::Extension1|[]=(#t365, #t366, #t368) in #t368 : #t367{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect index bc88c64345b..6680625fd89 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; + let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1?} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; n1 = let final self::Class1? #t350 = n1 in #t350 == null ?{self::Class1?} null : let final self::Class1? #t351 = self::Extension1|get#nullable1(#t350) in #t351 == null ?{self::Class1} let final self::Class1 #t352 = n1{self::Class1} in let final void #t353 = self::Extension1|set#nullable1(#t350, #t352) in #t352 : #t351{self::Class1}; - let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; + let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1?} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; n1 = let final self::Class1? #t356 = n1 in #t356 == null ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in let final self::Class1? #t358 = self::Extension1|get#nullable1(#t357) in #t358 == null ?{self::Class1} let final self::Class1 #t359 = n1{self::Class1} in let final void #t360 = self::Extension1|set#nullable1(#t357, #t359) in #t359 : #t358{self::Class1}; let final self::Class1? #t361 = n1 in #t361 == null ?{self::Class1?} null : let final self::Class1 #t362 = self::Extension1|get#nonNullable1(#t361{self::Class1}) in let final self::Class1 #t363 = n1{self::Class1} in self::Extension1|[](#t362, #t363) == null ?{self::Class1?} self::Extension1|[]=(#t362, #t363, n1{self::Class1}) : null; n1 = let final self::Class1? #t364 = n1 in #t364 == null ?{self::Class1?} null : let final self::Class1 #t365 = self::Extension1|get#nonNullable1(#t364{self::Class1}) in let final self::Class1 #t366 = n1{self::Class1} in let final self::Class1? #t367 = self::Extension1|[](#t365, #t366) in #t367 == null ?{self::Class1} let final self::Class1 #t368 = n1{self::Class1} in let final void #t369 = self::Extension1|[]=(#t365, #t366, #t368) in #t368 : #t367{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.modular.expect index bc88c64345b..6680625fd89 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.modular.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; + let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1?} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; n1 = let final self::Class1? #t350 = n1 in #t350 == null ?{self::Class1?} null : let final self::Class1? #t351 = self::Extension1|get#nullable1(#t350) in #t351 == null ?{self::Class1} let final self::Class1 #t352 = n1{self::Class1} in let final void #t353 = self::Extension1|set#nullable1(#t350, #t352) in #t352 : #t351{self::Class1}; - let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; + let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1?} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; n1 = let final self::Class1? #t356 = n1 in #t356 == null ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in let final self::Class1? #t358 = self::Extension1|get#nullable1(#t357) in #t358 == null ?{self::Class1} let final self::Class1 #t359 = n1{self::Class1} in let final void #t360 = self::Extension1|set#nullable1(#t357, #t359) in #t359 : #t358{self::Class1}; let final self::Class1? #t361 = n1 in #t361 == null ?{self::Class1?} null : let final self::Class1 #t362 = self::Extension1|get#nonNullable1(#t361{self::Class1}) in let final self::Class1 #t363 = n1{self::Class1} in self::Extension1|[](#t362, #t363) == null ?{self::Class1?} self::Extension1|[]=(#t362, #t363, n1{self::Class1}) : null; n1 = let final self::Class1? #t364 = n1 in #t364 == null ?{self::Class1?} null : let final self::Class1 #t365 = self::Extension1|get#nonNullable1(#t364{self::Class1}) in let final self::Class1 #t366 = n1{self::Class1} in let final self::Class1? #t367 = self::Extension1|[](#t365, #t366) in #t367 == null ?{self::Class1} let final self::Class1 #t368 = n1{self::Class1} in let final void #t369 = self::Extension1|[]=(#t365, #t366, #t368) in #t368 : #t367{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect index bc88c64345b..6680625fd89 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_explicit_extension.dart.weak.transformed.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; + let final self::Class1? #t349 = n1 in #t349 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t349) == null ?{self::Class1?} self::Extension1|set#nullable1(#t349, n1{self::Class1}) : null; n1 = let final self::Class1? #t350 = n1 in #t350 == null ?{self::Class1?} null : let final self::Class1? #t351 = self::Extension1|get#nullable1(#t350) in #t351 == null ?{self::Class1} let final self::Class1 #t352 = n1{self::Class1} in let final void #t353 = self::Extension1|set#nullable1(#t350, #t352) in #t352 : #t351{self::Class1}; - let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; + let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in self::Extension1|get#nullable1(#t355) == null ?{self::Class1?} self::Extension1|set#nullable1(#t355, n1{self::Class1}) : null; n1 = let final self::Class1? #t356 = n1 in #t356 == null ?{self::Class1?} null : let final self::Class1 #t357 = self::Extension1|get#nonNullable1(#t356{self::Class1}) in let final self::Class1? #t358 = self::Extension1|get#nullable1(#t357) in #t358 == null ?{self::Class1} let final self::Class1 #t359 = n1{self::Class1} in let final void #t360 = self::Extension1|set#nullable1(#t357, #t359) in #t359 : #t358{self::Class1}; let final self::Class1? #t361 = n1 in #t361 == null ?{self::Class1?} null : let final self::Class1 #t362 = self::Extension1|get#nonNullable1(#t361{self::Class1}) in let final self::Class1 #t363 = n1{self::Class1} in self::Extension1|[](#t362, #t363) == null ?{self::Class1?} self::Extension1|[]=(#t362, #t363, n1{self::Class1}) : null; n1 = let final self::Class1? #t364 = n1 in #t364 == null ?{self::Class1?} null : let final self::Class1 #t365 = self::Extension1|get#nonNullable1(#t364{self::Class1}) in let final self::Class1 #t366 = n1{self::Class1} in let final self::Class1? #t367 = self::Extension1|[](#t365, #t366) in #t367 == null ?{self::Class1} let final self::Class1 #t368 = n1{self::Class1} in let final void #t369 = self::Extension1|[]=(#t365, #t366, #t368) in #t368 : #t367{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect index ff241ba7d7b..0db733562fc 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; + let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1?} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; n1 = let final self::Class1? #t348 = n1 in #t348 == null ?{self::Class1?} null : let final self::Class1? #t349 = self::Extension1|get#nullable1(#t348) in #t349 == null ?{self::Class1} let final self::Class1 #t350 = n1{self::Class1} in let final void #t351 = self::Extension1|set#nullable1(#t348, #t350) in #t350 : #t349{self::Class1}; - let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; + let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1?} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; n1 = let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in let final self::Class1? #t356 = self::Extension1|get#nullable1(#t355) in #t356 == null ?{self::Class1} let final self::Class1 #t357 = n1{self::Class1} in let final void #t358 = self::Extension1|set#nullable1(#t355, #t357) in #t357 : #t356{self::Class1}; let final self::Class1? #t359 = n1 in #t359 == null ?{self::Class1?} null : let final self::Class1 #t360 = self::Extension1|get#nonNullable1(#t359{self::Class1}) in let final self::Class1 #t361 = n1{self::Class1} in self::Extension1|[](#t360, #t361) == null ?{self::Class1?} self::Extension1|[]=(#t360, #t361, n1{self::Class1}) : null; n1 = let final self::Class1? #t362 = n1 in #t362 == null ?{self::Class1?} null : let final self::Class1 #t363 = self::Extension1|get#nonNullable1(#t362{self::Class1}) in let final self::Class1 #t364 = n1{self::Class1} in let final self::Class1? #t365 = self::Extension1|[](#t363, #t364) in #t365 == null ?{self::Class1} let final self::Class1 #t366 = n1{self::Class1} in let final void #t367 = self::Extension1|[]=(#t363, #t364, #t366) in #t366 : #t365{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect index ff241ba7d7b..0db733562fc 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.strong.transformed.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; + let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1?} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; n1 = let final self::Class1? #t348 = n1 in #t348 == null ?{self::Class1?} null : let final self::Class1? #t349 = self::Extension1|get#nullable1(#t348) in #t349 == null ?{self::Class1} let final self::Class1 #t350 = n1{self::Class1} in let final void #t351 = self::Extension1|set#nullable1(#t348, #t350) in #t350 : #t349{self::Class1}; - let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; + let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1?} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; n1 = let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in let final self::Class1? #t356 = self::Extension1|get#nullable1(#t355) in #t356 == null ?{self::Class1} let final self::Class1 #t357 = n1{self::Class1} in let final void #t358 = self::Extension1|set#nullable1(#t355, #t357) in #t357 : #t356{self::Class1}; let final self::Class1? #t359 = n1 in #t359 == null ?{self::Class1?} null : let final self::Class1 #t360 = self::Extension1|get#nonNullable1(#t359{self::Class1}) in let final self::Class1 #t361 = n1{self::Class1} in self::Extension1|[](#t360, #t361) == null ?{self::Class1?} self::Extension1|[]=(#t360, #t361, n1{self::Class1}) : null; n1 = let final self::Class1? #t362 = n1 in #t362 == null ?{self::Class1?} null : let final self::Class1 #t363 = self::Extension1|get#nonNullable1(#t362{self::Class1}) in let final self::Class1 #t364 = n1{self::Class1} in let final self::Class1? #t365 = self::Extension1|[](#t363, #t364) in #t365 == null ?{self::Class1} let final self::Class1 #t366 = n1{self::Class1} in let final void #t367 = self::Extension1|[]=(#t363, #t364, #t366) in #t366 : #t365{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect index ff241ba7d7b..0db733562fc 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; + let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1?} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; n1 = let final self::Class1? #t348 = n1 in #t348 == null ?{self::Class1?} null : let final self::Class1? #t349 = self::Extension1|get#nullable1(#t348) in #t349 == null ?{self::Class1} let final self::Class1 #t350 = n1{self::Class1} in let final void #t351 = self::Extension1|set#nullable1(#t348, #t350) in #t350 : #t349{self::Class1}; - let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; + let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1?} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; n1 = let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in let final self::Class1? #t356 = self::Extension1|get#nullable1(#t355) in #t356 == null ?{self::Class1} let final self::Class1 #t357 = n1{self::Class1} in let final void #t358 = self::Extension1|set#nullable1(#t355, #t357) in #t357 : #t356{self::Class1}; let final self::Class1? #t359 = n1 in #t359 == null ?{self::Class1?} null : let final self::Class1 #t360 = self::Extension1|get#nonNullable1(#t359{self::Class1}) in let final self::Class1 #t361 = n1{self::Class1} in self::Extension1|[](#t360, #t361) == null ?{self::Class1?} self::Extension1|[]=(#t360, #t361, n1{self::Class1}) : null; n1 = let final self::Class1? #t362 = n1 in #t362 == null ?{self::Class1?} null : let final self::Class1 #t363 = self::Extension1|get#nonNullable1(#t362{self::Class1}) in let final self::Class1 #t364 = n1{self::Class1} in let final self::Class1? #t365 = self::Extension1|[](#t363, #t364) in #t365 == null ?{self::Class1} let final self::Class1 #t366 = n1{self::Class1} in let final void #t367 = self::Extension1|[]=(#t363, #t364, #t366) in #t366 : #t365{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.modular.expect index ff241ba7d7b..0db733562fc 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.modular.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; + let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1?} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; n1 = let final self::Class1? #t348 = n1 in #t348 == null ?{self::Class1?} null : let final self::Class1? #t349 = self::Extension1|get#nullable1(#t348) in #t349 == null ?{self::Class1} let final self::Class1 #t350 = n1{self::Class1} in let final void #t351 = self::Extension1|set#nullable1(#t348, #t350) in #t350 : #t349{self::Class1}; - let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; + let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1?} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; n1 = let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in let final self::Class1? #t356 = self::Extension1|get#nullable1(#t355) in #t356 == null ?{self::Class1} let final self::Class1 #t357 = n1{self::Class1} in let final void #t358 = self::Extension1|set#nullable1(#t355, #t357) in #t357 : #t356{self::Class1}; let final self::Class1? #t359 = n1 in #t359 == null ?{self::Class1?} null : let final self::Class1 #t360 = self::Extension1|get#nonNullable1(#t359{self::Class1}) in let final self::Class1 #t361 = n1{self::Class1} in self::Extension1|[](#t360, #t361) == null ?{self::Class1?} self::Extension1|[]=(#t360, #t361, n1{self::Class1}) : null; n1 = let final self::Class1? #t362 = n1 in #t362 == null ?{self::Class1?} null : let final self::Class1 #t363 = self::Extension1|get#nonNullable1(#t362{self::Class1}) in let final self::Class1 #t364 = n1{self::Class1} in let final self::Class1? #t365 = self::Extension1|[](#t363, #t364) in #t365 == null ?{self::Class1} let final self::Class1 #t366 = n1{self::Class1} in let final void #t367 = self::Extension1|[]=(#t363, #t364, #t366) in #t366 : #t365{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect index ff241ba7d7b..0db733562fc 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_extension.dart.weak.transformed.expect @@ -280,9 +280,9 @@ static method operatorAccess(self::Class1? n1, self::Class2? n2) → void { } static method ifNull(self::Class1? n1) → void { self::Class1? nullable1 = n1; - let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; + let final self::Class1? #t347 = n1 in #t347 == null ?{self::Class1?} null : self::Extension1|get#nullable1(#t347) == null ?{self::Class1?} self::Extension1|set#nullable1(#t347, n1{self::Class1}) : null; n1 = let final self::Class1? #t348 = n1 in #t348 == null ?{self::Class1?} null : let final self::Class1? #t349 = self::Extension1|get#nullable1(#t348) in #t349 == null ?{self::Class1} let final self::Class1 #t350 = n1{self::Class1} in let final void #t351 = self::Extension1|set#nullable1(#t348, #t350) in #t350 : #t349{self::Class1}; - let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; + let final self::Class1? #t352 = n1 in #t352 == null ?{self::Class1?} null : let final self::Class1 #t353 = self::Extension1|get#nonNullable1(#t352{self::Class1}) in self::Extension1|get#nullable1(#t353) == null ?{self::Class1?} self::Extension1|set#nullable1(#t353, n1{self::Class1}) : null; n1 = let final self::Class1? #t354 = n1 in #t354 == null ?{self::Class1?} null : let final self::Class1 #t355 = self::Extension1|get#nonNullable1(#t354{self::Class1}) in let final self::Class1? #t356 = self::Extension1|get#nullable1(#t355) in #t356 == null ?{self::Class1} let final self::Class1 #t357 = n1{self::Class1} in let final void #t358 = self::Extension1|set#nullable1(#t355, #t357) in #t357 : #t356{self::Class1}; let final self::Class1? #t359 = n1 in #t359 == null ?{self::Class1?} null : let final self::Class1 #t360 = self::Extension1|get#nonNullable1(#t359{self::Class1}) in let final self::Class1 #t361 = n1{self::Class1} in self::Extension1|[](#t360, #t361) == null ?{self::Class1?} self::Extension1|[]=(#t360, #t361, n1{self::Class1}) : null; n1 = let final self::Class1? #t362 = n1 in #t362 == null ?{self::Class1?} null : let final self::Class1 #t363 = self::Extension1|get#nonNullable1(#t362{self::Class1}) in let final self::Class1 #t364 = n1{self::Class1} in let final self::Class1? #t365 = self::Extension1|[](#t363, #t364) in #t365 == null ?{self::Class1} let final self::Class1 #t366 = n1{self::Class1} in let final void #t367 = self::Extension1|[]=(#t363, #t364, #t366) in #t366 : #t365{self::Class1}; diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.expect index c9ecaa0f4dd..71c3da55182 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.expect @@ -55,8 +55,8 @@ static method main() → dynamic { let final self::Class2? #t40 = c2 in #t40 == null ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int}); let final self::Class2? #t42 = c2 in #t42 == null ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1){(core::num) → core::int} in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44; let final self::Class2? #t46 = c2 in #t46 == null ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1){(core::num) → core::int}); - let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; - let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; + let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int?} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; + let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int?} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; let final self::Class1? #t52 = c1 in #t52 == null ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field}{self::Class2?} in #t53 == null ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0); let final self::Class1? #t54 = c1 in #t54 == null ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field}{self::Class2?} in #t55 == null ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1); let final self::Class1? #t56 = c1 in #t56 == null ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field}{self::Class2?} in #t57 == null ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}); @@ -73,6 +73,6 @@ static method main() → dynamic { let final self::Class1? #t88 = c1 in #t88 == null ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field}{self::Class2?} in #t89 == null ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}((let final self::Class2? #t91 = c2 in #t91 == null ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!) as core::int){(core::num) → core::int}){(core::num) → core::int}); let final self::Class1? #t92 = c1 in #t92 == null ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field}{self::Class2?} in #t93 == null ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1){(core::num) → core::int} in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95; let final self::Class1? #t97 = c1 in #t97 == null ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field}{self::Class2?} in #t98 == null ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1){(core::num) → core::int}); - let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null; - let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as core::int){(core::num) → core::int}) : null; + let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int?} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null; + let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int?} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as core::int){(core::num) → core::int}) : null; } diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.transformed.expect index a6ae18510c8..12abc2cc281 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.strong.transformed.expect @@ -55,8 +55,8 @@ static method main() → dynamic { let final self::Class2? #t40 = c2 in #t40 == null ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int}); let final self::Class2? #t42 = c2 in #t42 == null ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1){(core::num) → core::int} in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44; let final self::Class2? #t46 = c2 in #t46 == null ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1){(core::num) → core::int}); - let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; - let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; + let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int?} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; + let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int?} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; let final self::Class1? #t52 = c1 in #t52 == null ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field}{self::Class2?} in #t53 == null ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0); let final self::Class1? #t54 = c1 in #t54 == null ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field}{self::Class2?} in #t55 == null ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1); let final self::Class1? #t56 = c1 in #t56 == null ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field}{self::Class2?} in #t57 == null ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}); @@ -73,8 +73,8 @@ static method main() → dynamic { let final self::Class1? #t89 = c1 in #t89 == null ?{core::int?} null : let final self::Class2? #t90 = #t89{self::Class1}.{self::Class1::field}{self::Class2?} in #t90 == null ?{core::int?} null : let final core::int #t91 = 0 in self::Extension|[]=(#t90{self::Class2}, #t91, self::Extension|[](#t90{self::Class2}, #t91).{core::num::+}(1.{core::num::+}(let core::int? #t92 = let final self::Class2? #t93 = c2 in #t93 == null ?{core::int?} null : self::Extension|[](#t93{self::Class2}, 0)! in #t92 == null ?{core::int} #t92 as core::int : #t92{core::int}){(core::num) → core::int}){(core::num) → core::int}); let final self::Class1? #t94 = c1 in #t94 == null ?{core::int?} null : let final self::Class2? #t95 = #t94{self::Class1}.{self::Class1::field}{self::Class2?} in #t95 == null ?{core::int?} null : let final core::int #t96 = 0 in let final core::int #t97 = self::Extension|[](#t95{self::Class2}, #t96).{core::num::+}(1){(core::num) → core::int} in let final void #t98 = self::Extension|[]=(#t95{self::Class2}, #t96, #t97) in #t97; let final self::Class1? #t99 = c1 in #t99 == null ?{core::int?} null : let final self::Class2? #t100 = #t99{self::Class1}.{self::Class1::field}{self::Class2?} in #t100 == null ?{core::int?} null : let final core::int #t101 = 0 in self::Extension|[]=(#t100{self::Class2}, #t101, self::Extension|[](#t100{self::Class2}, #t101).{core::num::+}(1){(core::num) → core::int}); - let final self::Class1? #t102 = c1 in #t102 == null ?{core::int?} null : let final self::Class2? #t103 = #t102{self::Class1}.{self::Class1::field}{self::Class2?} in #t103 == null ?{core::int?} null : let final core::int #t104 = 0 in self::Extension|[](#t103{self::Class2}, #t104) == null ?{core::int} self::Extension|[]=(#t103{self::Class2}, #t104, 1) : null; - let final self::Class1? #t105 = c1 in #t105 == null ?{core::int?} null : let final self::Class2? #t106 = #t105{self::Class1}.{self::Class1::field}{self::Class2?} in #t106 == null ?{core::int?} null : let final core::int #t107 = 0 in self::Extension|[](#t106{self::Class2}, #t107) == null ?{core::int} self::Extension|[]=(#t106{self::Class2}, #t107, 1.{core::num::+}(let core::int? #t108 = let final self::Class2? #t109 = c2 in #t109 == null ?{core::int?} null : self::Extension|[](#t109{self::Class2}, 1)! in #t108 == null ?{core::int} #t108 as core::int : #t108{core::int}){(core::num) → core::int}) : null; + let final self::Class1? #t102 = c1 in #t102 == null ?{core::int?} null : let final self::Class2? #t103 = #t102{self::Class1}.{self::Class1::field}{self::Class2?} in #t103 == null ?{core::int?} null : let final core::int #t104 = 0 in self::Extension|[](#t103{self::Class2}, #t104) == null ?{core::int?} self::Extension|[]=(#t103{self::Class2}, #t104, 1) : null; + let final self::Class1? #t105 = c1 in #t105 == null ?{core::int?} null : let final self::Class2? #t106 = #t105{self::Class1}.{self::Class1::field}{self::Class2?} in #t106 == null ?{core::int?} null : let final core::int #t107 = 0 in self::Extension|[](#t106{self::Class2}, #t107) == null ?{core::int?} self::Extension|[]=(#t106{self::Class2}, #t107, 1.{core::num::+}(let core::int? #t108 = let final self::Class2? #t109 = c2 in #t109 == null ?{core::int?} null : self::Extension|[](#t109{self::Class2}, 1)! in #t108 == null ?{core::int} #t108 as core::int : #t108{core::int}){(core::num) → core::int}) : null; } diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.expect index c9ecaa0f4dd..71c3da55182 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.expect @@ -55,8 +55,8 @@ static method main() → dynamic { let final self::Class2? #t40 = c2 in #t40 == null ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int}); let final self::Class2? #t42 = c2 in #t42 == null ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1){(core::num) → core::int} in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44; let final self::Class2? #t46 = c2 in #t46 == null ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1){(core::num) → core::int}); - let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; - let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; + let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int?} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; + let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int?} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; let final self::Class1? #t52 = c1 in #t52 == null ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field}{self::Class2?} in #t53 == null ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0); let final self::Class1? #t54 = c1 in #t54 == null ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field}{self::Class2?} in #t55 == null ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1); let final self::Class1? #t56 = c1 in #t56 == null ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field}{self::Class2?} in #t57 == null ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}); @@ -73,6 +73,6 @@ static method main() → dynamic { let final self::Class1? #t88 = c1 in #t88 == null ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field}{self::Class2?} in #t89 == null ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}((let final self::Class2? #t91 = c2 in #t91 == null ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!) as core::int){(core::num) → core::int}){(core::num) → core::int}); let final self::Class1? #t92 = c1 in #t92 == null ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field}{self::Class2?} in #t93 == null ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1){(core::num) → core::int} in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95; let final self::Class1? #t97 = c1 in #t97 == null ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field}{self::Class2?} in #t98 == null ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1){(core::num) → core::int}); - let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null; - let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as core::int){(core::num) → core::int}) : null; + let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int?} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null; + let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int?} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as core::int){(core::num) → core::int}) : null; } diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.modular.expect index c9ecaa0f4dd..71c3da55182 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.modular.expect @@ -55,8 +55,8 @@ static method main() → dynamic { let final self::Class2? #t40 = c2 in #t40 == null ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int}); let final self::Class2? #t42 = c2 in #t42 == null ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1){(core::num) → core::int} in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44; let final self::Class2? #t46 = c2 in #t46 == null ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1){(core::num) → core::int}); - let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; - let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; + let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int?} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; + let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int?} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; let final self::Class1? #t52 = c1 in #t52 == null ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field}{self::Class2?} in #t53 == null ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0); let final self::Class1? #t54 = c1 in #t54 == null ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field}{self::Class2?} in #t55 == null ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1); let final self::Class1? #t56 = c1 in #t56 == null ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field}{self::Class2?} in #t57 == null ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}); @@ -73,6 +73,6 @@ static method main() → dynamic { let final self::Class1? #t88 = c1 in #t88 == null ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field}{self::Class2?} in #t89 == null ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}((let final self::Class2? #t91 = c2 in #t91 == null ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!) as core::int){(core::num) → core::int}){(core::num) → core::int}); let final self::Class1? #t92 = c1 in #t92 == null ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field}{self::Class2?} in #t93 == null ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1){(core::num) → core::int} in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95; let final self::Class1? #t97 = c1 in #t97 == null ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field}{self::Class2?} in #t98 == null ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1){(core::num) → core::int}); - let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null; - let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as core::int){(core::num) → core::int}) : null; + let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int?} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null; + let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int?} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as core::int){(core::num) → core::int}) : null; } diff --git a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect index b03d561353a..178f0d5291f 100644 --- a/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/null_shorting_index.dart.weak.transformed.expect @@ -55,8 +55,8 @@ static method main() → dynamic { let final self::Class2? #t40 = c2 in #t40 == null ?{core::int?} null : let final core::int #t41 = 0 in self::Extension|[]=(#t40{self::Class2}, #t41, self::Extension|[](#t40{self::Class2}, #t41).{core::num::+}(1.{core::num::+}(self::Extension|[](c2{self::Class2}, 0)){(core::num) → core::int}){(core::num) → core::int}); let final self::Class2? #t42 = c2 in #t42 == null ?{core::int?} null : let final core::int #t43 = 0 in let final core::int #t44 = self::Extension|[](#t42{self::Class2}, #t43).{core::num::+}(1){(core::num) → core::int} in let final void #t45 = self::Extension|[]=(#t42{self::Class2}, #t43, #t44) in #t44; let final self::Class2? #t46 = c2 in #t46 == null ?{core::int?} null : let final core::int #t47 = 0 in self::Extension|[]=(#t46{self::Class2}, #t47, self::Extension|[](#t46{self::Class2}, #t47).{core::num::+}(1){(core::num) → core::int}); - let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; - let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; + let final self::Class2? #t48 = c2 in #t48 == null ?{core::int?} null : let final core::int #t49 = 0 in self::Extension|[](#t48{self::Class2}, #t49) == null ?{core::int?} self::Extension|[]=(#t48{self::Class2}, #t49, 1) : null; + let final self::Class2? #t50 = c2 in #t50 == null ?{core::int?} null : let final core::int #t51 = 0 in self::Extension|[](#t50{self::Class2}, #t51) == null ?{core::int?} self::Extension|[]=(#t50{self::Class2}, #t51, 1.{core::num::+}(self::Extension|[](c2{self::Class2}, 1)){(core::num) → core::int}) : null; let final self::Class1? #t52 = c1 in #t52 == null ?{core::int?} null : let final self::Class2? #t53 = #t52{self::Class1}.{self::Class1::field}{self::Class2?} in #t53 == null ?{core::int?} null : self::Extension|[](#t53{self::Class2}, 0); let final self::Class1? #t54 = c1 in #t54 == null ?{core::int?} null : let final self::Class2? #t55 = #t54{self::Class1}.{self::Class1::field}{self::Class2?} in #t55 == null ?{core::int?} null : self::Extension|[]=(#t55{self::Class2}, 0, 1); let final self::Class1? #t56 = c1 in #t56 == null ?{core::int?} null : let final self::Class2? #t57 = #t56{self::Class1}.{self::Class1::field}{self::Class2?} in #t57 == null ?{core::int?} null : self::Extension|[]=(#t57{self::Class2}, 0, 1.{core::num::+}(c1{self::Class1}.{self::Class1::[]}(0){(core::int) → core::int}){(core::num) → core::int}); @@ -73,8 +73,8 @@ static method main() → dynamic { let final self::Class1? #t88 = c1 in #t88 == null ?{core::int?} null : let final self::Class2? #t89 = #t88{self::Class1}.{self::Class1::field}{self::Class2?} in #t89 == null ?{core::int?} null : let final core::int #t90 = 0 in self::Extension|[]=(#t89{self::Class2}, #t90, self::Extension|[](#t89{self::Class2}, #t90).{core::num::+}(1.{core::num::+}((let final self::Class2? #t91 = c2 in #t91 == null ?{core::int?} null : self::Extension|[](#t91{self::Class2}, 0)!) as{Unchecked} core::int){(core::num) → core::int}){(core::num) → core::int}); let final self::Class1? #t92 = c1 in #t92 == null ?{core::int?} null : let final self::Class2? #t93 = #t92{self::Class1}.{self::Class1::field}{self::Class2?} in #t93 == null ?{core::int?} null : let final core::int #t94 = 0 in let final core::int #t95 = self::Extension|[](#t93{self::Class2}, #t94).{core::num::+}(1){(core::num) → core::int} in let final void #t96 = self::Extension|[]=(#t93{self::Class2}, #t94, #t95) in #t95; let final self::Class1? #t97 = c1 in #t97 == null ?{core::int?} null : let final self::Class2? #t98 = #t97{self::Class1}.{self::Class1::field}{self::Class2?} in #t98 == null ?{core::int?} null : let final core::int #t99 = 0 in self::Extension|[]=(#t98{self::Class2}, #t99, self::Extension|[](#t98{self::Class2}, #t99).{core::num::+}(1){(core::num) → core::int}); - let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null; - let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as{Unchecked} core::int){(core::num) → core::int}) : null; + let final self::Class1? #t100 = c1 in #t100 == null ?{core::int?} null : let final self::Class2? #t101 = #t100{self::Class1}.{self::Class1::field}{self::Class2?} in #t101 == null ?{core::int?} null : let final core::int #t102 = 0 in self::Extension|[](#t101{self::Class2}, #t102) == null ?{core::int?} self::Extension|[]=(#t101{self::Class2}, #t102, 1) : null; + let final self::Class1? #t103 = c1 in #t103 == null ?{core::int?} null : let final self::Class2? #t104 = #t103{self::Class1}.{self::Class1::field}{self::Class2?} in #t104 == null ?{core::int?} null : let final core::int #t105 = 0 in self::Extension|[](#t104{self::Class2}, #t105) == null ?{core::int?} self::Extension|[]=(#t104{self::Class2}, #t105, 1.{core::num::+}((let final self::Class2? #t106 = c2 in #t106 == null ?{core::int?} null : self::Extension|[](#t106{self::Class2}, 1)!) as{Unchecked} core::int){(core::num) → core::int}) : null; } diff --git a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.expect b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.expect index 0f8605a9b95..3d22a027087 100644 --- a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.expect @@ -76,8 +76,8 @@ class Class extends core::Object { late final self::Class self; if(self::b) self = this; - let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class} self::Extension|[]=(#t55, this, this) : null; - let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null; + let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class?} self::Extension|[]=(#t55, this, this) : null; + let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class?} self::Extension|[]=(#t56, #t57, self) : null; self::Extension|[]=(i, this, this); self::Extension|[]=(i, self, self); self::Extension|[](i, this); @@ -108,8 +108,8 @@ class Subclass extends self::Class { late final self::Class self; if(self::b) self = this; - super.{self::Class::[]}(this) == null ?{self::Class} super.{self::Class::[]=}(this, this) : null; - let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class} super.{self::Class::[]=}(#t81, self) : null; + super.{self::Class::[]}(this) == null ?{self::Class?} super.{self::Class::[]=}(this, this) : null; + let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class?} super.{self::Class::[]=}(#t81, self) : null; super.{self::Class::[]=}(this, this); super.{self::Class::[]=}(self, self); super.{self::Class::[]}(this); @@ -169,8 +169,8 @@ class Class2 extends core::Object { late final self::Class2 self; if(self::b) self = this; - self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null; - let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null; + self::Extension2|[](this, this) == null ?{self::Class2?} self::Extension2|[]=(this, this, this) : null; + let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2?} self::Extension2|[]=(#t120, #t121, self) : null; self::Extension2|[]=(this, this, this); self::Extension2|[]=(self, self, self); self::Extension2|[](this, this); diff --git a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.transformed.expect index 0f8605a9b95..3d22a027087 100644 --- a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.strong.transformed.expect @@ -76,8 +76,8 @@ class Class extends core::Object { late final self::Class self; if(self::b) self = this; - let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class} self::Extension|[]=(#t55, this, this) : null; - let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null; + let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class?} self::Extension|[]=(#t55, this, this) : null; + let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class?} self::Extension|[]=(#t56, #t57, self) : null; self::Extension|[]=(i, this, this); self::Extension|[]=(i, self, self); self::Extension|[](i, this); @@ -108,8 +108,8 @@ class Subclass extends self::Class { late final self::Class self; if(self::b) self = this; - super.{self::Class::[]}(this) == null ?{self::Class} super.{self::Class::[]=}(this, this) : null; - let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class} super.{self::Class::[]=}(#t81, self) : null; + super.{self::Class::[]}(this) == null ?{self::Class?} super.{self::Class::[]=}(this, this) : null; + let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class?} super.{self::Class::[]=}(#t81, self) : null; super.{self::Class::[]=}(this, this); super.{self::Class::[]=}(self, self); super.{self::Class::[]}(this); @@ -169,8 +169,8 @@ class Class2 extends core::Object { late final self::Class2 self; if(self::b) self = this; - self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null; - let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null; + self::Extension2|[](this, this) == null ?{self::Class2?} self::Extension2|[]=(this, this, this) : null; + let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2?} self::Extension2|[]=(#t120, #t121, self) : null; self::Extension2|[]=(this, this, this); self::Extension2|[]=(self, self, self); self::Extension2|[](this, this); diff --git a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.expect b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.expect index 0f8605a9b95..3d22a027087 100644 --- a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.expect @@ -76,8 +76,8 @@ class Class extends core::Object { late final self::Class self; if(self::b) self = this; - let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class} self::Extension|[]=(#t55, this, this) : null; - let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null; + let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class?} self::Extension|[]=(#t55, this, this) : null; + let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class?} self::Extension|[]=(#t56, #t57, self) : null; self::Extension|[]=(i, this, this); self::Extension|[]=(i, self, self); self::Extension|[](i, this); @@ -108,8 +108,8 @@ class Subclass extends self::Class { late final self::Class self; if(self::b) self = this; - super.{self::Class::[]}(this) == null ?{self::Class} super.{self::Class::[]=}(this, this) : null; - let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class} super.{self::Class::[]=}(#t81, self) : null; + super.{self::Class::[]}(this) == null ?{self::Class?} super.{self::Class::[]=}(this, this) : null; + let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class?} super.{self::Class::[]=}(#t81, self) : null; super.{self::Class::[]=}(this, this); super.{self::Class::[]=}(self, self); super.{self::Class::[]}(this); @@ -169,8 +169,8 @@ class Class2 extends core::Object { late final self::Class2 self; if(self::b) self = this; - self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null; - let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null; + self::Extension2|[](this, this) == null ?{self::Class2?} self::Extension2|[]=(this, this, this) : null; + let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2?} self::Extension2|[]=(#t120, #t121, self) : null; self::Extension2|[]=(this, this, this); self::Extension2|[]=(self, self, self); self::Extension2|[](this, this); diff --git a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.modular.expect index 0f8605a9b95..3d22a027087 100644 --- a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.modular.expect @@ -76,8 +76,8 @@ class Class extends core::Object { late final self::Class self; if(self::b) self = this; - let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class} self::Extension|[]=(#t55, this, this) : null; - let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null; + let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class?} self::Extension|[]=(#t55, this, this) : null; + let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class?} self::Extension|[]=(#t56, #t57, self) : null; self::Extension|[]=(i, this, this); self::Extension|[]=(i, self, self); self::Extension|[](i, this); @@ -108,8 +108,8 @@ class Subclass extends self::Class { late final self::Class self; if(self::b) self = this; - super.{self::Class::[]}(this) == null ?{self::Class} super.{self::Class::[]=}(this, this) : null; - let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class} super.{self::Class::[]=}(#t81, self) : null; + super.{self::Class::[]}(this) == null ?{self::Class?} super.{self::Class::[]=}(this, this) : null; + let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class?} super.{self::Class::[]=}(#t81, self) : null; super.{self::Class::[]=}(this, this); super.{self::Class::[]=}(self, self); super.{self::Class::[]}(this); @@ -169,8 +169,8 @@ class Class2 extends core::Object { late final self::Class2 self; if(self::b) self = this; - self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null; - let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null; + self::Extension2|[](this, this) == null ?{self::Class2?} self::Extension2|[]=(this, this, this) : null; + let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2?} self::Extension2|[]=(#t120, #t121, self) : null; self::Extension2|[]=(this, this, this); self::Extension2|[]=(self, self, self); self::Extension2|[](this, this); diff --git a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.transformed.expect index 0f8605a9b95..3d22a027087 100644 --- a/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/pure_index_expressions.dart.weak.transformed.expect @@ -76,8 +76,8 @@ class Class extends core::Object { late final self::Class self; if(self::b) self = this; - let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class} self::Extension|[]=(#t55, this, this) : null; - let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class} self::Extension|[]=(#t56, #t57, self) : null; + let final core::int #t55 = i in self::Extension|[](#t55, this) == null ?{self::Class?} self::Extension|[]=(#t55, this, this) : null; + let final core::int #t56 = i in let final self::Class #t57 = self in self::Extension|[](#t56, #t57) == null ?{self::Class?} self::Extension|[]=(#t56, #t57, self) : null; self::Extension|[]=(i, this, this); self::Extension|[]=(i, self, self); self::Extension|[](i, this); @@ -108,8 +108,8 @@ class Subclass extends self::Class { late final self::Class self; if(self::b) self = this; - super.{self::Class::[]}(this) == null ?{self::Class} super.{self::Class::[]=}(this, this) : null; - let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class} super.{self::Class::[]=}(#t81, self) : null; + super.{self::Class::[]}(this) == null ?{self::Class?} super.{self::Class::[]=}(this, this) : null; + let final self::Class #t81 = self in super.{self::Class::[]}(#t81) == null ?{self::Class?} super.{self::Class::[]=}(#t81, self) : null; super.{self::Class::[]=}(this, this); super.{self::Class::[]=}(self, self); super.{self::Class::[]}(this); @@ -169,8 +169,8 @@ class Class2 extends core::Object { late final self::Class2 self; if(self::b) self = this; - self::Extension2|[](this, this) == null ?{self::Class2} self::Extension2|[]=(this, this, this) : null; - let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2} self::Extension2|[]=(#t120, #t121, self) : null; + self::Extension2|[](this, this) == null ?{self::Class2?} self::Extension2|[]=(this, this, this) : null; + let final self::Class2 #t120 = self in let final self::Class2 #t121 = self in self::Extension2|[](#t120, #t121) == null ?{self::Class2?} self::Extension2|[]=(#t120, #t121, self) : null; self::Extension2|[]=(this, this, this); self::Extension2|[]=(self, self, self); self::Extension2|[](this, this); diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.expect index 3c65011ade0..942c98ca967 100644 --- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.expect +++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.expect @@ -16,7 +16,7 @@ class B extends self::A { : super self::A::•() ; method test() → void { - let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String} super.{self::A::[]=}(#t1, "bar") : null; + let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "bar") : null; } } extension E on core::String { @@ -70,16 +70,16 @@ static method warning(core::String s, core::List l, core::Map #t16 = l in #t16 == null ?{core::int?} null : #t16.{core::List::length} = 42; let final core::List #t17 = l in #t17 == null ?{core::int?} null : #t17.{core::List::length} = #t17.{core::List::length}{core::int}.{core::num::+}(42){(core::num) → core::int}; - let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int} #t18.{core::List::length} = 42 : null; + let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int?} #t18.{core::List::length} = 42 : null; let final core::String #t19 = s in #t19 == null ?{core::int?} null : self::E|get#foo(#t19); - let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int} self::E|[]=(#t20, #t21, 42) : null; + let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int?} self::E|[]=(#t20, #t21, 42) : null; let final core::List #t22 = l in let final core::int #t23 = 42 in #t22.{core::List::[]}(#t23){(core::int) → core::String} == null ?{core::String?} #t22.{core::List::[]=}(#t23, "foo"){(core::int, core::String) → void} : null; - let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int} #t24.{core::List::length} = 42 : null; + let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int?} #t24.{core::List::length} = 42 : null; let final core::List #t25 = l in #t25 == null ?{core::List} null : block { #t25.{core::List::length} = 42; } =>#t25; let final core::List #t26 = l in #t26 == null ?{core::List} null : block { - let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int} #t27.{core::List::length} = 42 : null; + let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int?} #t27.{core::List::length} = 42 : null; } =>#t26; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect index 07a141b8795..88624924574 100644 --- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.strong.transformed.expect @@ -16,7 +16,7 @@ class B extends self::A { : super self::A::•() ; method test() → void { - let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String} super.{self::A::[]=}(#t1, "bar") : null; + let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "bar") : null; } } extension E on core::String { @@ -70,16 +70,16 @@ static method warning(core::String s, core::List l, core::Map #t16 = l in #t16 == null ?{core::int?} null : #t16.{core::List::length} = 42; let final core::List #t17 = l in #t17 == null ?{core::int?} null : #t17.{core::List::length} = #t17.{core::List::length}{core::int}.{core::num::+}(42){(core::num) → core::int}; - let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int} #t18.{core::List::length} = 42 : null; + let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int?} #t18.{core::List::length} = 42 : null; let final core::String #t19 = s in #t19 == null ?{core::int?} null : self::E|get#foo(#t19); - let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int} self::E|[]=(#t20, #t21, 42) : null; + let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int?} self::E|[]=(#t20, #t21, 42) : null; let final core::List #t22 = l in let final core::int #t23 = 42 in #t22.{core::List::[]}(#t23){(core::int) → core::String} == null ?{core::String?} #t22.{core::List::[]=}(#t23, "foo"){(core::int, core::String) → void} : null; - let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int} #t24.{core::List::length} = 42 : null; + let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int?} #t24.{core::List::length} = 42 : null; let final core::List #t25 = l in #t25 == null ?{core::List} null : block { #t25.{core::List::length} = 42; } =>#t25; let final core::List #t26 = l in #t26 == null ?{core::List} null : block { - let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int} #t27.{core::List::length} = 42 : null; + let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int?} #t27.{core::List::length} = 42 : null; } =>#t26; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.expect index 3c65011ade0..942c98ca967 100644 --- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.expect @@ -16,7 +16,7 @@ class B extends self::A { : super self::A::•() ; method test() → void { - let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String} super.{self::A::[]=}(#t1, "bar") : null; + let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "bar") : null; } } extension E on core::String { @@ -70,16 +70,16 @@ static method warning(core::String s, core::List l, core::Map #t16 = l in #t16 == null ?{core::int?} null : #t16.{core::List::length} = 42; let final core::List #t17 = l in #t17 == null ?{core::int?} null : #t17.{core::List::length} = #t17.{core::List::length}{core::int}.{core::num::+}(42){(core::num) → core::int}; - let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int} #t18.{core::List::length} = 42 : null; + let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int?} #t18.{core::List::length} = 42 : null; let final core::String #t19 = s in #t19 == null ?{core::int?} null : self::E|get#foo(#t19); - let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int} self::E|[]=(#t20, #t21, 42) : null; + let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int?} self::E|[]=(#t20, #t21, 42) : null; let final core::List #t22 = l in let final core::int #t23 = 42 in #t22.{core::List::[]}(#t23){(core::int) → core::String} == null ?{core::String?} #t22.{core::List::[]=}(#t23, "foo"){(core::int, core::String) → void} : null; - let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int} #t24.{core::List::length} = 42 : null; + let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int?} #t24.{core::List::length} = 42 : null; let final core::List #t25 = l in #t25 == null ?{core::List} null : block { #t25.{core::List::length} = 42; } =>#t25; let final core::List #t26 = l in #t26 == null ?{core::List} null : block { - let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int} #t27.{core::List::length} = 42 : null; + let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int?} #t27.{core::List::length} = 42 : null; } =>#t26; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.modular.expect index 3c65011ade0..942c98ca967 100644 --- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.modular.expect @@ -16,7 +16,7 @@ class B extends self::A { : super self::A::•() ; method test() → void { - let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String} super.{self::A::[]=}(#t1, "bar") : null; + let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "bar") : null; } } extension E on core::String { @@ -70,16 +70,16 @@ static method warning(core::String s, core::List l, core::Map #t16 = l in #t16 == null ?{core::int?} null : #t16.{core::List::length} = 42; let final core::List #t17 = l in #t17 == null ?{core::int?} null : #t17.{core::List::length} = #t17.{core::List::length}{core::int}.{core::num::+}(42){(core::num) → core::int}; - let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int} #t18.{core::List::length} = 42 : null; + let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int?} #t18.{core::List::length} = 42 : null; let final core::String #t19 = s in #t19 == null ?{core::int?} null : self::E|get#foo(#t19); - let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int} self::E|[]=(#t20, #t21, 42) : null; + let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int?} self::E|[]=(#t20, #t21, 42) : null; let final core::List #t22 = l in let final core::int #t23 = 42 in #t22.{core::List::[]}(#t23){(core::int) → core::String} == null ?{core::String?} #t22.{core::List::[]=}(#t23, "foo"){(core::int, core::String) → void} : null; - let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int} #t24.{core::List::length} = 42 : null; + let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int?} #t24.{core::List::length} = 42 : null; let final core::List #t25 = l in #t25 == null ?{core::List} null : block { #t25.{core::List::length} = 42; } =>#t25; let final core::List #t26 = l in #t26 == null ?{core::List} null : block { - let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int} #t27.{core::List::length} = 42 : null; + let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int?} #t27.{core::List::length} = 42 : null; } =>#t26; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect index 07a141b8795..88624924574 100644 --- a/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd/strictly_non_nullable_warnings.dart.weak.transformed.expect @@ -16,7 +16,7 @@ class B extends self::A { : super self::A::•() ; method test() → void { - let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String} super.{self::A::[]=}(#t1, "bar") : null; + let final core::int #t1 = 42 in super.{self::A::[]}(#t1) == null ?{core::String?} super.{self::A::[]=}(#t1, "bar") : null; } } extension E on core::String { @@ -70,16 +70,16 @@ static method warning(core::String s, core::List l, core::Map #t16 = l in #t16 == null ?{core::int?} null : #t16.{core::List::length} = 42; let final core::List #t17 = l in #t17 == null ?{core::int?} null : #t17.{core::List::length} = #t17.{core::List::length}{core::int}.{core::num::+}(42){(core::num) → core::int}; - let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int} #t18.{core::List::length} = 42 : null; + let final core::List #t18 = l in #t18 == null ?{core::int?} null : #t18.{core::List::length}{core::int} == null ?{core::int?} #t18.{core::List::length} = 42 : null; let final core::String #t19 = s in #t19 == null ?{core::int?} null : self::E|get#foo(#t19); - let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int} self::E|[]=(#t20, #t21, 42) : null; + let final core::String #t20 = s in let final core::int #t21 = 42 in self::E|[](#t20, #t21) == null ?{core::int?} self::E|[]=(#t20, #t21, 42) : null; let final core::List #t22 = l in let final core::int #t23 = 42 in #t22.{core::List::[]}(#t23){(core::int) → core::String} == null ?{core::String?} #t22.{core::List::[]=}(#t23, "foo"){(core::int, core::String) → void} : null; - let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int} #t24.{core::List::length} = 42 : null; + let final core::List #t24 = l in #t24.{core::List::length}{core::int} == null ?{core::int?} #t24.{core::List::length} = 42 : null; let final core::List #t25 = l in #t25 == null ?{core::List} null : block { #t25.{core::List::length} = 42; } =>#t25; let final core::List #t26 = l in #t26 == null ?{core::List} null : block { - let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int} #t27.{core::List::length} = 42 : null; + let final core::List #t27 = #t26 in #t27.{core::List::length}{core::int} == null ?{core::int?} #t27.{core::List::length} = 42 : null; } =>#t26; } static method main() → dynamic {} diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect index 6d90a88dcd3..d47d646d83c 100644 --- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect +++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.expect @@ -335,7 +335,7 @@ class OptInClass4 extends uns::OptInSuperClass4 { method method(core::int i) → dynamic return let final core::int #t35 = i in let final core::int #t36 = super.{uns::OptInSuperClass4::[]}(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 42 in let final void #t38 = super.{uns::OptInSuperClass4::[]=}(#t35, #t37) in #t37 : #t36; method methodForEffect(core::int i) → dynamic { - let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39) == null ?{core::int} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null; + let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39) == null ?{core::int?} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null; } } class OptInClass5 extends core::Object { @@ -386,7 +386,7 @@ static extension-member method OptInExtension|[]=(lowered final uns::OptInClass1 static method extensionIfNullOptIn1(core::int i) → dynamic return let final uns::OptInClass1 #t41 = new uns::OptInClass1::•() in let final core::int #t42 = i in let final core::int #t43 = uns::OptInExtension|[](#t41, #t42) in #t43 == null ?{core::int} let final core::int #t44 = 42 in let final void #t45 = uns::OptInExtension|[]=(#t41, #t42, #t44) in #t44 : #t43; static method extensionIfNullOptIn1ForEffect(core::int i) → dynamic { - let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47) == null ?{core::int} uns::OptInExtension|[]=(#t46, #t47, 42) : null; + let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47) == null ?{core::int?} uns::OptInExtension|[]=(#t46, #t47, 42) : null; } static method extensionIfNullOptIn2(core::int i) → dynamic return let final uns::OptInClass1 #t48 = new uns::OptInClass1::•() in let final core::int #t49 = i in let final core::int #t50 = uns::OptInExtension|[](#t48, #t49) in #t50 == null ?{core::int} let final core::int #t51 = 42 in let final void #t52 = uns::OptInExtension|[]=(#t48, #t49, #t51) in #t51 : #t50; @@ -401,7 +401,7 @@ static method ifNullIndexSetOptInForEffect(core::int i) → dynamic { static method ifNullPropertySetOptIn(core::int i) → dynamic return let final uns::OptInClass3 #t62 = new uns::OptInClass3::•(i) in let final core::int #t63 = #t62.{uns::OptInClass3::field}{core::int} in #t63 == null ?{core::int} #t62.{uns::OptInClass3::field} = 42 : #t63; static method ifNullPropertySetOptInForEffect(core::int i) → dynamic { - let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}{core::int} == null ?{core::int} #t64.{uns::OptInClass3::field} = 42 : null; + let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}{core::int} == null ?{core::int?} #t64.{uns::OptInClass3::field} = 42 : null; } static method ifNullSetOptIn(core::int i) → dynamic return let final core::int #t65 = i in #t65 == null ?{core::int} i = 42 : #t65; @@ -419,7 +419,7 @@ static method nullAwareIfNullSetOptIn(core::int i) → dynamic { } static method nullAwareIfNullSetOptInForEffect(core::int i) → dynamic { uns::OptInClass5? o = new uns::OptInClass5::•(i) as uns::OptInClass5?; - let final uns::OptInClass5? #t68 = o in #t68 == null ?{core::int?} null : #t68.{uns::OptInClass5::field}{core::int} == null ?{core::int} #t68.{uns::OptInClass5::field} = 42 : null; + let final uns::OptInClass5? #t68 = o in #t68 == null ?{core::int?} null : #t68.{uns::OptInClass5::field}{core::int} == null ?{core::int?} #t68.{uns::OptInClass5::field} = 42 : null; } static method isTestOptIn(core::int i) → dynamic return i is core::int; diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.modular.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.modular.expect index 6d90a88dcd3..d47d646d83c 100644 --- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.modular.expect +++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.modular.expect @@ -335,7 +335,7 @@ class OptInClass4 extends uns::OptInSuperClass4 { method method(core::int i) → dynamic return let final core::int #t35 = i in let final core::int #t36 = super.{uns::OptInSuperClass4::[]}(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 42 in let final void #t38 = super.{uns::OptInSuperClass4::[]=}(#t35, #t37) in #t37 : #t36; method methodForEffect(core::int i) → dynamic { - let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39) == null ?{core::int} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null; + let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39) == null ?{core::int?} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null; } } class OptInClass5 extends core::Object { @@ -386,7 +386,7 @@ static extension-member method OptInExtension|[]=(lowered final uns::OptInClass1 static method extensionIfNullOptIn1(core::int i) → dynamic return let final uns::OptInClass1 #t41 = new uns::OptInClass1::•() in let final core::int #t42 = i in let final core::int #t43 = uns::OptInExtension|[](#t41, #t42) in #t43 == null ?{core::int} let final core::int #t44 = 42 in let final void #t45 = uns::OptInExtension|[]=(#t41, #t42, #t44) in #t44 : #t43; static method extensionIfNullOptIn1ForEffect(core::int i) → dynamic { - let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47) == null ?{core::int} uns::OptInExtension|[]=(#t46, #t47, 42) : null; + let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47) == null ?{core::int?} uns::OptInExtension|[]=(#t46, #t47, 42) : null; } static method extensionIfNullOptIn2(core::int i) → dynamic return let final uns::OptInClass1 #t48 = new uns::OptInClass1::•() in let final core::int #t49 = i in let final core::int #t50 = uns::OptInExtension|[](#t48, #t49) in #t50 == null ?{core::int} let final core::int #t51 = 42 in let final void #t52 = uns::OptInExtension|[]=(#t48, #t49, #t51) in #t51 : #t50; @@ -401,7 +401,7 @@ static method ifNullIndexSetOptInForEffect(core::int i) → dynamic { static method ifNullPropertySetOptIn(core::int i) → dynamic return let final uns::OptInClass3 #t62 = new uns::OptInClass3::•(i) in let final core::int #t63 = #t62.{uns::OptInClass3::field}{core::int} in #t63 == null ?{core::int} #t62.{uns::OptInClass3::field} = 42 : #t63; static method ifNullPropertySetOptInForEffect(core::int i) → dynamic { - let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}{core::int} == null ?{core::int} #t64.{uns::OptInClass3::field} = 42 : null; + let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}{core::int} == null ?{core::int?} #t64.{uns::OptInClass3::field} = 42 : null; } static method ifNullSetOptIn(core::int i) → dynamic return let final core::int #t65 = i in #t65 == null ?{core::int} i = 42 : #t65; @@ -419,7 +419,7 @@ static method nullAwareIfNullSetOptIn(core::int i) → dynamic { } static method nullAwareIfNullSetOptInForEffect(core::int i) → dynamic { uns::OptInClass5? o = new uns::OptInClass5::•(i) as uns::OptInClass5?; - let final uns::OptInClass5? #t68 = o in #t68 == null ?{core::int?} null : #t68.{uns::OptInClass5::field}{core::int} == null ?{core::int} #t68.{uns::OptInClass5::field} = 42 : null; + let final uns::OptInClass5? #t68 = o in #t68 == null ?{core::int?} null : #t68.{uns::OptInClass5::field}{core::int} == null ?{core::int?} #t68.{uns::OptInClass5::field} = 42 : null; } static method isTestOptIn(core::int i) → dynamic return i is core::int; diff --git a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect index d71783cb460..51ee88be35f 100644 --- a/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/nnbd_mixed/unsound_checks.dart.weak.transformed.expect @@ -335,7 +335,7 @@ class OptInClass4 extends uns::OptInSuperClass4 { method method(core::int i) → dynamic return let final core::int #t35 = i in let final core::int #t36 = super.{uns::OptInSuperClass4::[]}(#t35) in #t36 == null ?{core::int} let final core::int #t37 = 42 in let final void #t38 = super.{uns::OptInSuperClass4::[]=}(#t35, #t37) in #t37 : #t36; method methodForEffect(core::int i) → dynamic { - let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39) == null ?{core::int} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null; + let final core::int #t39 = i in super.{uns::OptInSuperClass4::[]}(#t39) == null ?{core::int?} super.{uns::OptInSuperClass4::[]=}(#t39, 42) : null; } } class OptInClass5 extends core::Object { @@ -386,7 +386,7 @@ static extension-member method OptInExtension|[]=(lowered final uns::OptInClass1 static method extensionIfNullOptIn1(core::int i) → dynamic return let final uns::OptInClass1 #t41 = new uns::OptInClass1::•() in let final core::int #t42 = i in let final core::int #t43 = uns::OptInExtension|[](#t41, #t42) in #t43 == null ?{core::int} let final core::int #t44 = 42 in let final void #t45 = uns::OptInExtension|[]=(#t41, #t42, #t44) in #t44 : #t43; static method extensionIfNullOptIn1ForEffect(core::int i) → dynamic { - let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47) == null ?{core::int} uns::OptInExtension|[]=(#t46, #t47, 42) : null; + let final uns::OptInClass1 #t46 = new uns::OptInClass1::•() in let final core::int #t47 = i in uns::OptInExtension|[](#t46, #t47) == null ?{core::int?} uns::OptInExtension|[]=(#t46, #t47, 42) : null; } static method extensionIfNullOptIn2(core::int i) → dynamic return let final uns::OptInClass1 #t48 = new uns::OptInClass1::•() in let final core::int #t49 = i in let final core::int #t50 = uns::OptInExtension|[](#t48, #t49) in #t50 == null ?{core::int} let final core::int #t51 = 42 in let final void #t52 = uns::OptInExtension|[]=(#t48, #t49, #t51) in #t51 : #t50; @@ -401,7 +401,7 @@ static method ifNullIndexSetOptInForEffect(core::int i) → dynamic { static method ifNullPropertySetOptIn(core::int i) → dynamic return let final uns::OptInClass3 #t62 = new uns::OptInClass3::•(i) in let final core::int #t63 = #t62.{uns::OptInClass3::field}{core::int} in #t63 == null ?{core::int} #t62.{uns::OptInClass3::field} = 42 : #t63; static method ifNullPropertySetOptInForEffect(core::int i) → dynamic { - let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}{core::int} == null ?{core::int} #t64.{uns::OptInClass3::field} = 42 : null; + let final uns::OptInClass3 #t64 = new uns::OptInClass3::•(i) in #t64.{uns::OptInClass3::field}{core::int} == null ?{core::int?} #t64.{uns::OptInClass3::field} = 42 : null; } static method ifNullSetOptIn(core::int i) → dynamic return let final core::int #t65 = i in #t65 == null ?{core::int} i = 42 : #t65; @@ -419,7 +419,7 @@ static method nullAwareIfNullSetOptIn(core::int i) → dynamic { } static method nullAwareIfNullSetOptInForEffect(core::int i) → dynamic { uns::OptInClass5? o = new uns::OptInClass5::•(i) as{Unchecked} uns::OptInClass5?; - let final uns::OptInClass5? #t68 = o in #t68 == null ?{core::int?} null : #t68.{uns::OptInClass5::field}{core::int} == null ?{core::int} #t68.{uns::OptInClass5::field} = 42 : null; + let final uns::OptInClass5? #t68 = o in #t68 == null ?{core::int?} null : #t68.{uns::OptInClass5::field}{core::int} == null ?{core::int?} #t68.{uns::OptInClass5::field} = 42 : null; } static method isTestOptIn(core::int i) → dynamic return i is core::int; diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.strong.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.strong.expect index d184fad0a9b..8e56e7de7f2 100644 --- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.strong.expect +++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.strong.expect @@ -53,7 +53,7 @@ static method test(self::C c) → void { - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. var y = c. /*@checkReturn=B<(num) -> void>*/ x += new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>){(self::B<(core::num) → void>) → self::B<(core::num) → void>}; - let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. + let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B?} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. c. /*@checkReturn=B<(num) -> void>?*/ x2 ??= new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>? : null; diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.strong.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.strong.transformed.expect index d184fad0a9b..8e56e7de7f2 100644 --- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.strong.transformed.expect +++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.strong.transformed.expect @@ -53,7 +53,7 @@ static method test(self::C c) → void { - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. var y = c. /*@checkReturn=B<(num) -> void>*/ x += new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>){(self::B<(core::num) → void>) → self::B<(core::num) → void>}; - let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. + let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B?} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. c. /*@checkReturn=B<(num) -> void>?*/ x2 ??= new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>? : null; diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.expect index d184fad0a9b..8e56e7de7f2 100644 --- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.expect +++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.expect @@ -53,7 +53,7 @@ static method test(self::C c) → void { - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. var y = c. /*@checkReturn=B<(num) -> void>*/ x += new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>){(self::B<(core::num) → void>) → self::B<(core::num) → void>}; - let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. + let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B?} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. c. /*@checkReturn=B<(num) -> void>?*/ x2 ??= new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>? : null; diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.modular.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.modular.expect index d184fad0a9b..8e56e7de7f2 100644 --- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.modular.expect +++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.modular.expect @@ -53,7 +53,7 @@ static method test(self::C c) → void { - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. var y = c. /*@checkReturn=B<(num) -> void>*/ x += new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>){(self::B<(core::num) → void>) → self::B<(core::num) → void>}; - let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. + let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B?} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. c. /*@checkReturn=B<(num) -> void>?*/ x2 ??= new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>? : null; diff --git a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.transformed.expect b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.transformed.expect index d184fad0a9b..8e56e7de7f2 100644 --- a/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.transformed.expect +++ b/pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart.weak.transformed.expect @@ -53,7 +53,7 @@ static method test(self::C c) → void { - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. var y = c. /*@checkReturn=B<(num) -> void>*/ x += new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>){(self::B<(core::num) → void>) → self::B<(core::num) → void>}; - let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. + let final self::C #t3 = c in #t3.{self::C::x2}{self::B<(core::num) → void>?} as{TypeError,CovarianceCheck} self::B<(core::num) → void>? == null ?{self::B?} #t3.{self::C::x2} = invalid-expression "pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart:24:52: Error: A value of type 'B' can't be assigned to a variable of type 'B?'. - 'B' is from 'pkg/front_end/testcases/runtime_checks_new/contravariant_getter_return_compound_assign2.dart'. c. /*@checkReturn=B<(num) -> void>?*/ x2 ??= new B(); ^" in new self::B::•() as{TypeError} self::B<(core::num) → void>? : null;