Revert "[cfe] Disambiguate between sets and maps with spreads"
This reverts commit b817b274c2f9ef1f3232f95aa15efbec9f6b3b80.
Reason for revert: very red bots, gardener not going to blindly approve all redness
Original change's description:
> [cfe] Disambiguate between sets and maps with spreads
>
> Change-Id: I8da95178d0864dd0d59232a902cdb142be7f135e
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/95649
> Reviewed-by: Kevin Millikin <kmillikin@google.com>
TBR=dmitryas@google.com,askesc@google.com,kmillikin@google.com
Change-Id: I008c42a5b50da98af32c923b233130920fdb2546
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/96127
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
diff --git a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
index c12729c..a47e394 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
@@ -520,28 +520,6 @@
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Code<Null> codeCantDisambiguateAmbiguousInformation =
- messageCantDisambiguateAmbiguousInformation;
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const MessageCode messageCantDisambiguateAmbiguousInformation = const MessageCode(
- "CantDisambiguateAmbiguousInformation",
- message:
- r"""Both Iterable and Map spread elements encountered in ambiguous literal.""");
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Code<Null> codeCantDisambiguateNotEnoughInformation =
- messageCantDisambiguateNotEnoughInformation;
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const MessageCode messageCantDisambiguateNotEnoughInformation = const MessageCode(
- "CantDisambiguateNotEnoughInformation",
- message:
- r"""Not enough type information to disambiguate between literal set and literal map.""",
- tip:
- r"""Try providing type arguments for the literal explicitly to disambiguate it.""");
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Code<Null> codeCantInferPackagesFromManyInputs =
messageCantInferPackagesFromManyInputs;
@@ -8256,13 +8234,6 @@
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Code<Null> codeSpreadElement = messageSpreadElement;
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const MessageCode messageSpreadElement = const MessageCode("SpreadElement",
- severity: Severity.context, message: r"""Iterable spread.""");
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<
Message Function(
DartType _type,
@@ -8296,15 +8267,6 @@
}
// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Code<Null> codeSpreadMapElement = messageSpreadMapElement;
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const MessageCode messageSpreadMapElement = const MessageCode(
- "SpreadMapElement",
- severity: Severity.context,
- message: r"""Map spread.""");
-
-// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
const Template<
Message Function(
DartType _type,
diff --git a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
index a81d124..5deb216 100644
--- a/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart
@@ -817,22 +817,18 @@
(node.valueType is ImplicitTypeArgument));
bool inferenceNeeded = node.keyType is ImplicitTypeArgument;
KernelLibraryBuilder library = inferrer.library;
- bool typeContextIsMap = false;
- bool typeContextIsIterable = false;
if (library != null &&
library.loader.target.enableSetLiterals &&
- inferenceNeeded) {
+ inferenceNeeded &&
+ node.entries.isEmpty) {
// Ambiguous set/map literal
DartType context =
inferrer.typeSchemaEnvironment.unfutureType(typeContext);
if (context is InterfaceType) {
- typeContextIsMap = inferrer.classHierarchy
- .isSubtypeOf(context.classNode, inferrer.coreTypes.mapClass);
- typeContextIsIterable = inferrer.classHierarchy
- .isSubtypeOf(context.classNode, inferrer.coreTypes.iterableClass);
- if (node.entries.isEmpty &&
- typeContextIsIterable &&
- !typeContextIsMap) {
+ if (inferrer.classHierarchy.isSubtypeOf(
+ context.classNode, inferrer.coreTypes.iterableClass) &&
+ !inferrer.classHierarchy
+ .isSubtypeOf(context.classNode, inferrer.coreTypes.mapClass)) {
// Set literal
SetLiteralJudgment setLiteral = new SetLiteralJudgment([],
typeArgument: const ImplicitTypeArgument(), isConst: node.isConst)
@@ -871,24 +867,13 @@
cachedValues[i] = node.entries[i].value;
}
}
- int iterableSpreadOffset = null;
- int mapSpreadOffset = null;
- int mapEntryOffset = null;
if (inferenceNeeded || typeChecksNeeded) {
- DartType spreadTypeContext = const UnknownType();
- if (typeContextIsIterable && !typeContextIsMap) {
- spreadTypeContext = inferrer.typeSchemaEnvironment
- .getTypeAsInstanceOf(typeContext, inferrer.coreTypes.iterableClass);
- } else if (!typeContextIsIterable && typeContextIsMap) {
- spreadTypeContext =
- new InterfaceType(inferrer.coreTypes.mapClass, inferredTypes);
- }
for (int i = 0; i < node.entries.length; ++i) {
MapEntry entry = node.entries[i];
if (entry is SpreadMapEntry) {
DartType spreadMapEntryType = inferrer.inferExpression(
entry.expression,
- spreadTypeContext,
+ new InterfaceType(inferrer.coreTypes.mapClass, inferredTypes),
inferenceNeeded || typeChecksNeeded,
isVoidAllowed: true);
if (inferenceNeeded) {
@@ -898,19 +883,6 @@
if (typeChecksNeeded) {
spreadMapEntryTypes[i] = spreadMapEntryType;
}
-
- bool isMap = inferrer.typeSchemaEnvironment.isSubtypeOf(
- spreadMapEntryType, inferrer.coreTypes.mapClass.rawType);
- bool isSet = inferrer.typeSchemaEnvironment.isSubtypeOf(
- spreadMapEntryType, inferrer.coreTypes.iterableClass.rawType);
-
- if (isMap && !isSet) {
- mapSpreadOffset = entry.expression.fileOffset;
- }
- if (!isMap && isSet) {
- iterableSpreadOffset = entry.expression.fileOffset;
- }
-
// Use 'dynamic' for error recovery.
int length = actualTypes.length;
actualTypes.add(const DynamicType());
@@ -929,62 +901,10 @@
if (inferenceNeeded) {
formalTypes.addAll(mapType.typeArguments);
}
-
- mapEntryOffset = entry.fileOffset;
}
}
}
if (inferenceNeeded) {
- bool canBeSet = mapSpreadOffset == null &&
- mapEntryOffset == null &&
- !typeContextIsMap;
- bool canBeMap = iterableSpreadOffset == null && !typeContextIsIterable;
- if (canBeSet && !canBeMap) {
- List<Expression> setElements = <Expression>[];
- for (int i = 0; i < node.entries.length; ++i) {
- SpreadMapEntry entry = node.entries[i];
- // TODO(dmitryas): Add support for null-aware spreads.
- setElements.add(new SpreadElement(entry.expression, false));
- }
- SetLiteralJudgment setLiteral = new SetLiteralJudgment(setElements,
- typeArgument: const ImplicitTypeArgument(), isConst: node.isConst)
- ..fileOffset = node.fileOffset;
- node.parent.replaceChild(node, setLiteral);
- visitSetLiteralJudgment(setLiteral, typeContext);
- node.inferredType = setLiteral.inferredType;
- return;
- }
- if (canBeSet && canBeMap && node.entries.isNotEmpty) {
- node.parent.replaceChild(
- node,
- inferrer.helper.desugarSyntheticExpression(inferrer.helper
- .buildProblem(messageCantDisambiguateNotEnoughInformation,
- node.fileOffset, 1)));
- node.inferredType = const BottomType();
- return;
- }
- if (!canBeSet && !canBeMap) {
- LocatedMessage iterableContextMessage = messageSpreadElement
- .withLocation(library.uri, iterableSpreadOffset, 1);
- LocatedMessage mapContextMessage = messageSpreadMapElement.withLocation(
- library.uri, mapSpreadOffset, 1);
- List<LocatedMessage> context = <LocatedMessage>[];
- if (iterableSpreadOffset < mapSpreadOffset) {
- context.add(iterableContextMessage);
- context.add(mapContextMessage);
- } else {
- context.add(mapContextMessage);
- context.add(iterableContextMessage);
- }
- node.parent.replaceChild(
- node,
- inferrer.helper.desugarSyntheticExpression(inferrer.helper
- .buildProblem(messageCantDisambiguateAmbiguousInformation,
- node.fileOffset, 1,
- context: context)));
- node.inferredType = const BottomType();
- return;
- }
inferrer.typeSchemaEnvironment.inferGenericFunctionOrType(
mapType,
mapClass.typeParameters,
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
index 9ebcc33..4cdc182 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_shadow_ast.dart
@@ -35,11 +35,6 @@
import '../fasta_codes.dart'
show
- LocatedMessage,
- messageCantDisambiguateAmbiguousInformation,
- messageCantDisambiguateNotEnoughInformation,
- messageSpreadElement,
- messageSpreadMapElement,
messageSwitchExpressionNotAssignableCause,
messageVoidExpression,
noLength,
diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status
index 69520ef..b644869 100644
--- a/pkg/front_end/messages.status
+++ b/pkg/front_end/messages.status
@@ -30,10 +30,6 @@
CannotReadSdkSpecification/analyzerCode: Fail
CannotReadSdkSpecification/example: Fail
CantDetermineConstness/analyzerCode: Fail
-CantDisambiguateAmbiguousInformation/analyzerCode: Fail # There's no analyzer code for that error yet.
-CantDisambiguateAmbiguousInformation/script: Fail # Can't be tested until 'spread-collections' flag is on.
-CantDisambiguateNotEnoughInformation/analyzerCode: Fail # There's no analyzer code for that error yet.
-CantDisambiguateNotEnoughInformation/script: Fail # Can't be tested until 'spread-collections' flag is on.
CantInferPackagesFromManyInputs/analyzerCode: Fail
CantInferPackagesFromManyInputs/example: Fail
CantInferPackagesFromPackageUri/analyzerCode: Fail
@@ -347,7 +343,7 @@
SpreadMapEntryTypeMismatch/analyzerCode: Fail # Can't be tested until 'spread-collections' flag is on.
SpreadMapEntryTypeMismatch/script1: Fail # Can't be tested until 'spread-collections' flag is on.
SpreadMapEntryTypeMismatch/script2: Fail # Can't be tested until 'spread-collections' flag is on.
-SpreadTypeMismatch/analyzerCode: Fail # There's no analyzer code for that error yet.
+SpreadTypeMismatch/analyzerCode: Fail # There's not analyzer code for that error yet.
SpreadTypeMismatch/script1: Fail # Can't be tested until 'spread-collections' flag is on.
SpreadTypeMismatch/script2: Fail # Can't be tested until 'spread-collections' flag is on.
StackOverflow/example: Fail
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index e713239..aa63668 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -3530,26 +3530,3 @@
Map<String, int> a = <String, int>{"foo": 42};
Map<String, String> b = <String, String>{...a};
}
-
-CantDisambiguateNotEnoughInformation:
- template: "Not enough type information to disambiguate between literal set and literal map."
- tip: "Try providing type arguments for the literal explicitly to disambiguate it."
- script: >
- foo(dynamic spread) {
- var a = {...spread};
- }
-
-CantDisambiguateAmbiguousInformation:
- template: "Both Iterable and Map spread elements encountered in ambiguous literal."
- script: >
- foo(Iterable<int> iterableSpread, Map<int, int> mapSpread) {
- var c = {...iterableSpread, ...mapSpread};
- }
-
-SpreadElement:
- template: "Iterable spread."
- severity: CONTEXT
-
-SpreadMapElement:
- template: "Map spread."
- severity: CONTEXT
diff --git a/pkg/front_end/testcases/spread_collection.dart.strong.expect b/pkg/front_end/testcases/spread_collection.dart.strong.expect
index a05138f..9e18ed0 100644
--- a/pkg/front_end/testcases/spread_collection.dart.strong.expect
+++ b/pkg/front_end/testcases/spread_collection.dart.strong.expect
@@ -1,12 +1,4 @@
library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/spread_collection.dart:9:21: Error: Not enough type information to disambiguate between literal set and literal map.
-// Try providing type arguments for the literal explicitly to disambiguate it.
-// final aSetOrMap = {...foo()};
-// ^
-//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
@@ -25,9 +17,9 @@
final core::Map<core::int, core::int> aMap = block {
final core::Map<core::int, core::int> #t5 = <core::int, core::int>{};
#t5.{core::Map::[]=}(1, 1);
- for (final core::MapEntry<core::int, core::int> #t6 in <core::int, core::int>{2: 2})
+ for (final core::MapEntry<core::int, core::int> #t6 in <dynamic, dynamic>{2: 2})
#t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
- for (final core::MapEntry<core::int, core::int> #t7 in <core::int, core::int>{3: 3})
+ for (final core::MapEntry<core::int, core::int> #t7 in <dynamic, dynamic>{3: 3})
#t5.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
} =>#t5;
final core::Set<core::int> aSet = block {
@@ -40,10 +32,11 @@
for (final core::int #t11 in #t10)
#t8.{core::Set::add}(#t11);
} =>#t8;
- final dynamic aSetOrMap = invalid-expression "pkg/front_end/testcases/spread_collection.dart:9:21: Error: Not enough type information to disambiguate between literal set and literal map.
-Try providing type arguments for the literal explicitly to disambiguate it.
- final aSetOrMap = {...foo()};
- ^";
+ final core::Map<dynamic, dynamic> aSetOrMap = block {
+ final core::Map<dynamic, dynamic> #t12 = <dynamic, dynamic>{};
+ for (final core::MapEntry<dynamic, dynamic> #t13 in self::foo() as{TypeError} core::Map<dynamic, dynamic>)
+ #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value});
+ } =>#t12;
core::print(aList);
core::print(aSet);
core::print(aMap);
diff --git a/pkg/front_end/testcases/spread_collection.dart.strong.transformed.expect b/pkg/front_end/testcases/spread_collection.dart.strong.transformed.expect
index a05138f..9e18ed0 100644
--- a/pkg/front_end/testcases/spread_collection.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/spread_collection.dart.strong.transformed.expect
@@ -1,12 +1,4 @@
library;
-//
-// Problems in library:
-//
-// pkg/front_end/testcases/spread_collection.dart:9:21: Error: Not enough type information to disambiguate between literal set and literal map.
-// Try providing type arguments for the literal explicitly to disambiguate it.
-// final aSetOrMap = {...foo()};
-// ^
-//
import self as self;
import "dart:core" as core;
import "dart:collection" as col;
@@ -25,9 +17,9 @@
final core::Map<core::int, core::int> aMap = block {
final core::Map<core::int, core::int> #t5 = <core::int, core::int>{};
#t5.{core::Map::[]=}(1, 1);
- for (final core::MapEntry<core::int, core::int> #t6 in <core::int, core::int>{2: 2})
+ for (final core::MapEntry<core::int, core::int> #t6 in <dynamic, dynamic>{2: 2})
#t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
- for (final core::MapEntry<core::int, core::int> #t7 in <core::int, core::int>{3: 3})
+ for (final core::MapEntry<core::int, core::int> #t7 in <dynamic, dynamic>{3: 3})
#t5.{core::Map::[]=}(#t7.{core::MapEntry::key}, #t7.{core::MapEntry::value});
} =>#t5;
final core::Set<core::int> aSet = block {
@@ -40,10 +32,11 @@
for (final core::int #t11 in #t10)
#t8.{core::Set::add}(#t11);
} =>#t8;
- final dynamic aSetOrMap = invalid-expression "pkg/front_end/testcases/spread_collection.dart:9:21: Error: Not enough type information to disambiguate between literal set and literal map.
-Try providing type arguments for the literal explicitly to disambiguate it.
- final aSetOrMap = {...foo()};
- ^";
+ final core::Map<dynamic, dynamic> aSetOrMap = block {
+ final core::Map<dynamic, dynamic> #t12 = <dynamic, dynamic>{};
+ for (final core::MapEntry<dynamic, dynamic> #t13 in self::foo() as{TypeError} core::Map<dynamic, dynamic>)
+ #t12.{core::Map::[]=}(#t13.{core::MapEntry::key}, #t13.{core::MapEntry::value});
+ } =>#t12;
core::print(aList);
core::print(aSet);
core::print(aMap);
diff --git a/pkg/front_end/testcases/spread_collection_inference.dart b/pkg/front_end/testcases/spread_collection_inference.dart
index 8547fed..474905a 100644
--- a/pkg/front_end/testcases/spread_collection_inference.dart
+++ b/pkg/front_end/testcases/spread_collection_inference.dart
@@ -21,21 +21,13 @@
var /*@type=Map<dynamic, dynamic>*/ map10 = <dynamic, dynamic>{...
/*@typeArgs=dynamic, dynamic*/ {}};
- var /*@type=Map<dynamic, dynamic>*/ map10ambiguous =
- /*@typeArgs=dynamic, dynamic*/ {... /*@typeArgs=dynamic, dynamic*/ {}};
-
var /*@type=List<int>*/ lhs20 = /*@typeArgs=int*/ [...spread];
var /*@type=Set<int>*/ set20 = /*@typeArgs=int*/ {...spread, 42};
- var /*@type=Set<int>*/ set20ambiguous = /*@typeArgs=int*/ {...spread};
-
var /*@type=Map<String, int>*/ map20 = /*@typeArgs=String, int*/
{...mapSpread, "baz": 42};
- var /*@type=Map<String, int>*/ map20ambiguous = /*@typeArgs=String, int*/
- {...mapSpread};
-
var /*@type=List<dynamic>*/ lhs21 = /*@typeArgs=dynamic*/ [...(spread as
dynamic)];
@@ -43,17 +35,12 @@
dynamic), 42};
var /*@type=Map<dynamic, dynamic>*/ map21 = /*@typeArgs=dynamic, dynamic*/
- {...(mapSpread as dynamic), "baz": 42};
-
- dynamic map21ambiguous = /*@error=CantDisambiguateNotEnoughInformation*/ {...
- (mapSpread as dynamic)};
+ {...(spread as dynamic), "baz": 42};
List<int> lhs22 = /*@typeArgs=int*/ [... /*@typeArgs=int*/ []];
Set<int> set22 = /*@typeArgs=int*/ {... /*@typeArgs=int*/ [], 42};
- Set<int> set22ambiguous = /*@typeArgs=int*/ {... /*@typeArgs=int*/ []};
-
Map<String, int> map22 = /*@typeArgs=String, int*/
{... /*@typeArgs=String, int*/ {}};
@@ -63,28 +50,16 @@
Set<List<int>> set23 = /*@typeArgs=List<int>*/ {... /*@typeArgs=List<int>*/
[/*@typeArgs=int*/ []], <int>[42]};
- Set<List<int>> set23ambiguous = /*@typeArgs=List<int>*/
- {... /*@typeArgs=List<int>*/ [/*@typeArgs=int*/ []]};
-
Map<String, List<int>> map23 = /*@typeArgs=String, List<int>*/
{... /*@typeArgs=String, List<int>*/ {"baz": /*@typeArgs=int*/ []}};
- dynamic map24ambiguous = /*@error=CantDisambiguateAmbiguousInformation*/ {...
- spread, ...mapSpread};
-
int lhs30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ [...spread];
int set30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ {...spread, 42};
- int set30ambiguous = /*@error=InvalidAssignment*/ /*@typeArgs=int*/
- {...spread};
-
int map30 = /*@error=InvalidAssignment*/ /*@typeArgs=String, int*/
{...mapSpread, "baz": 42};
- int map30ambiguous = /*@error=InvalidAssignment*/ /*@typeArgs=String, int*/
- {...mapSpread};
-
List<dynamic> lhs40 = <dynamic>[... /*@error=SpreadTypeMismatch*/
notSpreadInt];
diff --git a/pkg/front_end/testcases/spread_collection_inference.dart.legacy.expect b/pkg/front_end/testcases/spread_collection_inference.dart.legacy.expect
index a976974..3507169 100644
--- a/pkg/front_end/testcases/spread_collection_inference.dart.legacy.expect
+++ b/pkg/front_end/testcases/spread_collection_inference.dart.legacy.expect
@@ -18,219 +18,139 @@
// /*@typeArgs=dynamic, dynamic*/ {}};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:25:37: Error: Unexpected token '...'.
-// /*@typeArgs=dynamic, dynamic*/ {... /*@typeArgs=dynamic, dynamic*/ {}};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:25:73: Error: Expected ':' after this.
-// /*@typeArgs=dynamic, dynamic*/ {... /*@typeArgs=dynamic, dynamic*/ {}};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:27:54: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:24:54: Error: Unexpected token '...'.
// var /*@type=List<int>*/ lhs20 = /*@typeArgs=int*/ [...spread];
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:29:53: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:26:53: Error: Unexpected token '...'.
// var /*@type=Set<int>*/ set20 = /*@typeArgs=int*/ {...spread, 42};
// ^^^
//
+// pkg/front_end/testcases/spread_collection_inference.dart:29:6: Error: Unexpected token '...'.
+// {...mapSpread, "baz": 42};
+// ^^^
+//
+// pkg/front_end/testcases/spread_collection_inference.dart:29:9: Error: Expected ':' after this.
+// {...mapSpread, "baz": 42};
+// ^
+//
// pkg/front_end/testcases/spread_collection_inference.dart:31:62: Error: Unexpected token '...'.
-// var /*@type=Set<int>*/ set20ambiguous = /*@typeArgs=int*/ {...spread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:31:65: Error: Expected ':' after this.
-// var /*@type=Set<int>*/ set20ambiguous = /*@typeArgs=int*/ {...spread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:34:6: Error: Unexpected token '...'.
-// {...mapSpread, "baz": 42};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:34:9: Error: Expected ':' after this.
-// {...mapSpread, "baz": 42};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:37:6: Error: Unexpected token '...'.
-// {...mapSpread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:37:9: Error: Expected ':' after this.
-// {...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:39:62: Error: Unexpected token '...'.
// var /*@type=List<dynamic>*/ lhs21 = /*@typeArgs=dynamic*/ [...(spread as
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:42:61: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:34:61: Error: Unexpected token '...'.
// var /*@type=Set<dynamic>*/ set21 = /*@typeArgs=dynamic*/ {...(spread as
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:46:6: Error: Unexpected token '...'.
-// {...(mapSpread as dynamic), "baz": 42};
+// pkg/front_end/testcases/spread_collection_inference.dart:38:6: Error: Unexpected token '...'.
+// {...(spread as dynamic), "baz": 42};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:46:20: Error: Expected ':' after this.
-// {...(mapSpread as dynamic), "baz": 42};
-// ^
+// pkg/front_end/testcases/spread_collection_inference.dart:38:17: Error: Expected ':' after this.
+// {...(spread as dynamic), "baz": 42};
+// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:48:77: Error: Unexpected token '...'.
-// dynamic map21ambiguous = /*@error=CantDisambiguateNotEnoughInformation*/ {...
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:49:16: Error: Expected ':' after this.
-// (mapSpread as dynamic)};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:51:40: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:40:40: Error: Unexpected token '...'.
// List<int> lhs22 = /*@typeArgs=int*/ [... /*@typeArgs=int*/ []];
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:53:39: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:42:39: Error: Unexpected token '...'.
// Set<int> set22 = /*@typeArgs=int*/ {... /*@typeArgs=int*/ [], 42};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:55:48: Error: Unexpected token '...'.
-// Set<int> set22ambiguous = /*@typeArgs=int*/ {... /*@typeArgs=int*/ []};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:55:70: Error: Expected ':' after this.
-// Set<int> set22ambiguous = /*@typeArgs=int*/ {... /*@typeArgs=int*/ []};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:58:6: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:45:6: Error: Unexpected token '...'.
// {... /*@typeArgs=String, int*/ {}};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:58:36: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:45:36: Error: Expected ':' after this.
// {... /*@typeArgs=String, int*/ {}};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:60:52: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:47:52: Error: Unexpected token '...'.
// List<List<int>> lhs23 = /*@typeArgs=List<int>*/ [... /*@typeArgs=List<int>*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:63:51: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:50:51: Error: Unexpected token '...'.
// Set<List<int>> set23 = /*@typeArgs=List<int>*/ {... /*@typeArgs=List<int>*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:67:6: Error: Unexpected token '...'.
-// {... /*@typeArgs=List<int>*/ [/*@typeArgs=int*/ []]};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:67:34: Error: Expected ':' after this.
-// {... /*@typeArgs=List<int>*/ [/*@typeArgs=int*/ []]};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:70:6: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:54:6: Error: Unexpected token '...'.
// {... /*@typeArgs=String, List<int>*/ {"baz": /*@typeArgs=int*/ []}};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:70:42: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:54:42: Error: Expected ':' after this.
// {... /*@typeArgs=String, List<int>*/ {"baz": /*@typeArgs=int*/ []}};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:72:77: Error: Unexpected token '...'.
-// dynamic map24ambiguous = /*@error=CantDisambiguateAmbiguousInformation*/ {...
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:73:13: Error: Unexpected token '...'.
-// spread, ...mapSpread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:73:5: Error: Expected ':' after this.
-// spread, ...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:73:16: Error: Expected ':' after this.
-// spread, ...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:75:63: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:56:63: Error: Unexpected token '...'.
// int lhs30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ [...spread];
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:77:63: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:58:63: Error: Unexpected token '...'.
// int set30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ {...spread, 42};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:80:6: Error: Unexpected token '...'.
-// {...spread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:80:9: Error: Expected ':' after this.
-// {...spread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:83:6: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:61:6: Error: Unexpected token '...'.
// {...mapSpread, "baz": 42};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:83:9: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:61:9: Error: Expected ':' after this.
// {...mapSpread, "baz": 42};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:86:6: Error: Unexpected token '...'.
-// {...mapSpread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:86:9: Error: Expected ':' after this.
-// {...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:88:35: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:63:35: Error: Unexpected token '...'.
// List<dynamic> lhs40 = <dynamic>[... /*@error=SpreadTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:91:34: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:66:34: Error: Unexpected token '...'.
// Set<dynamic> set40 = <dynamic>{... /*@error=SpreadTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:94:52: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:69:52: Error: Unexpected token '...'.
// Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:95:43: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:70:43: Error: Expected ':' after this.
// /*@error=SpreadMapEntryTypeMismatch*/ notSpreadInt};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:97:36: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:72:36: Error: Unexpected token '...'.
// List<dynamic> lhs50 = <dynamic> [... /*@error=SpreadTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:100:35: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:75:35: Error: Unexpected token '...'.
// Set<dynamic> set50 = <dynamic> {... /*@error=SpreadTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:103:52: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:78:52: Error: Unexpected token '...'.
// Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:104:43: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:79:43: Error: Expected ':' after this.
// /*@error=SpreadMapEntryTypeMismatch*/ notSpreadFunction};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:106:33: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:81:33: Error: Unexpected token '...'.
// List<String> lhs60 = <String>[... /*@error=SpreadElementTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:109:32: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:84:32: Error: Unexpected token '...'.
// Set<String> set60 = <String>{... /*@error=SpreadElementTypeMismatch*/ spread};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:111:36: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:86:36: Error: Unexpected token '...'.
// Map<int, int> map60 = <int, int>{...
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:112:53: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:87:53: Error: Expected ':' after this.
// /*@error=SpreadMapEntryElementKeyTypeMismatch*/ mapSpread};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:114:48: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:89:48: Error: Unexpected token '...'.
// Map<String, String> map61 = <String, String>{...
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:115:55: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:90:55: Error: Expected ':' after this.
// /*@error=SpreadMapEntryElementValueTypeMismatch*/ mapSpread};
// ^
//
@@ -245,30 +165,21 @@
dynamic lhs10 = <dynamic>[<dynamic>[]];
dynamic set10 = <dynamic>{<dynamic>[]};
dynamic map10 = <dynamic, dynamic>{};
- dynamic map10ambiguous = <dynamic, dynamic>{};
dynamic lhs20 = <dynamic>[spread];
dynamic set20 = <dynamic>{spread, 42};
- dynamic set20ambiguous = <dynamic, dynamic>{};
dynamic map20 = <dynamic, dynamic>{"baz": 42};
- dynamic map20ambiguous = <dynamic, dynamic>{};
dynamic lhs21 = <dynamic>[spread as dynamic];
dynamic set21 = <dynamic>{spread as dynamic, 42};
dynamic map21 = <dynamic, dynamic>{"baz": 42};
- dynamic map21ambiguous = <dynamic, dynamic>{};
core::List<core::int> lhs22 = <dynamic>[<dynamic>[]];
core::Set<core::int> set22 = <dynamic>{<dynamic>[], 42};
- core::Set<core::int> set22ambiguous = <dynamic, dynamic>{};
core::Map<core::String, core::int> map22 = <dynamic, dynamic>{};
core::List<core::List<core::int>> lhs23 = <dynamic>[<dynamic>[<dynamic>[]]];
core::Set<core::List<core::int>> set23 = <dynamic>{<dynamic>[<dynamic>[]], <core::int>[42]};
- core::Set<core::List<core::int>> set23ambiguous = <dynamic, dynamic>{};
core::Map<core::String, core::List<core::int>> map23 = <dynamic, dynamic>{};
- dynamic map24ambiguous = <dynamic, dynamic>{};
core::int lhs30 = <dynamic>[spread];
core::int set30 = <dynamic>{spread, 42};
- core::int set30ambiguous = <dynamic, dynamic>{};
core::int map30 = <dynamic, dynamic>{"baz": 42};
- core::int map30ambiguous = <dynamic, dynamic>{};
core::List<dynamic> lhs40 = <dynamic>[notSpreadInt];
core::Set<dynamic> set40 = <dynamic>{notSpreadInt};
core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{};
diff --git a/pkg/front_end/testcases/spread_collection_inference.dart.legacy.transformed.expect b/pkg/front_end/testcases/spread_collection_inference.dart.legacy.transformed.expect
index a976974..3507169 100644
--- a/pkg/front_end/testcases/spread_collection_inference.dart.legacy.transformed.expect
+++ b/pkg/front_end/testcases/spread_collection_inference.dart.legacy.transformed.expect
@@ -18,219 +18,139 @@
// /*@typeArgs=dynamic, dynamic*/ {}};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:25:37: Error: Unexpected token '...'.
-// /*@typeArgs=dynamic, dynamic*/ {... /*@typeArgs=dynamic, dynamic*/ {}};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:25:73: Error: Expected ':' after this.
-// /*@typeArgs=dynamic, dynamic*/ {... /*@typeArgs=dynamic, dynamic*/ {}};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:27:54: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:24:54: Error: Unexpected token '...'.
// var /*@type=List<int>*/ lhs20 = /*@typeArgs=int*/ [...spread];
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:29:53: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:26:53: Error: Unexpected token '...'.
// var /*@type=Set<int>*/ set20 = /*@typeArgs=int*/ {...spread, 42};
// ^^^
//
+// pkg/front_end/testcases/spread_collection_inference.dart:29:6: Error: Unexpected token '...'.
+// {...mapSpread, "baz": 42};
+// ^^^
+//
+// pkg/front_end/testcases/spread_collection_inference.dart:29:9: Error: Expected ':' after this.
+// {...mapSpread, "baz": 42};
+// ^
+//
// pkg/front_end/testcases/spread_collection_inference.dart:31:62: Error: Unexpected token '...'.
-// var /*@type=Set<int>*/ set20ambiguous = /*@typeArgs=int*/ {...spread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:31:65: Error: Expected ':' after this.
-// var /*@type=Set<int>*/ set20ambiguous = /*@typeArgs=int*/ {...spread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:34:6: Error: Unexpected token '...'.
-// {...mapSpread, "baz": 42};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:34:9: Error: Expected ':' after this.
-// {...mapSpread, "baz": 42};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:37:6: Error: Unexpected token '...'.
-// {...mapSpread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:37:9: Error: Expected ':' after this.
-// {...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:39:62: Error: Unexpected token '...'.
// var /*@type=List<dynamic>*/ lhs21 = /*@typeArgs=dynamic*/ [...(spread as
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:42:61: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:34:61: Error: Unexpected token '...'.
// var /*@type=Set<dynamic>*/ set21 = /*@typeArgs=dynamic*/ {...(spread as
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:46:6: Error: Unexpected token '...'.
-// {...(mapSpread as dynamic), "baz": 42};
+// pkg/front_end/testcases/spread_collection_inference.dart:38:6: Error: Unexpected token '...'.
+// {...(spread as dynamic), "baz": 42};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:46:20: Error: Expected ':' after this.
-// {...(mapSpread as dynamic), "baz": 42};
-// ^
+// pkg/front_end/testcases/spread_collection_inference.dart:38:17: Error: Expected ':' after this.
+// {...(spread as dynamic), "baz": 42};
+// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:48:77: Error: Unexpected token '...'.
-// dynamic map21ambiguous = /*@error=CantDisambiguateNotEnoughInformation*/ {...
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:49:16: Error: Expected ':' after this.
-// (mapSpread as dynamic)};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:51:40: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:40:40: Error: Unexpected token '...'.
// List<int> lhs22 = /*@typeArgs=int*/ [... /*@typeArgs=int*/ []];
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:53:39: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:42:39: Error: Unexpected token '...'.
// Set<int> set22 = /*@typeArgs=int*/ {... /*@typeArgs=int*/ [], 42};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:55:48: Error: Unexpected token '...'.
-// Set<int> set22ambiguous = /*@typeArgs=int*/ {... /*@typeArgs=int*/ []};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:55:70: Error: Expected ':' after this.
-// Set<int> set22ambiguous = /*@typeArgs=int*/ {... /*@typeArgs=int*/ []};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:58:6: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:45:6: Error: Unexpected token '...'.
// {... /*@typeArgs=String, int*/ {}};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:58:36: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:45:36: Error: Expected ':' after this.
// {... /*@typeArgs=String, int*/ {}};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:60:52: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:47:52: Error: Unexpected token '...'.
// List<List<int>> lhs23 = /*@typeArgs=List<int>*/ [... /*@typeArgs=List<int>*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:63:51: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:50:51: Error: Unexpected token '...'.
// Set<List<int>> set23 = /*@typeArgs=List<int>*/ {... /*@typeArgs=List<int>*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:67:6: Error: Unexpected token '...'.
-// {... /*@typeArgs=List<int>*/ [/*@typeArgs=int*/ []]};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:67:34: Error: Expected ':' after this.
-// {... /*@typeArgs=List<int>*/ [/*@typeArgs=int*/ []]};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:70:6: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:54:6: Error: Unexpected token '...'.
// {... /*@typeArgs=String, List<int>*/ {"baz": /*@typeArgs=int*/ []}};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:70:42: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:54:42: Error: Expected ':' after this.
// {... /*@typeArgs=String, List<int>*/ {"baz": /*@typeArgs=int*/ []}};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:72:77: Error: Unexpected token '...'.
-// dynamic map24ambiguous = /*@error=CantDisambiguateAmbiguousInformation*/ {...
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:73:13: Error: Unexpected token '...'.
-// spread, ...mapSpread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:73:5: Error: Expected ':' after this.
-// spread, ...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:73:16: Error: Expected ':' after this.
-// spread, ...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:75:63: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:56:63: Error: Unexpected token '...'.
// int lhs30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ [...spread];
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:77:63: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:58:63: Error: Unexpected token '...'.
// int set30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ {...spread, 42};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:80:6: Error: Unexpected token '...'.
-// {...spread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:80:9: Error: Expected ':' after this.
-// {...spread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:83:6: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:61:6: Error: Unexpected token '...'.
// {...mapSpread, "baz": 42};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:83:9: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:61:9: Error: Expected ':' after this.
// {...mapSpread, "baz": 42};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:86:6: Error: Unexpected token '...'.
-// {...mapSpread};
-// ^^^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:86:9: Error: Expected ':' after this.
-// {...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:88:35: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:63:35: Error: Unexpected token '...'.
// List<dynamic> lhs40 = <dynamic>[... /*@error=SpreadTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:91:34: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:66:34: Error: Unexpected token '...'.
// Set<dynamic> set40 = <dynamic>{... /*@error=SpreadTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:94:52: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:69:52: Error: Unexpected token '...'.
// Map<dynamic, dynamic> map40 = <dynamic, dynamic>{...
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:95:43: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:70:43: Error: Expected ':' after this.
// /*@error=SpreadMapEntryTypeMismatch*/ notSpreadInt};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:97:36: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:72:36: Error: Unexpected token '...'.
// List<dynamic> lhs50 = <dynamic> [... /*@error=SpreadTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:100:35: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:75:35: Error: Unexpected token '...'.
// Set<dynamic> set50 = <dynamic> {... /*@error=SpreadTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:103:52: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:78:52: Error: Unexpected token '...'.
// Map<dynamic, dynamic> map50 = <dynamic, dynamic>{...
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:104:43: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:79:43: Error: Expected ':' after this.
// /*@error=SpreadMapEntryTypeMismatch*/ notSpreadFunction};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:106:33: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:81:33: Error: Unexpected token '...'.
// List<String> lhs60 = <String>[... /*@error=SpreadElementTypeMismatch*/
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:109:32: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:84:32: Error: Unexpected token '...'.
// Set<String> set60 = <String>{... /*@error=SpreadElementTypeMismatch*/ spread};
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:111:36: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:86:36: Error: Unexpected token '...'.
// Map<int, int> map60 = <int, int>{...
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:112:53: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:87:53: Error: Expected ':' after this.
// /*@error=SpreadMapEntryElementKeyTypeMismatch*/ mapSpread};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:114:48: Error: Unexpected token '...'.
+// pkg/front_end/testcases/spread_collection_inference.dart:89:48: Error: Unexpected token '...'.
// Map<String, String> map61 = <String, String>{...
// ^^^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:115:55: Error: Expected ':' after this.
+// pkg/front_end/testcases/spread_collection_inference.dart:90:55: Error: Expected ':' after this.
// /*@error=SpreadMapEntryElementValueTypeMismatch*/ mapSpread};
// ^
//
@@ -245,30 +165,21 @@
dynamic lhs10 = <dynamic>[<dynamic>[]];
dynamic set10 = <dynamic>{<dynamic>[]};
dynamic map10 = <dynamic, dynamic>{};
- dynamic map10ambiguous = <dynamic, dynamic>{};
dynamic lhs20 = <dynamic>[spread];
dynamic set20 = <dynamic>{spread, 42};
- dynamic set20ambiguous = <dynamic, dynamic>{};
dynamic map20 = <dynamic, dynamic>{"baz": 42};
- dynamic map20ambiguous = <dynamic, dynamic>{};
dynamic lhs21 = <dynamic>[spread as dynamic];
dynamic set21 = <dynamic>{spread as dynamic, 42};
dynamic map21 = <dynamic, dynamic>{"baz": 42};
- dynamic map21ambiguous = <dynamic, dynamic>{};
core::List<core::int> lhs22 = <dynamic>[<dynamic>[]];
core::Set<core::int> set22 = <dynamic>{<dynamic>[], 42};
- core::Set<core::int> set22ambiguous = <dynamic, dynamic>{};
core::Map<core::String, core::int> map22 = <dynamic, dynamic>{};
core::List<core::List<core::int>> lhs23 = <dynamic>[<dynamic>[<dynamic>[]]];
core::Set<core::List<core::int>> set23 = <dynamic>{<dynamic>[<dynamic>[]], <core::int>[42]};
- core::Set<core::List<core::int>> set23ambiguous = <dynamic, dynamic>{};
core::Map<core::String, core::List<core::int>> map23 = <dynamic, dynamic>{};
- dynamic map24ambiguous = <dynamic, dynamic>{};
core::int lhs30 = <dynamic>[spread];
core::int set30 = <dynamic>{spread, 42};
- core::int set30ambiguous = <dynamic, dynamic>{};
core::int map30 = <dynamic, dynamic>{"baz": 42};
- core::int map30ambiguous = <dynamic, dynamic>{};
core::List<dynamic> lhs40 = <dynamic>[notSpreadInt];
core::Set<dynamic> set40 = <dynamic>{notSpreadInt};
core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{};
diff --git a/pkg/front_end/testcases/spread_collection_inference.dart.strong.expect b/pkg/front_end/testcases/spread_collection_inference.dart.strong.expect
index a45078f..a8ade16 100644
--- a/pkg/front_end/testcases/spread_collection_inference.dart.strong.expect
+++ b/pkg/front_end/testcases/spread_collection_inference.dart.strong.expect
@@ -2,88 +2,61 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/spread_collection_inference.dart:48:76: Error: Not enough type information to disambiguate between literal set and literal map.
-// Try providing type arguments for the literal explicitly to disambiguate it.
-// dynamic map21ambiguous = /*@error=CantDisambiguateNotEnoughInformation*/ {...
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:72:76: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
-// dynamic map24ambiguous = /*@error=CantDisambiguateAmbiguousInformation*/ {...
-// ^
-// pkg/front_end/testcases/spread_collection_inference.dart:73:5: Context: Iterable spread.
-// spread, ...mapSpread};
-// ^
-// pkg/front_end/testcases/spread_collection_inference.dart:73:16: Context: Map spread.
-// spread, ...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:75:62: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/spread_collection_inference.dart:56:62: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
// - 'List' is from 'dart:core'.
// Try changing the type of the left hand side, or casting the right hand side to 'int'.
// int lhs30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ [...spread];
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:77:62: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/spread_collection_inference.dart:58:62: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
// - 'Set' is from 'dart:core'.
// Try changing the type of the left hand side, or casting the right hand side to 'int'.
// int set30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ {...spread, 42};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:80:5: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
-// - 'Set' is from 'dart:core'.
-// Try changing the type of the left hand side, or casting the right hand side to 'int'.
-// {...spread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:83:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/spread_collection_inference.dart:61:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
// - 'Map' is from 'dart:core'.
// Try changing the type of the left hand side, or casting the right hand side to 'int'.
// {...mapSpread, "baz": 42};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:86:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
-// - 'Map' is from 'dart:core'.
-// Try changing the type of the left hand side, or casting the right hand side to 'int'.
-// {...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:89:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/spread_collection_inference.dart:64:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
// notSpreadInt];
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:92:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/spread_collection_inference.dart:67:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
// notSpreadInt};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:95:43: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/spread_collection_inference.dart:70:43: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
// /*@error=SpreadMapEntryTypeMismatch*/ notSpreadInt};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:98:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/spread_collection_inference.dart:73:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
// notSpreadFunction];
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:101:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/spread_collection_inference.dart:76:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
// notSpreadFunction};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:104:43: Error: Unexpected type 'int Function()' of a map spread entry. Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/spread_collection_inference.dart:79:43: Error: Unexpected type 'int Function()' of a map spread entry. Expected 'dynamic' or a Map.
// /*@error=SpreadMapEntryTypeMismatch*/ notSpreadFunction};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:107:5: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/spread_collection_inference.dart:82:5: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
// spread];
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:109:73: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/spread_collection_inference.dart:84:73: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
// Set<String> set60 = <String>{... /*@error=SpreadElementTypeMismatch*/ spread};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:112:53: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+// pkg/front_end/testcases/spread_collection_inference.dart:87:53: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
// /*@error=SpreadMapEntryElementKeyTypeMismatch*/ mapSpread};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:115:55: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+// pkg/front_end/testcases/spread_collection_inference.dart:90:55: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
// /*@error=SpreadMapEntryElementValueTypeMismatch*/ mapSpread};
// ^
//
@@ -111,179 +84,129 @@
for (final core::MapEntry<dynamic, dynamic> #t6 in <dynamic, dynamic>{})
#t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
} =>#t5;
- core::Map<dynamic, dynamic> map10ambiguous = block {
- final core::Map<dynamic, dynamic> #t7 = <dynamic, dynamic>{};
- for (final core::MapEntry<dynamic, dynamic> #t8 in <dynamic, dynamic>{})
- #t7.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
- } =>#t7;
core::List<core::int> lhs20 = block {
- final core::List<core::int> #t9 = <core::int>[];
- for (final core::int #t10 in spread)
- #t9.{core::List::add}(#t10);
- } =>#t9;
+ final core::List<core::int> #t7 = <core::int>[];
+ for (final core::int #t8 in spread)
+ #t7.{core::List::add}(#t8);
+ } =>#t7;
core::Set<core::int> set20 = block {
- final core::Set<core::int> #t11 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t12 in spread)
- #t11.{core::Set::add}(#t12);
- #t11.{core::Set::add}(42);
- } =>#t11;
- core::Set<core::int> set20ambiguous = block {
- final core::Set<core::int> #t13 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t14 in spread)
- #t13.{core::Set::add}(#t14);
- } =>#t13;
+ final core::Set<core::int> #t9 = col::LinkedHashSet::•<core::int>();
+ for (final core::int #t10 in spread)
+ #t9.{core::Set::add}(#t10);
+ #t9.{core::Set::add}(42);
+ } =>#t9;
core::Map<core::String, core::int> map20 = block {
- final core::Map<core::String, core::int> #t15 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t16 in mapSpread)
- #t15.{core::Map::[]=}(#t16.{core::MapEntry::key}, #t16.{core::MapEntry::value});
- #t15.{core::Map::[]=}("baz", 42);
- } =>#t15;
- core::Map<core::String, core::int> map20ambiguous = block {
- final core::Map<core::String, core::int> #t17 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t18 in mapSpread)
- #t17.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
- } =>#t17;
+ final core::Map<core::String, core::int> #t11 = <core::String, core::int>{};
+ for (final core::MapEntry<core::String, core::int> #t12 in mapSpread)
+ #t11.{core::Map::[]=}(#t12.{core::MapEntry::key}, #t12.{core::MapEntry::value});
+ #t11.{core::Map::[]=}("baz", 42);
+ } =>#t11;
core::List<dynamic> lhs21 = block {
- final core::List<dynamic> #t19 = <dynamic>[];
- for (final dynamic #t20 in (spread as dynamic) as{TypeError} core::Iterable<dynamic>)
+ final core::List<dynamic> #t13 = <dynamic>[];
+ for (final dynamic #t14 in (spread as dynamic) as{TypeError} core::Iterable<dynamic>)
+ #t13.{core::List::add}(#t14);
+ } =>#t13;
+ core::Set<dynamic> set21 = block {
+ final core::Set<dynamic> #t15 = col::LinkedHashSet::•<dynamic>();
+ for (final dynamic #t16 in (spread as dynamic) as{TypeError} core::Iterable<dynamic>)
+ #t15.{core::Set::add}(#t16);
+ #t15.{core::Set::add}(42);
+ } =>#t15;
+ core::Map<dynamic, dynamic> map21 = block {
+ final core::Map<dynamic, dynamic> #t17 = <dynamic, dynamic>{};
+ for (final core::MapEntry<dynamic, dynamic> #t18 in (spread as dynamic) as{TypeError} core::Map<dynamic, dynamic>)
+ #t17.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
+ #t17.{core::Map::[]=}("baz", 42);
+ } =>#t17;
+ core::List<core::int> lhs22 = block {
+ final core::List<core::int> #t19 = <core::int>[];
+ for (final core::int #t20 in <core::int>[])
#t19.{core::List::add}(#t20);
} =>#t19;
- core::Set<dynamic> set21 = block {
- final core::Set<dynamic> #t21 = col::LinkedHashSet::•<dynamic>();
- for (final dynamic #t22 in (spread as dynamic) as{TypeError} core::Iterable<dynamic>)
+ core::Set<core::int> set22 = block {
+ final core::Set<core::int> #t21 = col::LinkedHashSet::•<core::int>();
+ for (final core::int #t22 in <core::int>[])
#t21.{core::Set::add}(#t22);
#t21.{core::Set::add}(42);
} =>#t21;
- core::Map<dynamic, dynamic> map21 = block {
- final core::Map<dynamic, dynamic> #t23 = <dynamic, dynamic>{};
- for (final core::MapEntry<dynamic, dynamic> #t24 in (mapSpread as dynamic) as{TypeError} core::Map<dynamic, dynamic>)
+ core::Map<core::String, core::int> map22 = block {
+ final core::Map<core::String, core::int> #t23 = <core::String, core::int>{};
+ for (final core::MapEntry<core::String, core::int> #t24 in <core::String, core::int>{})
#t23.{core::Map::[]=}(#t24.{core::MapEntry::key}, #t24.{core::MapEntry::value});
- #t23.{core::Map::[]=}("baz", 42);
} =>#t23;
- dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:48:76: Error: Not enough type information to disambiguate between literal set and literal map.
-Try providing type arguments for the literal explicitly to disambiguate it.
- dynamic map21ambiguous = /*@error=CantDisambiguateNotEnoughInformation*/ {...
- ^";
- core::List<core::int> lhs22 = block {
- final core::List<core::int> #t25 = <core::int>[];
- for (final core::int #t26 in <core::int>[])
+ core::List<core::List<core::int>> lhs23 = block {
+ final core::List<core::List<core::int>> #t25 = <core::List<core::int>>[];
+ for (final core::List<core::int> #t26 in <core::List<core::int>>[<core::int>[]])
#t25.{core::List::add}(#t26);
} =>#t25;
- core::Set<core::int> set22 = block {
- final core::Set<core::int> #t27 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t28 in <core::int>[])
- #t27.{core::Set::add}(#t28);
- #t27.{core::Set::add}(42);
- } =>#t27;
- core::Set<core::int> set22ambiguous = block {
- final core::Set<core::int> #t29 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t30 in <core::int>[])
- #t29.{core::Set::add}(#t30);
- } =>#t29;
- core::Map<core::String, core::int> map22 = block {
- final core::Map<core::String, core::int> #t31 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t32 in <core::String, core::int>{})
- #t31.{core::Map::[]=}(#t32.{core::MapEntry::key}, #t32.{core::MapEntry::value});
- } =>#t31;
- core::List<core::List<core::int>> lhs23 = block {
- final core::List<core::List<core::int>> #t33 = <core::List<core::int>>[];
- for (final core::List<core::int> #t34 in <core::List<core::int>>[<core::int>[]])
- #t33.{core::List::add}(#t34);
- } =>#t33;
core::Set<core::List<core::int>> set23 = block {
- final core::Set<core::List<core::int>> #t35 = col::LinkedHashSet::•<core::List<core::int>>();
- for (final core::List<core::int> #t36 in <core::List<core::int>>[<core::int>[]])
- #t35.{core::Set::add}(#t36);
- #t35.{core::Set::add}(<core::int>[42]);
- } =>#t35;
- core::Set<core::List<core::int>> set23ambiguous = block {
- final core::Set<core::List<core::int>> #t37 = col::LinkedHashSet::•<core::List<core::int>>();
- for (final core::List<core::int> #t38 in <core::List<core::int>>[<core::int>[]])
- #t37.{core::Set::add}(#t38);
- } =>#t37;
+ final core::Set<core::List<core::int>> #t27 = col::LinkedHashSet::•<core::List<core::int>>();
+ for (final core::List<core::int> #t28 in <core::List<core::int>>[<core::int>[]])
+ #t27.{core::Set::add}(#t28);
+ #t27.{core::Set::add}(<core::int>[42]);
+ } =>#t27;
core::Map<core::String, core::List<core::int>> map23 = block {
- final core::Map<core::String, core::List<core::int>> #t39 = <core::String, core::List<core::int>>{};
- for (final core::MapEntry<core::String, core::List<core::int>> #t40 in <core::String, core::List<core::int>>{"baz": <core::int>[]})
- #t39.{core::Map::[]=}(#t40.{core::MapEntry::key}, #t40.{core::MapEntry::value});
- } =>#t39;
- dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:72:76: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
- dynamic map24ambiguous = /*@error=CantDisambiguateAmbiguousInformation*/ {...
- ^";
- core::int lhs30 = let final<BottomType> #t41 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:75:62: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+ final core::Map<core::String, core::List<core::int>> #t29 = <core::String, core::List<core::int>>{};
+ for (final core::MapEntry<core::String, core::List<core::int>> #t30 in <core::String, core::List<core::int>>{"baz": <core::int>[]})
+ #t29.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
+ } =>#t29;
+ core::int lhs30 = let final<BottomType> #t31 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:56:62: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
- 'List' is from 'dart:core'.
Try changing the type of the left hand side, or casting the right hand side to 'int'.
int lhs30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ [...spread];
^" in ( block {
- final core::List<core::int> #t42 = <core::int>[];
- for (final core::int #t43 in spread)
- #t42.{core::List::add}(#t43);
- } =>#t42) as{TypeError} core::int;
- core::int set30 = let final<BottomType> #t44 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:77:62: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+ final core::List<core::int> #t32 = <core::int>[];
+ for (final core::int #t33 in spread)
+ #t32.{core::List::add}(#t33);
+ } =>#t32) as{TypeError} core::int;
+ core::int set30 = let final<BottomType> #t34 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:58:62: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
- 'Set' is from 'dart:core'.
Try changing the type of the left hand side, or casting the right hand side to 'int'.
int set30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ {...spread, 42};
^" in ( block {
- final core::Set<core::int> #t45 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t46 in spread)
- #t45.{core::Set::add}(#t46);
- #t45.{core::Set::add}(42);
- } =>#t45) as{TypeError} core::int;
- core::int set30ambiguous = let final<BottomType> #t47 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:80:5: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
- - 'Set' is from 'dart:core'.
-Try changing the type of the left hand side, or casting the right hand side to 'int'.
- {...spread};
- ^" in ( block {
- final core::Set<core::int> #t48 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t49 in spread)
- #t48.{core::Set::add}(#t49);
- } =>#t48) as{TypeError} core::int;
- core::int map30 = let final<BottomType> #t50 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:83:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+ final core::Set<core::int> #t35 = col::LinkedHashSet::•<core::int>();
+ for (final core::int #t36 in spread)
+ #t35.{core::Set::add}(#t36);
+ #t35.{core::Set::add}(42);
+ } =>#t35) as{TypeError} core::int;
+ core::int map30 = let final<BottomType> #t37 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:61:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
- 'Map' is from 'dart:core'.
Try changing the type of the left hand side, or casting the right hand side to 'int'.
{...mapSpread, \"baz\": 42};
^" in ( block {
- final core::Map<core::String, core::int> #t51 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t52 in mapSpread)
- #t51.{core::Map::[]=}(#t52.{core::MapEntry::key}, #t52.{core::MapEntry::value});
- #t51.{core::Map::[]=}("baz", 42);
- } =>#t51) as{TypeError} core::int;
- core::int map30ambiguous = let final<BottomType> #t53 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:86:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
- - 'Map' is from 'dart:core'.
-Try changing the type of the left hand side, or casting the right hand side to 'int'.
- {...mapSpread};
- ^" in ( block {
- final core::Map<core::String, core::int> #t54 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t55 in mapSpread)
- #t54.{core::Map::[]=}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value});
- } =>#t54) as{TypeError} core::int;
- core::List<dynamic> lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:89:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
+ final core::Map<core::String, core::int> #t38 = <core::String, core::int>{};
+ for (final core::MapEntry<core::String, core::int> #t39 in mapSpread)
+ #t38.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
+ #t38.{core::Map::[]=}("baz", 42);
+ } =>#t38) as{TypeError} core::int;
+ core::List<dynamic> lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:64:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
notSpreadInt];
^"];
- core::Set<dynamic> set40 = let final core::Set<dynamic> #t56 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t57 = #t56.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:92:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
+ core::Set<dynamic> set40 = let final core::Set<dynamic> #t40 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t41 = #t40.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:67:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
notSpreadInt};
- ^") in #t56;
- core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:95:43: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
+ ^") in #t40;
+ core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:70:43: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
/*@error=SpreadMapEntryTypeMismatch*/ notSpreadInt};
^": null};
- core::List<dynamic> lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:98:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
+ core::List<dynamic> lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:73:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
notSpreadFunction];
^"];
- core::Set<dynamic> set50 = let final core::Set<dynamic> #t58 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t59 = #t58.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:101:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
+ core::Set<dynamic> set50 = let final core::Set<dynamic> #t42 = col::LinkedHashSet::•<dynamic>() in let final dynamic #t43 = #t42.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:76:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
notSpreadFunction};
- ^") in #t58;
- core::Map<dynamic, dynamic> map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:104:43: Error: Unexpected type 'int Function()' of a map spread entry. Expected 'dynamic' or a Map.
+ ^") in #t42;
+ core::Map<dynamic, dynamic> map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:79:43: Error: Unexpected type 'int Function()' of a map spread entry. Expected 'dynamic' or a Map.
/*@error=SpreadMapEntryTypeMismatch*/ notSpreadFunction};
^": null};
- core::List<core::String> lhs60 = <core::String>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:107:5: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+ core::List<core::String> lhs60 = <core::String>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:82:5: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
spread];
^"];
- core::Set<core::String> set60 = let final core::Set<core::String> #t60 = col::LinkedHashSet::•<core::String>() in let final dynamic #t61 = #t60.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:109:73: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+ core::Set<core::String> set60 = let final core::Set<core::String> #t44 = col::LinkedHashSet::•<core::String>() in let final dynamic #t45 = #t44.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:84:73: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
Set<String> set60 = <String>{... /*@error=SpreadElementTypeMismatch*/ spread};
- ^") in #t60;
- core::Map<core::int, core::int> map60 = <core::int, core::int>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:112:53: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+ ^") in #t44;
+ core::Map<core::int, core::int> map60 = <core::int, core::int>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:87:53: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
/*@error=SpreadMapEntryElementKeyTypeMismatch*/ mapSpread};
^": null};
- core::Map<core::String, core::String> map61 = <core::String, core::String>{null: invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:115:55: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+ core::Map<core::String, core::String> map61 = <core::String, core::String>{null: invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:90:55: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
/*@error=SpreadMapEntryElementValueTypeMismatch*/ mapSpread};
^"};
}
diff --git a/pkg/front_end/testcases/spread_collection_inference.dart.strong.transformed.expect b/pkg/front_end/testcases/spread_collection_inference.dart.strong.transformed.expect
index 0f75319..34ef7b6 100644
--- a/pkg/front_end/testcases/spread_collection_inference.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/spread_collection_inference.dart.strong.transformed.expect
@@ -2,88 +2,61 @@
//
// Problems in library:
//
-// pkg/front_end/testcases/spread_collection_inference.dart:48:76: Error: Not enough type information to disambiguate between literal set and literal map.
-// Try providing type arguments for the literal explicitly to disambiguate it.
-// dynamic map21ambiguous = /*@error=CantDisambiguateNotEnoughInformation*/ {...
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:72:76: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
-// dynamic map24ambiguous = /*@error=CantDisambiguateAmbiguousInformation*/ {...
-// ^
-// pkg/front_end/testcases/spread_collection_inference.dart:73:5: Context: Iterable spread.
-// spread, ...mapSpread};
-// ^
-// pkg/front_end/testcases/spread_collection_inference.dart:73:16: Context: Map spread.
-// spread, ...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:75:62: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/spread_collection_inference.dart:56:62: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
// - 'List' is from 'dart:core'.
// Try changing the type of the left hand side, or casting the right hand side to 'int'.
// int lhs30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ [...spread];
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:77:62: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/spread_collection_inference.dart:58:62: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
// - 'Set' is from 'dart:core'.
// Try changing the type of the left hand side, or casting the right hand side to 'int'.
// int set30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ {...spread, 42};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:80:5: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
-// - 'Set' is from 'dart:core'.
-// Try changing the type of the left hand side, or casting the right hand side to 'int'.
-// {...spread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:83:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+// pkg/front_end/testcases/spread_collection_inference.dart:61:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
// - 'Map' is from 'dart:core'.
// Try changing the type of the left hand side, or casting the right hand side to 'int'.
// {...mapSpread, "baz": 42};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:86:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
-// - 'Map' is from 'dart:core'.
-// Try changing the type of the left hand side, or casting the right hand side to 'int'.
-// {...mapSpread};
-// ^
-//
-// pkg/front_end/testcases/spread_collection_inference.dart:89:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/spread_collection_inference.dart:64:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
// notSpreadInt];
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:92:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/spread_collection_inference.dart:67:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
// notSpreadInt};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:95:43: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/spread_collection_inference.dart:70:43: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
// /*@error=SpreadMapEntryTypeMismatch*/ notSpreadInt};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:98:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/spread_collection_inference.dart:73:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
// notSpreadFunction];
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:101:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
+// pkg/front_end/testcases/spread_collection_inference.dart:76:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
// notSpreadFunction};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:104:43: Error: Unexpected type 'int Function()' of a map spread entry. Expected 'dynamic' or a Map.
+// pkg/front_end/testcases/spread_collection_inference.dart:79:43: Error: Unexpected type 'int Function()' of a map spread entry. Expected 'dynamic' or a Map.
// /*@error=SpreadMapEntryTypeMismatch*/ notSpreadFunction};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:107:5: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/spread_collection_inference.dart:82:5: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
// spread];
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:109:73: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+// pkg/front_end/testcases/spread_collection_inference.dart:84:73: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
// Set<String> set60 = <String>{... /*@error=SpreadElementTypeMismatch*/ spread};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:112:53: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+// pkg/front_end/testcases/spread_collection_inference.dart:87:53: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
// /*@error=SpreadMapEntryElementKeyTypeMismatch*/ mapSpread};
// ^
//
-// pkg/front_end/testcases/spread_collection_inference.dart:115:55: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+// pkg/front_end/testcases/spread_collection_inference.dart:90:55: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
// /*@error=SpreadMapEntryElementValueTypeMismatch*/ mapSpread};
// ^
//
@@ -111,179 +84,129 @@
for (final core::MapEntry<dynamic, dynamic> #t6 in <dynamic, dynamic>{})
#t5.{core::Map::[]=}(#t6.{core::MapEntry::key}, #t6.{core::MapEntry::value});
} =>#t5;
- core::Map<dynamic, dynamic> map10ambiguous = block {
- final core::Map<dynamic, dynamic> #t7 = <dynamic, dynamic>{};
- for (final core::MapEntry<dynamic, dynamic> #t8 in <dynamic, dynamic>{})
- #t7.{core::Map::[]=}(#t8.{core::MapEntry::key}, #t8.{core::MapEntry::value});
- } =>#t7;
core::List<core::int> lhs20 = block {
- final core::List<core::int> #t9 = <core::int>[];
- for (final core::int #t10 in spread)
- #t9.{core::List::add}(#t10);
- } =>#t9;
+ final core::List<core::int> #t7 = <core::int>[];
+ for (final core::int #t8 in spread)
+ #t7.{core::List::add}(#t8);
+ } =>#t7;
core::Set<core::int> set20 = block {
- final core::Set<core::int> #t11 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t12 in spread)
- #t11.{core::Set::add}(#t12);
- #t11.{core::Set::add}(42);
- } =>#t11;
- core::Set<core::int> set20ambiguous = block {
- final core::Set<core::int> #t13 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t14 in spread)
- #t13.{core::Set::add}(#t14);
- } =>#t13;
+ final core::Set<core::int> #t9 = col::LinkedHashSet::•<core::int>();
+ for (final core::int #t10 in spread)
+ #t9.{core::Set::add}(#t10);
+ #t9.{core::Set::add}(42);
+ } =>#t9;
core::Map<core::String, core::int> map20 = block {
- final core::Map<core::String, core::int> #t15 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t16 in mapSpread)
- #t15.{core::Map::[]=}(#t16.{core::MapEntry::key}, #t16.{core::MapEntry::value});
- #t15.{core::Map::[]=}("baz", 42);
- } =>#t15;
- core::Map<core::String, core::int> map20ambiguous = block {
- final core::Map<core::String, core::int> #t17 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t18 in mapSpread)
- #t17.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
- } =>#t17;
+ final core::Map<core::String, core::int> #t11 = <core::String, core::int>{};
+ for (final core::MapEntry<core::String, core::int> #t12 in mapSpread)
+ #t11.{core::Map::[]=}(#t12.{core::MapEntry::key}, #t12.{core::MapEntry::value});
+ #t11.{core::Map::[]=}("baz", 42);
+ } =>#t11;
core::List<dynamic> lhs21 = block {
- final core::List<dynamic> #t19 = <dynamic>[];
- for (final dynamic #t20 in (spread as dynamic) as{TypeError} core::Iterable<dynamic>)
+ final core::List<dynamic> #t13 = <dynamic>[];
+ for (final dynamic #t14 in (spread as dynamic) as{TypeError} core::Iterable<dynamic>)
+ #t13.{core::List::add}(#t14);
+ } =>#t13;
+ core::Set<dynamic> set21 = block {
+ final core::Set<dynamic> #t15 = col::LinkedHashSet::•<dynamic>();
+ for (final dynamic #t16 in (spread as dynamic) as{TypeError} core::Iterable<dynamic>)
+ #t15.{core::Set::add}(#t16);
+ #t15.{core::Set::add}(42);
+ } =>#t15;
+ core::Map<dynamic, dynamic> map21 = block {
+ final core::Map<dynamic, dynamic> #t17 = <dynamic, dynamic>{};
+ for (final core::MapEntry<dynamic, dynamic> #t18 in (spread as dynamic) as{TypeError} core::Map<dynamic, dynamic>)
+ #t17.{core::Map::[]=}(#t18.{core::MapEntry::key}, #t18.{core::MapEntry::value});
+ #t17.{core::Map::[]=}("baz", 42);
+ } =>#t17;
+ core::List<core::int> lhs22 = block {
+ final core::List<core::int> #t19 = <core::int>[];
+ for (final core::int #t20 in <core::int>[])
#t19.{core::List::add}(#t20);
} =>#t19;
- core::Set<dynamic> set21 = block {
- final core::Set<dynamic> #t21 = col::LinkedHashSet::•<dynamic>();
- for (final dynamic #t22 in (spread as dynamic) as{TypeError} core::Iterable<dynamic>)
+ core::Set<core::int> set22 = block {
+ final core::Set<core::int> #t21 = col::LinkedHashSet::•<core::int>();
+ for (final core::int #t22 in <core::int>[])
#t21.{core::Set::add}(#t22);
#t21.{core::Set::add}(42);
} =>#t21;
- core::Map<dynamic, dynamic> map21 = block {
- final core::Map<dynamic, dynamic> #t23 = <dynamic, dynamic>{};
- for (final core::MapEntry<dynamic, dynamic> #t24 in (mapSpread as dynamic) as{TypeError} core::Map<dynamic, dynamic>)
+ core::Map<core::String, core::int> map22 = block {
+ final core::Map<core::String, core::int> #t23 = <core::String, core::int>{};
+ for (final core::MapEntry<core::String, core::int> #t24 in <core::String, core::int>{})
#t23.{core::Map::[]=}(#t24.{core::MapEntry::key}, #t24.{core::MapEntry::value});
- #t23.{core::Map::[]=}("baz", 42);
} =>#t23;
- dynamic map21ambiguous = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:48:76: Error: Not enough type information to disambiguate between literal set and literal map.
-Try providing type arguments for the literal explicitly to disambiguate it.
- dynamic map21ambiguous = /*@error=CantDisambiguateNotEnoughInformation*/ {...
- ^";
- core::List<core::int> lhs22 = block {
- final core::List<core::int> #t25 = <core::int>[];
- for (final core::int #t26 in <core::int>[])
+ core::List<core::List<core::int>> lhs23 = block {
+ final core::List<core::List<core::int>> #t25 = <core::List<core::int>>[];
+ for (final core::List<core::int> #t26 in <core::List<core::int>>[<core::int>[]])
#t25.{core::List::add}(#t26);
} =>#t25;
- core::Set<core::int> set22 = block {
- final core::Set<core::int> #t27 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t28 in <core::int>[])
- #t27.{core::Set::add}(#t28);
- #t27.{core::Set::add}(42);
- } =>#t27;
- core::Set<core::int> set22ambiguous = block {
- final core::Set<core::int> #t29 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t30 in <core::int>[])
- #t29.{core::Set::add}(#t30);
- } =>#t29;
- core::Map<core::String, core::int> map22 = block {
- final core::Map<core::String, core::int> #t31 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t32 in <core::String, core::int>{})
- #t31.{core::Map::[]=}(#t32.{core::MapEntry::key}, #t32.{core::MapEntry::value});
- } =>#t31;
- core::List<core::List<core::int>> lhs23 = block {
- final core::List<core::List<core::int>> #t33 = <core::List<core::int>>[];
- for (final core::List<core::int> #t34 in <core::List<core::int>>[<core::int>[]])
- #t33.{core::List::add}(#t34);
- } =>#t33;
core::Set<core::List<core::int>> set23 = block {
- final core::Set<core::List<core::int>> #t35 = col::LinkedHashSet::•<core::List<core::int>>();
- for (final core::List<core::int> #t36 in <core::List<core::int>>[<core::int>[]])
- #t35.{core::Set::add}(#t36);
- #t35.{core::Set::add}(<core::int>[42]);
- } =>#t35;
- core::Set<core::List<core::int>> set23ambiguous = block {
- final core::Set<core::List<core::int>> #t37 = col::LinkedHashSet::•<core::List<core::int>>();
- for (final core::List<core::int> #t38 in <core::List<core::int>>[<core::int>[]])
- #t37.{core::Set::add}(#t38);
- } =>#t37;
+ final core::Set<core::List<core::int>> #t27 = col::LinkedHashSet::•<core::List<core::int>>();
+ for (final core::List<core::int> #t28 in <core::List<core::int>>[<core::int>[]])
+ #t27.{core::Set::add}(#t28);
+ #t27.{core::Set::add}(<core::int>[42]);
+ } =>#t27;
core::Map<core::String, core::List<core::int>> map23 = block {
- final core::Map<core::String, core::List<core::int>> #t39 = <core::String, core::List<core::int>>{};
- for (final core::MapEntry<core::String, core::List<core::int>> #t40 in <core::String, core::List<core::int>>{"baz": <core::int>[]})
- #t39.{core::Map::[]=}(#t40.{core::MapEntry::key}, #t40.{core::MapEntry::value});
- } =>#t39;
- dynamic map24ambiguous = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:72:76: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
- dynamic map24ambiguous = /*@error=CantDisambiguateAmbiguousInformation*/ {...
- ^";
- core::int lhs30 = let final<BottomType> #t41 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:75:62: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
+ final core::Map<core::String, core::List<core::int>> #t29 = <core::String, core::List<core::int>>{};
+ for (final core::MapEntry<core::String, core::List<core::int>> #t30 in <core::String, core::List<core::int>>{"baz": <core::int>[]})
+ #t29.{core::Map::[]=}(#t30.{core::MapEntry::key}, #t30.{core::MapEntry::value});
+ } =>#t29;
+ core::int lhs30 = let final<BottomType> #t31 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:56:62: Error: A value of type 'List<int>' can't be assigned to a variable of type 'int'.
- 'List' is from 'dart:core'.
Try changing the type of the left hand side, or casting the right hand side to 'int'.
int lhs30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ [...spread];
^" in ( block {
- final core::List<core::int> #t42 = <core::int>[];
- for (final core::int #t43 in spread)
- #t42.{core::List::add}(#t43);
- } =>#t42) as{TypeError} core::int;
- core::int set30 = let final<BottomType> #t44 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:77:62: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
+ final core::List<core::int> #t32 = <core::int>[];
+ for (final core::int #t33 in spread)
+ #t32.{core::List::add}(#t33);
+ } =>#t32) as{TypeError} core::int;
+ core::int set30 = let final<BottomType> #t34 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:58:62: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
- 'Set' is from 'dart:core'.
Try changing the type of the left hand side, or casting the right hand side to 'int'.
int set30 = /*@error=InvalidAssignment*/ /*@typeArgs=int*/ {...spread, 42};
^" in ( block {
- final core::Set<core::int> #t45 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t46 in spread)
- #t45.{core::Set::add}(#t46);
- #t45.{core::Set::add}(42);
- } =>#t45) as{TypeError} core::int;
- core::int set30ambiguous = let final<BottomType> #t47 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:80:5: Error: A value of type 'Set<int>' can't be assigned to a variable of type 'int'.
- - 'Set' is from 'dart:core'.
-Try changing the type of the left hand side, or casting the right hand side to 'int'.
- {...spread};
- ^" in ( block {
- final core::Set<core::int> #t48 = col::LinkedHashSet::•<core::int>();
- for (final core::int #t49 in spread)
- #t48.{core::Set::add}(#t49);
- } =>#t48) as{TypeError} core::int;
- core::int map30 = let final<BottomType> #t50 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:83:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
+ final core::Set<core::int> #t35 = col::LinkedHashSet::•<core::int>();
+ for (final core::int #t36 in spread)
+ #t35.{core::Set::add}(#t36);
+ #t35.{core::Set::add}(42);
+ } =>#t35) as{TypeError} core::int;
+ core::int map30 = let final<BottomType> #t37 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:61:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
- 'Map' is from 'dart:core'.
Try changing the type of the left hand side, or casting the right hand side to 'int'.
{...mapSpread, \"baz\": 42};
^" in ( block {
- final core::Map<core::String, core::int> #t51 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t52 in mapSpread)
- #t51.{core::Map::[]=}(#t52.{core::MapEntry::key}, #t52.{core::MapEntry::value});
- #t51.{core::Map::[]=}("baz", 42);
- } =>#t51) as{TypeError} core::int;
- core::int map30ambiguous = let final<BottomType> #t53 = invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:86:5: Error: A value of type 'Map<String, int>' can't be assigned to a variable of type 'int'.
- - 'Map' is from 'dart:core'.
-Try changing the type of the left hand side, or casting the right hand side to 'int'.
- {...mapSpread};
- ^" in ( block {
- final core::Map<core::String, core::int> #t54 = <core::String, core::int>{};
- for (final core::MapEntry<core::String, core::int> #t55 in mapSpread)
- #t54.{core::Map::[]=}(#t55.{core::MapEntry::key}, #t55.{core::MapEntry::value});
- } =>#t54) as{TypeError} core::int;
- core::List<dynamic> lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:89:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
+ final core::Map<core::String, core::int> #t38 = <core::String, core::int>{};
+ for (final core::MapEntry<core::String, core::int> #t39 in mapSpread)
+ #t38.{core::Map::[]=}(#t39.{core::MapEntry::key}, #t39.{core::MapEntry::value});
+ #t38.{core::Map::[]=}("baz", 42);
+ } =>#t38) as{TypeError} core::int;
+ core::List<dynamic> lhs40 = <dynamic>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:64:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
notSpreadInt];
^"];
- core::Set<dynamic> set40 = 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/spread_collection_inference.dart:92:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
+ core::Set<dynamic> set40 = let final core::Set<dynamic> #t40 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t41 = #t40.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:67:5: Error: Unexpected type 'int' of a spread. Expected 'dynamic' or an Iterable.
notSpreadInt};
- ^") in #t56;
- core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:95:43: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
+ ^") in #t40;
+ core::Map<dynamic, dynamic> map40 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:70:43: Error: Unexpected type 'int' of a map spread entry. Expected 'dynamic' or a Map.
/*@error=SpreadMapEntryTypeMismatch*/ notSpreadInt};
^": null};
- core::List<dynamic> lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:98:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
+ core::List<dynamic> lhs50 = <dynamic>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:73:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
notSpreadFunction];
^"];
- core::Set<dynamic> set50 = let final core::Set<dynamic> #t58 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t59 = #t58.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:101:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
+ core::Set<dynamic> set50 = let final core::Set<dynamic> #t42 = col::LinkedHashSet::•<dynamic>() in let final core::bool #t43 = #t42.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:76:5: Error: Unexpected type 'int Function()' of a spread. Expected 'dynamic' or an Iterable.
notSpreadFunction};
- ^") in #t58;
- core::Map<dynamic, dynamic> map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:104:43: Error: Unexpected type 'int Function()' of a map spread entry. Expected 'dynamic' or a Map.
+ ^") in #t42;
+ core::Map<dynamic, dynamic> map50 = <dynamic, dynamic>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:79:43: Error: Unexpected type 'int Function()' of a map spread entry. Expected 'dynamic' or a Map.
/*@error=SpreadMapEntryTypeMismatch*/ notSpreadFunction};
^": null};
- core::List<core::String> lhs60 = <core::String>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:107:5: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+ core::List<core::String> lhs60 = <core::String>[invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:82:5: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
spread];
^"];
- core::Set<core::String> set60 = let final core::Set<core::String> #t60 = col::LinkedHashSet::•<core::String>() in let final core::bool #t61 = #t60.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:109:73: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
+ core::Set<core::String> set60 = let final core::Set<core::String> #t44 = col::LinkedHashSet::•<core::String>() in let final core::bool #t45 = #t44.{core::Set::add}(invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:84:73: Error: Can't assign spread elements of type 'int' to collection elements of type 'String'.
Set<String> set60 = <String>{... /*@error=SpreadElementTypeMismatch*/ spread};
- ^") in #t60;
- core::Map<core::int, core::int> map60 = <core::int, core::int>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:112:53: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
+ ^") in #t44;
+ core::Map<core::int, core::int> map60 = <core::int, core::int>{invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:87:53: Error: Can't assign spread entry keys of type 'String' to map entry keys of type 'int'.
/*@error=SpreadMapEntryElementKeyTypeMismatch*/ mapSpread};
^": null};
- core::Map<core::String, core::String> map61 = <core::String, core::String>{null: invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:115:55: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
+ core::Map<core::String, core::String> map61 = <core::String, core::String>{null: invalid-expression "pkg/front_end/testcases/spread_collection_inference.dart:90:55: Error: Can't assign spread entry values of type 'int' to map entry values of type 'String'.
/*@error=SpreadMapEntryElementValueTypeMismatch*/ mapSpread};
^"};
}