Skip to content

Commit ca694e4

Browse files
chloestefantsovaCommit Queue
authored andcommitted
[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 <[email protected]> Commit-Queue: Chloe Stefantsova <[email protected]>
1 parent 9439795 commit ca694e4

File tree

6 files changed

+34
-301
lines changed

6 files changed

+34
-301
lines changed

pkg/front_end/lib/src/codes/cfe_codes_generated.dart

Lines changed: 0 additions & 181 deletions
Original file line numberDiff line numberDiff line change
@@ -4241,96 +4241,6 @@ Message _withArgumentsSpreadMapEntryElementKeyTypeMismatch(
42414241
);
42424242
}
42434243

4244-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4245-
const Template<Message Function(DartType _type, DartType _type2)>
4246-
templateSpreadMapEntryElementKeyTypeMismatchNullability =
4247-
const Template<Message Function(DartType _type, DartType _type2)>(
4248-
"SpreadMapEntryElementKeyTypeMismatchNullability",
4249-
problemMessageTemplate:
4250-
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.""",
4251-
withArguments: _withArgumentsSpreadMapEntryElementKeyTypeMismatchNullability,
4252-
);
4253-
4254-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4255-
const Code<Message Function(DartType _type, DartType _type2)>
4256-
codeSpreadMapEntryElementKeyTypeMismatchNullability =
4257-
const Code<Message Function(DartType _type, DartType _type2)>(
4258-
"SpreadMapEntryElementKeyTypeMismatchNullability",
4259-
analyzerCodes: <String>["MAP_KEY_TYPE_NOT_ASSIGNABLE"],
4260-
);
4261-
4262-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4263-
Message _withArgumentsSpreadMapEntryElementKeyTypeMismatchNullability(
4264-
DartType _type, DartType _type2) {
4265-
TypeLabeler labeler = new TypeLabeler();
4266-
List<Object> typeParts = labeler.labelType(_type);
4267-
List<Object> type2Parts = labeler.labelType(_type2);
4268-
String type = typeParts.join();
4269-
String type2 = type2Parts.join();
4270-
return new Message(
4271-
codeSpreadMapEntryElementKeyTypeMismatchNullability,
4272-
problemMessage:
4273-
"""Can't assign spread entry keys of type '${type}' to map entry keys of type '${type2}' because '${type}' is nullable and '${type2}' isn't.""" +
4274-
labeler.originMessages,
4275-
arguments: {
4276-
'type': _type,
4277-
'type2': _type2,
4278-
},
4279-
);
4280-
}
4281-
4282-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4283-
const Template<
4284-
Message Function(
4285-
DartType _type, DartType _type2, DartType _type3, DartType _type4)>
4286-
templateSpreadMapEntryElementKeyTypeMismatchPartNullability =
4287-
const Template<
4288-
Message Function(
4289-
DartType _type, DartType _type2, DartType _type3, DartType _type4)>(
4290-
"SpreadMapEntryElementKeyTypeMismatchPartNullability",
4291-
problemMessageTemplate:
4292-
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.""",
4293-
withArguments:
4294-
_withArgumentsSpreadMapEntryElementKeyTypeMismatchPartNullability,
4295-
);
4296-
4297-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4298-
const Code<
4299-
Message Function(
4300-
DartType _type, DartType _type2, DartType _type3, DartType _type4)>
4301-
codeSpreadMapEntryElementKeyTypeMismatchPartNullability = const Code<
4302-
Message Function(
4303-
DartType _type, DartType _type2, DartType _type3, DartType _type4)>(
4304-
"SpreadMapEntryElementKeyTypeMismatchPartNullability",
4305-
analyzerCodes: <String>["MAP_KEY_TYPE_NOT_ASSIGNABLE"],
4306-
);
4307-
4308-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4309-
Message _withArgumentsSpreadMapEntryElementKeyTypeMismatchPartNullability(
4310-
DartType _type, DartType _type2, DartType _type3, DartType _type4) {
4311-
TypeLabeler labeler = new TypeLabeler();
4312-
List<Object> typeParts = labeler.labelType(_type);
4313-
List<Object> type2Parts = labeler.labelType(_type2);
4314-
List<Object> type3Parts = labeler.labelType(_type3);
4315-
List<Object> type4Parts = labeler.labelType(_type4);
4316-
String type = typeParts.join();
4317-
String type2 = type2Parts.join();
4318-
String type3 = type3Parts.join();
4319-
String type4 = type4Parts.join();
4320-
return new Message(
4321-
codeSpreadMapEntryElementKeyTypeMismatchPartNullability,
4322-
problemMessage:
4323-
"""Can't assign spread entry keys of type '${type}' to map entry keys of type '${type2}' because '${type3}' is nullable and '${type4}' isn't.""" +
4324-
labeler.originMessages,
4325-
arguments: {
4326-
'type': _type,
4327-
'type2': _type2,
4328-
'type3': _type3,
4329-
'type4': _type4,
4330-
},
4331-
);
4332-
}
4333-
43344244
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
43354245
const Template<Message Function(DartType _type, DartType _type2)>
43364246
templateSpreadMapEntryElementValueTypeMismatch =
@@ -4369,97 +4279,6 @@ Message _withArgumentsSpreadMapEntryElementValueTypeMismatch(
43694279
);
43704280
}
43714281

4372-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4373-
const Template<Message Function(DartType _type, DartType _type2)>
4374-
templateSpreadMapEntryElementValueTypeMismatchNullability =
4375-
const Template<Message Function(DartType _type, DartType _type2)>(
4376-
"SpreadMapEntryElementValueTypeMismatchNullability",
4377-
problemMessageTemplate:
4378-
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.""",
4379-
withArguments:
4380-
_withArgumentsSpreadMapEntryElementValueTypeMismatchNullability,
4381-
);
4382-
4383-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4384-
const Code<Message Function(DartType _type, DartType _type2)>
4385-
codeSpreadMapEntryElementValueTypeMismatchNullability =
4386-
const Code<Message Function(DartType _type, DartType _type2)>(
4387-
"SpreadMapEntryElementValueTypeMismatchNullability",
4388-
analyzerCodes: <String>["MAP_VALUE_TYPE_NOT_ASSIGNABLE"],
4389-
);
4390-
4391-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4392-
Message _withArgumentsSpreadMapEntryElementValueTypeMismatchNullability(
4393-
DartType _type, DartType _type2) {
4394-
TypeLabeler labeler = new TypeLabeler();
4395-
List<Object> typeParts = labeler.labelType(_type);
4396-
List<Object> type2Parts = labeler.labelType(_type2);
4397-
String type = typeParts.join();
4398-
String type2 = type2Parts.join();
4399-
return new Message(
4400-
codeSpreadMapEntryElementValueTypeMismatchNullability,
4401-
problemMessage:
4402-
"""Can't assign spread entry values of type '${type}' to map entry values of type '${type2}' because '${type}' is nullable and '${type2}' isn't.""" +
4403-
labeler.originMessages,
4404-
arguments: {
4405-
'type': _type,
4406-
'type2': _type2,
4407-
},
4408-
);
4409-
}
4410-
4411-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4412-
const Template<
4413-
Message Function(
4414-
DartType _type, DartType _type2, DartType _type3, DartType _type4)>
4415-
templateSpreadMapEntryElementValueTypeMismatchPartNullability =
4416-
const Template<
4417-
Message Function(
4418-
DartType _type, DartType _type2, DartType _type3, DartType _type4)>(
4419-
"SpreadMapEntryElementValueTypeMismatchPartNullability",
4420-
problemMessageTemplate:
4421-
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.""",
4422-
withArguments:
4423-
_withArgumentsSpreadMapEntryElementValueTypeMismatchPartNullability,
4424-
);
4425-
4426-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4427-
const Code<
4428-
Message Function(
4429-
DartType _type, DartType _type2, DartType _type3, DartType _type4)>
4430-
codeSpreadMapEntryElementValueTypeMismatchPartNullability = const Code<
4431-
Message Function(
4432-
DartType _type, DartType _type2, DartType _type3, DartType _type4)>(
4433-
"SpreadMapEntryElementValueTypeMismatchPartNullability",
4434-
analyzerCodes: <String>["MAP_VALUE_TYPE_NOT_ASSIGNABLE"],
4435-
);
4436-
4437-
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
4438-
Message _withArgumentsSpreadMapEntryElementValueTypeMismatchPartNullability(
4439-
DartType _type, DartType _type2, DartType _type3, DartType _type4) {
4440-
TypeLabeler labeler = new TypeLabeler();
4441-
List<Object> typeParts = labeler.labelType(_type);
4442-
List<Object> type2Parts = labeler.labelType(_type2);
4443-
List<Object> type3Parts = labeler.labelType(_type3);
4444-
List<Object> type4Parts = labeler.labelType(_type4);
4445-
String type = typeParts.join();
4446-
String type2 = type2Parts.join();
4447-
String type3 = type3Parts.join();
4448-
String type4 = type4Parts.join();
4449-
return new Message(
4450-
codeSpreadMapEntryElementValueTypeMismatchPartNullability,
4451-
problemMessage:
4452-
"""Can't assign spread entry values of type '${type}' to map entry values of type '${type2}' because '${type3}' is nullable and '${type4}' isn't.""" +
4453-
labeler.originMessages,
4454-
arguments: {
4455-
'type': _type,
4456-
'type2': _type2,
4457-
'type3': _type3,
4458-
'type4': _type4,
4459-
},
4460-
);
4461-
}
4462-
44634282
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
44644283
const Template<Message Function(DartType _type)>
44654284
templateSpreadMapEntryTypeMismatch =

pkg/front_end/lib/src/type_inference/inference_visitor.dart

Lines changed: 10 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -4464,68 +4464,18 @@ class InferenceVisitorImpl extends InferenceVisitorBase
44644464
Expression? keyError;
44654465
Expression? valueError;
44664466
if (!isAssignable(inferredKeyType, actualKeyType)) {
4467-
IsSubtypeOf subtypeCheckResult =
4468-
typeSchemaEnvironment.performNullabilityAwareSubtypeCheck(
4469-
actualKeyType, inferredKeyType);
4470-
if (subtypeCheckResult.isSubtypeWhenIgnoringNullabilities()) {
4471-
if (actualKeyType == subtypeCheckResult.subtype &&
4472-
inferredKeyType == subtypeCheckResult.supertype) {
4473-
keyError = helper.buildProblem(
4474-
templateSpreadMapEntryElementKeyTypeMismatchNullability
4475-
.withArguments(actualKeyType, inferredKeyType),
4476-
entry.expression.fileOffset,
4477-
1);
4478-
} else {
4479-
keyError = helper.buildProblem(
4480-
// ignore: lines_longer_than_80_chars
4481-
templateSpreadMapEntryElementKeyTypeMismatchPartNullability
4482-
.withArguments(
4483-
actualKeyType,
4484-
inferredKeyType,
4485-
subtypeCheckResult.subtype!,
4486-
subtypeCheckResult.supertype!),
4487-
entry.expression.fileOffset,
4488-
1);
4489-
}
4490-
} else {
4491-
keyError = helper.buildProblem(
4492-
templateSpreadMapEntryElementKeyTypeMismatch.withArguments(
4493-
actualKeyType, inferredKeyType),
4494-
entry.expression.fileOffset,
4495-
1);
4496-
}
4467+
keyError = helper.buildProblem(
4468+
templateSpreadMapEntryElementKeyTypeMismatch.withArguments(
4469+
actualKeyType, inferredKeyType),
4470+
entry.expression.fileOffset,
4471+
1);
44974472
}
44984473
if (!isAssignable(inferredValueType, actualValueType)) {
4499-
IsSubtypeOf subtypeCheckResult =
4500-
typeSchemaEnvironment.performNullabilityAwareSubtypeCheck(
4501-
actualValueType, inferredValueType);
4502-
if (subtypeCheckResult.isSubtypeWhenIgnoringNullabilities()) {
4503-
if (actualValueType == subtypeCheckResult.subtype &&
4504-
inferredValueType == subtypeCheckResult.supertype) {
4505-
valueError = helper.buildProblem(
4506-
templateSpreadMapEntryElementValueTypeMismatchNullability
4507-
.withArguments(actualValueType, inferredValueType),
4508-
entry.expression.fileOffset,
4509-
1);
4510-
} else {
4511-
valueError = helper.buildProblem(
4512-
// ignore: lines_longer_than_80_chars
4513-
templateSpreadMapEntryElementValueTypeMismatchPartNullability
4514-
.withArguments(
4515-
actualValueType,
4516-
inferredValueType,
4517-
subtypeCheckResult.subtype!,
4518-
subtypeCheckResult.supertype!),
4519-
entry.expression.fileOffset,
4520-
1);
4521-
}
4522-
} else {
4523-
valueError = helper.buildProblem(
4524-
templateSpreadMapEntryElementValueTypeMismatch.withArguments(
4525-
actualValueType, inferredValueType),
4526-
entry.expression.fileOffset,
4527-
1);
4528-
}
4474+
valueError = helper.buildProblem(
4475+
templateSpreadMapEntryElementValueTypeMismatch.withArguments(
4476+
actualValueType, inferredValueType),
4477+
entry.expression.fileOffset,
4478+
1);
45294479
}
45304480
if (spreadType.isPotentiallyNullable &&
45314481
spreadType is! DynamicType &&

pkg/front_end/messages.yaml

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5181,24 +5181,6 @@ SpreadMapEntryElementKeyTypeMismatch:
51815181
Map<int, int> b = <int, int>{...a};
51825182
}
51835183
5184-
SpreadMapEntryElementKeyTypeMismatchNullability:
5185-
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."
5186-
analyzerCode: MAP_KEY_TYPE_NOT_ASSIGNABLE
5187-
script: >
5188-
main() {
5189-
Map<String?, int> a = <String?, int>{"foo": 42, null: 87};
5190-
Map<String, int> b = <String, int>{...a};
5191-
}
5192-
5193-
SpreadMapEntryElementKeyTypeMismatchPartNullability:
5194-
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."
5195-
analyzerCode: MAP_KEY_TYPE_NOT_ASSIGNABLE
5196-
script: >
5197-
main() {
5198-
Map<List<String?>, int> a = <List<String?>, int>{["foo"]: 42, [null]: 87};
5199-
Map<List<String>, int> b = <List<String>, int>{...a};
5200-
}
5201-
52025184
SpreadMapEntryElementValueTypeMismatch:
52035185
problemMessage: "Can't assign spread entry values of type '#type' to map entry values of type '#type2'."
52045186
analyzerCode: MAP_VALUE_TYPE_NOT_ASSIGNABLE
@@ -5208,24 +5190,6 @@ SpreadMapEntryElementValueTypeMismatch:
52085190
Map<String, String> b = <String, String>{...a};
52095191
}
52105192
5211-
SpreadMapEntryElementValueTypeMismatchNullability:
5212-
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."
5213-
analyzerCode: MAP_VALUE_TYPE_NOT_ASSIGNABLE
5214-
script: >
5215-
main() {
5216-
Map<String, int?> a = <String, int?>{"foo": 42, "bar": null};
5217-
Map<String, int> b = <String, int>{...a};
5218-
}
5219-
5220-
SpreadMapEntryElementValueTypeMismatchPartNullability:
5221-
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."
5222-
analyzerCode: MAP_VALUE_TYPE_NOT_ASSIGNABLE
5223-
script: >
5224-
main() {
5225-
Map<String, List<int?>> a = <String, List<int?>>{"foo": [42], "bar": [null]};
5226-
Map<String, List<int>> b = <String, List<int>>{...a};
5227-
}
5228-
52295193
CantDisambiguateNotEnoughInformation:
52305194
problemMessage: "Not enough type information to disambiguate between literal set and literal map."
52315195
correctionMessage: "Try providing type arguments for the literal explicitly to disambiguate it."

pkg/front_end/testcases/nnbd/assignability_error_messages.dart.strong.expect

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ library;
2424
// <A>[...l2]; // Error.
2525
// ^
2626
//
27-
// 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.
27+
// 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'.
2828
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
2929
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
3030
// <A, A>{...m}; // Error.
3131
// ^
3232
//
33-
// 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.
33+
// 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'.
3434
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
3535
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
3636
// <A, A>{...m}; // Error.
@@ -103,14 +103,14 @@ library;
103103
// <List<A>>[...l]; // Error.
104104
// ^
105105
//
106-
// 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.
106+
// 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>'.
107107
// - 'List' is from 'dart:core'.
108108
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
109109
// - 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
110110
// <List<A>, List<A>>{...m}; // Error.
111111
// ^
112112
//
113-
// 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.
113+
// 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>'.
114114
// - 'List' is from 'dart:core'.
115115
// - 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
116116
// - '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::
221221
<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.
222222
<A>[...l2]; // Error.
223223
^"];
224-
<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.
224+
<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'.
225225
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
226226
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
227227
<A, A>{...m}; // Error.
228-
^": 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.
228+
^": 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'.
229229
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
230230
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
231231
<A, A>{...m}; // Error.
@@ -303,12 +303,12 @@ static method bar(core::List<self::B?> x, core::List<core::List<self::B?>> l, co
303303
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
304304
<List<A>>[...l]; // Error.
305305
^"];
306-
<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.
306+
<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>'.
307307
- 'List' is from 'dart:core'.
308308
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
309309
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
310310
<List<A>, List<A>>{...m}; // Error.
311-
^": 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.
311+
^": 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>'.
312312
- 'List' is from 'dart:core'.
313313
- 'B' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.
314314
- 'A' is from 'pkg/front_end/testcases/nnbd/assignability_error_messages.dart'.

0 commit comments

Comments
 (0)