[model] Remove nullability-related error messages in map literals

This is a follow-up to
https://dart-review.googlesource.com/c/sdk/+/428980

Change-Id: I7b6b3e2cc920f29b4ce4f409615efb7a858e9fe4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/429360
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Chloe Stefantsova <cstefantsova@google.com>
This commit is contained in:
Chloe Stefantsova
2025-05-19 05:06:42 -07:00
committed by Commit Queue
parent 9439795445
commit ca694e46c1
6 changed files with 34 additions and 301 deletions
@@ -4241,96 +4241,6 @@ Message _withArgumentsSpreadMapEntryElementKeyTypeMismatch(
);
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<Message Function(DartType _type, DartType _type2)>
templateSpreadMapEntryElementKeyTypeMismatchNullability =
const Template<Message Function(DartType _type, DartType _type2)>(
"SpreadMapEntryElementKeyTypeMismatchNullability",
problemMessageTemplate:
r"""Can't assign spread entry keys of type '#type' to map entry keys of type '#type2' because '#type' is nullable and '#type2' isn't.""",
withArguments: _withArgumentsSpreadMapEntryElementKeyTypeMismatchNullability,
);
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Message Function(DartType _type, DartType _type2)>
codeSpreadMapEntryElementKeyTypeMismatchNullability =
const Code<Message Function(DartType _type, DartType _type2)>(
"SpreadMapEntryElementKeyTypeMismatchNullability",
analyzerCodes: <String>["MAP_KEY_TYPE_NOT_ASSIGNABLE"],
);
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
Message _withArgumentsSpreadMapEntryElementKeyTypeMismatchNullability(
DartType _type, DartType _type2) {
TypeLabeler labeler = new TypeLabeler();
List<Object> typeParts = labeler.labelType(_type);
List<Object> type2Parts = labeler.labelType(_type2);
String type = typeParts.join();
String type2 = type2Parts.join();
return new Message(
codeSpreadMapEntryElementKeyTypeMismatchNullability,
problemMessage:
"""Can't assign spread entry keys of type '${type}' to map entry keys of type '${type2}' because '${type}' is nullable and '${type2}' isn't.""" +
labeler.originMessages,
arguments: {
'type': _type,
'type2': _type2,
},
);
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<
Message Function(
DartType _type, DartType _type2, DartType _type3, DartType _type4)>
templateSpreadMapEntryElementKeyTypeMismatchPartNullability =
const Template<
Message Function(
DartType _type, DartType _type2, DartType _type3, DartType _type4)>(
"SpreadMapEntryElementKeyTypeMismatchPartNullability",
problemMessageTemplate:
r"""Can't assign spread entry keys of type '#type' to map entry keys of type '#type2' because '#type3' is nullable and '#type4' isn't.""",
withArguments:
_withArgumentsSpreadMapEntryElementKeyTypeMismatchPartNullability,
);
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<
Message Function(
DartType _type, DartType _type2, DartType _type3, DartType _type4)>
codeSpreadMapEntryElementKeyTypeMismatchPartNullability = const Code<
Message Function(
DartType _type, DartType _type2, DartType _type3, DartType _type4)>(
"SpreadMapEntryElementKeyTypeMismatchPartNullability",
analyzerCodes: <String>["MAP_KEY_TYPE_NOT_ASSIGNABLE"],
);
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
Message _withArgumentsSpreadMapEntryElementKeyTypeMismatchPartNullability(
DartType _type, DartType _type2, DartType _type3, DartType _type4) {
TypeLabeler labeler = new TypeLabeler();
List<Object> typeParts = labeler.labelType(_type);
List<Object> type2Parts = labeler.labelType(_type2);
List<Object> type3Parts = labeler.labelType(_type3);
List<Object> type4Parts = labeler.labelType(_type4);
String type = typeParts.join();
String type2 = type2Parts.join();
String type3 = type3Parts.join();
String type4 = type4Parts.join();
return new Message(
codeSpreadMapEntryElementKeyTypeMismatchPartNullability,
problemMessage:
"""Can't assign spread entry keys of type '${type}' to map entry keys of type '${type2}' because '${type3}' is nullable and '${type4}' isn't.""" +
labeler.originMessages,
arguments: {
'type': _type,
'type2': _type2,
'type3': _type3,
'type4': _type4,
},
);
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<Message Function(DartType _type, DartType _type2)>
templateSpreadMapEntryElementValueTypeMismatch =
@@ -4369,97 +4279,6 @@ Message _withArgumentsSpreadMapEntryElementValueTypeMismatch(
);
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<Message Function(DartType _type, DartType _type2)>
templateSpreadMapEntryElementValueTypeMismatchNullability =
const Template<Message Function(DartType _type, DartType _type2)>(
"SpreadMapEntryElementValueTypeMismatchNullability",
problemMessageTemplate:
r"""Can't assign spread entry values of type '#type' to map entry values of type '#type2' because '#type' is nullable and '#type2' isn't.""",
withArguments:
_withArgumentsSpreadMapEntryElementValueTypeMismatchNullability,
);
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Message Function(DartType _type, DartType _type2)>
codeSpreadMapEntryElementValueTypeMismatchNullability =
const Code<Message Function(DartType _type, DartType _type2)>(
"SpreadMapEntryElementValueTypeMismatchNullability",
analyzerCodes: <String>["MAP_VALUE_TYPE_NOT_ASSIGNABLE"],
);
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
Message _withArgumentsSpreadMapEntryElementValueTypeMismatchNullability(
DartType _type, DartType _type2) {
TypeLabeler labeler = new TypeLabeler();
List<Object> typeParts = labeler.labelType(_type);
List<Object> type2Parts = labeler.labelType(_type2);
String type = typeParts.join();
String type2 = type2Parts.join();
return new Message(
codeSpreadMapEntryElementValueTypeMismatchNullability,
problemMessage:
"""Can't assign spread entry values of type '${type}' to map entry values of type '${type2}' because '${type}' is nullable and '${type2}' isn't.""" +
labeler.originMessages,
arguments: {
'type': _type,
'type2': _type2,
},
);
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<
Message Function(
DartType _type, DartType _type2, DartType _type3, DartType _type4)>
templateSpreadMapEntryElementValueTypeMismatchPartNullability =
const Template<
Message Function(
DartType _type, DartType _type2, DartType _type3, DartType _type4)>(
"SpreadMapEntryElementValueTypeMismatchPartNullability",
problemMessageTemplate:
r"""Can't assign spread entry values of type '#type' to map entry values of type '#type2' because '#type3' is nullable and '#type4' isn't.""",
withArguments:
_withArgumentsSpreadMapEntryElementValueTypeMismatchPartNullability,
);
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<
Message Function(
DartType _type, DartType _type2, DartType _type3, DartType _type4)>
codeSpreadMapEntryElementValueTypeMismatchPartNullability = const Code<
Message Function(
DartType _type, DartType _type2, DartType _type3, DartType _type4)>(
"SpreadMapEntryElementValueTypeMismatchPartNullability",
analyzerCodes: <String>["MAP_VALUE_TYPE_NOT_ASSIGNABLE"],
);
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
Message _withArgumentsSpreadMapEntryElementValueTypeMismatchPartNullability(
DartType _type, DartType _type2, DartType _type3, DartType _type4) {
TypeLabeler labeler = new TypeLabeler();
List<Object> typeParts = labeler.labelType(_type);
List<Object> type2Parts = labeler.labelType(_type2);
List<Object> type3Parts = labeler.labelType(_type3);
List<Object> type4Parts = labeler.labelType(_type4);
String type = typeParts.join();
String type2 = type2Parts.join();
String type3 = type3Parts.join();
String type4 = type4Parts.join();
return new Message(
codeSpreadMapEntryElementValueTypeMismatchPartNullability,
problemMessage:
"""Can't assign spread entry values of type '${type}' to map entry values of type '${type2}' because '${type3}' is nullable and '${type4}' isn't.""" +
labeler.originMessages,
arguments: {
'type': _type,
'type2': _type2,
'type3': _type3,
'type4': _type4,
},
);
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<Message Function(DartType _type)>
templateSpreadMapEntryTypeMismatch =
@@ -4464,68 +4464,18 @@ class InferenceVisitorImpl extends InferenceVisitorBase
Expression? keyError;
Expression? valueError;
if (!isAssignable(inferredKeyType, actualKeyType)) {
IsSubtypeOf subtypeCheckResult =
typeSchemaEnvironment.performNullabilityAwareSubtypeCheck(
actualKeyType, inferredKeyType);
if (subtypeCheckResult.isSubtypeWhenIgnoringNullabilities()) {
if (actualKeyType == subtypeCheckResult.subtype &&
inferredKeyType == subtypeCheckResult.supertype) {
keyError = helper.buildProblem(
templateSpreadMapEntryElementKeyTypeMismatchNullability
.withArguments(actualKeyType, inferredKeyType),
entry.expression.fileOffset,
1);
} else {
keyError = helper.buildProblem(
// ignore: lines_longer_than_80_chars
templateSpreadMapEntryElementKeyTypeMismatchPartNullability
.withArguments(
actualKeyType,
inferredKeyType,
subtypeCheckResult.subtype!,
subtypeCheckResult.supertype!),
entry.expression.fileOffset,
1);
}
} else {
keyError = helper.buildProblem(
templateSpreadMapEntryElementKeyTypeMismatch.withArguments(
actualKeyType, inferredKeyType),
entry.expression.fileOffset,
1);
}
keyError = helper.buildProblem(
templateSpreadMapEntryElementKeyTypeMismatch.withArguments(
actualKeyType, inferredKeyType),
entry.expression.fileOffset,
1);
}
if (!isAssignable(inferredValueType, actualValueType)) {
IsSubtypeOf subtypeCheckResult =
typeSchemaEnvironment.performNullabilityAwareSubtypeCheck(
actualValueType, inferredValueType);
if (subtypeCheckResult.isSubtypeWhenIgnoringNullabilities()) {
if (actualValueType == subtypeCheckResult.subtype &&
inferredValueType == subtypeCheckResult.supertype) {
valueError = helper.buildProblem(
templateSpreadMapEntryElementValueTypeMismatchNullability
.withArguments(actualValueType, inferredValueType),
entry.expression.fileOffset,
1);
} else {
valueError = helper.buildProblem(
// ignore: lines_longer_than_80_chars
templateSpreadMapEntryElementValueTypeMismatchPartNullability
.withArguments(
actualValueType,
inferredValueType,
subtypeCheckResult.subtype!,
subtypeCheckResult.supertype!),
entry.expression.fileOffset,
1);
}
} else {
valueError = helper.buildProblem(
templateSpreadMapEntryElementValueTypeMismatch.withArguments(
actualValueType, inferredValueType),
entry.expression.fileOffset,
1);
}
valueError = helper.buildProblem(
templateSpreadMapEntryElementValueTypeMismatch.withArguments(
actualValueType, inferredValueType),
entry.expression.fileOffset,
1);
}
if (spreadType.isPotentiallyNullable &&
spreadType is! DynamicType &&
-36
View File
@@ -5181,24 +5181,6 @@ SpreadMapEntryElementKeyTypeMismatch:
Map<int, int> b = <int, int>{...a};
}
SpreadMapEntryElementKeyTypeMismatchNullability:
problemMessage: "Can't assign spread entry keys of type '#type' to map entry keys of type '#type2' because '#type' is nullable and '#type2' isn't."
analyzerCode: MAP_KEY_TYPE_NOT_ASSIGNABLE
script: >
main() {
Map<String?, int> a = <String?, int>{"foo": 42, null: 87};
Map<String, int> b = <String, int>{...a};
}
SpreadMapEntryElementKeyTypeMismatchPartNullability:
problemMessage: "Can't assign spread entry keys of type '#type' to map entry keys of type '#type2' because '#type3' is nullable and '#type4' isn't."
analyzerCode: MAP_KEY_TYPE_NOT_ASSIGNABLE
script: >
main() {
Map<List<String?>, int> a = <List<String?>, int>{["foo"]: 42, [null]: 87};
Map<List<String>, int> b = <List<String>, int>{...a};
}
SpreadMapEntryElementValueTypeMismatch:
problemMessage: "Can't assign spread entry values of type '#type' to map entry values of type '#type2'."
analyzerCode: MAP_VALUE_TYPE_NOT_ASSIGNABLE
@@ -5208,24 +5190,6 @@ SpreadMapEntryElementValueTypeMismatch:
Map<String, String> b = <String, String>{...a};
}
SpreadMapEntryElementValueTypeMismatchNullability:
problemMessage: "Can't assign spread entry values of type '#type' to map entry values of type '#type2' because '#type' is nullable and '#type2' isn't."
analyzerCode: MAP_VALUE_TYPE_NOT_ASSIGNABLE
script: >
main() {
Map<String, int?> a = <String, int?>{"foo": 42, "bar": null};
Map<String, int> b = <String, int>{...a};
}
SpreadMapEntryElementValueTypeMismatchPartNullability:
problemMessage: "Can't assign spread entry values of type '#type' to map entry values of type '#type2' because '#type3' is nullable and '#type4' isn't."
analyzerCode: MAP_VALUE_TYPE_NOT_ASSIGNABLE
script: >
main() {
Map<String, List<int?>> a = <String, List<int?>>{"foo": [42], "bar": [null]};
Map<String, List<int>> b = <String, List<int>>{...a};
}
CantDisambiguateNotEnoughInformation:
problemMessage: "Not enough type information to disambiguate between literal set and literal map."
correctionMessage: "Try providing type arguments for the literal explicitly to disambiguate it."
@@ -24,13 +24,13 @@ library;
// <A>[...l2]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// <A, A>{...m}; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// <A, A>{...m}; // Error.
@@ -103,14 +103,14 @@ library;
// <List<A>>[...l]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>'.
// - 'List' is from 'dart:core'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// <List<A>, List<A>>{...m}; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>'.
// - 'List' is from 'dart:core'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
@@ -221,11 +221,11 @@ static method foo(self::B? x, core::List<self::B?> l, core::Map<self::B?, self::
<self::A>[invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:32:10: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
<A>[...l2]; // Error.
^"];
<self::A, self::A>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A' because 'B?' is nullable and 'A' isn't.
<self::A, self::A>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<A, A>{...m}; // Error.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A' because 'B?' is nullable and 'A' isn't.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<A, A>{...m}; // Error.
@@ -303,12 +303,12 @@ static method bar(core::List<self::B?> x, core::List<core::List<self::B?>> l, co
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<List<A>>[...l]; // Error.
^"];
<core::List<self::A>, core::List<self::A>>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>' because 'B?' is nullable and 'A' isn't.
<core::List<self::A>, core::List<self::A>>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>'.
- 'List' is from 'dart:core'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<List<A>, List<A>>{...m}; // Error.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>' because 'B?' is nullable and 'A' isn't.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>'.
- 'List' is from 'dart:core'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
@@ -24,13 +24,13 @@ library;
// <A>[...l2]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// <A, A>{...m}; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// <A, A>{...m}; // Error.
@@ -103,14 +103,14 @@ library;
// <List<A>>[...l]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>'.
// - 'List' is from 'dart:core'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// <List<A>, List<A>>{...m}; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>'.
// - 'List' is from 'dart:core'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
@@ -221,11 +221,11 @@ static method foo(self::B? x, core::List<self::B?> l, core::Map<self::B?, self::
<self::A>[invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:32:10: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
<A>[...l2]; // Error.
^"];
<self::A, self::A>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A' because 'B?' is nullable and 'A' isn't.
<self::A, self::A>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<A, A>{...m}; // Error.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A' because 'B?' is nullable and 'A' isn't.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<A, A>{...m}; // Error.
@@ -303,12 +303,12 @@ static method bar(core::List<self::B?> x, core::List<core::List<self::B?>> l, co
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<List<A>>[...l]; // Error.
^"];
<core::List<self::A>, core::List<self::A>>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>' because 'B?' is nullable and 'A' isn't.
<core::List<self::A>, core::List<self::A>>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>'.
- 'List' is from 'dart:core'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<List<A>, List<A>>{...m}; // Error.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>' because 'B?' is nullable and 'A' isn't.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>'.
- 'List' is from 'dart:core'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
@@ -24,13 +24,13 @@ library;
// <A>[...l2]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// <A, A>{...m}; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// <A, A>{...m}; // Error.
@@ -103,14 +103,14 @@ library;
// <List<A>>[...l]; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>'.
// - 'List' is from 'dart:core'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// <List<A>, List<A>>{...m}; // Error.
// ^
//
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>' because 'B?' is nullable and 'A' isn't.
// pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>'.
// - 'List' is from 'dart:core'.
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
@@ -221,11 +221,11 @@ static method foo(self::B? x, core::List<self::B?> l, core::Map<self::B?, self::
core::_GrowableList::_literal1<self::A>(invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:32:10: Error: An expression whose value can be 'null' must be null-checked before it can be dereferenced.
<A>[...l2]; // Error.
^");
<self::A, self::A>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A' because 'B?' is nullable and 'A' isn't.
<self::A, self::A>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry keys of type 'B?' to map entry keys of type 'A'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<A, A>{...m}; // Error.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A' because 'B?' is nullable and 'A' isn't.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:33:13: Error: Can't assign spread entry values of type 'B?' to map entry values of type 'A'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<A, A>{...m}; // Error.
@@ -314,12 +314,12 @@ static method bar(core::List<self::B?> x, core::List<core::List<self::B?>> l, co
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<List<A>>[...l]; // Error.
^");
<core::List<self::A>, core::List<self::A>>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>' because 'B?' is nullable and 'A' isn't.
<core::List<self::A>, core::List<self::A>>{invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry keys of type 'List<B?>' to map entry keys of type 'List<A>'.
- 'List' is from 'dart:core'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
<List<A>, List<A>>{...m}; // Error.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>' because 'B?' is nullable and 'A' isn't.
^": invalid-expression "pkg/front_end/testcases/nnbd/assignability_error_messages.dart:58:25: Error: Can't assign spread entry values of type 'List<B?>' to map entry values of type 'List<A>'.
- 'List' is from 'dart:core'.
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.