[cfe] Handle Null/Never-ish spread element types
Closes #42758 Change-Id: I0b25a5a1abc0896300f61fc98f514f1ed1a63e31 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/155447 Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
This commit is contained in:
@@ -6379,14 +6379,6 @@ const MessageCode messageNonInstanceTypeVariableUse = const MessageCode(
|
||||
analyzerCodes: <String>["TYPE_PARAMETER_REFERENCED_BY_STATIC"],
|
||||
message: r"""Can only use type variables in instance methods.""");
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Code<Null> codeNonNullAwareSpreadIsNull = messageNonNullAwareSpreadIsNull;
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const MessageCode messageNonNullAwareSpreadIsNull = const MessageCode(
|
||||
"NonNullAwareSpreadIsNull",
|
||||
message: r"""Can't spread a value with static type Null.""");
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Template<Message Function(String name)>
|
||||
templateNonNullableLateDefinitelyAssignedError =
|
||||
|
||||
@@ -2196,6 +2196,33 @@ Message _withArgumentsMixinInferenceNoMatchingClass(
|
||||
arguments: {'name': name, 'name2': name2, 'type': _type});
|
||||
}
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Template<Message Function(DartType _type, bool isNonNullableByDefault)>
|
||||
templateNonNullAwareSpreadIsNull = const Template<
|
||||
Message Function(DartType _type, bool isNonNullableByDefault)>(
|
||||
messageTemplate: r"""Can't spread a value with static type '#type'.""",
|
||||
withArguments: _withArgumentsNonNullAwareSpreadIsNull);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Code<Message Function(DartType _type, bool isNonNullableByDefault)>
|
||||
codeNonNullAwareSpreadIsNull =
|
||||
const Code<Message Function(DartType _type, bool isNonNullableByDefault)>(
|
||||
"NonNullAwareSpreadIsNull",
|
||||
templateNonNullAwareSpreadIsNull,
|
||||
);
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
Message _withArgumentsNonNullAwareSpreadIsNull(
|
||||
DartType _type, bool isNonNullableByDefault) {
|
||||
TypeLabeler labeler = new TypeLabeler(isNonNullableByDefault);
|
||||
List<Object> typeParts = labeler.labelType(_type);
|
||||
String type = typeParts.join();
|
||||
return new Message(codeNonNullAwareSpreadIsNull,
|
||||
message: """Can't spread a value with static type '${type}'.""" +
|
||||
labeler.originMessages,
|
||||
arguments: {'type': _type});
|
||||
}
|
||||
|
||||
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
|
||||
const Template<
|
||||
Message Function(
|
||||
|
||||
@@ -1328,21 +1328,27 @@ class InferenceVisitor
|
||||
}
|
||||
|
||||
DartType getSpreadElementType(DartType spreadType, bool isNullAware) {
|
||||
if (spreadType is InterfaceType) {
|
||||
if (spreadType.classNode == inferrer.coreTypes.nullClass) {
|
||||
if (inferrer.isNonNullableByDefault) {
|
||||
return isNullAware ? const NeverType(Nullability.nonNullable) : null;
|
||||
} else {
|
||||
return isNullAware ? spreadType : null;
|
||||
}
|
||||
DartType typeBound = inferrer.resolveTypeParameter(spreadType);
|
||||
if (inferrer.coreTypes.isNull(typeBound)) {
|
||||
if (inferrer.isNonNullableByDefault) {
|
||||
return isNullAware ? const NeverType(Nullability.nonNullable) : null;
|
||||
} else {
|
||||
return isNullAware ? inferrer.coreTypes.nullType : null;
|
||||
}
|
||||
}
|
||||
if (typeBound is InterfaceType) {
|
||||
List<DartType> supertypeArguments = inferrer.typeSchemaEnvironment
|
||||
.getTypeArgumentsAsInstanceOf(
|
||||
spreadType, inferrer.coreTypes.iterableClass);
|
||||
if (supertypeArguments == null) return null;
|
||||
typeBound, inferrer.coreTypes.iterableClass);
|
||||
if (supertypeArguments == null) {
|
||||
return null;
|
||||
}
|
||||
return supertypeArguments.single;
|
||||
} else if (spreadType is DynamicType) {
|
||||
return const DynamicType();
|
||||
} else if (inferrer.coreTypes.isBottom(spreadType)) {
|
||||
return const NeverType(Nullability.nonNullable);
|
||||
}
|
||||
if (spreadType is DynamicType) return const DynamicType();
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1374,11 +1380,12 @@ class InferenceVisitor
|
||||
DartType spreadElementType =
|
||||
getSpreadElementType(spreadType, element.isNullAware);
|
||||
if (spreadElementType == null) {
|
||||
if (spreadType is InterfaceType &&
|
||||
spreadType.classNode == inferrer.coreTypes.nullClass &&
|
||||
if (inferrer.coreTypes
|
||||
.isNull(inferrer.resolveTypeParameter(spreadType)) &&
|
||||
!element.isNullAware) {
|
||||
replacement = inferrer.helper.buildProblem(
|
||||
messageNonNullAwareSpreadIsNull,
|
||||
templateNonNullAwareSpreadIsNull.withArguments(
|
||||
spreadType, inferrer.isNonNullableByDefault),
|
||||
element.expression.fileOffset,
|
||||
1);
|
||||
} else {
|
||||
@@ -1734,28 +1741,28 @@ class InferenceVisitor
|
||||
// is a function type, the original values in output are preserved.
|
||||
void storeSpreadMapEntryElementTypes(DartType spreadMapEntryType,
|
||||
bool isNullAware, List<DartType> output, int offset) {
|
||||
if (spreadMapEntryType is InterfaceType) {
|
||||
if (spreadMapEntryType.classNode == inferrer.coreTypes.nullClass) {
|
||||
if (isNullAware) {
|
||||
if (inferrer.isNonNullableByDefault) {
|
||||
output[offset] =
|
||||
output[offset + 1] = const NeverType(Nullability.nonNullable);
|
||||
} else {
|
||||
output[offset] = output[offset + 1] = spreadMapEntryType;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
List<DartType> supertypeArguments = inferrer.typeSchemaEnvironment
|
||||
.getTypeArgumentsAsInstanceOf(
|
||||
spreadMapEntryType, inferrer.coreTypes.mapClass);
|
||||
if (supertypeArguments != null) {
|
||||
output[offset] = supertypeArguments[0];
|
||||
output[offset + 1] = supertypeArguments[1];
|
||||
DartType typeBound = inferrer.resolveTypeParameter(spreadMapEntryType);
|
||||
if (inferrer.coreTypes.isNull(typeBound)) {
|
||||
if (isNullAware) {
|
||||
if (inferrer.isNonNullableByDefault) {
|
||||
output[offset] =
|
||||
output[offset + 1] = const NeverType(Nullability.nonNullable);
|
||||
} else {
|
||||
output[offset] = output[offset + 1] = inferrer.coreTypes.nullType;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (spreadMapEntryType is DynamicType) {
|
||||
} else if (typeBound is InterfaceType) {
|
||||
List<DartType> supertypeArguments = inferrer.typeSchemaEnvironment
|
||||
.getTypeArgumentsAsInstanceOf(typeBound, inferrer.coreTypes.mapClass);
|
||||
if (supertypeArguments != null) {
|
||||
output[offset] = supertypeArguments[0];
|
||||
output[offset + 1] = supertypeArguments[1];
|
||||
}
|
||||
} else if (spreadMapEntryType is DynamicType) {
|
||||
output[offset] = output[offset + 1] = const DynamicType();
|
||||
} else if (inferrer.coreTypes.isBottom(spreadMapEntryType)) {
|
||||
output[offset] =
|
||||
output[offset + 1] = const NeverType(Nullability.nonNullable);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1800,12 +1807,15 @@ class InferenceVisitor
|
||||
MapEntry replacement = entry;
|
||||
if (typeChecksNeeded) {
|
||||
if (actualKeyType == null) {
|
||||
if (spreadType is InterfaceType &&
|
||||
spreadType.classNode == inferrer.coreTypes.nullClass &&
|
||||
if (inferrer.coreTypes
|
||||
.isNull(inferrer.resolveTypeParameter(spreadType)) &&
|
||||
!entry.isNullAware) {
|
||||
replacement = new MapEntry(
|
||||
inferrer.helper.buildProblem(messageNonNullAwareSpreadIsNull,
|
||||
entry.expression.fileOffset, 1),
|
||||
inferrer.helper.buildProblem(
|
||||
templateNonNullAwareSpreadIsNull.withArguments(
|
||||
spreadType, inferrer.isNonNullableByDefault),
|
||||
entry.expression.fileOffset,
|
||||
1),
|
||||
new NullLiteral())
|
||||
..fileOffset = entry.fileOffset;
|
||||
} else if (actualElementType != null) {
|
||||
|
||||
@@ -154,9 +154,8 @@ class TypeLabeler implements DartTypeVisitor<void>, ConstantVisitor<void> {
|
||||
}
|
||||
|
||||
void visitNeverType(NeverType node) {
|
||||
// TODO(askesc): Consider throwing internal error if NeverType appears in
|
||||
// diagnostics.
|
||||
result.add("Never");
|
||||
addNullability(node.declaredNullability);
|
||||
}
|
||||
|
||||
void visitDynamicType(DynamicType node) {
|
||||
|
||||
@@ -3914,7 +3914,7 @@ SpreadMapElement:
|
||||
severity: CONTEXT
|
||||
|
||||
NonNullAwareSpreadIsNull:
|
||||
template: "Can't spread a value with static type Null."
|
||||
template: "Can't spread a value with static type '#type'."
|
||||
script: >
|
||||
main() {
|
||||
<int>[...null];
|
||||
|
||||
@@ -76,15 +76,15 @@ library;
|
||||
// Map<String, String> map61 = <String, String>{...mapSpread};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
|
||||
// List<int> lhs70 = <int>[...null];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
|
||||
// Set<int> set70 = <int>{...null};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
|
||||
// ...null,
|
||||
// ^
|
||||
//
|
||||
@@ -92,7 +92,7 @@ library;
|
||||
// ...null,
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
|
||||
// Map<String, int> map70 = <String, int>{...null};
|
||||
// ^
|
||||
//
|
||||
@@ -302,10 +302,10 @@ Try providing type arguments for the literal explicitly to disambiguate it.
|
||||
core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:129:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
|
||||
Map<String, String> map61 = <String, String>{...mapSpread};
|
||||
^"};
|
||||
core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type Null.
|
||||
core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
|
||||
List<int> lhs70 = <int>[...null];
|
||||
^"];
|
||||
core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final dynamic #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type Null.
|
||||
core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final dynamic #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
|
||||
Set<int> set70 = <int>{...null};
|
||||
^") in #t66;
|
||||
core::Set<dynamic>* set71ambiguous = block {
|
||||
@@ -318,7 +318,7 @@ Try providing type arguments for the literal explicitly to disambiguate it.
|
||||
#t68.{core::Set::add}(#t70);
|
||||
}
|
||||
} =>#t68;
|
||||
core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type Null.
|
||||
core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
|
||||
Map<String, int> map70 = <String, int>{...null};
|
||||
^": null};
|
||||
core::List<core::int*>* lhs80 = block {
|
||||
|
||||
+7
-7
@@ -76,15 +76,15 @@ library;
|
||||
// Map<String, String> map61 = <String, String>{...mapSpread};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
|
||||
// List<int> lhs70 = <int>[...null];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
|
||||
// Set<int> set70 = <int>{...null};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:137:8: Error: Can't spread a value with static type 'Null'.
|
||||
// ...null,
|
||||
// ^
|
||||
//
|
||||
@@ -92,7 +92,7 @@ library;
|
||||
// ...null,
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
|
||||
// Map<String, int> map70 = <String, int>{...null};
|
||||
// ^
|
||||
//
|
||||
@@ -431,10 +431,10 @@ Try providing type arguments for the literal explicitly to disambiguate it.
|
||||
core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:129:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
|
||||
Map<String, String> map61 = <String, String>{...mapSpread};
|
||||
^"};
|
||||
core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type Null.
|
||||
core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:131:30: Error: Can't spread a value with static type 'Null'.
|
||||
List<int> lhs70 = <int>[...null];
|
||||
^"];
|
||||
core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type Null.
|
||||
core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:133:29: Error: Can't spread a value with static type 'Null'.
|
||||
Set<int> set70 = <int>{...null};
|
||||
^") in #t66;
|
||||
core::Set<dynamic>* set71ambiguous = block {
|
||||
@@ -453,7 +453,7 @@ Try providing type arguments for the literal explicitly to disambiguate it.
|
||||
}
|
||||
}
|
||||
} =>#t68;
|
||||
core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type Null.
|
||||
core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general/spread_collection_inference.dart:142:45: Error: Can't spread a value with static type 'Null'.
|
||||
Map<String, int> map70 = <String, int>{...null};
|
||||
^": null};
|
||||
core::List<core::int*>* lhs80 = block {
|
||||
|
||||
+7
-7
@@ -76,15 +76,15 @@ library;
|
||||
// Map<String, String> map61 = <String, String>{...mapSpread};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
|
||||
// List<int> lhs70 = <int>[...null];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
|
||||
// Set<int> set70 = <int>{...null};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type 'Null'.
|
||||
// ...null,
|
||||
// ^
|
||||
//
|
||||
@@ -92,7 +92,7 @@ library;
|
||||
// ...null,
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
|
||||
// Map<String, int> map70 = <String, int>{...null};
|
||||
// ^
|
||||
//
|
||||
@@ -302,10 +302,10 @@ Try providing type arguments for the literal explicitly to disambiguate it.
|
||||
core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:131:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
|
||||
Map<String, String> map61 = <String, String>{...mapSpread};
|
||||
^"};
|
||||
core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type Null.
|
||||
core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
|
||||
List<int> lhs70 = <int>[...null];
|
||||
^"];
|
||||
core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final dynamic #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type Null.
|
||||
core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final dynamic #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
|
||||
Set<int> set70 = <int>{...null};
|
||||
^") in #t66;
|
||||
core::Set<dynamic>* set71ambiguous = block {
|
||||
@@ -318,7 +318,7 @@ Try providing type arguments for the literal explicitly to disambiguate it.
|
||||
#t68.{core::Set::add}(#t70);
|
||||
}
|
||||
} =>#t68;
|
||||
core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type Null.
|
||||
core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
|
||||
Map<String, int> map70 = <String, int>{...null};
|
||||
^": null};
|
||||
core::List<core::int*>* lhs80 = block {
|
||||
|
||||
+7
-7
@@ -76,15 +76,15 @@ library;
|
||||
// Map<String, String> map61 = <String, String>{...mapSpread};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
|
||||
// List<int> lhs70 = <int>[...null];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
|
||||
// Set<int> set70 = <int>{...null};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:139:8: Error: Can't spread a value with static type 'Null'.
|
||||
// ...null,
|
||||
// ^
|
||||
//
|
||||
@@ -92,7 +92,7 @@ library;
|
||||
// ...null,
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type Null.
|
||||
// pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
|
||||
// Map<String, int> map70 = <String, int>{...null};
|
||||
// ^
|
||||
//
|
||||
@@ -431,10 +431,10 @@ Try providing type arguments for the literal explicitly to disambiguate it.
|
||||
core::Map<core::String*, core::String*>* map61 = <core::String*, core::String*>{null: invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:131:51: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
|
||||
Map<String, String> map61 = <String, String>{...mapSpread};
|
||||
^"};
|
||||
core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type Null.
|
||||
core::List<core::int*>* lhs70 = <core::int*>[invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:133:30: Error: Can't spread a value with static type 'Null'.
|
||||
List<int> lhs70 = <int>[...null];
|
||||
^"];
|
||||
core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type Null.
|
||||
core::Set<core::int*>* set70 = let final core::Set<core::int*>* #t66 = col::LinkedHashSet::•<core::int*>() in let final core::bool #t67 = #t66.{core::Set::add}(invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:135:29: Error: Can't spread a value with static type 'Null'.
|
||||
Set<int> set70 = <int>{...null};
|
||||
^") in #t66;
|
||||
core::Set<dynamic>* set71ambiguous = block {
|
||||
@@ -453,7 +453,7 @@ Try providing type arguments for the literal explicitly to disambiguate it.
|
||||
}
|
||||
}
|
||||
} =>#t68;
|
||||
core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type Null.
|
||||
core::Map<core::String*, core::int*>* map70 = <core::String*, core::int*>{invalid-expression "pkg/front_end/testcases/general_nnbd_opt_out/spread_collection_inference.dart:144:45: Error: Can't spread a value with static type 'Null'.
|
||||
Map<String, int> map70 = <String, int>{...null};
|
||||
^": null};
|
||||
core::List<core::int*>* lhs80 = block {
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
test1(Never n1, Never? n2, Null n3) {
|
||||
var l1 = [...n1];
|
||||
var l2 = [...?n1];
|
||||
var l3 = [...n2];
|
||||
var l4 = [...?n2];
|
||||
var l5 = [...n3];
|
||||
var l6 = [...?n3];
|
||||
var s1 = {...n1, n1};
|
||||
var s2 = {...?n1, n1};
|
||||
var s3 = {...n2, n1};
|
||||
var s4 = {...?n2, n1};
|
||||
var s5 = {...n3, n1};
|
||||
var s6 = {...?n3, n1};
|
||||
var m1 = {...n1, n1: n1};
|
||||
var m2 = {...?n1, n1: n1};
|
||||
var m3 = {...n2, n1: n1};
|
||||
var m4 = {...?n2, n1: n1};
|
||||
var m5 = {...n3, n1: n1};
|
||||
var m6 = {...?n3, n1: n1};
|
||||
}
|
||||
|
||||
test2<N1 extends Never, N2 extends Never?, N3 extends Null>(
|
||||
N1 n1, N2 n2, N3 n3) {
|
||||
var l1 = [...n1];
|
||||
var l2 = [...?n1];
|
||||
var l3 = [...n2];
|
||||
var l4 = [...?n2];
|
||||
var l5 = [...n3];
|
||||
var l6 = [...?n3];
|
||||
var s1 = {...n1, n1};
|
||||
var s2 = {...?n1, n1};
|
||||
var s3 = {...n2, n1};
|
||||
var s4 = {...?n2, n1};
|
||||
var s5 = {...n3, n1};
|
||||
var s6 = {...?n3, n1};
|
||||
var m1 = {...n1, n1: n1};
|
||||
var m2 = {...?n1, n1: n1};
|
||||
var m3 = {...n2, n1: n1};
|
||||
var m4 = {...?n2, n1: n1};
|
||||
var m5 = {...n3, n1: n1};
|
||||
var m6 = {...?n3, n1: n1};
|
||||
}
|
||||
|
||||
main() {}
|
||||
@@ -0,0 +1,10 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
|
||||
static method test1(Never n1, Never? n2, core::Null? n3) → dynamic
|
||||
;
|
||||
static method test2<N1 extends Never = Never, N2 extends Never? = Never?, N3 extends core::Null? = core::Null?>(self::test2::N1 n1, self::test2::N2% n2, self::test2::N3% n3) → dynamic
|
||||
;
|
||||
static method main() → dynamic
|
||||
;
|
||||
@@ -0,0 +1,293 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:7:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var l2 = [...?n1];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var l3 = [...n2];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var l5 = [...n3];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:13:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var s2 = {...?n1, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var s3 = {...n2, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var s5 = {...n3, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:19:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var m2 = {...?n1, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var m3 = {...n2, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var m5 = {...n3, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:29:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var l2 = [...?n1];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var l3 = [...n2];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var l5 = [...n3];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:35:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var s2 = {...?n1, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var s3 = {...n2, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var s5 = {...n3, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:41:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var m2 = {...?n1, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var m3 = {...n2, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var m5 = {...n3, n1: n1};
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:collection" as col;
|
||||
|
||||
static method test1(Never n1, Never? n2, core::Null? n3) → dynamic {
|
||||
core::List<Never> l1 = block {
|
||||
final core::List<Never> #t1 = <Never>[];
|
||||
for (final Never #t2 in n1)
|
||||
#t1.{core::List::add}(#t2);
|
||||
} =>#t1;
|
||||
core::List<Never> l2 = block {
|
||||
final core::List<Never> #t3 = <Never>[];
|
||||
final core::Iterable<Never>? #t4 = n1;
|
||||
if(!#t4.{core::Object::==}(null))
|
||||
for (final Never #t5 in #t4{core::Iterable<Never>})
|
||||
#t3.{core::List::add}(#t5);
|
||||
} =>#t3;
|
||||
core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var l3 = [...n2];
|
||||
^"];
|
||||
core::List<Never> l4 = block {
|
||||
final core::List<Never> #t6 = <Never>[];
|
||||
final core::Iterable<Never>? #t7 = n2;
|
||||
if(!#t7.{core::Object::==}(null))
|
||||
for (final Never #t8 in #t7{core::Iterable<Never>})
|
||||
#t6.{core::List::add}(#t8);
|
||||
} =>#t6;
|
||||
core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
|
||||
var l5 = [...n3];
|
||||
^"];
|
||||
core::List<Never> l6 = block {
|
||||
final core::List<Never> #t9 = <Never>[];
|
||||
final core::Iterable<Never>? #t10 = n3;
|
||||
if(!#t10.{core::Object::==}(null))
|
||||
for (final Never #t11 in #t10{core::Iterable<Never>})
|
||||
#t9.{core::List::add}(#t11);
|
||||
} =>#t9;
|
||||
core::Set<Never> s1 = block {
|
||||
final core::Set<Never> #t12 = col::LinkedHashSet::•<Never>();
|
||||
for (final Never #t13 in n1)
|
||||
#t12.{core::Set::add}(#t13);
|
||||
#t12.{core::Set::add}(n1);
|
||||
} =>#t12;
|
||||
core::Set<Never> s2 = block {
|
||||
final core::Set<Never> #t14 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t15 = n1;
|
||||
if(!#t15.{core::Object::==}(null))
|
||||
for (final Never #t16 in #t15{core::Iterable<Never>})
|
||||
#t14.{core::Set::add}(#t16);
|
||||
#t14.{core::Set::add}(n1);
|
||||
} =>#t14;
|
||||
core::Set<dynamic> s3 = let final core::Set<dynamic> #t17 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t18 = #t17.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var s3 = {...n2, n1};
|
||||
^") in let final dynamic #t19 = #t17.{core::Set::add}(n1) in #t17;
|
||||
core::Set<Never> s4 = block {
|
||||
final core::Set<Never> #t20 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t21 = n2;
|
||||
if(!#t21.{core::Object::==}(null))
|
||||
for (final Never #t22 in #t21{core::Iterable<Never>})
|
||||
#t20.{core::Set::add}(#t22);
|
||||
#t20.{core::Set::add}(n1);
|
||||
} =>#t20;
|
||||
core::Set<dynamic> s5 = let final core::Set<dynamic> #t23 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t24 = #t23.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
|
||||
var s5 = {...n3, n1};
|
||||
^") in let final dynamic #t25 = #t23.{core::Set::add}(n1) in #t23;
|
||||
core::Set<Never> s6 = block {
|
||||
final core::Set<Never> #t26 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t27 = n3;
|
||||
if(!#t27.{core::Object::==}(null))
|
||||
for (final Never #t28 in #t27{core::Iterable<Never>})
|
||||
#t26.{core::Set::add}(#t28);
|
||||
#t26.{core::Set::add}(n1);
|
||||
} =>#t26;
|
||||
core::Map<Never, Never> m1 = block {
|
||||
final core::Map<Never, Never> #t29 = <Never, Never>{};
|
||||
for (final core::MapEntry<Never, Never> #t30 in n1.{core::Map::entries})
|
||||
#t29.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
|
||||
#t29.{core::Map::[]=}(n1, n1);
|
||||
} =>#t29;
|
||||
core::Map<Never, Never> m2 = block {
|
||||
final core::Map<Never, Never> #t31 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t32 = n1;
|
||||
if(!#t32.{core::Object::==}(null))
|
||||
for (final core::MapEntry<Never, Never> #t33 in #t32{core::Map<Never, Never>}.{core::Map::entries})
|
||||
#t31.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
|
||||
#t31.{core::Map::[]=}(n1, n1);
|
||||
} =>#t31;
|
||||
core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var m3 = {...n2, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<Never, Never> m4 = block {
|
||||
final core::Map<Never, Never> #t34 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t35 = n2;
|
||||
if(!#t35.{core::Object::==}(null))
|
||||
for (final core::MapEntry<Never, Never> #t36 in #t35{core::Map<Never, Never>}.{core::Map::entries})
|
||||
#t34.{core::Map::[]=}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value});
|
||||
#t34.{core::Map::[]=}(n1, n1);
|
||||
} =>#t34;
|
||||
core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
|
||||
var m5 = {...n3, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<Never, Never> m6 = block {
|
||||
final core::Map<Never, Never> #t37 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t38 = n3;
|
||||
if(!#t38.{core::Object::==}(null))
|
||||
for (final core::MapEntry<Never, Never> #t39 in #t38{core::Map<Never, Never>}.{core::Map::entries})
|
||||
#t37.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
|
||||
#t37.{core::Map::[]=}(n1, n1);
|
||||
} =>#t37;
|
||||
}
|
||||
static method test2<N1 extends Never = Never, N2 extends Never? = Never?, N3 extends core::Null? = core::Null?>(self::test2::N1 n1, self::test2::N2% n2, self::test2::N3% n3) → dynamic {
|
||||
core::List<Never> l1 = block {
|
||||
final core::List<Never> #t40 = <Never>[];
|
||||
for (final Never #t41 in n1)
|
||||
#t40.{core::List::add}(#t41);
|
||||
} =>#t40;
|
||||
core::List<Never> l2 = block {
|
||||
final core::List<Never> #t42 = <Never>[];
|
||||
final core::Iterable<Never>? #t43 = n1;
|
||||
if(!#t43.{core::Object::==}(null))
|
||||
for (final Never #t44 in #t43{core::Iterable<Never>})
|
||||
#t42.{core::List::add}(#t44);
|
||||
} =>#t42;
|
||||
core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
|
||||
var l3 = [...n2];
|
||||
^"];
|
||||
core::List<Never> l4 = block {
|
||||
final core::List<Never> #t45 = <Never>[];
|
||||
final core::Iterable<Never>? #t46 = n2;
|
||||
if(!#t46.{core::Object::==}(null))
|
||||
for (final Never #t47 in #t46{core::Iterable<Never>})
|
||||
#t45.{core::List::add}(#t47);
|
||||
} =>#t45;
|
||||
core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
|
||||
var l5 = [...n3];
|
||||
^"];
|
||||
core::List<Never> l6 = block {
|
||||
final core::List<Never> #t48 = <Never>[];
|
||||
final core::Iterable<Never>? #t49 = n3;
|
||||
if(!#t49.{core::Object::==}(null))
|
||||
for (final Never #t50 in #t49{core::Iterable<Never>})
|
||||
#t48.{core::List::add}(#t50);
|
||||
} =>#t48;
|
||||
core::Set<self::test2::N1> s1 = block {
|
||||
final core::Set<self::test2::N1> #t51 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
for (final self::test2::N1 #t52 in n1)
|
||||
#t51.{core::Set::add}(#t52);
|
||||
#t51.{core::Set::add}(n1);
|
||||
} =>#t51;
|
||||
core::Set<self::test2::N1> s2 = block {
|
||||
final core::Set<self::test2::N1> #t53 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t54 = n1;
|
||||
if(!#t54.{core::Object::==}(null))
|
||||
for (final self::test2::N1 #t55 in #t54{core::Iterable<self::test2::N1>})
|
||||
#t53.{core::Set::add}(#t55);
|
||||
#t53.{core::Set::add}(n1);
|
||||
} =>#t53;
|
||||
core::Set<dynamic> s3 = let final core::Set<dynamic> #t56 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t57 = #t56.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
|
||||
var s3 = {...n2, n1};
|
||||
^") in let final dynamic #t58 = #t56.{core::Set::add}(n1) in #t56;
|
||||
core::Set<self::test2::N1> s4 = block {
|
||||
final core::Set<self::test2::N1> #t59 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t60 = n2;
|
||||
if(!#t60.{core::Object::==}(null))
|
||||
for (final self::test2::N1 #t61 in #t60{core::Iterable<self::test2::N1>})
|
||||
#t59.{core::Set::add}(#t61);
|
||||
#t59.{core::Set::add}(n1);
|
||||
} =>#t59;
|
||||
core::Set<dynamic> s5 = let final core::Set<dynamic> #t62 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
|
||||
var s5 = {...n3, n1};
|
||||
^") in let final dynamic #t64 = #t62.{core::Set::add}(n1) in #t62;
|
||||
core::Set<self::test2::N1> s6 = block {
|
||||
final core::Set<self::test2::N1> #t65 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t66 = n3;
|
||||
if(!#t66.{core::Object::==}(null))
|
||||
for (final self::test2::N1 #t67 in #t66{core::Iterable<self::test2::N1>})
|
||||
#t65.{core::Set::add}(#t67);
|
||||
#t65.{core::Set::add}(n1);
|
||||
} =>#t65;
|
||||
core::Map<self::test2::N1, self::test2::N1> m1 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t68 = <self::test2::N1, self::test2::N1>{};
|
||||
for (final core::MapEntry<self::test2::N1, self::test2::N1> #t69 in n1.{core::Map::entries})
|
||||
#t68.{core::Map::[]=}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value});
|
||||
#t68.{core::Map::[]=}(n1, n1);
|
||||
} =>#t68;
|
||||
core::Map<self::test2::N1, self::test2::N1> m2 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t70 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t71 = n1;
|
||||
if(!#t71.{core::Object::==}(null))
|
||||
for (final core::MapEntry<self::test2::N1, self::test2::N1> #t72 in #t71{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
|
||||
#t70.{core::Map::[]=}(#t72.{core::MapEntry::key}, #t72.{core::MapEntry::value});
|
||||
#t70.{core::Map::[]=}(n1, n1);
|
||||
} =>#t70;
|
||||
core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
|
||||
var m3 = {...n2, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<self::test2::N1, self::test2::N1> m4 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t73 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t74 = n2;
|
||||
if(!#t74.{core::Object::==}(null))
|
||||
for (final core::MapEntry<self::test2::N1, self::test2::N1> #t75 in #t74{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
|
||||
#t73.{core::Map::[]=}(#t75.{core::MapEntry::key}, #t75.{core::MapEntry::value});
|
||||
#t73.{core::Map::[]=}(n1, n1);
|
||||
} =>#t73;
|
||||
core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
|
||||
var m5 = {...n3, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<self::test2::N1, self::test2::N1> m6 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t76 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t77 = n3;
|
||||
if(!#t77.{core::Object::==}(null))
|
||||
for (final core::MapEntry<self::test2::N1, self::test2::N1> #t78 in #t77{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
|
||||
#t76.{core::Map::[]=}(#t78.{core::MapEntry::key}, #t78.{core::MapEntry::value});
|
||||
#t76.{core::Map::[]=}(n1, n1);
|
||||
} =>#t76;
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
@@ -0,0 +1,375 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:7:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var l2 = [...?n1];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var l3 = [...n2];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var l5 = [...n3];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:13:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var s2 = {...?n1, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var s3 = {...n2, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var s5 = {...n3, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:19:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var m2 = {...?n1, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var m3 = {...n2, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var m5 = {...n3, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:29:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var l2 = [...?n1];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var l3 = [...n2];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var l5 = [...n3];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:35:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var s2 = {...?n1, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var s3 = {...n2, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var s5 = {...n3, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:41:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var m2 = {...?n1, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var m3 = {...n2, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var m5 = {...n3, n1: n1};
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:collection" as col;
|
||||
|
||||
static method test1(Never n1, Never? n2, core::Null? n3) → dynamic {
|
||||
core::List<Never> l1 = block {
|
||||
final core::List<Never> #t1 = <Never>[];
|
||||
for (final Never #t2 in n1)
|
||||
#t1.{core::List::add}(#t2);
|
||||
} =>#t1;
|
||||
core::List<Never> l2 = block {
|
||||
final core::List<Never> #t3 = <Never>[];
|
||||
final core::Iterable<Never>? #t4 = n1;
|
||||
if(!#t4.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t4{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t5 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t3.{core::List::add}(#t5);
|
||||
}
|
||||
}
|
||||
} =>#t3;
|
||||
core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var l3 = [...n2];
|
||||
^"];
|
||||
core::List<Never> l4 = block {
|
||||
final core::List<Never> #t6 = <Never>[];
|
||||
final core::Iterable<Never>? #t7 = n2;
|
||||
if(!#t7.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t7{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t8 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t6.{core::List::add}(#t8);
|
||||
}
|
||||
}
|
||||
} =>#t6;
|
||||
core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
|
||||
var l5 = [...n3];
|
||||
^"];
|
||||
core::List<Never> l6 = block {
|
||||
final core::List<Never> #t9 = <Never>[];
|
||||
final core::Iterable<Never>? #t10 = n3;
|
||||
if(!#t10.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t10{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t11 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t9.{core::List::add}(#t11);
|
||||
}
|
||||
}
|
||||
} =>#t9;
|
||||
core::Set<Never> s1 = block {
|
||||
final core::Set<Never> #t12 = col::LinkedHashSet::•<Never>();
|
||||
for (final Never #t13 in n1)
|
||||
#t12.{core::Set::add}(#t13);
|
||||
#t12.{core::Set::add}(n1);
|
||||
} =>#t12;
|
||||
core::Set<Never> s2 = block {
|
||||
final core::Set<Never> #t14 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t15 = n1;
|
||||
if(!#t15.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t15{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t16 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t14.{core::Set::add}(#t16);
|
||||
}
|
||||
}
|
||||
#t14.{core::Set::add}(n1);
|
||||
} =>#t14;
|
||||
core::Set<dynamic> s3 = let final core::Set<dynamic> #t17 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t18 = #t17.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var s3 = {...n2, n1};
|
||||
^") in let final core::bool #t19 = #t17.{core::Set::add}(n1) in #t17;
|
||||
core::Set<Never> s4 = block {
|
||||
final core::Set<Never> #t20 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t21 = n2;
|
||||
if(!#t21.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t21{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t22 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t20.{core::Set::add}(#t22);
|
||||
}
|
||||
}
|
||||
#t20.{core::Set::add}(n1);
|
||||
} =>#t20;
|
||||
core::Set<dynamic> s5 = let final core::Set<dynamic> #t23 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t24 = #t23.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
|
||||
var s5 = {...n3, n1};
|
||||
^") in let final core::bool #t25 = #t23.{core::Set::add}(n1) in #t23;
|
||||
core::Set<Never> s6 = block {
|
||||
final core::Set<Never> #t26 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t27 = n3;
|
||||
if(!#t27.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t27{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t28 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t26.{core::Set::add}(#t28);
|
||||
}
|
||||
}
|
||||
#t26.{core::Set::add}(n1);
|
||||
} =>#t26;
|
||||
core::Map<Never, Never> m1 = block {
|
||||
final core::Map<Never, Never> #t29 = <Never, Never>{};
|
||||
{
|
||||
core::Iterator<core::MapEntry<<BottomType>, <BottomType>>> :sync-for-iterator = n1.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<Never, Never> #t30 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t29.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t29.{core::Map::[]=}(n1, n1);
|
||||
} =>#t29;
|
||||
core::Map<Never, Never> m2 = block {
|
||||
final core::Map<Never, Never> #t31 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t32 = n1;
|
||||
if(!#t32.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t32{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<Never, Never> #t33 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t31.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t31.{core::Map::[]=}(n1, n1);
|
||||
} =>#t31;
|
||||
core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var m3 = {...n2, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<Never, Never> m4 = block {
|
||||
final core::Map<Never, Never> #t34 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t35 = n2;
|
||||
if(!#t35.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t35{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<Never, Never> #t36 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t34.{core::Map::[]=}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t34.{core::Map::[]=}(n1, n1);
|
||||
} =>#t34;
|
||||
core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
|
||||
var m5 = {...n3, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<Never, Never> m6 = block {
|
||||
final core::Map<Never, Never> #t37 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t38 = n3;
|
||||
if(!#t38.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t38{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<Never, Never> #t39 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t37.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t37.{core::Map::[]=}(n1, n1);
|
||||
} =>#t37;
|
||||
}
|
||||
static method test2<N1 extends Never = Never, N2 extends Never? = Never?, N3 extends core::Null? = core::Null?>(self::test2::N1 n1, self::test2::N2% n2, self::test2::N3% n3) → dynamic {
|
||||
core::List<Never> l1 = block {
|
||||
final core::List<Never> #t40 = <Never>[];
|
||||
for (final Never #t41 in n1)
|
||||
#t40.{core::List::add}(#t41);
|
||||
} =>#t40;
|
||||
core::List<Never> l2 = block {
|
||||
final core::List<Never> #t42 = <Never>[];
|
||||
final core::Iterable<Never>? #t43 = n1;
|
||||
if(!#t43.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t43{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t44 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t42.{core::List::add}(#t44);
|
||||
}
|
||||
}
|
||||
} =>#t42;
|
||||
core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
|
||||
var l3 = [...n2];
|
||||
^"];
|
||||
core::List<Never> l4 = block {
|
||||
final core::List<Never> #t45 = <Never>[];
|
||||
final core::Iterable<Never>? #t46 = n2;
|
||||
if(!#t46.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t46{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t47 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t45.{core::List::add}(#t47);
|
||||
}
|
||||
}
|
||||
} =>#t45;
|
||||
core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
|
||||
var l5 = [...n3];
|
||||
^"];
|
||||
core::List<Never> l6 = block {
|
||||
final core::List<Never> #t48 = <Never>[];
|
||||
final core::Iterable<Never>? #t49 = n3;
|
||||
if(!#t49.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t49{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t50 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t48.{core::List::add}(#t50);
|
||||
}
|
||||
}
|
||||
} =>#t48;
|
||||
core::Set<self::test2::N1> s1 = block {
|
||||
final core::Set<self::test2::N1> #t51 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
for (final self::test2::N1 #t52 in n1)
|
||||
#t51.{core::Set::add}(#t52);
|
||||
#t51.{core::Set::add}(n1);
|
||||
} =>#t51;
|
||||
core::Set<self::test2::N1> s2 = block {
|
||||
final core::Set<self::test2::N1> #t53 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t54 = n1;
|
||||
if(!#t54.{core::Object::==}(null)) {
|
||||
core::Iterator<self::test2::N1> :sync-for-iterator = #t54{core::Iterable<self::test2::N1>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final self::test2::N1 #t55 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t53.{core::Set::add}(#t55);
|
||||
}
|
||||
}
|
||||
#t53.{core::Set::add}(n1);
|
||||
} =>#t53;
|
||||
core::Set<dynamic> s3 = let final core::Set<dynamic> #t56 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t57 = #t56.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
|
||||
var s3 = {...n2, n1};
|
||||
^") in let final core::bool #t58 = #t56.{core::Set::add}(n1) in #t56;
|
||||
core::Set<self::test2::N1> s4 = block {
|
||||
final core::Set<self::test2::N1> #t59 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t60 = n2;
|
||||
if(!#t60.{core::Object::==}(null)) {
|
||||
core::Iterator<self::test2::N1> :sync-for-iterator = #t60{core::Iterable<self::test2::N1>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final self::test2::N1 #t61 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t59.{core::Set::add}(#t61);
|
||||
}
|
||||
}
|
||||
#t59.{core::Set::add}(n1);
|
||||
} =>#t59;
|
||||
core::Set<dynamic> s5 = let final core::Set<dynamic> #t62 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
|
||||
var s5 = {...n3, n1};
|
||||
^") in let final core::bool #t64 = #t62.{core::Set::add}(n1) in #t62;
|
||||
core::Set<self::test2::N1> s6 = block {
|
||||
final core::Set<self::test2::N1> #t65 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t66 = n3;
|
||||
if(!#t66.{core::Object::==}(null)) {
|
||||
core::Iterator<self::test2::N1> :sync-for-iterator = #t66{core::Iterable<self::test2::N1>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final self::test2::N1 #t67 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t65.{core::Set::add}(#t67);
|
||||
}
|
||||
}
|
||||
#t65.{core::Set::add}(n1);
|
||||
} =>#t65;
|
||||
core::Map<self::test2::N1, self::test2::N1> m1 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t68 = <self::test2::N1, self::test2::N1>{};
|
||||
{
|
||||
core::Iterator<core::MapEntry<<BottomType>, <BottomType>>> :sync-for-iterator = n1.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<self::test2::N1, self::test2::N1> #t69 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t68.{core::Map::[]=}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t68.{core::Map::[]=}(n1, n1);
|
||||
} =>#t68;
|
||||
core::Map<self::test2::N1, self::test2::N1> m2 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t70 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t71 = n1;
|
||||
if(!#t71.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t71{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<self::test2::N1, self::test2::N1> #t72 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t70.{core::Map::[]=}(#t72.{core::MapEntry::key}, #t72.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t70.{core::Map::[]=}(n1, n1);
|
||||
} =>#t70;
|
||||
core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
|
||||
var m3 = {...n2, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<self::test2::N1, self::test2::N1> m4 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t73 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t74 = n2;
|
||||
if(!#t74.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t74{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<self::test2::N1, self::test2::N1> #t75 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t73.{core::Map::[]=}(#t75.{core::MapEntry::key}, #t75.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t73.{core::Map::[]=}(n1, n1);
|
||||
} =>#t73;
|
||||
core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
|
||||
var m5 = {...n3, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<self::test2::N1, self::test2::N1> m6 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t76 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t77 = n3;
|
||||
if(!#t77.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t77{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<self::test2::N1, self::test2::N1> #t78 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t76.{core::Map::[]=}(#t78.{core::MapEntry::key}, #t78.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t76.{core::Map::[]=}(n1, n1);
|
||||
} =>#t76;
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
@@ -0,0 +1,4 @@
|
||||
test1(Never n1, Never? n2, Null n3) {}
|
||||
test2<N1 extends Never, N2 extends Never?, N3 extends Null>(
|
||||
N1 n1, N2 n2, N3 n3) {}
|
||||
main() {}
|
||||
@@ -0,0 +1,4 @@
|
||||
main() {}
|
||||
test1(Never n1, Never? n2, Null n3) {}
|
||||
test2<N1 extends Never, N2 extends Never?, N3 extends Null>(
|
||||
N1 n1, N2 n2, N3 n3) {}
|
||||
@@ -0,0 +1,293 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:7:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var l2 = [...?n1];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var l3 = [...n2];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var l5 = [...n3];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:13:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var s2 = {...?n1, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var s3 = {...n2, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var s5 = {...n3, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:19:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var m2 = {...?n1, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var m3 = {...n2, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var m5 = {...n3, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:29:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var l2 = [...?n1];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var l3 = [...n2];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var l5 = [...n3];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:35:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var s2 = {...?n1, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var s3 = {...n2, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var s5 = {...n3, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:41:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var m2 = {...?n1, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var m3 = {...n2, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var m5 = {...n3, n1: n1};
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:collection" as col;
|
||||
|
||||
static method test1(Never n1, Never? n2, core::Null? n3) → dynamic {
|
||||
core::List<Never> l1 = block {
|
||||
final core::List<Never> #t1 = <Never>[];
|
||||
for (final Never #t2 in n1)
|
||||
#t1.{core::List::add}(#t2);
|
||||
} =>#t1;
|
||||
core::List<Never> l2 = block {
|
||||
final core::List<Never> #t3 = <Never>[];
|
||||
final core::Iterable<Never>? #t4 = n1;
|
||||
if(!#t4.{core::Object::==}(null))
|
||||
for (final Never #t5 in #t4{core::Iterable<Never>})
|
||||
#t3.{core::List::add}(#t5);
|
||||
} =>#t3;
|
||||
core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var l3 = [...n2];
|
||||
^"];
|
||||
core::List<Never> l4 = block {
|
||||
final core::List<Never> #t6 = <Never>[];
|
||||
final core::Iterable<Never>? #t7 = n2;
|
||||
if(!#t7.{core::Object::==}(null))
|
||||
for (final Never #t8 in #t7{core::Iterable<Never>})
|
||||
#t6.{core::List::add}(#t8);
|
||||
} =>#t6;
|
||||
core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
|
||||
var l5 = [...n3];
|
||||
^"];
|
||||
core::List<Never> l6 = block {
|
||||
final core::List<Never> #t9 = <Never>[];
|
||||
final core::Iterable<Never>? #t10 = n3;
|
||||
if(!#t10.{core::Object::==}(null))
|
||||
for (final Never #t11 in #t10{core::Iterable<Never>})
|
||||
#t9.{core::List::add}(#t11);
|
||||
} =>#t9;
|
||||
core::Set<Never> s1 = block {
|
||||
final core::Set<Never> #t12 = col::LinkedHashSet::•<Never>();
|
||||
for (final Never #t13 in n1)
|
||||
#t12.{core::Set::add}(#t13);
|
||||
#t12.{core::Set::add}(n1);
|
||||
} =>#t12;
|
||||
core::Set<Never> s2 = block {
|
||||
final core::Set<Never> #t14 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t15 = n1;
|
||||
if(!#t15.{core::Object::==}(null))
|
||||
for (final Never #t16 in #t15{core::Iterable<Never>})
|
||||
#t14.{core::Set::add}(#t16);
|
||||
#t14.{core::Set::add}(n1);
|
||||
} =>#t14;
|
||||
core::Set<dynamic> s3 = let final core::Set<dynamic> #t17 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t18 = #t17.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var s3 = {...n2, n1};
|
||||
^") in let final dynamic #t19 = #t17.{core::Set::add}(n1) in #t17;
|
||||
core::Set<Never> s4 = block {
|
||||
final core::Set<Never> #t20 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t21 = n2;
|
||||
if(!#t21.{core::Object::==}(null))
|
||||
for (final Never #t22 in #t21{core::Iterable<Never>})
|
||||
#t20.{core::Set::add}(#t22);
|
||||
#t20.{core::Set::add}(n1);
|
||||
} =>#t20;
|
||||
core::Set<dynamic> s5 = let final core::Set<dynamic> #t23 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t24 = #t23.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
|
||||
var s5 = {...n3, n1};
|
||||
^") in let final dynamic #t25 = #t23.{core::Set::add}(n1) in #t23;
|
||||
core::Set<Never> s6 = block {
|
||||
final core::Set<Never> #t26 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t27 = n3;
|
||||
if(!#t27.{core::Object::==}(null))
|
||||
for (final Never #t28 in #t27{core::Iterable<Never>})
|
||||
#t26.{core::Set::add}(#t28);
|
||||
#t26.{core::Set::add}(n1);
|
||||
} =>#t26;
|
||||
core::Map<Never, Never> m1 = block {
|
||||
final core::Map<Never, Never> #t29 = <Never, Never>{};
|
||||
for (final core::MapEntry<Never, Never> #t30 in n1.{core::Map::entries})
|
||||
#t29.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
|
||||
#t29.{core::Map::[]=}(n1, n1);
|
||||
} =>#t29;
|
||||
core::Map<Never, Never> m2 = block {
|
||||
final core::Map<Never, Never> #t31 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t32 = n1;
|
||||
if(!#t32.{core::Object::==}(null))
|
||||
for (final core::MapEntry<Never, Never> #t33 in #t32{core::Map<Never, Never>}.{core::Map::entries})
|
||||
#t31.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
|
||||
#t31.{core::Map::[]=}(n1, n1);
|
||||
} =>#t31;
|
||||
core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var m3 = {...n2, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<Never, Never> m4 = block {
|
||||
final core::Map<Never, Never> #t34 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t35 = n2;
|
||||
if(!#t35.{core::Object::==}(null))
|
||||
for (final core::MapEntry<Never, Never> #t36 in #t35{core::Map<Never, Never>}.{core::Map::entries})
|
||||
#t34.{core::Map::[]=}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value});
|
||||
#t34.{core::Map::[]=}(n1, n1);
|
||||
} =>#t34;
|
||||
core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
|
||||
var m5 = {...n3, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<Never, Never> m6 = block {
|
||||
final core::Map<Never, Never> #t37 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t38 = n3;
|
||||
if(!#t38.{core::Object::==}(null))
|
||||
for (final core::MapEntry<Never, Never> #t39 in #t38{core::Map<Never, Never>}.{core::Map::entries})
|
||||
#t37.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
|
||||
#t37.{core::Map::[]=}(n1, n1);
|
||||
} =>#t37;
|
||||
}
|
||||
static method test2<N1 extends Never = Never, N2 extends Never? = Never?, N3 extends core::Null? = core::Null?>(self::test2::N1 n1, self::test2::N2% n2, self::test2::N3% n3) → dynamic {
|
||||
core::List<Never> l1 = block {
|
||||
final core::List<Never> #t40 = <Never>[];
|
||||
for (final Never #t41 in n1)
|
||||
#t40.{core::List::add}(#t41);
|
||||
} =>#t40;
|
||||
core::List<Never> l2 = block {
|
||||
final core::List<Never> #t42 = <Never>[];
|
||||
final core::Iterable<Never>? #t43 = n1;
|
||||
if(!#t43.{core::Object::==}(null))
|
||||
for (final Never #t44 in #t43{core::Iterable<Never>})
|
||||
#t42.{core::List::add}(#t44);
|
||||
} =>#t42;
|
||||
core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
|
||||
var l3 = [...n2];
|
||||
^"];
|
||||
core::List<Never> l4 = block {
|
||||
final core::List<Never> #t45 = <Never>[];
|
||||
final core::Iterable<Never>? #t46 = n2;
|
||||
if(!#t46.{core::Object::==}(null))
|
||||
for (final Never #t47 in #t46{core::Iterable<Never>})
|
||||
#t45.{core::List::add}(#t47);
|
||||
} =>#t45;
|
||||
core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
|
||||
var l5 = [...n3];
|
||||
^"];
|
||||
core::List<Never> l6 = block {
|
||||
final core::List<Never> #t48 = <Never>[];
|
||||
final core::Iterable<Never>? #t49 = n3;
|
||||
if(!#t49.{core::Object::==}(null))
|
||||
for (final Never #t50 in #t49{core::Iterable<Never>})
|
||||
#t48.{core::List::add}(#t50);
|
||||
} =>#t48;
|
||||
core::Set<self::test2::N1> s1 = block {
|
||||
final core::Set<self::test2::N1> #t51 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
for (final self::test2::N1 #t52 in n1)
|
||||
#t51.{core::Set::add}(#t52);
|
||||
#t51.{core::Set::add}(n1);
|
||||
} =>#t51;
|
||||
core::Set<self::test2::N1> s2 = block {
|
||||
final core::Set<self::test2::N1> #t53 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t54 = n1;
|
||||
if(!#t54.{core::Object::==}(null))
|
||||
for (final self::test2::N1 #t55 in #t54{core::Iterable<self::test2::N1>})
|
||||
#t53.{core::Set::add}(#t55);
|
||||
#t53.{core::Set::add}(n1);
|
||||
} =>#t53;
|
||||
core::Set<dynamic> s3 = let final core::Set<dynamic> #t56 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t57 = #t56.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
|
||||
var s3 = {...n2, n1};
|
||||
^") in let final dynamic #t58 = #t56.{core::Set::add}(n1) in #t56;
|
||||
core::Set<self::test2::N1> s4 = block {
|
||||
final core::Set<self::test2::N1> #t59 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t60 = n2;
|
||||
if(!#t60.{core::Object::==}(null))
|
||||
for (final self::test2::N1 #t61 in #t60{core::Iterable<self::test2::N1>})
|
||||
#t59.{core::Set::add}(#t61);
|
||||
#t59.{core::Set::add}(n1);
|
||||
} =>#t59;
|
||||
core::Set<dynamic> s5 = let final core::Set<dynamic> #t62 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
|
||||
var s5 = {...n3, n1};
|
||||
^") in let final dynamic #t64 = #t62.{core::Set::add}(n1) in #t62;
|
||||
core::Set<self::test2::N1> s6 = block {
|
||||
final core::Set<self::test2::N1> #t65 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t66 = n3;
|
||||
if(!#t66.{core::Object::==}(null))
|
||||
for (final self::test2::N1 #t67 in #t66{core::Iterable<self::test2::N1>})
|
||||
#t65.{core::Set::add}(#t67);
|
||||
#t65.{core::Set::add}(n1);
|
||||
} =>#t65;
|
||||
core::Map<self::test2::N1, self::test2::N1> m1 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t68 = <self::test2::N1, self::test2::N1>{};
|
||||
for (final core::MapEntry<self::test2::N1, self::test2::N1> #t69 in n1.{core::Map::entries})
|
||||
#t68.{core::Map::[]=}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value});
|
||||
#t68.{core::Map::[]=}(n1, n1);
|
||||
} =>#t68;
|
||||
core::Map<self::test2::N1, self::test2::N1> m2 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t70 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t71 = n1;
|
||||
if(!#t71.{core::Object::==}(null))
|
||||
for (final core::MapEntry<self::test2::N1, self::test2::N1> #t72 in #t71{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
|
||||
#t70.{core::Map::[]=}(#t72.{core::MapEntry::key}, #t72.{core::MapEntry::value});
|
||||
#t70.{core::Map::[]=}(n1, n1);
|
||||
} =>#t70;
|
||||
core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
|
||||
var m3 = {...n2, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<self::test2::N1, self::test2::N1> m4 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t73 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t74 = n2;
|
||||
if(!#t74.{core::Object::==}(null))
|
||||
for (final core::MapEntry<self::test2::N1, self::test2::N1> #t75 in #t74{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
|
||||
#t73.{core::Map::[]=}(#t75.{core::MapEntry::key}, #t75.{core::MapEntry::value});
|
||||
#t73.{core::Map::[]=}(n1, n1);
|
||||
} =>#t73;
|
||||
core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
|
||||
var m5 = {...n3, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<self::test2::N1, self::test2::N1> m6 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t76 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t77 = n3;
|
||||
if(!#t77.{core::Object::==}(null))
|
||||
for (final core::MapEntry<self::test2::N1, self::test2::N1> #t78 in #t77{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries})
|
||||
#t76.{core::Map::[]=}(#t78.{core::MapEntry::key}, #t78.{core::MapEntry::value});
|
||||
#t76.{core::Map::[]=}(n1, n1);
|
||||
} =>#t76;
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
@@ -0,0 +1,375 @@
|
||||
library /*isNonNullableByDefault*/;
|
||||
//
|
||||
// Problems in library:
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:7:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var l2 = [...?n1];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var l3 = [...n2];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var l5 = [...n3];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:13:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var s2 = {...?n1, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var s3 = {...n2, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var s5 = {...n3, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:19:17: Warning: Operand of null-aware operation '...?' has type 'Never' which excludes null.
|
||||
// var m2 = {...?n1, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
|
||||
// var m3 = {...n2, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
|
||||
// var m5 = {...n3, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:29:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var l2 = [...?n1];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var l3 = [...n2];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var l5 = [...n3];
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:35:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var s2 = {...?n1, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var s3 = {...n2, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var s5 = {...n3, n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:41:17: Warning: Operand of null-aware operation '...?' has type 'N1' which excludes null.
|
||||
// var m2 = {...?n1, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
|
||||
// var m3 = {...n2, n1: n1};
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
|
||||
// var m5 = {...n3, n1: n1};
|
||||
// ^
|
||||
//
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "dart:collection" as col;
|
||||
|
||||
static method test1(Never n1, Never? n2, core::Null? n3) → dynamic {
|
||||
core::List<Never> l1 = block {
|
||||
final core::List<Never> #t1 = <Never>[];
|
||||
for (final Never #t2 in n1)
|
||||
#t1.{core::List::add}(#t2);
|
||||
} =>#t1;
|
||||
core::List<Never> l2 = block {
|
||||
final core::List<Never> #t3 = <Never>[];
|
||||
final core::Iterable<Never>? #t4 = n1;
|
||||
if(!#t4.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t4{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t5 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t3.{core::List::add}(#t5);
|
||||
}
|
||||
}
|
||||
} =>#t3;
|
||||
core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:8:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var l3 = [...n2];
|
||||
^"];
|
||||
core::List<Never> l4 = block {
|
||||
final core::List<Never> #t6 = <Never>[];
|
||||
final core::Iterable<Never>? #t7 = n2;
|
||||
if(!#t7.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t7{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t8 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t6.{core::List::add}(#t8);
|
||||
}
|
||||
}
|
||||
} =>#t6;
|
||||
core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:10:16: Error: Can't spread a value with static type 'Null'.
|
||||
var l5 = [...n3];
|
||||
^"];
|
||||
core::List<Never> l6 = block {
|
||||
final core::List<Never> #t9 = <Never>[];
|
||||
final core::Iterable<Never>? #t10 = n3;
|
||||
if(!#t10.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t10{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t11 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t9.{core::List::add}(#t11);
|
||||
}
|
||||
}
|
||||
} =>#t9;
|
||||
core::Set<Never> s1 = block {
|
||||
final core::Set<Never> #t12 = col::LinkedHashSet::•<Never>();
|
||||
for (final Never #t13 in n1)
|
||||
#t12.{core::Set::add}(#t13);
|
||||
#t12.{core::Set::add}(n1);
|
||||
} =>#t12;
|
||||
core::Set<Never> s2 = block {
|
||||
final core::Set<Never> #t14 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t15 = n1;
|
||||
if(!#t15.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t15{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t16 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t14.{core::Set::add}(#t16);
|
||||
}
|
||||
}
|
||||
#t14.{core::Set::add}(n1);
|
||||
} =>#t14;
|
||||
core::Set<dynamic> s3 = let final core::Set<dynamic> #t17 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t18 = #t17.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:14:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var s3 = {...n2, n1};
|
||||
^") in let final core::bool #t19 = #t17.{core::Set::add}(n1) in #t17;
|
||||
core::Set<Never> s4 = block {
|
||||
final core::Set<Never> #t20 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t21 = n2;
|
||||
if(!#t21.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t21{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t22 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t20.{core::Set::add}(#t22);
|
||||
}
|
||||
}
|
||||
#t20.{core::Set::add}(n1);
|
||||
} =>#t20;
|
||||
core::Set<dynamic> s5 = let final core::Set<dynamic> #t23 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t24 = #t23.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:16:16: Error: Can't spread a value with static type 'Null'.
|
||||
var s5 = {...n3, n1};
|
||||
^") in let final core::bool #t25 = #t23.{core::Set::add}(n1) in #t23;
|
||||
core::Set<Never> s6 = block {
|
||||
final core::Set<Never> #t26 = col::LinkedHashSet::•<Never>();
|
||||
final core::Iterable<Never>? #t27 = n3;
|
||||
if(!#t27.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t27{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t28 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t26.{core::Set::add}(#t28);
|
||||
}
|
||||
}
|
||||
#t26.{core::Set::add}(n1);
|
||||
} =>#t26;
|
||||
core::Map<Never, Never> m1 = block {
|
||||
final core::Map<Never, Never> #t29 = <Never, Never>{};
|
||||
{
|
||||
core::Iterator<core::MapEntry<<BottomType>, <BottomType>>> :sync-for-iterator = n1.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<Never, Never> #t30 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t29.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t29.{core::Map::[]=}(n1, n1);
|
||||
} =>#t29;
|
||||
core::Map<Never, Never> m2 = block {
|
||||
final core::Map<Never, Never> #t31 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t32 = n1;
|
||||
if(!#t32.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t32{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<Never, Never> #t33 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t31.{core::Map::[]=}(#t33.{core::MapEntry::key}, #t33.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t31.{core::Map::[]=}(n1, n1);
|
||||
} =>#t31;
|
||||
core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:20:16: Error: Can't spread a value with static type 'Never?'.
|
||||
var m3 = {...n2, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<Never, Never> m4 = block {
|
||||
final core::Map<Never, Never> #t34 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t35 = n2;
|
||||
if(!#t35.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t35{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<Never, Never> #t36 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t34.{core::Map::[]=}(#t36.{core::MapEntry::key}, #t36.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t34.{core::Map::[]=}(n1, n1);
|
||||
} =>#t34;
|
||||
core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:22:16: Error: Can't spread a value with static type 'Null'.
|
||||
var m5 = {...n3, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<Never, Never> m6 = block {
|
||||
final core::Map<Never, Never> #t37 = <Never, Never>{};
|
||||
final core::Map<Never, Never>? #t38 = n3;
|
||||
if(!#t38.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<Never, Never>> :sync-for-iterator = #t38{core::Map<Never, Never>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<Never, Never> #t39 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t37.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t37.{core::Map::[]=}(n1, n1);
|
||||
} =>#t37;
|
||||
}
|
||||
static method test2<N1 extends Never = Never, N2 extends Never? = Never?, N3 extends core::Null? = core::Null?>(self::test2::N1 n1, self::test2::N2% n2, self::test2::N3% n3) → dynamic {
|
||||
core::List<Never> l1 = block {
|
||||
final core::List<Never> #t40 = <Never>[];
|
||||
for (final Never #t41 in n1)
|
||||
#t40.{core::List::add}(#t41);
|
||||
} =>#t40;
|
||||
core::List<Never> l2 = block {
|
||||
final core::List<Never> #t42 = <Never>[];
|
||||
final core::Iterable<Never>? #t43 = n1;
|
||||
if(!#t43.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t43{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t44 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t42.{core::List::add}(#t44);
|
||||
}
|
||||
}
|
||||
} =>#t42;
|
||||
core::List<dynamic> l3 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:30:16: Error: Can't spread a value with static type 'N2'.
|
||||
var l3 = [...n2];
|
||||
^"];
|
||||
core::List<Never> l4 = block {
|
||||
final core::List<Never> #t45 = <Never>[];
|
||||
final core::Iterable<Never>? #t46 = n2;
|
||||
if(!#t46.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t46{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t47 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t45.{core::List::add}(#t47);
|
||||
}
|
||||
}
|
||||
} =>#t45;
|
||||
core::List<dynamic> l5 = <dynamic>[invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:32:16: Error: Can't spread a value with static type 'N3'.
|
||||
var l5 = [...n3];
|
||||
^"];
|
||||
core::List<Never> l6 = block {
|
||||
final core::List<Never> #t48 = <Never>[];
|
||||
final core::Iterable<Never>? #t49 = n3;
|
||||
if(!#t49.{core::Object::==}(null)) {
|
||||
core::Iterator<Never> :sync-for-iterator = #t49{core::Iterable<Never>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final Never #t50 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t48.{core::List::add}(#t50);
|
||||
}
|
||||
}
|
||||
} =>#t48;
|
||||
core::Set<self::test2::N1> s1 = block {
|
||||
final core::Set<self::test2::N1> #t51 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
for (final self::test2::N1 #t52 in n1)
|
||||
#t51.{core::Set::add}(#t52);
|
||||
#t51.{core::Set::add}(n1);
|
||||
} =>#t51;
|
||||
core::Set<self::test2::N1> s2 = block {
|
||||
final core::Set<self::test2::N1> #t53 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t54 = n1;
|
||||
if(!#t54.{core::Object::==}(null)) {
|
||||
core::Iterator<self::test2::N1> :sync-for-iterator = #t54{core::Iterable<self::test2::N1>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final self::test2::N1 #t55 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t53.{core::Set::add}(#t55);
|
||||
}
|
||||
}
|
||||
#t53.{core::Set::add}(n1);
|
||||
} =>#t53;
|
||||
core::Set<dynamic> s3 = let final core::Set<dynamic> #t56 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t57 = #t56.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:36:16: Error: Can't spread a value with static type 'N2'.
|
||||
var s3 = {...n2, n1};
|
||||
^") in let final core::bool #t58 = #t56.{core::Set::add}(n1) in #t56;
|
||||
core::Set<self::test2::N1> s4 = block {
|
||||
final core::Set<self::test2::N1> #t59 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t60 = n2;
|
||||
if(!#t60.{core::Object::==}(null)) {
|
||||
core::Iterator<self::test2::N1> :sync-for-iterator = #t60{core::Iterable<self::test2::N1>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final self::test2::N1 #t61 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t59.{core::Set::add}(#t61);
|
||||
}
|
||||
}
|
||||
#t59.{core::Set::add}(n1);
|
||||
} =>#t59;
|
||||
core::Set<dynamic> s5 = let final core::Set<dynamic> #t62 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t63 = #t62.{core::Set::add}(invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:38:16: Error: Can't spread a value with static type 'N3'.
|
||||
var s5 = {...n3, n1};
|
||||
^") in let final core::bool #t64 = #t62.{core::Set::add}(n1) in #t62;
|
||||
core::Set<self::test2::N1> s6 = block {
|
||||
final core::Set<self::test2::N1> #t65 = col::LinkedHashSet::•<self::test2::N1>();
|
||||
final core::Iterable<self::test2::N1>? #t66 = n3;
|
||||
if(!#t66.{core::Object::==}(null)) {
|
||||
core::Iterator<self::test2::N1> :sync-for-iterator = #t66{core::Iterable<self::test2::N1>}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final self::test2::N1 #t67 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t65.{core::Set::add}(#t67);
|
||||
}
|
||||
}
|
||||
#t65.{core::Set::add}(n1);
|
||||
} =>#t65;
|
||||
core::Map<self::test2::N1, self::test2::N1> m1 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t68 = <self::test2::N1, self::test2::N1>{};
|
||||
{
|
||||
core::Iterator<core::MapEntry<<BottomType>, <BottomType>>> :sync-for-iterator = n1.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<self::test2::N1, self::test2::N1> #t69 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t68.{core::Map::[]=}(#t69.{core::MapEntry::key}, #t69.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t68.{core::Map::[]=}(n1, n1);
|
||||
} =>#t68;
|
||||
core::Map<self::test2::N1, self::test2::N1> m2 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t70 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t71 = n1;
|
||||
if(!#t71.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t71{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<self::test2::N1, self::test2::N1> #t72 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t70.{core::Map::[]=}(#t72.{core::MapEntry::key}, #t72.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t70.{core::Map::[]=}(n1, n1);
|
||||
} =>#t70;
|
||||
core::Map<dynamic, dynamic> m3 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:42:16: Error: Can't spread a value with static type 'N2'.
|
||||
var m3 = {...n2, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<self::test2::N1, self::test2::N1> m4 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t73 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t74 = n2;
|
||||
if(!#t74.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t74{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<self::test2::N1, self::test2::N1> #t75 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t73.{core::Map::[]=}(#t75.{core::MapEntry::key}, #t75.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t73.{core::Map::[]=}(n1, n1);
|
||||
} =>#t73;
|
||||
core::Map<dynamic, dynamic> m5 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/nnbd/issue42758.dart:44:16: Error: Can't spread a value with static type 'N3'.
|
||||
var m5 = {...n3, n1: n1};
|
||||
^": null, n1: n1};
|
||||
core::Map<self::test2::N1, self::test2::N1> m6 = block {
|
||||
final core::Map<self::test2::N1, self::test2::N1> #t76 = <self::test2::N1, self::test2::N1>{};
|
||||
final core::Map<self::test2::N1, self::test2::N1>? #t77 = n3;
|
||||
if(!#t77.{core::Object::==}(null)) {
|
||||
core::Iterator<core::MapEntry<self::test2::N1, self::test2::N1>> :sync-for-iterator = #t77{core::Map<self::test2::N1, self::test2::N1>}.{core::Map::entries}.{core::Iterable::iterator};
|
||||
for (; :sync-for-iterator.{core::Iterator::moveNext}(); ) {
|
||||
final core::MapEntry<self::test2::N1, self::test2::N1> #t78 = :sync-for-iterator.{core::Iterator::current};
|
||||
#t76.{core::Map::[]=}(#t78.{core::MapEntry::key}, #t78.{core::MapEntry::value});
|
||||
}
|
||||
}
|
||||
#t76.{core::Map::[]=}(n1, n1);
|
||||
} =>#t76;
|
||||
}
|
||||
static method main() → dynamic {}
|
||||
@@ -22,42 +22,42 @@ library /*isNonNullableByDefault*/;
|
||||
// x?.[42] = 42; // Warning.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
// y.foo(); // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
|
||||
// y.bar; // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
|
||||
// y.baz = 42; // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
|
||||
// y(); // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
// y++; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
// y += 1; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '[]' operator.
|
||||
// y[42]; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
|
||||
// y[42] = 42; // Error.
|
||||
// ^
|
||||
@@ -87,35 +87,35 @@ static method foo(Never x, Never? y) → dynamic {
|
||||
let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
|
||||
let final Never #t10 = x in #t10.{core::Object::==}(null) ?{core::Null?} null : #t10.[](42);
|
||||
let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
y.foo(); // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
|
||||
y.bar; // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
|
||||
y.baz = 42; // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'call'.
|
||||
y(); // Error.
|
||||
^";
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
y++; // Error.
|
||||
^" as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
y += 1; // Error.
|
||||
^" as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '[]' operator.
|
||||
y[42]; // Error.
|
||||
^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '[]=' operator.
|
||||
y[42] = 42; // Error.
|
||||
^";
|
||||
|
||||
@@ -22,42 +22,42 @@ library /*isNonNullableByDefault*/;
|
||||
// x?.[42] = 42; // Warning.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
// y.foo(); // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
|
||||
// y.bar; // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
|
||||
// y.baz = 42; // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
|
||||
// y(); // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
// y++; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
// y += 1; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '[]' operator.
|
||||
// y[42]; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
|
||||
// y[42] = 42; // Error.
|
||||
// ^
|
||||
@@ -87,35 +87,35 @@ static method foo(Never x, Never? y) → dynamic {
|
||||
let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
|
||||
let final Never #t10 = x in #t10.{core::Object::==}(null) ?{core::Null?} null : #t10.[](42);
|
||||
let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
y.foo(); // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
|
||||
y.bar; // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
|
||||
y.baz = 42; // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'call'.
|
||||
y(); // Error.
|
||||
^";
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
y++; // Error.
|
||||
^";
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
y += 1; // Error.
|
||||
^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '[]' operator.
|
||||
y[42]; // Error.
|
||||
^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '[]=' operator.
|
||||
y[42] = 42; // Error.
|
||||
^";
|
||||
|
||||
@@ -22,42 +22,42 @@ library /*isNonNullableByDefault*/;
|
||||
// x?.[42] = 42; // Warning.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
// y.foo(); // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
|
||||
// y.bar; // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
|
||||
// y.baz = 42; // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
|
||||
// y(); // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
// y++; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
// y += 1; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '[]' operator.
|
||||
// y[42]; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
|
||||
// y[42] = 42; // Error.
|
||||
// ^
|
||||
@@ -87,35 +87,35 @@ static method foo(Never x, Never? y) → dynamic {
|
||||
let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
|
||||
let final Never #t10 = x in #t10.{core::Object::==}(null) ?{core::Null?} null : #t10.[](42);
|
||||
let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
y.foo(); // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
|
||||
y.bar; // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
|
||||
y.baz = 42; // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'call'.
|
||||
y(); // Error.
|
||||
^";
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
y++; // Error.
|
||||
^" as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
y += 1; // Error.
|
||||
^" as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '[]' operator.
|
||||
y[42]; // Error.
|
||||
^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '[]=' operator.
|
||||
y[42] = 42; // Error.
|
||||
^";
|
||||
|
||||
@@ -22,42 +22,42 @@ library /*isNonNullableByDefault*/;
|
||||
// x?.[42] = 42; // Warning.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
// y.foo(); // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
|
||||
// y.bar; // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
|
||||
// y.baz = 42; // Error.
|
||||
// ^^^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
|
||||
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
|
||||
// y(); // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
// y++; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
// y += 1; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '[]' operator.
|
||||
// y[42]; // Error.
|
||||
// ^
|
||||
//
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
|
||||
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
|
||||
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
|
||||
// y[42] = 42; // Error.
|
||||
// ^
|
||||
@@ -87,35 +87,35 @@ static method foo(Never x, Never? y) → dynamic {
|
||||
let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
|
||||
let final Never #t10 = x in #t10.{core::Object::==}(null) ?{core::Null?} null : #t10.[](42);
|
||||
let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
|
||||
y.foo(); // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
|
||||
y.bar; // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
|
||||
y.baz = 42; // Error.
|
||||
^^^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
|
||||
Try correcting the name to the name of an existing method, or defining a method named 'call'.
|
||||
y(); // Error.
|
||||
^";
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
y++; // Error.
|
||||
^";
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never'.
|
||||
y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '+' operator.
|
||||
y += 1; // Error.
|
||||
^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '[]' operator.
|
||||
y[42]; // Error.
|
||||
^";
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never'.
|
||||
invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
|
||||
Try correcting the operator to an existing operator, or defining a '[]=' operator.
|
||||
y[42] = 42; // Error.
|
||||
^";
|
||||
|
||||
@@ -3021,6 +3021,9 @@ abstract class Expression extends TreeNode {
|
||||
if (type == context.typeEnvironment.nullType) {
|
||||
return context.typeEnvironment.coreTypes
|
||||
.bottomInterfaceType(superclass, context.nullable);
|
||||
} else if (type is NeverType) {
|
||||
return context.typeEnvironment.coreTypes
|
||||
.bottomInterfaceType(superclass, type.nullability);
|
||||
}
|
||||
if (type is InterfaceType) {
|
||||
List<DartType> upcastTypeArguments = context.typeEnvironment
|
||||
|
||||
@@ -249,7 +249,7 @@ class TypeCheckingVisitor
|
||||
while (type is TypeParameterType) {
|
||||
type = (type as TypeParameterType).bound;
|
||||
}
|
||||
if (type is BottomType) {
|
||||
if (type is BottomType || type is NeverType || type == coreTypes.nullType) {
|
||||
// The bottom type is a subtype of all types, so it should be allowed.
|
||||
return Substitution.bottomForClass(superclass);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user